From 74a9ad9c559e2d7f24bbe068850929d222a2c589 Mon Sep 17 00:00:00 2001 From: Anastasiya Flynn Date: Mon, 16 Aug 2021 08:43:09 -0400 Subject: [PATCH 1/2] Release/18.0.0 (#781) * version v16.0.0-canary.52 [skip ci] * get rid of TODO * version v16.0.0-canary.53 [skip ci] * v16.1.0-canary.0 * version v16.1.0-canary.1 [skip ci] * [JSS] Disallow file deploy for Next.js solutions (#609) * [JSS] Disallow file deploy for Next.js solutions * Use `sitecoreDistPath` property * version v16.1.0-canary.2 [skip ci] * [NextJs] Sample app configuration options for 'jss create' (#618) * Prep for 'jss create' template customizations: * Pull Rest/GraphQLDictionary/LayoutService creation out of page-props-factory to separate factories for each (REST by default). * Move the [[..path]].SSR.tsx alongside default (SSG) one under /pages * Added --fetchMode and --renderMode 'jss create' parameters to nextjs template * fixed formatting * Use "enum" for Fetch/RenderMode * Parameters renamed: "fetchMode" > "fetchWith", "renderMode" > "prerender" Co-authored-by: Adam Brauer * version v16.1.0-canary.3 [skip ci] * [JSS] [Angular] Pull server bundle build improvements (#617) * remove the need for the server-wrapper * remove webpack config * Create valid bundle * Add empty line * Add empty line * Remove 'exclude' option * Change doc related to angular bundles Co-authored-by: Erik van 't Klooster * [sitecore-jss] Add GraphQLLayoutService (#614) * [sitecore-jss] Add GraphQLLayoutService * Change jsdoc * add changes * Use latest schema * Optional cahining for `data` * Add ability to use custom search query * remove param * Provide ability to format only query arguments instead of modifying response data * version v16.1.0-canary.4 [skip ci] * Fixed nextSteps.push * version v16.1.0-canary.5 [skip ci] * Update dev branch with new documentation from master (627) This includes the new docs pages written since the 16.0.0 release and the deployment fixes that were done as part of the 16.0.0 release ------------------------------------------ * push lock's * revert package.json * v16.0.0 * Revert lockfileVersion on master (#610) * Revert "push lock's" This reverts commit e951cc42f2e914e90794712e7c899ee8c8819298. # Conflicts: # packages/sitecore-jss-angular-schematics/package-lock.json # packages/sitecore-jss-angular/package-lock.json # packages/sitecore-jss-cli/package-lock.json # packages/sitecore-jss-dev-tools/package-lock.json # packages/sitecore-jss-forms/package-lock.json # packages/sitecore-jss-manifest/package-lock.json # packages/sitecore-jss-nextjs/package-lock.json # packages/sitecore-jss-proxy/package-lock.json # packages/sitecore-jss-react-forms/package-lock.json # packages/sitecore-jss-react-native/package-lock.json # packages/sitecore-jss-react/package-lock.json # packages/sitecore-jss-rendering-host/package-lock.json # packages/sitecore-jss-tracking/package-lock.json # packages/sitecore-jss-update-package/package-lock.json # packages/sitecore-jss-vue/package-lock.json # packages/sitecore-jss/package-lock.json # packages/sitecore-pipelines/package-lock.json # samples/angular/package-lock.json # samples/nextjs/package-lock.json # samples/node-headless-ssr-proxy/package-lock.json # samples/react-native/package-lock.json # samples/react/package-lock.json # samples/sitecore-embedded-jss-app/package-lock.json # samples/sitecore-javascript-renderings/package-lock.json # samples/vue/package-lock.json * addl lock updates from lerna reset Co-authored-by: Adam Brauer * [Doc] [NextJs] Node extra CA certificates configuration (#612) * Doc: Configure Sitecore CA certificates for Node.js * Cross-link / consolidate on walkthrough-dotnetnew * Cross-links from headless mode docs * Fix minor lang issues * Format UI labels, add emphasis Co-authored-by: Adam Brauer Co-authored-by: Anca Emcken * [Doc] [NextJS] Error routes (#611) * [Doc] [NextJS] Error routes * Update en.md * Add improvements * Fix punctuation Co-authored-by: Anastasiya Flynn Co-authored-by: Anca Emcken * [Docs] Troubleshooting page (#613) * [Docs] Troubleshooting page * Add lang review * PR review improvements * Doc wording consistency Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> * Apply house style rule (where -> what) We always tell WHERE the user is to do things, then WHAT to do. * Address language and style issues * Edit 'troubleshooting' page Improve clarity per PR comments, add a note for checking sitecore config values, remove blurry image. * Review language & style * Fix hard to read sentence * Encode ..., escape [] Co-authored-by: Anca Emcken Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> * [Docs] [NextJs] Experience Editor Integration Architecture and APIs (#616) * EE integration architecture and APIs doc Co-authored-by: Adam Brauer Co-authored-by: Anca Emcken * Fix typo (#621) * [Docs][NextJS] Extract Next.js telemetry info into new page (#615) * Extract Next.js telemetry info into new page * Update navigation * [Doc] [NextJS] Error routes (#611) * [Doc] [NextJS] Error routes * Update en.md * Add improvements * Fix punctuation Co-authored-by: Anastasiya Flynn Co-authored-by: Anca Emcken * Fix route name Co-authored-by: Illia Kovalenko <23364749+illiakovalenko@users.noreply.github.com> Co-authored-by: Anastasiya Flynn Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> * typo iterfaces -> interfaces (#600) Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> * Fix heading in note box (#622) * Nav updates for new troubleshooting pages (#623) Co-authored-by: Adam Brauer * Merge branch 'master' from heroku remote into updates-from-master # Conflicts: # lerna.json # packages/sitecore-jss-angular-schematics/package-lock.json # packages/sitecore-jss-angular-schematics/package.json # packages/sitecore-jss-angular/package-lock.json # packages/sitecore-jss-angular/package.json # packages/sitecore-jss-cli/package-lock.json # packages/sitecore-jss-cli/package.json # packages/sitecore-jss-dev-tools/package-lock.json # packages/sitecore-jss-dev-tools/package.json # packages/sitecore-jss-forms/package-lock.json # packages/sitecore-jss-forms/package.json # packages/sitecore-jss-manifest/package-lock.json # packages/sitecore-jss-manifest/package.json # packages/sitecore-jss-nextjs/package-lock.json # packages/sitecore-jss-nextjs/package.json # packages/sitecore-jss-proxy/package-lock.json # packages/sitecore-jss-proxy/package.json # packages/sitecore-jss-react-forms/package-lock.json # packages/sitecore-jss-react-forms/package.json # packages/sitecore-jss-react-native/package-lock.json # packages/sitecore-jss-react-native/package.json # packages/sitecore-jss-react/package-lock.json # packages/sitecore-jss-react/package.json # packages/sitecore-jss-rendering-host/package-lock.json # packages/sitecore-jss-rendering-host/package.json # packages/sitecore-jss-tracking/package-lock.json # packages/sitecore-jss-tracking/package.json # packages/sitecore-jss-update-package/package-lock.json # packages/sitecore-jss-update-package/package.json # packages/sitecore-jss-vue/package-lock.json # packages/sitecore-jss-vue/package.json # packages/sitecore-jss/package-lock.json # packages/sitecore-jss/package.json # packages/sitecore-pipelines/package-lock.json # packages/sitecore-pipelines/package.json # samples/angular/package-lock.json # samples/angular/package.json # samples/nextjs/package-lock.json # samples/nextjs/package.json # samples/node-headless-ssr-proxy/package-lock.json # samples/node-headless-ssr-proxy/package.json # samples/react-native/package-lock.json # samples/react-native/package.json # samples/react/package-lock.json # samples/react/package.json # samples/sitecore-embedded-jss-app/package-lock.json # samples/sitecore-embedded-jss-app/package.json # samples/sitecore-javascript-renderings/package-lock.json # samples/sitecore-javascript-renderings/package.json # samples/vue/package-lock.json # samples/vue/package.json * origin and heroku remotes has difference app roots, so these changes are supposed to be on docs/package.json Co-authored-by: illiakovalenko Co-authored-by: illiakovalenko Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> Co-authored-by: Adam Brauer Co-authored-by: Anca Emcken Co-authored-by: Illia Kovalenko <23364749+illiakovalenko@users.noreply.github.com> Co-authored-by: Calvin Williams <40271790+sc-CalvinWilliams@users.noreply.github.com> * version v16.1.0-canary.6 [skip ci] * [JSS] [React Native] Update packages, fix issues (#624) * Add changes * add changes * Fix issues * update packages * Push package-lock * Add release note * update react-native svg in sitecore-jss-react-native * Updated env setup doc link / tab name * Fix component params example for connected mode - all params will come in as string from layout service * Fix image sample 'src' prop type for disconnected - this will be number in disconnected, string in connected * Fixed tunnel for use of secure (https) Sitecore endpoints. Updated to latest ngrok. * Release note updates * Added height / width to plain image example (these are required for network images i.e. connected mode). Removed srcSet / adaptive image example since it's not supported. Co-authored-by: Adam Brauer * version v16.1.0-canary.7 [skip ci] * NPM package security audit & updates (#633) * Dependency audit - root: Removed metro, updated ini * Dependency audit - package updates (all semver-compatible, only low remaining) * Dependency audit - nextjs sample * Dependency audit - react, sitecore-embedded-jss-app, sitecore-javascript-renderings, vue samples * Dependency audit - e2e * lock file updates Co-authored-by: Adam Brauer * version v16.1.0-canary.8 [skip ci] * [Docs][NextJs] Account for new `fetchWith` and `prerender` configuration options for 'jss create' (#620) * Progress on doc updates for SSG/SSR & REST/GraphQL app modes * parameter rename * Another batch of updates * Added 'Switching between REST and GraphQL' doc, minor cleanup * Update "Tracking & Analytics Overview and Architecture" docs Explicitly state that SSR is required for personalization, to avoid confusion * Add jss create to CLI reference docs * Add reference to CLI doc * Added clarification to analytics support (SSR with Sitecore Layout Service REST API only) to "How is Next.js Different" doc * Provide more detailed example for `jss create` with optional params * Concentrate REST & SSR info in a pre-requisites section & clean up * Re-work intro, adjust heading levels * Drop parens * Change wording * Add CLI reference link, add headings for the switch sections * Change case for consistency * Add note about visitor consent for tracking * Change heading Co-authored-by: Adam Brauer Co-authored-by: Anastasiya Flynn Co-authored-by: Anca Emcken * 459490 GraphQL-based dictionary service (#631) Create new GraphQL-based dictionary service implementation in sitecore-jss GraphQLDictionaryService (implements DictionaryService interface) using the layout query to get site root item using the search query to get all dictionary phrases in the site (by template) accounting for search query pagination RestDictionaryService and RestDictionaryService inherit common functionality from new abstract class DictionaryService This branch also has refactoring to organize our services classes better (not that we have more of them) and to make files in sitecore-jss follow consistent naming conventions. Renamed classes: LayoutService -> RestLayoutService LayoutServiceInstanceConfig -> RestLayoutServiceConfig DictionaryService -> RestDictionaryService DictionaryServiceConfig -> RestDictionaryServiceConfig DictionaryServiceData -> RestDictionaryServiceData (and removed from export since it's not used in the sample apps) HtmlJsonFetcher -> HtmlDataFetcher (renamed because the return type is arbitrary and not guaranteed to be JSON) New classes: GraphQLLayoutService, GraphQLLayoutServiceConfig ---------------- * Create utils/routingUtils.ts Move query string formatting out of the dataApi file, and into a general routing util fil since it can be used by other APIs too. * Combine util functions into a common namespace Now all util functions are available from the 'util' module exported from sitecore-jss * extract getUrl * Standardize file naming in sitecore-jss * Standardize file naming in sitecore-jss * Everything in the 'data-fetcher' module is coupled to Axios, so lets rename it to 'axios-fetcher' and use 'data-fetcher' for the underlying generic interface * Everything in the 'data-fetcher' module is coupled to Axios, so lets rename it to 'axios-fetcher' and use 'data-fetcher' for the underlying generic interface * Rename type HttpJsonFetcher -> HttpDataFetcher This is a generic type, so there is no guarantee that the result is JSON. The result can be any type. * Rename the sample app's data-fetcher to data-fetcher-factory to better describe what it's doing and to make it consistent with our other files * whitespace and todo for later * Rebase with dev and move some of the refactoring to a separate branch * TODOs for later * This is left-over from the refactoring that moved to another branch * GraphQLDictionaryService implementation * Add pagination and error handling to GraphQL Dictionary service; split the 2 dictionary services into separate files; create base class for dictionary services to share code * Update graphql-request-client - remove private passthrough function that isn't needed; add error handling * Add caching to graphql dictionary service * linting * Give name/date context to TODOs So we know who to bug :smile_cat: * Update references to renamed exports * Use lower case for GUIDs * Show more data in graphql client errors * Ignore *.eslintcache * GraphQL dictionary service now fetches the root item ID, so it does not have to be provided explicitly * lint * unit tests * Undo accidental commit * Use Object.freeze on dictionary service constants * Rename DictionaryService methods - getCacheValue and setCacheValue * Add doc comments to GraphQLDictionaryServiceConfig * GraphQLDictionaryService - extract default pageSize into 'defaults' object * Rename graphql.dictionary-service to graphql-dictionary-service. Rename rest.dictionary-service to rest-dictionary-service. * Rethrow error from promise chain in graphql-request-client * Improve comments in data-fetcher.ts * Comments * lint * fetchDictionaryData - do not use make return value depend on cache * Revent renaming of src\lib\data-fetcher.ts * Update comments and variable name * jssAppTemplateId should be a required variable in the getRoot query * capitalize DEFAULTS object name * Rename appName -> siteName * version v16.1.0-canary.9 [skip ci] * [JSS] [Angular] Update to Angular 11 (#635) * changes * update to 11.2.6 * Fix angular schematics * Update apollo client * Upgrade typescript-eslint * upgrade angular-eslint * update packages * upgrade test packages * Update sitecore-jss-angular packages * Upgrade angular-devkit * FIx error: JssModule can't read property 'emod' of undefined * Add chalk, fix deprecations * Push lock files * Remove deprecated extractCss * Release notes * Fix typo * Fix ini (low severity) vulnerability * Edit release-notes Co-authored-by: Adam Brauer * version v16.1.0-canary.10 [skip ci] * [NextJs] Sitecore Experience Edge Authentication (#636) * Added 'sc_apikey' header authentication for GraphQL layout and dictionary services * Added sc_apikey header / param to GraphQL sitemap service. Started sample app updates. * Fixed siteRootQuery error: Variable "$language" of type "String" used in position expecting type "String!" * Generate environment variables for computed config values as well * Added GRAPH_QL_ENDPOINT to .env file and Vercel deployment doc * PR feedback: use endpoint const, get rid of "calculated config" verbiage * Removed prettier comment * PR feedback: removed "Edge" usage for XM references Co-authored-by: Adam Brauer * version v16.1.0-canary.11 [skip ci] * [node-headless-ssr-experience-edge] Add new starter template for SSR from Experience Edge (#628) * Push first changes * commit * push files * Exclude sample from e2e * push package-lock * update readme.md * Update readme * update config * update * refactoring * Add changes * Remove rewrite_exclude_urls * Added API_KEY * add todo for testing of graphql queries * Change validation message * Change canary version * Push package-lock * Add changes after review * Update pre-requisite * Update canary build * Add changes related to sc_apikey header * Update config apiKey description * Update sc_apikey header description * Update canary version * Push lock files * Fix UT * version v16.1.0-canary.12 [skip ci] * [sitecore-jss] [DictionaryService] fix memory cache (#639) * version v16.1.0-canary.13 [skip ci] * Next.js create param info for dotnet new template * [sitecore-jss] [nextjs] Use consistent not found handling for layout requests (#640) * Align not found return type * Fix ts types * add UT * take response data when 404 * cover by UT * covery by UT * Add updates * Make some methods private, cover error case by UT * version v16.1.0-canary.14 [skip ci] * [Next.js] Remove Apollo dependency for GraphQL (#642) * Use typed-document plugin instead of apollo. Remove apollo-client * Add typed-document-node package, required * Push package.lock * Change jsdoc * version v16.1.0-canary.15 [skip ci] * [NextJS] Handle change to route type to allow nulls. (#643) Build context object in [[...path]] instead of in Layout, since the former is aware of whether route is null or not * version v16.1.0-canary.16 [skip ci] * [JSS] [NextJs] Sitemap query limits to 10 by default (#644) * whitespace * rebase onto dev * Add pagination to sitemap service * improve comments * Add more error handling to graphql-sitemape-service * unit tests & lint * Release notes * Improve comments and type checking * Fix merge issues * Change visibility of GraphQLSitemapService.fetch to protected * version v16.1.0-canary.17 [skip ci] * [JSS] [NextJs] Debug Logging (#645) * Low-level http request/response debug logging ("sitecore-jss:http" namespace) for both GraphQL (`graphql-request-client.ts`) and REST/fetch (`axios-fetcher`). Feature-level logging for dictionary and layout ("sitecore-jss:dictionary" and "sitecore-jss:layout" namespaces). * Debug log tests for http logging * Use object formatting, Axios 'toJSON' if available for errors * Sitemap and experience editor feature-level logging * Add rootItemId.toLowerCase() back to GraphQL sitemap query * Added documentation * Added to release notes * PR feedback: SDKs > npm packages, added note about server-side only logs * PR feedback: Centralized debug 'debuggers' in sitecore-jss * Allow debugger injection into low-level http wrappers (axios-fetcher and graphql-request-client) so that these request/response logs can appear under feature-level namespaces. * Updated docs * Fix lint error * version v16.1.0-canary.18 [skip ci] * Renamed debug logging namespace "sitecore-jss:experience-editor" > "sitecore-jss:editing" * version v16.1.0-canary.19 [skip ci] * [Docs][469075] Add notes on compatibility & CLI example for older JSS releases (#634) * Update params, include example for specific release version * Add version compatibility info Include links to the compatibility table and to the CLI reference (updated with an example for creating an app using a previous version of JSS). * Fix typo * Add version compatibility note and link to table * Add compatibility note * Add note on Sitecore and JSS versions * Change versioning wording * [NextJs] GraphQL schema updates and fragment data generation removal (#648) * Removed GraphQLFragmentTypes.json and corresponding script to generate. This is no longer needed with our removal of Apollo in the sample app. Also, added apikey to the introspection fetch and switched to use our GraphQLRequestClient as opposed to cross-fetch. * Updates for item children GraphQL edge schema change (now uses item search results pattern vs an array of items). * version v16.1.0-canary.20 [skip ci] * Added DEBUG_MULTILINE to allow switching from %o (pretty-print single line) to %O (pretty-print multiple line) formatting (#649) * version v16.1.0-canary.21 [skip ci] * NPM package security update: 'url-parse' and 'y18n' (#651) * 'url-parse' dependency removal / upgrade to address vulnerability with v1.4.7 (https://nvd.nist.gov/vuln/detail/CVE-2021-27515) * Address y18n vulnerability (high): https://www.npmjs.com/advisories/1654 * lock file updates (npm run reset) * Remove url-parse from sitecore-jss-angular, remove @types from sitecore-jss-forms * Push lock files Co-authored-by: illiakovalenko * version v16.1.0-canary.22 [skip ci] * [Doc] Remove `remove language from package.json` step in `Walkthrough: Using next export` (#658) * Update PULL_REQUEST_TEMPLATE.MD Removed checklist * Update PULL_REQUEST_TEMPLATE.MD Combined description and motivation sections. Reworded Testing section title * version v16.1.0-canary.23 [skip ci] * CONTRIBUTING refresh: node/npm versions, 'dev' branch now default (#673) * version v16.1.0-canary.24 [skip ci] * [sitecore-jss-nextjs] Links inside RichText control cause page to be loaded twice (#659) * Fix internal links initialization * Add doc * version v16.1.0-canary.25 [skip ci] * [Angular] Extend description for Lazy Loading component (#674) * version v16.1.0-canary.26 [skip ci] * Feature/469713 (#656) * Refactoring - avoid duplicating getQueryString and other URL resolving logic; add unit tests for this function * Reorganize modules related to layout service - move them into their own folder and separate rest/graphql, similar to what we did with dictionary modules * remove 'data-api' file to improve the dependency hierarchy * Use proper querystring types from @types/node/querystring * break up util functions - isolate EE utils in 'experience-editor' file; break out logic for resolving app root into its own util for reuse in sitemap * Move test data for unit tests into a separate json file * Update properties in sitecore-jss/package.json * Enable syntax highlighting on graphql string via prettier * set noUnusedLocals to true in sitecore-jss-nextjs Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> * version v16.1.0-canary.27 [skip ci] * Bug/475365 (#679) * Fit error about missing http module - apparently importing and then exporting a lib in this manner is not ok * Fix circular dependency in src/utils/experience-editor * Add index/ts file under /i18n for easier imports * Add a table comparing API of sitecore-jss 16.0 vs 18.0 to migration guide and fix a couple missing exports * version v16.1.0-canary.28 [skip ci] * [node-headless-ssr-proxy + Angular sample] Error in console when refresh /graphql page (#680) * [node-headless-ssr-proxy + Angular sample] Error in console when refresh /graphql page * Update release notes * version v16.1.0-canary.29 [skip ci] * Feature/475116 (#682) * Update SitePageQuery (used by sitemap) to use a variable for "_hasLayout" clause * Add "contains operator" to our graphql search() queries and start docs for edge-specific graphql requirements * Add query example to docs * version v16.1.0-canary.30 [skip ci] * [sitecore-jss-forms] Fix for multi-valued fields with pre-filled form data (#677) * Fix issue where pre-filled (default) form data isn't removed for multi-valued fields when user de-selects values. * Added release note * version v16.1.0-canary.31 [skip ci] * Fix lint issues * Push package lock * Edit line endings before write to file, force to use CRLF * Extend description * Extend description * Edit line endings for Vue sample * version v16.1.0-canary.32 [skip ci] * [sitecore-jss] [mediaApi] `updateImageUrl` fix for invalid hash errors on Sitecore (#681) * media-api updateImageUrl update - *only* switch to JSS media handler prefix if image params are sent. Otherwise, the original media URL should be returned. Fixes hash errors from appearing in Sitecore logs ("ERROR MediaRequestProtection: An invalid/missing hash value was encountered.") * added release note * Don't modify 'params' parameter! * Also check 'params' object keys b/c of cases where an empty object is passed in by the frameworks usage (and in fact the srcset logic appears to do that) * version v16.1.0-canary.33 [skip ci] * Dependency upgrades - High severity vulnerabilities (#685) * vulnerability updates: ssri (https://nvd.nist.gov/vuln/detail/CVE-2021-27290), ini (https://nvd.nist.gov/vuln/detail/CVE-2020-7788), y18n (https://nvd.nist.gov/vuln/detail/CVE-2020-7774), lodash (https://nvd.nist.gov/vuln/detail/CVE-2021-23337) * Semver-compatible vulnerability updates for /docs (just keep on life support for now) * version v16.1.0-canary.34 [skip ci] * Bug/472144 (#683) * Add default language for node-headless-ssr-experience-edge * Add todo to fix similar issue in headless-ssr-proxy * Update README.md * version v16.1.0-canary.35 [skip ci] * Bump lerna version to match ci / lock version (3.22.x) for local development. Misc lock files updated (after reset). * version v16.1.0-canary.36 [skip ci] * [node-headless-ssr-experience-edge] Update readme (#688) * version v16.1.0-canary.37 [skip ci] * Add dataApi, mediaApi back to sitecore-jss-nextjs package export * version v16.1.0-canary.38 [skip ci] * [NextJs] Switch sample app source to GraphQL by default (#689) Switch the source code default fetch for layout and dictionary data to GraphQL. REST will remain the default for jss create (--fetchWith). Updates to docs as needed. * version v16.1.0-canary.39 [skip ci] * [JSS] Address high severity vulnerabilities (#691) * Update packages * Uppdate other packages * Revert sitecore-jss-nextjs `next` package version * version v16.1.0-canary.40 [skip ci] * Feature/467450 - Edge GraphQL query & services updates (#692) Functional changes: * Update introspection, and connected/disconnected GraphQL components in Next sample to account for latest Edge scheme. The change is that `language` is required in all queries. This fixes the broken build. Non-functional devEx improvements: * Add CacheClient and GraphQLClient interfaces to allow implementations to override which 3rd party libs are used by services. * Pull shared functionality related to using `search` query (ie handling pagination) into new SearchQueryService; update GraphQLDictionaryService and SitemapService to use this service. * Make it easier to customize our services by changing access level of methods from private to protected Misc changes: * [sitecore-jss] Move app root query functionality from /utils to /graphql * Fix typo in docs * version v16.1.0-canary.41 [skip ci] * Add language fallback settings to nextjs sample config (#695) * version v16.1.0-canary.42 [skip ci] * [NextJs] Added IncludeServerUrlInMediaUrls "default" configuration to Next.js sample app (necessary for Sitecore GraphQL Edge) (#696) * version v16.1.0-canary.43 [skip ci] * [sitecore-jss] [graphql-dictionary-service] use "Key" and "Phrase" capitalized (#697) * version v16.1.0-canary.44 [skip ci] * Fix typo * GraphQLSitemapService - allow overriding of query and search service (#705) * version v16.1.0-canary.45 [skip ci] * [Docs][474350] Document the new starter template for SSR (#694) * Document node-headless-ssr-experience-edge * Add nav item for SSR with Edge * Emphasize the experimental nature of the template * Specify that non-next.js apps use legacy/non-Edge schema. * Fix typo, improve clarity * Add ssr-edge sample to list of experimental templates * Review language * Add third-party note on Node.js as per PBI 435247 Co-authored-by: Anca Emcken * Use correct 'layout' debug namespace for graphql-layout-service. * version v16.1.0-canary.46 [skip ci] * Fix merge conflict - this comment was in the wrong place * version v16.1.0-canary.47 [skip ci] * [sitecore-jss-react] [Text] Render value instead of array of single value when value doesn't contain line breaks (#714) * version v16.1.0-canary.48 [skip ci] * [sitecore-jss] Rest Layout Service - Allow override of "named" JSS configuration (#716) * [RestLayoutService] Allow override of "named" JSS configuration * Add UT Co-authored-by: illiakovalenko * version v16.1.0-canary.49 [skip ci] * Allow to publish canary for release branches * version v16.1.0-canary.50 [skip ci] * [Fix] Update Text components to accept number values (#713) * Update Text components to accept number values * [sitecore-jss-react] [Text] Render value instead of array of single value when value doesn't contain line breaks * PR feedback - handle zero number value, added tests to cover. Also added tests to cover empty string (should not render). * Update react/nextjs number fields in styleguide route manifest Co-authored-by: illiakovalenko * version v16.1.0-canary.51 [skip ci] * Include release/* branches to be triggered * version v16.1.0-canary.52 [skip ci] * Trigger azure pipeline on the branch which targets release branch * version v16.1.0-canary.53 [skip ci] * Apply workaround, b/c SourceBranchName doesn't contain `release` prefix, it takes last part * Use variable * Apply fix for branchName * version v16.1.0-canary.54 [skip ci] * v18.0.0 * version v18.0.1-canary.0 [skip ci] * v18.0.0-canary.0 * version v18.0.0-canary.1 [skip ci] * [Doc] [NextJS] GraphQL + Disconnected mode compatibility (#717) * [Doc] [NextJS] GraphQL + Disconnected mode compatibility * Add route * Review language and style * Remove duplicate export Co-authored-by: Anca Emcken * [Docs] Align with styleguide, fix incomplete sentence (#709) * Fix incomplete sentence * Review and update according to docs styleguide * Change case for headings Our doc styleguide requires all heading use sentence case (instead of title case). Co-authored-by: Anca Emcken * Merge pull request #708 from Sitecore/docs/435247 [Docs] Explicitly mention that NodeJS is a third-party technology. * Merge pull request #710 from Sitecore/docs/445595 [Docs] Change starter->sample and associated changes + small lang & style fixes * Merge pull request #719 from Sitecore/docs/445596 [445596][Docs] Replace jss.sitecore.net with jss.sitecore.com * [Docs][Next.js] Add video walkthrough (#729) * Add video walkthrough * Update iframe src with correct embed url Co-authored-by: Anca Emcken * [Docs] Update README with samples entry for Next.js and highlight features (#632) * Update with samples entry for Next.js and highlight features * Update product name * Drop mention of create-next-app * Fix small grammar issues * Update README.md Co-authored-by: Anca Emcken * version v18.0.0-canary.2 [skip ci] * Update Next.js sample config - layoutServiceConfiguration="default" (#722) * Update Next.js sample config - layoutServiceConfiguration="default" * Update samples/nextjs/sitecore/config/JssNextWeb.config Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> * version v18.0.0-canary.3 [skip ci] * [All frameworks] Execute correct detection of disconnected or connected mode (#732) * version v18.0.0-canary.4 [skip ci] * Revert "[All frameworks] Execute correct detection of disconnected or connected mode (#732)" This reverts commit 23bb5ec2e926b7ff01ce92df4b65750eb0dc88f7. * version v18.0.0-canary.5 [skip ci] * [Vue] Correct detection of disconnected mode * Add walkthrough for customizing static paths (#739) Co-authored-by: Anca Emcken * [Docs] Add Edge-related material (#740) * Move video demonstration for better fit * Add link to Edge docs * Add Edge alternative to publish:end hook config * Add link to API provisioning docs for Edge * Add Sitecore XM detail to publish:end webhook Co-authored-by: Anca Emcken * [Docs][Next.js]Fix step for deploying Next.js items to Sitecore [479849] (#741) * Fix step for deploying Next.js items to Sitecore * Clarify how to deploy a Next.js app to Sitecore * Push hash to history if present, account for target other than link * Handle hash when routing * Add flags docs/data/routes/docs/nextjs/getting-started-nextjs/walkthrough-jsscreate/en.md Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> Co-authored-by: Anca Emcken Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> * [Docs] Update services (#751) * Separate content and move getStaticPaths Moves getStaticPaths documentation under "Page Routing". Redirects from old to new location. Fixes cross-references. Removes GraphQLSitemapService which should go in its own doc. * Add nav and page for GraphQLSitemapService * Add EXPORT_MODE variable to steps * Use ManifestInstance * Update deprecated signature * Update doc title * Link to first mention * [483268] Document graphQL query error for Next.js + SXA * Update GraphQLSitemapService documentation * Update navigation item * Add Services & APIs overview for fundamentals * Split back- and front-end layout service, update content Splits the Layout Service section into the front- and back-end parts for easier management of changes. Updates nav. Adds redirects as needed. * Fix typos * Add link to Next.js app lib as example of service factories * Clarify in the heading this is the REST layout service * Revert move of getStaticPaths topic * Make example framework agnostic * Remove duplicate heading * Fix typo * Remove mystery variable * Re-word factory description * Clarify JSS clients interact with Sitecore Headless services These types of distinctions become increasingly important as we separate server components from JSS services * Reorganize Layout overview * Add redirect to overview for Layout service Since server components Layout service and JSS one were mixed in a single doc, we don't know which one old links out in the world were meant to reach. By pointing at the overview, devs can then pick the one they are interested in. * Refactor Dictionary service docs Split Sitecore from JSS Add redirects Update nav * Update title * Fix indentation * Specify other services/apis * Fix redirect for layout service landing * Update layout service links * Remove dataApi reference * Expand description and provide GraphQL examples for Dictionary service * Clean up Headless Dictionary Service description * Expand description and provide GraphQL example for Layout service * Update links to dictionary service documentation * Enrich dictionary overview with info about GQL and links * Incorporate doc update from PR#744 * Remove duplicate menu item * Update docs/data/routes/docs/fundamentals/services/dictionary/overview/en.md Adds missing comma Co-authored-by: Anastasiya Flynn * Move Services higher in the navigation * Change tone * Improve clarity of data fetching options * Change endpoint / product order to match bullet points * Specify the package that provides the dictionary API * Elaborate JSS Dictionary API description * Add note on sample app * Get personal * Remove obscure references to back-end concepts * Add returned data example * Change "route data" to "layout data" + small language changes * Link to query definition in branch src file * Re-arrange some content * Specify name for Edge Preview endpoint and add original gql endpoint * Add missing empty line between heading and quote * Clarify that the tracking parameter is only intended for Sitecore XP * [487542] Clarify required version of Sitecore and Headless Service for Next * [486092] Update troubleshooting: Next.js app does not render on Vercel Co-authored-by: Anca Emcken Co-authored-by: Anastasiya Flynn * [Docs] Generate ref docs for jss and nextjs sdks (#766) * Generate ref docs for jss and nextjs sdks * Regenerate docs with updated readmes * Update readmes and location of ref-docs * Generate ref-docs without duplicating package readme Co-authored-by: Anca Emcken * version v18.0.0-canary.6 [skip ci] * Add ref docs links (#767) Co-authored-by: Anca Emcken * Fix broken links to main docs (#770) Co-authored-by: Anca Emcken * Add example and config for Next.js + small fixes (#769) Co-authored-by: Anca Emcken * 18.0.0 Release Notes (#779) * Update release notes for v18. Create CHANGELOG file. * Add link to Sitecore Experience Edge schema docs * Link to JSS Layout / Dictionary APIs * Add link to sitecore-jss and sitecore-jss-nextjs ref docs * Fix Edge heading and add link to docs * Add section on docs and update links * Drop "API" * Wrap param names in backticks * Add link to CLI docs for create * Improve links to Edge docs sections The Edge docs were published today so we now have access to section IDs * Update links to Sitecore docs Co-authored-by: Anca Emcken * version v18.0.0-canary.7 [skip ci] * Update "Found a problem" link in docs to use release/18.0.0 branch instead of master (#780) * Typo Co-authored-by: Automated Build Co-authored-by: Nick Wesselman Co-authored-by: Adam Brauer Co-authored-by: Illia Kovalenko <23364749+illiakovalenko@users.noreply.github.com> Co-authored-by: Adam Brauer <400763+ambrauer@users.noreply.github.com> Co-authored-by: Erik van 't Klooster Co-authored-by: illiakovalenko Co-authored-by: illiakovalenko Co-authored-by: Anca Emcken Co-authored-by: Calvin Williams <40271790+sc-CalvinWilliams@users.noreply.github.com> Co-authored-by: Nick Wesselman <27013789+nickwesselman@users.noreply.github.com> Co-authored-by: Coby Sher <63015754+CobyPear@users.noreply.github.com> Co-authored-by: Anca Emcken <1617798+ancaemcken@users.noreply.github.com> --- .github/PULL_REQUEST_TEMPLATE.MD | 15 +- .gitignore | 1 + CHANGELOG.md | 150 + CODE_OF_CONDUCT.md | 2 +- CONTRIBUTING.md | 6 +- README.md | 63 +- azure-pipelines.yml | 14 +- docs/assets/css/jumbo.css | 19 - docs/assets/img/nextjs-sitecore-analytics.svg | 2 +- docs/assets/img/nextjs-sitecore-routing.svg | 2 +- docs/build/start-prod.js | 21 +- .../angular/angular-placeholders/en.md | 7 +- .../client-frameworks/angular/reference/en.md | 2 +- .../angular/sample-app/en.md | 6 +- .../getting-started/app-deployment/en.md | 4 +- .../getting-started/jss-server-install/en.md | 12 +- .../getting-started/quick-start/en.md | 15 +- .../react-native/sample-app/en.md | 6 +- .../client-frameworks/react/sample-app/en.md | 4 +- .../client-frameworks/vue/reference/en.md | 2 +- .../client-frameworks/vue/sample-app/en.md | 4 +- docs/data/routes/docs/en.md | 6 +- .../docs/fundamentals/application-modes/en.md | 2 +- .../docs/fundamentals/architecture/en.md | 6 +- docs/data/routes/docs/fundamentals/cli/en.md | 42 +- .../docs/fundamentals/personalization/en.md | 4 +- .../services/dictionary-service/en.md | 75 - .../dictionary/jss-dictionary-api/en.md | 123 + .../services/dictionary/overview/en.md | 31 + .../sitecore-dictionary-service/en.md | 27 + .../fundamentals/services/forms-service/en.md | 2 +- .../docs/fundamentals/services/graphql/en.md | 30 +- .../services/layout-service/en.md | 137 - .../services/layout/jss-layout-api/en.md | 120 + .../services/layout/overview/en.md | 30 + .../layout/sitecore-layout-service/en.md | 103 + .../docs/fundamentals/services/overview/en.md | 59 + .../docs/fundamentals/services/tracking/en.md | 2 +- .../troubleshooting/debug-logging/en.md | 61 + .../routes/docs/introduction/why-jss/en.md | 3 +- .../customizing-static-paths/en.md | 230 +- .../nextjs/data-fetching/data-services/en.md | 30 +- .../nextjs/data-fetching/getStaticPaths/en.md | 118 +- .../switching-fetch-method/en.md | 27 + .../deploying-to-production/export/en.md | 15 +- .../server-components/en.md | 2 +- .../deploying-to-production/vercel/en.md | 45 +- .../docs/nextjs/experience-edge/api/en.md | 19 + .../how-is-nextjs-different/en.md | 13 +- .../walkthrough-dotnetnew/en.md | 16 +- .../walkthrough-jsscreate/en.md | 32 +- .../getting-started-nextjs/why-nextjs/en.md | 6 +- .../workflow-options/en.md | 5 +- .../docs/nextjs/graphql/introspection/en.md | 16 +- .../docs/nextjs/graphql/sample-app/en.md | 77 +- .../docs/nextjs/page-routing/jss-routes/en.md | 2 +- .../page-routing/switching-to-ssr/en.md | 29 +- .../services/graphql-sitemap-service/en.md | 40 + .../configuration/en.md | 31 +- .../tracking-and-analytics/overview/en.md | 14 +- .../routes/docs/nextjs/troubleshooting/en.md | 52 +- .../authentication/sitecore-auth/en.md | 6 +- .../docs/techniques/content-translation/en.md | 4 +- .../extending-layout-service-overview/en.md | 13 +- docs/data/routes/docs/techniques/forms/en.md | 64 +- .../javascript-rendering/en.md | 2 +- .../techniques/ssr/headless-mode-ssr/en.md | 4 +- .../ssr/sitecore-experience-edge/en.md | 78 + .../disconnected-overview/en.md | 137 +- .../working-disconnected/manifest-api/en.md | 2 +- docs/data/routes/help/en.md | 15 - docs/data/routes/release-notes/en.md | 109 +- docs/data/routes/upgrade-guides/18.0/en.md | 82 + docs/package-lock.json | 68 +- docs/package.json | 6 +- docs/sitecore/definitions/routes.sitecore.js | 2 +- docs/src/app/components/FeatureJumboShort.js | 28 +- docs/src/app/components/Navigation/docs.js | 107 +- docs/src/app/components/Navigation/nextjs.js | 38 +- .../src/app/components/RouteLinkedRichText.js | 11 +- docs/src/boot/RouteHandler.js | 26 +- e2e/README.md | 10 +- e2e/cypress/package-lock.json | 6 +- .../0 Setup/15 Deploy scjssconfig.json.ps1 | 2 +- .../0 Setup/60 Manifest Sample Apps.ps1 | 2 +- .../0 Setup/70 Package Sample Apps.ps1 | 2 +- .../0 Setup/80 Deploy hosts entries.ps1 | 2 +- .../1 Deploy/00 Deploy JSS Configs.ps1 | 2 +- .../1 Deploy/10 Deploy Sample Apps.ps1 | 2 +- .../20 Deploy Sample Apps - Danish.ps1 | 2 +- .../Pipelines/2 Test/10 Request app LS.ps1 | 1 + .../20 Request app Dictionary Service.ps1 | 1 + .../2 Test/30 Request app SSR pages.ps1 | 1 + .../2 Test/40 Run cypress e2e tests.ps1 | 1 + lerna.json | 2 +- package-lock.json | 12055 ++--- package.json | 9 +- .../sitecore-jss-angular-schematics/README.md | 2 +- .../package-lock.json | 238 +- .../package.json | 12 +- .../src/jss-component/index.ts | 38 +- packages/sitecore-jss-angular/README.md | 2 +- packages/sitecore-jss-angular/ng-package.json | 2 +- packages/sitecore-jss-angular/ngcc.config.js | 7 - .../sitecore-jss-angular/package-lock.json | 3083 +- packages/sitecore-jss-angular/package.json | 58 +- .../src/components/image.directive.spec.ts | 25 +- .../src/components/text.directive.spec.ts | 33 + .../src/components/text.directive.ts | 2 +- .../src/layout.service.ts | 1 + .../sitecore-jss-angular/src/public_api.ts | 2 +- packages/sitecore-jss-cli/README.md | 2 +- packages/sitecore-jss-cli/package-lock.json | 20 +- packages/sitecore-jss-cli/package.json | 10 +- .../sitecore-jss-cli/src/scripts/create.ts | 2 +- .../src/scripts/deploy.files.ts | 23 +- packages/sitecore-jss-dev-tools/README.md | 2 +- .../sitecore-jss-dev-tools/package-lock.json | 193 +- packages/sitecore-jss-dev-tools/package.json | 12 +- packages/sitecore-jss-forms/README.md | 2 +- packages/sitecore-jss-forms/package-lock.json | 41 +- packages/sitecore-jss-forms/package.json | 9 +- .../src/JssFormData.test.ts | 57 +- .../sitecore-jss-forms/src/JssFormData.ts | 29 +- packages/sitecore-jss-manifest/README.md | 2 +- .../sitecore-jss-manifest/package-lock.json | 26 +- packages/sitecore-jss-manifest/package.json | 10 +- packages/sitecore-jss-nextjs/README.md | 7 +- .../sitecore-jss-nextjs/package-lock.json | 901 +- packages/sitecore-jss-nextjs/package.json | 12 +- .../src/components/RichText.tsx | 3 +- packages/sitecore-jss-nextjs/src/index.ts | 25 +- .../middleware/editing-render-middleware.ts | 28 +- .../services/component-props-service.test.ts | 323 +- .../src/services/component-props-service.ts | 16 +- .../services/disconnected-sitemap-service.ts | 2 +- .../src/services/editing-data-service.test.ts | 14 + .../src/services/editing-data-service.ts | 19 +- .../services/graphql-sitemap-service.test.ts | 533 +- .../src/services/graphql-sitemap-service.ts | 350 +- .../src/sharedTypes/sitemap.ts | 6 - .../src/testData/editing-data.ts | 4 +- .../testData/mockAppRootQueryResponse.json | 13 + .../src/testData/sitemapQueryResult.json | 33 + .../src/testData/sitemapServiceResult.ts | 26 + packages/sitecore-jss-nextjs/tsconfig.json | 5 +- packages/sitecore-jss-proxy/README.md | 2 +- packages/sitecore-jss-proxy/package-lock.json | 193 +- packages/sitecore-jss-proxy/package.json | 6 +- packages/sitecore-jss-react-forms/README.md | 2 +- .../package-lock.json | 20 +- .../sitecore-jss-react-forms/package.json | 8 +- packages/sitecore-jss-react-native/README.md | 2 +- .../package-lock.json | 44 +- .../sitecore-jss-react-native/package.json | 10 +- .../src/components/Date.tsx | 7 +- .../src/components/Image.tsx | 18 +- .../src/components/Text.test.tsx | 32 + .../src/components/Text.tsx | 4 +- .../__snapshots__/Image.test.tsx.snap | 6 +- .../__snapshots__/Text.test.tsx.snap | 14 + .../src/dataConversion.test.ts | 154 - .../src/dataConversion.ts | 131 - .../sitecore-jss-react-native/src/index.ts | 4 - .../dataConversionTestData/dev-data.ts | 201 - .../dataConversionTestData/ee-data.ts | 698 - .../dataConversionTestData/non-ee-data.js | 508 - .../sitecore-jss-react/.vscode/launch.json | 14 +- packages/sitecore-jss-react/README.md | 2 +- packages/sitecore-jss-react/package-lock.json | 48 +- packages/sitecore-jss-react/package.json | 12 +- .../src/components/Image.test.tsx | 30 +- .../src/components/RichText.test.tsx | 8 + .../src/components/Text.test.tsx | 65 +- .../src/components/Text.tsx | 42 +- packages/sitecore-jss-react/src/index.ts | 1 - .../sitecore-jss-rendering-host/README.md | 2 +- .../package-lock.json | 56 +- .../sitecore-jss-rendering-host/package.json | 6 +- packages/sitecore-jss-tracking/README.md | 2 +- .../sitecore-jss-tracking/package-lock.json | 48 +- packages/sitecore-jss-tracking/package.json | 15 +- .../src/trackingApi.test.ts | 6 +- .../sitecore-jss-tracking/src/trackingApi.ts | 29 +- .../src/trackingRequestOptions.ts | 7 +- .../sitecore-jss-update-package/README.md | 2 +- .../package-lock.json | 193 +- .../sitecore-jss-update-package/package.json | 6 +- packages/sitecore-jss-vue/README.md | 2 +- packages/sitecore-jss-vue/package-lock.json | 54 +- packages/sitecore-jss-vue/package.json | 10 +- .../src/components/Image.test.ts | 25 +- .../src/components/Text.test.ts | 37 + .../sitecore-jss-vue/src/components/Text.ts | 4 +- packages/sitecore-jss/README.md | 7 +- packages/sitecore-jss/package-lock.json | 113 +- packages/sitecore-jss/package.json | 15 +- ...-fetcher.test.ts => axios-fetcher.test.ts} | 54 +- packages/sitecore-jss/src/axios-fetcher.ts | 166 + packages/sitecore-jss/src/cache-client.ts | 93 + packages/sitecore-jss/src/constants.ts | 7 + packages/sitecore-jss/src/data-fetcher.ts | 168 +- packages/sitecore-jss/src/dataApi.test.ts | 133 - packages/sitecore-jss/src/dataApi.ts | 153 - packages/sitecore-jss/src/debug.ts | 30 + .../sitecore-jss/src/dictionary-service.ts | 110 - .../src/graphql-request-client.test.ts | 100 +- .../src/graphql-request-client.ts | 84 +- .../src/graphql/app-root-query.ts | 79 + .../sitecore-jss/src/graphql/graphql.test.ts | 95 + packages/sitecore-jss/src/graphql/index.ts | 7 + .../src/graphql/search-service.ts | 122 + .../sitecore-jss/src/httpClientInterface.ts | 23 - .../src/i18n/dictionary-service.ts | 71 + .../i18n/graphql-dictionary-service.test.ts | 221 + .../src/i18n/graphql-dictionary-service.ts | 149 + packages/sitecore-jss/src/i18n/index.ts | 10 + .../rest-dictionary-service.test.ts} | 14 +- .../src/i18n/rest-dictionary-service.ts | 79 + packages/sitecore-jss/src/index.ts | 63 +- .../src/layout/graphql-layout-service.test.ts | 237 + .../src/layout/graphql-layout-service.ts | 105 + .../sitecore-jss/src/layout/layout-service.ts | 28 + .../src/{dataModels.ts => layout/models.ts} | 18 +- .../rest-layout-service.test.ts} | 226 +- .../rest-layout-service.ts} | 209 +- .../{layoutDataUtils.ts => layout/utils.ts} | 2 +- .../{mediaApi.test.ts => media-api.test.ts} | 49 +- .../src/{mediaApi.ts => media-api.ts} | 31 +- .../testData/mockAppRootQueryResponse.json | 13 + .../testData/mockDictionaryQueryResponse.json | 29 + packages/sitecore-jss/src/util.test.ts | 54 - .../{util.ts => utils/experience-editor.ts} | 2 +- packages/sitecore-jss/src/utils/index.ts | 4 + packages/sitecore-jss/src/utils/is-server.ts | 9 + .../sitecore-jss/src/utils/resolve-url.ts | 49 + packages/sitecore-jss/src/utils/utils.test.ts | 94 + packages/sitecore-jss/tsconfig.json | 6 +- packages/sitecore-pipelines/README.md | 2 +- packages/sitecore-pipelines/package-lock.json | 193 +- packages/sitecore-pipelines/package.json | 6 +- ref-docs/sitecore-jss-nextjs/README.md | 25 + .../classes/index.AxiosDataFetcher.md | 214 + .../classes/index.GraphQLDictionaryService.md | 226 + .../classes/index.GraphQLLayoutService.md | 142 + .../classes/index.GraphQLRequestClient.md | 121 + .../classes/index.RestDictionaryService.md | 217 + .../classes/index.RestLayoutService.md | 190 + .../classes/index.SitecoreContext.md | 703 + ...editing_data_cache.EditingDataDiskCache.md | 97 + ...g_data_middleware.EditingDataMiddleware.md | 116 + ...nder_middleware.EditingRenderMiddleware.md | 220 + ...ent_props_service.ComponentPropsService.md | 209 + ...emap_service.DisconnectedSitemapService.md | 52 + ...editing_data_service.EditingDataService.md | 151 + ...l_sitemap_service.GraphQLSitemapService.md | 212 + .../enums/index.LayoutServicePageState.md | 45 + .../interfaces/index.ComponentFields.md | 11 + .../interfaces/index.ComponentParams.md | 11 + .../interfaces/index.ComponentRendering.md | 78 + .../interfaces/index.DictionaryPhrases.md | 11 + .../interfaces/index.DictionaryService.md | 35 + .../interfaces/index.Field.md | 38 + .../interfaces/index.FileField.md | 21 + .../index.GraphQLDictionaryServiceConfig.md | 170 + .../interfaces/index.HtmlElementRendering.md | 60 + .../interfaces/index.HttpResponse.md | 57 + .../interfaces/index.ImageField.md | 32 + .../interfaces/index.Item.md | 49 + .../interfaces/index.LayoutService.md | 38 + .../interfaces/index.LayoutServiceContext.md | 77 + .../index.LayoutServiceContextData.md | 23 + .../interfaces/index.LayoutServiceData.md | 23 + .../index.LayoutServiceRequestOptions.md | 59 + .../interfaces/index.LinkField.md | 43 + .../interfaces/index.LinkFieldValue.md | 80 + .../interfaces/index.ManifestInstance.md | 116 + .../interfaces/index.RouteData.md | 148 + .../interfaces/index.SitecoreContextState.md | 51 + ...are_editing_data_cache.EditingDataCache.md | 59 + ..._middleware.EditingDataMiddlewareConfig.md | 47 + ...iddleware.EditingRenderMiddlewareConfig.md | 108 + ...g_data_service.EditingDataServiceConfig.md | 46 + ...map_service.GraphQLSitemapServiceConfig.md | 115 + ...edTypes_editing_data.EditingPreviewData.md | 34 + .../components_ComponentPropsContext.md | 99 + .../modules/components_Link.Link.md | 47 + .../modules/components_Link.md | 65 + .../modules/components_RichText.RichText.md | 47 + .../modules/components_RichText.md | 65 + .../sitecore-jss-nextjs/modules/constants.md | 30 + ref-docs/sitecore-jss-nextjs/modules/index.md | 776 + .../modules/index.mediaApi.md | 135 + .../sitecore-jss-nextjs/modules/middleware.md | 43 + .../modules/middleware_editing_data_cache.md | 29 + .../middleware_editing_data_middleware.md | 13 + .../middleware_editing_render_middleware.md | 37 + .../services_component_props_service.md | 63 + .../services_disconnected_sitemap_service.md | 9 + .../modules/services_editing_data_service.md | 40 + .../services_graphql_sitemap_service.md | 82 + .../modules/sharedTypes_component_module.md | 33 + .../modules/sharedTypes_component_props.md | 87 + .../modules/sharedTypes_editing_data.md | 58 + ref-docs/sitecore-jss-nextjs/modules/utils.md | 65 + ref-docs/sitecore-jss/README.md | 32 + .../classes/axios_fetcher.AxiosDataFetcher.md | 214 + .../classes/cache_client.MemoryCacheClient.md | 137 + ...hql_request_client.GraphQLRequestClient.md | 110 + ...aphql_search_service.SearchQueryService.md | 93 + ...ictionary_service.DictionaryServiceBase.md | 177 + ...ionary_service.GraphQLDictionaryService.md | 222 + ...ictionary_service.RestDictionaryService.md | 215 + ...hql_layout_service.GraphQLLayoutService.md | 138 + ...layout_layout_service.LayoutServiceBase.md | 64 + ...t_rest_layout_service.RestLayoutService.md | 250 + .../enums/constants.SitecoreTemplateId.md | 32 + .../layout_models.LayoutServicePageState.md | 45 + .../interfaces/cache_client.CacheClient.md | 74 + .../interfaces/cache_client.CacheOptions.md | 48 + .../interfaces/data_fetcher.HttpResponse.md | 57 + .../graphql_request_client.GraphQLClient.md | 46 + ...phql_search_service.SearchServiceConfig.md | 91 + ...8n_dictionary_service.DictionaryPhrases.md | 11 + ...8n_dictionary_service.DictionaryService.md | 39 + ..._service.GraphQLDictionaryServiceConfig.md | 170 + .../layout_layout_service.LayoutService.md | 42 + .../layout_models.ComponentFields.md | 11 + .../layout_models.ComponentParams.md | 11 + .../layout_models.ComponentRendering.md | 78 + .../interfaces/layout_models.Field.md | 38 + .../layout_models.HtmlElementRendering.md | 60 + .../interfaces/layout_models.Item.md | 49 + .../layout_models.LayoutServiceContext.md | 77 + .../layout_models.LayoutServiceContextData.md | 23 + .../layout_models.LayoutServiceData.md | 23 + .../layout_models.PlaceholderData.md | 45 + .../interfaces/layout_models.RouteData.md | 148 + ...rest_layout_service.LayoutServiceConfig.md | 50 + ...out_service.LayoutServiceRequestOptions.md | 59 + .../sitecore-jss/modules/axios_fetcher.md | 23 + ref-docs/sitecore-jss/modules/cache_client.md | 14 + ref-docs/sitecore-jss/modules/constants.md | 9 + ref-docs/sitecore-jss/modules/data_fetcher.md | 84 + ref-docs/sitecore-jss/modules/debug.md | 29 + ref-docs/sitecore-jss/modules/graphql.md | 50 + .../modules/graphql_app_root_query.md | 91 + .../modules/graphql_request_client.md | 36 + .../modules/graphql_search_service.md | 68 + ref-docs/sitecore-jss/modules/i18n.md | 64 + .../modules/i18n_dictionary_service.md | 14 + .../i18n_graphql_dictionary_service.md | 52 + .../modules/i18n_rest_dictionary_service.md | 42 + ref-docs/sitecore-jss/modules/index.md | 421 + .../modules/layout_graphql_layout_service.md | 32 + .../modules/layout_layout_service.md | 13 + .../sitecore-jss/modules/layout_models.md | 59 + .../modules/layout_rest_layout_service.md | 164 + ref-docs/sitecore-jss/modules/layout_utils.md | 89 + ref-docs/sitecore-jss/modules/media_api.md | 133 + ref-docs/sitecore-jss/modules/utils.md | 36 + .../modules/utils_experience_editor.md | 38 + .../sitecore-jss/modules/utils_is_server.md | 27 + .../sitecore-jss/modules/utils_resolve_url.md | 37 + samples/angular/.eslintrc | 28 +- samples/angular/README.md | 2 +- samples/angular/angular.json | 7 +- samples/angular/data/routes/en.yml | 2 +- samples/angular/data/routes/graphql/en.yml | 2 +- samples/angular/data/routes/styleguide/en.yml | 2 +- samples/angular/package-lock.json | 12551 +++-- samples/angular/package.json | 135 +- samples/angular/server.bundle.ts | 19 +- .../app-components.shared.module.ts | 3 - .../graph-ql-connected-demo.component.ts | 2 +- .../graph-ql-integrated-demo.component.ts | 2 +- ...eguide-angular-lazy-loading.component.html | 2 +- samples/angular/src/app/jss-graphql.module.ts | 39 +- .../angular/src/app/jss-graphql.service.ts | 20 +- .../navigation/navigation.component.html | 2 +- samples/angular/src/tsconfig.server.json | 10 +- samples/angular/tsconfig.json | 1 + samples/angular/webpack.server.config.js | 44 - samples/nextjs/.env | 16 +- samples/nextjs/.graphql-let.yml | 3 +- samples/nextjs/README.md | 4 +- samples/nextjs/data/routes/en.yml | 2 +- samples/nextjs/data/routes/graphql/en.yml | 2 +- samples/nextjs/data/routes/styleguide/en.yml | 6 +- samples/nextjs/jss-create.js | 89 + samples/nextjs/package-lock.json | 2875 +- samples/nextjs/package.json | 34 +- .../fetch-graphql-introspection-data.ts | 16 +- samples/nextjs/scripts/generate-config.ts | 22 +- samples/nextjs/scripts/scaffold-component.ts | 11 +- .../nextjs/scripts/templates/component-src.ts | 2 +- .../scripts/update-graphql-fragment-data.ts | 74 - .../nextjs/sitecore/config/JssNextWeb.config | 32 + .../GraphQL-IntegratedDemo.sitecore.graphql | 30 +- samples/nextjs/src/Layout.tsx | 20 +- .../graphql/GraphQL-ConnectedDemo.graphql | 30 +- .../graphql/GraphQL-ConnectedDemo.tsx | 37 +- .../graphql/GraphQL-IntegratedDemo.tsx | 10 +- .../nextjs/src/lib/GraphQLClientFactory.ts | 69 - samples/nextjs/src/lib/data-fetcher.ts | 2 +- .../lib/dictionary-service-factory.rest.ts | 14 + .../src/lib/dictionary-service-factory.ts | 20 + .../src/lib/layout-service-factory.rest.ts | 15 + .../nextjs/src/lib/layout-service-factory.ts | 14 + samples/nextjs/src/lib/page-props-factory.ts | 58 +- samples/nextjs/src/lib/sitemap-fetcher.ts | 20 +- .../[[...path]].SSR.tsx | 4 +- samples/nextjs/src/pages/[[...path]].tsx | 4 +- samples/nextjs/src/temp/.gitignore | 1 - .../nextjs/src/temp/GraphQLFragmentTypes.json | 273 - .../src/temp/GraphQLIntrospectionResult.json | 39946 ++++++++-------- .../README.md | 49 + .../config.js | 42 + .../index.js | 114 + .../package-lock.json | 415 + .../package.json | 33 + samples/node-headless-ssr-proxy/README.md | 2 +- samples/node-headless-ssr-proxy/config.js | 4 +- samples/node-headless-ssr-proxy/index.js | 13 + .../node-headless-ssr-proxy/package-lock.json | 8 +- samples/node-headless-ssr-proxy/package.json | 8 +- samples/react-native/README.MD | 12 +- .../react-native/assets/images.connected.js | 2 +- .../assets/images.disconnected.js | 2 +- .../{data/media => assets}/img/sc_logo.svg | 0 samples/react-native/babel.config.js | 1 - .../react-native/build/startSitecoreTunnel.js | 9 +- samples/react-native/data/routes/en.json | 6 - .../data/routes/styleguide/en.json | 6 +- samples/react-native/package-lock.json | 350 +- samples/react-native/package.json | 38 +- .../sitecore/config/JssReactNative.config | 18 + .../definitions/components/Home.sitecore.js | 1 - samples/react-native/src/Layout.js | 31 + .../react-native/src/components/Home/index.js | 14 +- .../src/components/Home/styles.js | 6 - .../Styleguide-ComponentParams/index.js | 9 +- .../Styleguide-FIeldUsage-Date/index.js | 9 +- .../Styleguide-FieldUsage-Image/index.js | 12 +- .../Styleguide-Layout-Tabs-Tab/index.js | 2 +- .../Styleguide-Layout-Tabs/styles.js | 1 + .../src/dataService/dataService.connected.js | 2 +- .../dataService/dataService.disconnected.js | 4 +- samples/react-native/src/screens/Home.js | 7 +- .../react-native/src/screens/Styleguide.js | 10 +- samples/react/README.md | 2 +- samples/react/data/routes/en.yml | 2 +- samples/react/data/routes/graphql/en.yml | 2 +- samples/react/data/routes/styleguide/en.yml | 6 +- samples/react/package-lock.json | 84 +- samples/react/package.json | 16 +- samples/react/scripts/scaffold-component.js | 19 +- samples/react/server/server.js | 5 +- samples/react/src/Layout.js | 2 +- samples/react/src/dataFetcher.js | 2 +- samples/sitecore-embedded-jss-app/README.md | 2 +- .../package-lock.json | 44 +- .../sitecore-embedded-jss-app/package.json | 14 +- .../src/boot/SitecoreContentService.js | 2 +- .../SampleInteractivity/en.yml | 2 +- .../SamplePlaceholders/en.yml | 2 +- .../component-content/SampleRendering/en.yml | 2 +- .../package-lock.json | 44 +- .../package.json | 14 +- samples/vue/data/routes/en.yml | 2 +- samples/vue/data/routes/graphql/en.yml | 2 +- samples/vue/data/routes/styleguide/en.yml | 2 +- samples/vue/package-lock.json | 126 +- samples/vue/package.json | 23 +- samples/vue/scripts/bootstrap.js | 2 +- samples/vue/scripts/scaffold-component.js | 19 +- samples/vue/src/Navigation.vue | 2 +- samples/vue/src/dataFetcher.js | 2 +- samples/vue/vue.config.js | 5 +- 479 files changed, 57914 insertions(+), 38940 deletions(-) create mode 100644 CHANGELOG.md delete mode 100644 docs/data/routes/docs/fundamentals/services/dictionary-service/en.md create mode 100644 docs/data/routes/docs/fundamentals/services/dictionary/jss-dictionary-api/en.md create mode 100644 docs/data/routes/docs/fundamentals/services/dictionary/overview/en.md create mode 100644 docs/data/routes/docs/fundamentals/services/dictionary/sitecore-dictionary-service/en.md delete mode 100644 docs/data/routes/docs/fundamentals/services/layout-service/en.md create mode 100644 docs/data/routes/docs/fundamentals/services/layout/jss-layout-api/en.md create mode 100644 docs/data/routes/docs/fundamentals/services/layout/overview/en.md create mode 100644 docs/data/routes/docs/fundamentals/services/layout/sitecore-layout-service/en.md create mode 100644 docs/data/routes/docs/fundamentals/services/overview/en.md create mode 100644 docs/data/routes/docs/fundamentals/troubleshooting/debug-logging/en.md create mode 100644 docs/data/routes/docs/nextjs/data-fetching/switching-fetch-method/en.md create mode 100644 docs/data/routes/docs/nextjs/experience-edge/api/en.md create mode 100644 docs/data/routes/docs/nextjs/services/graphql-sitemap-service/en.md create mode 100644 docs/data/routes/docs/techniques/ssr/sitecore-experience-edge/en.md create mode 100644 docs/data/routes/upgrade-guides/18.0/en.md delete mode 100644 packages/sitecore-jss-angular/ngcc.config.js delete mode 100644 packages/sitecore-jss-nextjs/src/sharedTypes/sitemap.ts create mode 100644 packages/sitecore-jss-nextjs/src/testData/mockAppRootQueryResponse.json create mode 100644 packages/sitecore-jss-nextjs/src/testData/sitemapQueryResult.json create mode 100644 packages/sitecore-jss-nextjs/src/testData/sitemapServiceResult.ts delete mode 100644 packages/sitecore-jss-react-native/src/dataConversion.test.ts delete mode 100644 packages/sitecore-jss-react-native/src/dataConversion.ts delete mode 100644 packages/sitecore-jss-react-native/testData/dataConversionTestData/dev-data.ts delete mode 100644 packages/sitecore-jss-react-native/testData/dataConversionTestData/ee-data.ts delete mode 100644 packages/sitecore-jss-react-native/testData/dataConversionTestData/non-ee-data.js rename packages/sitecore-jss/src/{data-fetcher.test.ts => axios-fetcher.test.ts} (80%) create mode 100644 packages/sitecore-jss/src/axios-fetcher.ts create mode 100644 packages/sitecore-jss/src/cache-client.ts create mode 100644 packages/sitecore-jss/src/constants.ts delete mode 100644 packages/sitecore-jss/src/dataApi.test.ts delete mode 100644 packages/sitecore-jss/src/dataApi.ts create mode 100644 packages/sitecore-jss/src/debug.ts delete mode 100644 packages/sitecore-jss/src/dictionary-service.ts create mode 100644 packages/sitecore-jss/src/graphql/app-root-query.ts create mode 100644 packages/sitecore-jss/src/graphql/graphql.test.ts create mode 100644 packages/sitecore-jss/src/graphql/index.ts create mode 100644 packages/sitecore-jss/src/graphql/search-service.ts delete mode 100644 packages/sitecore-jss/src/httpClientInterface.ts create mode 100644 packages/sitecore-jss/src/i18n/dictionary-service.ts create mode 100644 packages/sitecore-jss/src/i18n/graphql-dictionary-service.test.ts create mode 100644 packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts create mode 100644 packages/sitecore-jss/src/i18n/index.ts rename packages/sitecore-jss/src/{dictionary-service.test.ts => i18n/rest-dictionary-service.test.ts} (93%) create mode 100644 packages/sitecore-jss/src/i18n/rest-dictionary-service.ts create mode 100644 packages/sitecore-jss/src/layout/graphql-layout-service.test.ts create mode 100644 packages/sitecore-jss/src/layout/graphql-layout-service.ts create mode 100644 packages/sitecore-jss/src/layout/layout-service.ts rename packages/sitecore-jss/src/{dataModels.ts => layout/models.ts} (90%) rename packages/sitecore-jss/src/{layout-service.test.ts => layout/rest-layout-service.test.ts} (54%) rename packages/sitecore-jss/src/{layout-service.ts => layout/rest-layout-service.ts} (52%) rename packages/sitecore-jss/src/{layoutDataUtils.ts => layout/utils.ts} (98%) rename packages/sitecore-jss/src/{mediaApi.test.ts => media-api.test.ts} (84%) rename packages/sitecore-jss/src/{mediaApi.ts => media-api.ts} (83%) create mode 100644 packages/sitecore-jss/src/testData/mockAppRootQueryResponse.json create mode 100644 packages/sitecore-jss/src/testData/mockDictionaryQueryResponse.json delete mode 100644 packages/sitecore-jss/src/util.test.ts rename packages/sitecore-jss/src/{util.ts => utils/experience-editor.ts} (82%) create mode 100644 packages/sitecore-jss/src/utils/index.ts create mode 100644 packages/sitecore-jss/src/utils/is-server.ts create mode 100644 packages/sitecore-jss/src/utils/resolve-url.ts create mode 100644 packages/sitecore-jss/src/utils/utils.test.ts create mode 100644 ref-docs/sitecore-jss-nextjs/README.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/index.AxiosDataFetcher.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/index.GraphQLDictionaryService.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/index.GraphQLLayoutService.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/index.GraphQLRequestClient.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/index.RestDictionaryService.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/index.RestLayoutService.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/index.SitecoreContext.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/middleware_editing_data_cache.EditingDataDiskCache.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/middleware_editing_data_middleware.EditingDataMiddleware.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/middleware_editing_render_middleware.EditingRenderMiddleware.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/services_component_props_service.ComponentPropsService.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/services_disconnected_sitemap_service.DisconnectedSitemapService.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/services_editing_data_service.EditingDataService.md create mode 100644 ref-docs/sitecore-jss-nextjs/classes/services_graphql_sitemap_service.GraphQLSitemapService.md create mode 100644 ref-docs/sitecore-jss-nextjs/enums/index.LayoutServicePageState.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentFields.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentParams.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentRendering.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.DictionaryPhrases.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.DictionaryService.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.Field.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.FileField.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.GraphQLDictionaryServiceConfig.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.HtmlElementRendering.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.HttpResponse.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.ImageField.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.Item.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutService.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceContext.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceContextData.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceData.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceRequestOptions.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.LinkField.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.LinkFieldValue.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.ManifestInstance.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.RouteData.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/index.SitecoreContextState.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_data_cache.EditingDataCache.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_data_middleware.EditingDataMiddlewareConfig.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/services_editing_data_service.EditingDataServiceConfig.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md create mode 100644 ref-docs/sitecore-jss-nextjs/interfaces/sharedTypes_editing_data.EditingPreviewData.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/components_ComponentPropsContext.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/components_Link.Link.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/components_Link.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/components_RichText.RichText.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/components_RichText.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/constants.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/index.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/index.mediaApi.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/middleware.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/middleware_editing_data_cache.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/middleware_editing_data_middleware.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/middleware_editing_render_middleware.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/services_component_props_service.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/services_disconnected_sitemap_service.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/services_editing_data_service.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/services_graphql_sitemap_service.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/sharedTypes_component_module.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/sharedTypes_component_props.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/sharedTypes_editing_data.md create mode 100644 ref-docs/sitecore-jss-nextjs/modules/utils.md create mode 100644 ref-docs/sitecore-jss/README.md create mode 100644 ref-docs/sitecore-jss/classes/axios_fetcher.AxiosDataFetcher.md create mode 100644 ref-docs/sitecore-jss/classes/cache_client.MemoryCacheClient.md create mode 100644 ref-docs/sitecore-jss/classes/graphql_request_client.GraphQLRequestClient.md create mode 100644 ref-docs/sitecore-jss/classes/graphql_search_service.SearchQueryService.md create mode 100644 ref-docs/sitecore-jss/classes/i18n_dictionary_service.DictionaryServiceBase.md create mode 100644 ref-docs/sitecore-jss/classes/i18n_graphql_dictionary_service.GraphQLDictionaryService.md create mode 100644 ref-docs/sitecore-jss/classes/i18n_rest_dictionary_service.RestDictionaryService.md create mode 100644 ref-docs/sitecore-jss/classes/layout_graphql_layout_service.GraphQLLayoutService.md create mode 100644 ref-docs/sitecore-jss/classes/layout_layout_service.LayoutServiceBase.md create mode 100644 ref-docs/sitecore-jss/classes/layout_rest_layout_service.RestLayoutService.md create mode 100644 ref-docs/sitecore-jss/enums/constants.SitecoreTemplateId.md create mode 100644 ref-docs/sitecore-jss/enums/layout_models.LayoutServicePageState.md create mode 100644 ref-docs/sitecore-jss/interfaces/cache_client.CacheClient.md create mode 100644 ref-docs/sitecore-jss/interfaces/cache_client.CacheOptions.md create mode 100644 ref-docs/sitecore-jss/interfaces/data_fetcher.HttpResponse.md create mode 100644 ref-docs/sitecore-jss/interfaces/graphql_request_client.GraphQLClient.md create mode 100644 ref-docs/sitecore-jss/interfaces/graphql_search_service.SearchServiceConfig.md create mode 100644 ref-docs/sitecore-jss/interfaces/i18n_dictionary_service.DictionaryPhrases.md create mode 100644 ref-docs/sitecore-jss/interfaces/i18n_dictionary_service.DictionaryService.md create mode 100644 ref-docs/sitecore-jss/interfaces/i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_layout_service.LayoutService.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.ComponentFields.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.ComponentParams.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.ComponentRendering.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.Field.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.HtmlElementRendering.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.Item.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceContext.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceContextData.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceData.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.PlaceholderData.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_models.RouteData.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_rest_layout_service.LayoutServiceConfig.md create mode 100644 ref-docs/sitecore-jss/interfaces/layout_rest_layout_service.LayoutServiceRequestOptions.md create mode 100644 ref-docs/sitecore-jss/modules/axios_fetcher.md create mode 100644 ref-docs/sitecore-jss/modules/cache_client.md create mode 100644 ref-docs/sitecore-jss/modules/constants.md create mode 100644 ref-docs/sitecore-jss/modules/data_fetcher.md create mode 100644 ref-docs/sitecore-jss/modules/debug.md create mode 100644 ref-docs/sitecore-jss/modules/graphql.md create mode 100644 ref-docs/sitecore-jss/modules/graphql_app_root_query.md create mode 100644 ref-docs/sitecore-jss/modules/graphql_request_client.md create mode 100644 ref-docs/sitecore-jss/modules/graphql_search_service.md create mode 100644 ref-docs/sitecore-jss/modules/i18n.md create mode 100644 ref-docs/sitecore-jss/modules/i18n_dictionary_service.md create mode 100644 ref-docs/sitecore-jss/modules/i18n_graphql_dictionary_service.md create mode 100644 ref-docs/sitecore-jss/modules/i18n_rest_dictionary_service.md create mode 100644 ref-docs/sitecore-jss/modules/index.md create mode 100644 ref-docs/sitecore-jss/modules/layout_graphql_layout_service.md create mode 100644 ref-docs/sitecore-jss/modules/layout_layout_service.md create mode 100644 ref-docs/sitecore-jss/modules/layout_models.md create mode 100644 ref-docs/sitecore-jss/modules/layout_rest_layout_service.md create mode 100644 ref-docs/sitecore-jss/modules/layout_utils.md create mode 100644 ref-docs/sitecore-jss/modules/media_api.md create mode 100644 ref-docs/sitecore-jss/modules/utils.md create mode 100644 ref-docs/sitecore-jss/modules/utils_experience_editor.md create mode 100644 ref-docs/sitecore-jss/modules/utils_is_server.md create mode 100644 ref-docs/sitecore-jss/modules/utils_resolve_url.md delete mode 100644 samples/angular/webpack.server.config.js delete mode 100644 samples/nextjs/scripts/update-graphql-fragment-data.ts delete mode 100644 samples/nextjs/src/lib/GraphQLClientFactory.ts create mode 100644 samples/nextjs/src/lib/dictionary-service-factory.rest.ts create mode 100644 samples/nextjs/src/lib/dictionary-service-factory.ts create mode 100644 samples/nextjs/src/lib/layout-service-factory.rest.ts create mode 100644 samples/nextjs/src/lib/layout-service-factory.ts rename samples/nextjs/src/{pages_examples => pages}/[[...path]].SSR.tsx (95%) delete mode 100644 samples/nextjs/src/temp/GraphQLFragmentTypes.json create mode 100644 samples/node-headless-ssr-experience-edge/README.md create mode 100644 samples/node-headless-ssr-experience-edge/config.js create mode 100644 samples/node-headless-ssr-experience-edge/index.js create mode 100644 samples/node-headless-ssr-experience-edge/package-lock.json create mode 100644 samples/node-headless-ssr-experience-edge/package.json rename samples/react-native/{data/media => assets}/img/sc_logo.svg (100%) create mode 100644 samples/react-native/src/Layout.js diff --git a/.github/PULL_REQUEST_TEMPLATE.MD b/.github/PULL_REQUEST_TEMPLATE.MD index ecfcb224e7..25d41813ab 100644 --- a/.github/PULL_REQUEST_TEMPLATE.MD +++ b/.github/PULL_REQUEST_TEMPLATE.MD @@ -1,13 +1,11 @@ -## Description +## Description / Motivation - -## Motivation -## How Has This Been Tested? +## Testing Details @@ -18,12 +16,3 @@ - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Documentation update (non-breaking change; modified files are limited to the `/docs` directory) - -## Checklist: - - -- [ ] I have read the Contributing guide. -- [ ] My code follows the code style of this project. -- [ ] My code/comments/docs fully adhere to the Code of Conduct. -- [ ] My change is a code change and it requires an update to the documentation. -- [ ] My change is a documentation change and it requires an update to the navigation. diff --git a/.gitignore b/.gitignore index 63600353a8..830b6344ca 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ node_modules/ *.log npm-debug.log* dist +*.eslintcache lerna-debug.log .nyc_output diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..588545ce39 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,150 @@ +# Changelog +All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +This project does NOT adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html), and major versions of this project denote compatibility with Sitecore Platform versions. Refer to the "Headless Services" section in the [Sitecore modules compatibility table](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0541788) or the [Headless Rendering download page](https://dev.sitecore.net/Downloads/Sitecore_Headless_Rendering.aspx) for more details on versioning. + +# Unreleased + +## New Features and Notable Improvements +`[sitecore-jss-react]` `[sitecore-jss-nextjs]` Add `withDatasourceCheck` higher order component (HOC) to better error handling for renderings missing datasources (#723) + +`[sitecore-jss-*]` Compile and publish all base package as ESM (#758) + +`[sitecore-jss]` `[sitecore-jss-nextjs]` [Dictionary Service] [Sitemap Service] Provide ability to customize jssAppTemplateId (#763) + +`[sitecore-jss]` `[sitecore-jss-nextjs]` `[sitecore-jss-react]` `[sitecore-jss-angular]` `[sitecore-jss-vue]` `[sitecore-jss-react-native]` + Update editing functions for **Horizon** compatibility (backwards compatible) (#712)(#723) + +`[sitecore-jss-nextjs]` +* Upgrade to Next.js 11 (#768) +* Utilize the `VERCEL_URL` env variable (if available) for generating public URLs (#725) +* Enable dynamic component import (#727) +* Prevent extraneous router.replace in Experience Editor when using SSG (#736) + +`[sitecore-jss-vue]` +* Upgrade version 2.x to 3.x (#724) +* Use fragments by default with sc-placeholder (#742) + +## Notable Improvements to Samples +* Remove usage deprecated dataApi (#744) +* Dependency upgrades + +`[nextjs]` `[react]` `[angular]` `[vue]` +* More reliable detection of disconnected or connected mode (#732) +* **Horizon** compatibility (#712)(#752) + +`[react]` `[angular]` `[vue]` Add support for the `fetchWith` create option, which selects REST or GraphQL APIs (#773) + +`[nextjs]` +* Styleguide component datasource resiliency (#723) +* Enable creating a new app without boilerplate with the `--empty` flag (#754) +* Enable dynamic component import in sample (#727)(#730) + +`[vue]` Upgrade version 2.x to 3.x. Simplify dependencies; remove dependency on **i18n** (#724) + +`[angular]` dk-DA language is not rendered in connected and disconnected mode (#734) + +`[embedded-app]` Remove dependency on StepZilla (#747) + +`[node-headless-ssr-proxy]` Remove '/dist' path from pathRewriteExcludeRoutes (#756) + +## Bug fixes +`[sitecore-jss-react]` Error rendering raw self-closing tag elements in placeholders (#745) + +`[sitecore-jss-react-forms]` Experience Forms JSS React implementation doesn't use CSS class applied to entire form (#771) + + +## Maintenance +**Breaking change** `[sitecore-jss]` `[sitecore-jss-vue]` `[sitecore-jss-react-native]` `[sitecore-jss-react]` `[sitecore-jss-nextjs]` `[sitecore-jss-angular]` Remove deprecated dataApi (#744) + +Dependency upgrades + +. + +. + + +# 18.0.0 + +## New Features +All JSS services have been upgraded to support [**Sitecore Experience Edge** GraphQL schema](https://doc.sitecore.com/developers/101/developer-tools/en/the-experience-edge-schema.html). + +`[sitecore-jss]` +* We added [API reference docs for the package](https://github.com/Sitecore/jss/tree/release/18.0.0/ref-docs/sitecore-jss). + +`[nextjs]` +* The `[nextjs]` sample uses Edge schema by default. +* We added [API reference docs for the package](https://github.com/Sitecore/jss/tree/release/18.0.0/ref-docs/sitecore-jss-nextjs). + +`[samples/nextjs]` +* Update Sitecore configuration patches with relevant Edge-specific definitions. +* [#695](https://github.com/Sitecore/jss/pull/695) Add settings for language fallback with Experience Edge. +* [#696](https://github.com/Sitecore/jss/pull/696) Add `IncludeServerUrlInMediaUrls` "default" configuration to avoid exposing the Sitecore server publicly when using Experience Edge. + +`[react]` `[angular]` and `[vue]` samples can also utilize Sitecore Experience Edge. A new `[node-headless-ssr-experience-edge]` sample has been adeded to demonstrate how to configure this. [Read docs](/docs/techniques/ssr/sitecore-experience-edge). + +## New & Improved Service Classes + +`[sitecore-jss]` +* `GraphQLDictionaryService` is a new service for fetching dictionary data using GraphQL [Read docs](https://jss.sitecore.com/docs/fundamentals/services/dictionary/jss-dictionary-api). +* `GraphQLLayoutService` is a new service for fetching layout data using GraphQL [Read docs](https://jss.sitecore.com/docs/fundamentals/services/layout/jss-layout-api). +* [#716](https://github.com/Sitecore/jss/pull/716) Allow overriding which "named" Layout Service configuration (from Sitecore config) is used by JSS. +* Allow overriding 3rd party dependencies in JSS services that depend on 3rd party functionality (GraphQLLayoutService, RestDictionaryService, GraphQLDictionaryService, GraphQLSitemapService). + +`[sitecore-jss-nextjs]` +* Make `GraphQLSitemapService` easier to customize by allowing overrides of default options. ([#682](https://github.com/Sitecore/jss/pull/682), [#705](https://github.com/Sitecore/jss/pull/705)) + +## Other Notable Improvements + +* `[sitecore-jss]` Enable **debug logging** for JSS services using the [debug](https://www.npmjs.com/package/debug) module. [Read docs](/docs/fundamentals/troubleshooting/debug-logging). +* New options in `jss create` command. [Read docs](https://jss.sitecore.com/docs/fundamentals/cli#jss-create). + +`[samples/react-native]` (#624) +* Add shared `` component in order to have shared navigation panel. +* Make Sitecore logo in header is touchable and will navigate to Home page when click on it. +* Remove usage of `dataConversation`. + +## Bug Fixes + +`[sitecore-jss]` +* Fix issue with dictionary phrases not being cached when caching is enabled (#639) +* `mediaApi.updateImageUrl` now *only* switches to JSS media handler prefix if `imageParams` are sent. Otherwise, the original media URL is returned. Fixes hash errors ("ERROR MediaRequestProtection: An invalid/missing hash value was encountered.") from appearing in Sitecore logs (#681) + +`[samples/nextjs]` `[samples/react]` `[samples/vue]` +* Fix issue where using the `jss scaffold` generated files with inconsistent line endings (#684) +* Update Text components to accept number values (#713) + +`[sitecore-jss-nextjs]` +* Fix issue with `getStaticPaths`only pre-rendering the first 10 pages (638) +* Fix issue where links inside RichText controls caused pages to load twice (659) + +`[sitecore-jss-react]` Render value instead of array of single value when value doesn't contain line breaks (714) + +`[sitecore-jss-react-native]` (#624) +* [Image] Pass Object `style` type for `SvgUrI` instead of Array. +* [Date] Always render `` if `editable` is provided. + +`[samples/react-native]` (#624) +* Fix Styleguide-FieldUsage-Date not working in connected mode. +* **Styleguide-FieldUsage-Image**: Fix incorrect `src` prop type in disconnected mode. Fix 'Plain image' example in connected mode. Remove unsupported 'Srcset image' adaptive example. +* **Styleguide-ComponentParams**: fix incorrect `params` prop types in connected mode. +* Fix connected tunnel mode for secure (https) Sitecore endpoints. + +`[samples/node-headless-ssr-proxy]` Fix how header value for 'accept-encoding' is set. This resolves an issue in the Angular sample where the /graphql page caused a console error (#680) + +`[sitecore-jss-forms]` Fix issue where pre-filled (default) form data isn't removed for multi-valued fields when user de-selects values (#677) + + +## Breaking changes + +`[sitecore-jss-react-native]` Removed `dataConversation`, since `editable` property not used in `disconnected` mode. (#624) + +`[samples/angular]` Upgrade `angular` to v11. (#635) + +`[samples/nextjs]` Change how a custom query can be used in GraphQLSitemapService. Previous way: pass a `formatSearchQuery` function to `fetchExportSitemap` or `fetchSSGSitemap`. New way: extend the `GraphQLSitemapService` class and override the `fetchSitemap` method. (#638) + +* As part of adding support for Experience Edge, Sitecore XM's graphQL API was updated to mirror Experience Edge's schema. The following updates in JSS + * [sitecore-jss-nextjs] Update sitemap query to comply with changes to the GraphQL API + * [samples/nextjs] Update generated TypeScript models for GraphQL components to comply with changes to the GraphQL API + +With the added support of GraphQL endpoints, the API surface area of JSS has essentially doubled. As a result, some reorganizing was done in the base packages, which causes breaking changes for how some services, classes and functions are exported. If you have imports from JSS base packages in your project, they may need to be updated per the [migration guide table](https://jss.sitecore.com/upgrade-guides/18.0). diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f7cbc51501..88c1139666 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -55,7 +55,7 @@ further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at jss@sitecore.net. All +reported by contacting the project team at jss@sitecore.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d5c3afc2d2..08e9053aa9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,8 +4,8 @@ Want to contribute to Sitecore JavaScript Services? There are a few things you n ## Pre-requisites: -- `node.js` (8.11.3 or later) -- `npm` (5.x or later) installed (cmd `node -v` to test). +- `node.js` ([Active LTS](https://nodejs.org/en/about/releases/) version) installed (cmd `node -v` to test). +- `npm` (6.x or later) installed (cmd `npm -v` to test). ## Setting up @@ -43,7 +43,7 @@ If you need to make code changes to the documentation site, follow these steps: - Clone the forked repo to your local machine. - From a terminal in the repo root: `cd docs` - Create a feature branch from `master` for your changes. e.g. `git checkout -b my-feature-branch` - > Note: although `master` is the default branch for the JSS repo, documentation changes that pertain to the current release of JSS should be branched from `master`. The `master` branch contains the published / active documentation content. Changes related to the next release should be added to the `dev` branch. + > Note: although `dev` is the default branch for the JSS repo, documentation changes that pertain to the current release of JSS should be branched from `master`. The `master` branch contains the published / active documentation content. Changes related to the next release should be added to the `dev` branch. - `npm install` - `jss start` (to preview your changes locally) - Make your changes diff --git a/README.md b/README.md index d099395eab..cd4752aae1 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,72 @@ -# Sitecore JavaScript Services +# Sitecore JavaScript Rendering SDK (JSS) [![Build Status](https://dev.azure.com/sitecorejss/sitecore-jss-ci/_apis/build/status/Sitecore.jss?branchName=master)](https://dev.azure.com/sitecorejss/sitecore-jss-ci/_build/latest?definitionId=1?branchName=master) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](contributing.md#pull-requests) -This repository contains source code for all Sitecore JSS packages as well as samples to help you get started using Sitecore JSS. +This repository contains source code for all Sitecore JSS packages and sample applications to help you get started using Sitecore JSS. -Below is a list of samples included in this repo: +This repository contains the following sample applications: -1. [React](/samples/react) +1. [Next.js](/samples/nextjs) - Built using [create-react-app](https://github.com/facebook/create-react-app) as a starting point. Supports out-of-the-box Sitecore functionalities (i18n, routing, GraphQL, set <title> tags) and demonstrates how to work with various Sitecore data types, placeholder nesting and wrapping techniques, and other helpful JSS patterns. The application code is heavily commented, but [documentation also exists](http://jss.sitecore.net/docs/client-frameworks/react/sample-app). + The Next.js-based sample application demonstrates common use cases. -1. [Vue](/samples/vue) + Features: + - Written in TypeScript. + - Support for Next.js static HTML export, incremental static site generation, server-side rendering, and hybrid rendering. + - Dynamic author-defined URLs via Next.js pages and the Sitecore Layout Service. + - Dynamic component rendering based on author-defined page layouts. + - Helper components for rendering various Sitecore field types. + - Sitecore Experience Editor integration via Next.js Preview Mode. + - Sitecore route querying for static site generation. + - Next.js client-side routing support for Sitecore link and rich text fields. + - Internationalization support via Sitecore language versions and Next.js internationalized routing. + - Fetching of layout and dictionary data using REST or GraphQL. + - Component-level data fetching for Sitecore-driven components. + - Sitecore tracking, analytics, and personalization support (SSR-only). + - Support for JSS code-first workflow and mock Sitecore services. + - Other great built-in Next.js features like component-level CSS, code splitting, fast refresh, and more. + - [Vercel](https://vercel.com/) deployment compatible. - Built using [@vue/cli](https://cli.vuejs.org/) as a starting point. Supports out-of-the-box Sitecore functionalities (i18n, routing, GraphQL, set <title> tags) and demonstrates how to work with various Sitecore data types, placeholder nesting and wrapping techniques, and other helpful JSS patterns. The application code is heavily commented, but [documentation also exists](http://jss.sitecore.net/docs/client-frameworks/vue/sample-app). + Consult the [documentation](http://jss.sitecore.com/docs/nextjs/getting-started-nextjs/why-nextjs) and remember to check out the heavily commented code in the sample application. -1. [Angular](/samples/angular) +2. [React](/samples/react) - Built using [angular-cli](https://cli.angular.io/) as a starting point. Supports out-of-the-box Sitecore functionalities (i18n, routing, GraphQL, set <title> tags) and demonstrates how to work with various Sitecore data types, placeholder nesting and wrapping techniques, and other helpful JSS patterns. The application code is heavily commented, but [documentation also exists](http://jss.sitecore.net/docs/client-frameworks/angular/sample-app). + Built using [create-react-app](https://github.com/facebook/create-react-app) as a starting point. Supports out-of-the-box Sitecore functionalities (i18n, routing, GraphQL, set <title> tags) and demonstrates how to work with various Sitecore data types, placeholder nesting, and wrapping techniques, and other helpful JSS patterns. The application code is heavily commented, but [documentation also exists](http://jss.sitecore.com/docs/client-frameworks/react/sample-app). -1. [Embedded JSS App within Sitecore MVC](/samples/sitecore-embedded-jss-app) +3. [Vue](/samples/vue) - This app demonstrates how to embed a client-side JSS application inside an existing Sitecore MVC site as opposed to running a standalone JSS site. This technique essentially embeds the JSS app's markup and app wrapper tag within a Sitecore rendering. [Documentation](http://jss.sitecore.net/docs/techniques/mvc-integration/client-side-embedding). + Built using [@vue/cli](https://cli.vuejs.org/) as a starting point. Supports out-of-the-box Sitecore functionalities (i18n, routing, GraphQL, set <title> tags) and demonstrates how to work with various Sitecore data types, placeholder nesting, and wrapping techniques, and other helpful JSS patterns. The application code is heavily commented, but [documentation also exists](http://jss.sitecore.com/docs/client-frameworks/vue/sample-app). -1. [React Native](/samples/react-native) +4. [Angular](/samples/angular) - This app demonstrates experimental JSS usage with React Native. Due to the experimental nature of React Native support in JSS, this app does not have feature parity with the other framework samples (e.g. React, Vue). [Documentation](http://jss.sitecore.net/docs/client-frameworks/react-native) + Built using [angular-cli](https://cli.angular.io/) as a starting point. Supports out-of-the-box Sitecore functionalities (i18n, routing, GraphQL, set <title> tags) and demonstrates how to work with various Sitecore data types, placeholder nesting, and wrapping techniques, and other helpful JSS patterns. The application code is heavily commented, but [documentation also exists](http://jss.sitecore.com/docs/client-frameworks/angular/sample-app). -1. [~~Sitecore JavaScript rendering~~](/samples/sitecore-javascript-renderings) [Deprecated] +5. [Embedded JSS App within Sitecore MVC](/samples/sitecore-embedded-jss-app) - This project demonstrates experimental support for creating Sitecore renderings that will server-side render individual JavaScript components or apps. The Sitecore JavaScript renderings can be used alongside traditional MVC-based renderings. [Documentation](http://jss.sitecore.net/docs/techniques/mvc-integration/javascript-rendering) + This app demonstrates how to embed a client-side JSS application inside an existing Sitecore MVC site instead of running a standalone JSS site. This technique essentially embeds the JSS app's markup and app wrapper tag within a Sitecore rendering. [Documentation](http://jss.sitecore.com/docs/techniques/mvc-integration/client-side-embedding). -1. [Headless Server-Side Rendering with Node.js](/samples/node-headless-ssr-proxy) +6. [React Native](/samples/react-native) - JSS supports headless server-side rendering using any service that supports hosting Node.js applications. [Documentation](http://jss.sitecore.net/docs/techniques/ssr/headless-mode-ssr). + This app demonstrates experimental JSS usage with React Native. Due to the experimental nature of React Native support in JSS, this app does not have feature parity with the other framework samples (e.g., React, Vue). [Documentation](http://jss.sitecore.com/docs/client-frameworks/react-native) + +7. [~~Sitecore JavaScript rendering~~](/samples/sitecore-javascript-renderings) [Deprecated] + + This project demonstrates experimental support for creating Sitecore renderings that will server-side render individual JavaScript components or apps. The Sitecore JavaScript renderings can be used alongside traditional MVC-based renderings. [Documentation](http://jss.sitecore.com/docs/techniques/mvc-integration/javascript-rendering) + +8. [Headless Server-Side Rendering with Node.js](/samples/node-headless-ssr-proxy) + + JSS supports headless server-side rendering using any service that supports hosting Node.js applications. [Documentation](http://jss.sitecore.com/docs/techniques/ssr/headless-mode-ssr). ## Getting started with JSS -- [Official JSS documentation](https://jss.sitecore.net/) +- [Official JSS documentation](https://jss.sitecore.com/) - [StackExchange](https://sitecore.stackexchange.com/) - [Community Slack](https://sitecorechat.slack.com/messages/jss) - [Sitecore Community Forum](https://community.sitecore.net/developers/f/40) ## Contributions -We are very grateful to the community for contributing bugfixes and improvements. We welcome any and all efforts to evolve and improve Sitecore JavaScript Services; read below to learn how you can take part in those efforts. +We are very grateful to the community for contributing bug fixes and improvements. We welcome all efforts to evolve and improve Sitecore JavaScript Services; read below to learn how to participate in those efforts. ### [Code of Conduct](CODE_OF_CONDUCT.md) @@ -51,7 +74,7 @@ Sitecore has adopted a Code of Conduct that we expect project participants to ad ### [Contributing Guide](CONTRIBUTING.md) -Read our [contributing guide](CONTRIBUTING.md) to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to React. +Read our [contributing guide](CONTRIBUTING.md) to learn about our development process, how to propose bug fixes and improvements, and how to build and test your changes to React. ### License diff --git a/azure-pipelines.yml b/azure-pipelines.yml index fe6d3bda88..b8753331e9 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -8,6 +8,7 @@ trigger: include: - master - dev + - release/* paths: include: - / @@ -22,6 +23,7 @@ pr: include: - master - dev + - release/* paths: include: - / @@ -33,7 +35,11 @@ pool: vmImage: 'Ubuntu-16.04' variables: - isDev: $[eq(variables['Build.SourceBranch'], 'refs/heads/dev')] + shouldPublish: $[or(eq(variables['Build.SourceBranch'], 'refs/heads/dev'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'))] + ${{ if startsWith(variables['Build.SourceBranch'], 'refs/heads/') }}: + branchName: $[ replace(variables['Build.SourceBranch'], 'refs/heads/', '') ] + ${{ if startsWith(variables['Build.SourceBranch'], 'refs/pull/') }}: + branchName: $[ replace(variables['System.PullRequest.SourceBranch'], 'refs/heads/', '') ] steps: - script: | @@ -71,10 +77,10 @@ steps: git config user.email builds@sitecore.com git config user.name "Automated Build" git remote set-url origin https://$GITHUB_PAT_ENV@github.com/Sitecore/jss.git - git checkout $(Build.SourceBranchName) + git checkout $(branchName) $(npm bin)/lerna version prerelease --preid canary --force-publish --message "version %s [skip ci]" --yes displayName: 'pre-release version update' - condition: and(succeeded(), eq(variables.isDev, true)) + condition: and(succeeded(), eq(variables.shouldPublish, true)) env: GITHUB_PAT_ENV: $(GITHUB-PAT) # @@ -89,6 +95,6 @@ steps: echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} > .npmrc $(npm bin)/lerna publish from-git --canary --pre-dist-tag canary --preid canary --no-verify-access --yes displayName: 'pre-release canary publish' - condition: and(succeeded(), eq(variables.isDev, true)) + condition: and(succeeded(), eq(variables.shouldPublish, true)) env: NPM_TOKEN: $(NPM-TOKEN) \ No newline at end of file diff --git a/docs/assets/css/jumbo.css b/docs/assets/css/jumbo.css index ee8d26edfa..62a3e049b8 100644 --- a/docs/assets/css/jumbo.css +++ b/docs/assets/css/jumbo.css @@ -32,21 +32,7 @@ font-size: 1.2rem; } -.jumbo-container .outer-shape { - padding-top: 75px; - padding-bottom: 75px; -} - -.jumbo-container.jumbo-container-short .outer-shape { - padding-top: 60px; - padding-bottom: 60px; -} - @media (max-width: 767px) { - .jumbo-container.jumbo-container-short .outer-shape { - padding-top: 50px; - padding-bottom: 30px; - } .jumbo-container.jumbo-container-short .min-height { min-height: 50px; @@ -55,11 +41,6 @@ /* image */ -.jumbo-container .shapes-wrapper { - position: relative; - z-index: 5; -} - .jumbo-image-container { content: ""; background-size: cover; diff --git a/docs/assets/img/nextjs-sitecore-analytics.svg b/docs/assets/img/nextjs-sitecore-analytics.svg index 4d626a903f..2dc6e76e9d 100644 --- a/docs/assets/img/nextjs-sitecore-analytics.svg +++ b/docs/assets/img/nextjs-sitecore-analytics.svg @@ -1,3 +1,3 @@ -
Page
Page
http://localhost:3000/page
http://localhost:3000/page
Next.js SSR Route
Next.js SSR Route
pages_examples\[[...path]].SSR.tsx
pages_examples\[[...path]].SSR.tsx
Page Props Factory
Page Props Factory
lib\page-props-factory.ts
lib\page-props-factory.ts
Layout Service
Layout Service
getServerSideProps
getServerSideProps
fetch layoutData
fetch layoutData
RestLayoutService
RestLayoutService
fetchLayoutData (with Header Passing)
fetchLayoutData (with Head...
Page
Page
Layout Service
Layout Service
Header Passing
Header Passing
Page Request / Response
Page Request / Response
Layout Service Request / Response
Layout Service Request / Response
Request
Request
Response
Respon...
Request
Request
Response
Respon...
  • cookie
  • user-agent
  • referer
  • X-Forwarded-For
cookieuser-agentrefere...
  • set-cookie
set-cookie
Viewer does not support full SVG 1.1
\ No newline at end of file +
Page
Page
http://localhost:3000/page
http://localhost:3000/page
Next.js SSR Route
Next.js SSR Route
pages\[[...path]].tsx
pages\[[...path]].tsx
Page Props Factory
Page Props Factory
lib\page-props-factory.ts
lib\page-props-factory.ts
Layout Service
Layout Service
getServerSideProps
getServerSideProps
fetch layoutData
fetch layoutData
RestLayoutService
RestLayoutService
fetchLayoutData (with Header Passing)
fetchLayoutData (with Head...
Page
Page
Layout Service
Layout Service
Header Passing
Header Passing
Page Request / Response
Page Request / Response
Layout Service Request / Response
Layout Service Request / Response
Request
Request
Response
Respon...
Request
Request
Response
Respon...
  • cookie
  • user-agent
  • referer
  • X-Forwarded-For
cookieuser-agentrefere...
  • set-cookie
set-cookie
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/assets/img/nextjs-sitecore-routing.svg b/docs/assets/img/nextjs-sitecore-routing.svg index 6696f09168..c8373632e1 100644 --- a/docs/assets/img/nextjs-sitecore-routing.svg +++ b/docs/assets/img/nextjs-sitecore-routing.svg @@ -1,3 +1,3 @@ -

props


props
Bar Page
Bar Page
http://localhost:3000/foo/bar
http://localhost:3000/foo/bar
Next.js Route
Next.js Route
pages\[[...path]].tsx
pages\[[...path]].tsx
Page Props Factory
Page Props Factory
lib\page-props-factory.ts
lib\page-props-factory.ts
Layout Service
Layout Service
getStatic/ServerSideProps
getStatic/ServerSideProps

context


context
{
  params: {
    path: [ 'foo', 'bar' ]
  }
  ...
}
{...
{
  layoutData: {...},
  ...
}
{...
fetch layoutData
fetch layoutData
/sitecore/api/layout/render/jss?item=/foo/bar
/sitecore/api/layout/render/jss?item=/foo/bar
Viewer does not support full SVG 1.1
\ No newline at end of file +

props


props
Bar Page
Bar Page
http://localhost:3000/foo/bar
http://localhost:3000/foo/bar
Next.js Route
Next.js Route
pages\[[...path]].tsx
pages\[[...path]].tsx
Page Props Factory
Page Props Factory
lib\page-props-factory.ts
lib\page-props-factory.ts
Layout Service
Layout Service
getStatic/ServerSideProps
getStatic/ServerSideProps

context


context
{
  params: {
    path: [ 'foo', 'bar' ]
  }
  ...
}
{...
{
  layoutData: {...},
  ...
}
{...
fetch layoutData
fetch layoutData
/sitecore/api/layout/render/jss?item=/foo/bar&...
/sitecore/api/layout/render/jss?item=/foo/bar...
GraphQL Edge
GraphQL Edge
query {
  layout(routePath:"/foo/bar", ...) {
    ...
  }
}
query {...
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/build/start-prod.js b/docs/build/start-prod.js index 0b611c8a81..6044968403 100644 --- a/docs/build/start-prod.js +++ b/docs/build/start-prod.js @@ -1,8 +1,9 @@ import path from 'path'; import express from 'express'; import compression from 'compression'; -import forcedomain from 'forcedomain'; +import { forceDomain } from 'forcedomain'; import enforce from 'express-sslify'; + import { createDisconnectedAssetMiddleware, createDisconnectedLayoutService, @@ -34,10 +35,10 @@ function layoutServiceMiddlewareAsDataAdapter(fakeLayoutServiceMiddleware) { return new Promise((resolve, reject) => { const fakeResponse = { - sendStatus: function(statusCode) { + sendStatus: function (statusCode) { resolve({ statusCode }); }, - json: function(result) { + json: function (result) { resolve(result); }, }; @@ -109,10 +110,10 @@ manifestManager.getManifest(config.language).then((manifest) => { if (process.env.HEROKU) { server.use(enforce.HTTPS({ trustProtoHeader: true })); server.use( - forcedomain({ + forceDomain({ hostname: 'jss.sitecore.com', protocol: 'https', - excludeRule: /[a-zA-Z0-9][a-zA-Z0-9-]+\.herokuapp\.com/i, + excludeRule: /[a-zA-Z0-9][a-zA-Z0-9-]+\.herokuapp\.com||localhost/i, }) ); } @@ -124,7 +125,15 @@ manifestManager.getManifest(config.language).then((manifest) => { server.use('/dist', staticFileMiddleware); server.use('/docs/getting-started/:path', (req, res) => { req.url = `/docs/client-frameworks/getting-started/${req.params.path}`; - res.redirect(req.url, 301); + res.redirect(301, req.url); + }) + server.use('/docs/fundamentals/services/layout-service', (req, res) => { + req.url = `/docs/fundamentals/services/layout/overview`; + res.redirect(301, req.url); + }) + server.use('/docs/fundamentals/services/dictionary-service', (req, res) => { + req.url = `/docs/fundamentals/services/dictionary/overview`; + res.redirect(301, req.url); }) server.use('*', ssrMiddleware); diff --git a/docs/data/routes/docs/client-frameworks/angular/angular-placeholders/en.md b/docs/data/routes/docs/client-frameworks/angular/angular-placeholders/en.md index 44656611c6..cf73aa4892 100644 --- a/docs/data/routes/docs/client-frameworks/angular/angular-placeholders/en.md +++ b/docs/data/routes/docs/client-frameworks/angular/angular-placeholders/en.md @@ -61,14 +61,13 @@ But it still remains a question where the provider for `@Inject('JSS_SERVER_TO_S > ### Application bundles > -> By default an Angular-CLI project will build one bundle for an application. But to support universal rendering Angular-CLI has to be configured to create an additional bundle. [Read more about Angular-CLI and universal rendering](https://github.com/angular/angular-cli/wiki/stories-universal-rendering). Lets call these two bundles the _universal bundle_ and the _client bundle_ respectively. +> By default an Angular-CLI project will build one bundle for an application. But to support universal rendering Angular-CLI has to be configured to create an additional bundle. [Read more about Angular-CLI and universal rendering](https://github.com/angular/angular-cli/wiki/stories-universal-rendering). Lets call these two bundles the _server bundle_ and the _client bundle_ respectively. > -> Both the universal bundle and client bundle cannot run on their own, they need to be served. To be able to serve these bundles a server is needed. JSS comes with a JavaScript view engine for Node that can run our universal bundle. The JSS JavaScript view engine expects a Node bundle that exports a `renderView` function, and to deliver this a third bundle is created that we will name _server bundle_. The server bundle is not built using Angular-CLI but is instead a custom webpack project. +> Both the server bundle and client bundle cannot run on their own, they need to be served. To be able to serve these bundles a server is needed. JSS comes with a JavaScript view engine for Node that can run our server bundle. The JSS JavaScript view engine expects a _server bundle_ that exports a `renderView` function. > -> _Summary_: The BasicAppAngular application builds three bundles into the `dist` folder: +> _Summary_: The BasicAppAngular application builds two bundles into the `dist` folder: > > * Client bundle - located in `dist/client/` -> * Universal bundle - located in `dist/server/` > * Server bundle - located at `dist/server.bundle.js` To understand where the data comes from find `server.bundle.ts`. The data is served from JSS's view engine via the `renderView` function which is located in the `server.bundle.ts`. diff --git a/docs/data/routes/docs/client-frameworks/angular/reference/en.md b/docs/data/routes/docs/client-frameworks/angular/reference/en.md index 9315fdd8fe..8fb33a1c10 100644 --- a/docs/data/routes/docs/client-frameworks/angular/reference/en.md +++ b/docs/data/routes/docs/client-frameworks/angular/reference/en.md @@ -6,7 +6,7 @@ title: Angular API Reference # JSS Angular API -The `sitecore-jss-angular` package is a UI library that delivers components for rendering data from the Sitecore [Layout Service](/docs/fundamentals/services/layout-service). +The `sitecore-jss-angular` package is a UI library that delivers components for rendering data from the Sitecore [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service). # Getting started diff --git a/docs/data/routes/docs/client-frameworks/angular/sample-app/en.md b/docs/data/routes/docs/client-frameworks/angular/sample-app/en.md index db24fe32d7..e56d6141c9 100644 --- a/docs/data/routes/docs/client-frameworks/angular/sample-app/en.md +++ b/docs/data/routes/docs/client-frameworks/angular/sample-app/en.md @@ -15,7 +15,7 @@ The Angular sample supports running in all [JSS application modes](/docs/fundame ## Routing + State Management -The sample app uses dynamic routing based on the [Layout Service](/docs/fundamentals/services/layout-service) (or local route data files in _disconnected mode_), and uses route/navigation changes to trigger app state changes. Thus tracing the primary execution flow should begin with the route configuration. +The sample app uses dynamic routing based on the [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) (or local route data files in _disconnected mode_), and uses route/navigation changes to trigger app state changes. Thus tracing the primary execution flow should begin with the route configuration. ### Client-side routing @@ -28,7 +28,7 @@ Client-side routing occurs in the web browser. The flow of client-side routing i 1. `JssRouteResolver` first invokes `changeRoute` on the `JssContextService`. 1. `JssContextService` on the client side will retrieve the route from one of the following: * If running in _Integrated_ or _Headless SSR_ mode immediately following a server render, an attempt is made to obtain route data from the `TransferState`, which should contain the server-side rendering state. When this occurs, the HTTP call to layout service is skipped. - * In any other case, the route data is fetched via HTTP call to the Sitecore [Layout Service](/docs/fundamentals/services/layout-service). + * In any other case, the route data is fetched via HTTP call to the Sitecore [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service). 1. The `JssContextService` will retain the current route state (more on this later), and return it to the `JssRouteResolver`. The route resolver performs routines necessary for Experience Editor support. 1. Finally the configured route component (defined in `routing.module.ts`, defaults to `app/routing/layout/layout.component.ts`) is loaded into into the `router-outlet` defined in `src/app/app.component.ts` and is provided with the data from the route resolver. This _layout component_ is responsible for: * Handling the UI for data fetching errors, such as HTTP 404s and 500s @@ -41,7 +41,7 @@ When the Angular app is pre-rendered by a Node server, thus returning HTML to th 1. [Integrated mode only] Sitecore will receive the request, parse the route server-side, and determine whether the requested item will be handled by a JSS application, and thus which bundle to execute. 1. [Headless mode only] A request is received by the Node SSR proxy and passed on to a Sitecore layout service -1. The Node host will invoke the `renderView` function in the `server.bundle.ts` artifact. The function arguments include the route data / [Layout Service](/docs/fundamentals/services/layout-service) output. +1. The Node host will invoke the `renderView` function in the `server.bundle.ts` artifact. The function arguments include the route data / [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) output. 1. The `renderView` function will use Angular SSR to render the application, with two key differences in its module initialization: * The `AppServerModule` is used instead, which provides server-specific implementations of some services. * The initial route state is injected via DI using a `JSS_SERVER_TO_SSR` injection token. diff --git a/docs/data/routes/docs/client-frameworks/getting-started/app-deployment/en.md b/docs/data/routes/docs/client-frameworks/getting-started/app-deployment/en.md index c9a7d63295..8f02d0b51a 100644 --- a/docs/data/routes/docs/client-frameworks/getting-started/app-deployment/en.md +++ b/docs/data/routes/docs/client-frameworks/getting-started/app-deployment/en.md @@ -39,7 +39,7 @@ After adding the host name entry, add it as a binding on your IIS instance as we ### Step 2. API Key -The services used by JSS (including the [Layout Service](/docs/fundamentals/services/layout-service), [GraphQL](/docs/fundamentals/services/graphql), [Tracking Service](/docs/fundamentals/services/tracking), and [Dictionary Service](/docs/fundamentals/services/dictionary-service)) utilize the [API Key mechanism provided by Sitecore Services Client (SSC)](https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/sitecoreservicesclient/api_keys_for_the_odata_item_service). You'll need to create an API Key and note its Item ID for use in setting up the sample apps. +The services used by JSS (including the [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service), [GraphQL](/docs/fundamentals/services/graphql), [Tracking Service](/docs/fundamentals/services/tracking), and [Dictionary Service](/docs/fundamentals/services/dictionary/sitecore-dictionary-service)) utilize the [API Key mechanism provided by Sitecore Services Client (SSC)](https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/sitecoreservicesclient/api_keys_for_the_odata_item_service). You'll need to create an API Key and note its Item ID for use in setting up the sample apps. 1. Log into Sitecore (e.g. http://myapp.siteco.re/sitecore) and open the *Desktop* application. 1. > **For Sitecore 9.0.x only! Skip for Sitecore 9.1+** @@ -73,7 +73,7 @@ The services utilized by JSS will honor the configuration options on the API Key ### Step 3. Verification -Make a request to the [Layout Service](/docs/fundamentals/services/layout-service) on your Sitecore host: +Make a request to the [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) on your Sitecore host: `http://myapp.siteco.re/sitecore/api/layout/render/jss?item=/&sc_apikey={YOUR_API_KEY_ID}`. > Be sure to specify the API key ID created above. If the API key is not provided, the server will return `HTTP 400 - Bad Request`. diff --git a/docs/data/routes/docs/client-frameworks/getting-started/jss-server-install/en.md b/docs/data/routes/docs/client-frameworks/getting-started/jss-server-install/en.md index 9ff2e431f7..1e90db1d5f 100644 --- a/docs/data/routes/docs/client-frameworks/getting-started/jss-server-install/en.md +++ b/docs/data/routes/docs/client-frameworks/getting-started/jss-server-install/en.md @@ -5,7 +5,9 @@ title: Server Setup --- # JSS Server Setup -In order to deploy a JSS app to Sitecore, or to pull data from a remote Sitecore instance into a headless JSS app, a Sitecore instance running the Headless Server Components is required. +In order to deploy a JSS app to Sitecore, or to pull data from a remote Sitecore instance into a headless JSS app, you need a Sitecore instance running the Sitecore Headless Services module. + +> ## Prerequisites @@ -17,7 +19,13 @@ To run in Integrated Mode (required for editing JSS sites), the Sitecore server ### Sitecore -The Headless server components require Sitecore 9.0 Update-1 or later. Install Sitecore according to the instructions for your version available on [the dev site](https://dev.sitecore.net). +The Headless Services module requires: + - For use with Next.js - Sitecore 10.x or later and Headless Services 16.0 or later. + - For use with other supported frameworks - Sitecore 9.0 Update-1 or later. + +Consult the [Sitecore modules compatibility table for Sitecore XP](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0541788) to choose the correct versions. + +Install Sitecore according to the instructions for your version available on [the dev site](https://dev.sitecore.net). ### Sitecore JSS License diff --git a/docs/data/routes/docs/client-frameworks/getting-started/quick-start/en.md b/docs/data/routes/docs/client-frameworks/getting-started/quick-start/en.md index 1028bad2bb..5d6f6a4817 100644 --- a/docs/data/routes/docs/client-frameworks/getting-started/quick-start/en.md +++ b/docs/data/routes/docs/client-frameworks/getting-started/quick-start/en.md @@ -16,6 +16,10 @@ cd my-first-jss-app jss start ``` +> Using the JSS CLI, you can create applications for any versions of JSS and therefore ensure that your new JSS application is compatible with your licensed Sitecore XP version. To find out which version of JSS is compatible with your version of Sitecore XP, consult the [compatibility table](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0541788). +> +> To create an application using a previous version of JSS, see an example in the [JSS CLI reference](/docs/fundamentals/cli). + ## Step 1: Prerequisites To develop a JSS app, you will need: @@ -45,7 +49,7 @@ The JSS CLI is used to create applications, which can be created from a several > Which framework you use for JSS is a matter of opinion. JSS provides equal support to React, Vue, and Angular. If you're a newcomer to modern frontend development and don't have your own opinion yet, React or Vue are the easiest to get started with. -### App Starter Templates +### App Samples These are the main templates that should be used when you're getting started with JSS. They were designed as examples of JSS application starting points, and they contain StyleGuides that demonstrate how to work with JSS components using your chosen JS framework. @@ -59,19 +63,26 @@ Note that these templates are examples of project starting points, and are not r ### Experimental Templates -Experimental templates are experimental specialized JSS examples. They are examples of how to do advanced tasks, but may not be stable or thoroughly documented. +Experimental templates are specialized JSS examples, showing how to do advanced tasks, but may not be stable, thoroughly documented, or supported. * `react-native` The React Native Styleguide template * `sitecore-embedded-jss-app` This app shows how to embed a JSS application inside an existing Sitecore site as a rendering. [Read more here](/docs/techniques/mvc-integration/client-side-embedding). ### Special Templates * `node-headless-ssr-proxy` This app shows how to configure a Node server to act as a proxy between the browser and Sitecore. [Read more here](/docs/techniques/ssr/headless-mode-ssr). +* `node-headless-ssr-experience-edge` This app shows how to configure SSR for your JSS application using a Sitecore Experience Edge endpoint. + +> NodeJS is a third-party technology that you must configure according to your specific use-case scenarios for Headless mode. ### Deprecated Templates * `sitecore-javascript-renderings` This app shows how to render a JavaScript app as a rendering embedded within a traditional Sitecore MVC site. See [JavaScript Renderings](/docs/techniques/mvc-integration/javascript-rendering) for details. This template is flagged as deprecated as of Oct 2020 because these rendering don't scale well. They satisfy edge-case requirements, and should generally be avoided. ## Step 4: Create application using selected template +> Your version of Sitecore XP might not support the features in the current version of JSS. To find out which version of JSS is compatible with your Sitecore XP version, consult the [compatibility table](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0541788). +> +> To create an application using a previous version of JSS, see an example in the [JSS CLI reference](/docs/fundamentals/cli). + Once you have selected a template, it's time to create your application. * Open a command line where you wish to create your application diff --git a/docs/data/routes/docs/client-frameworks/react-native/sample-app/en.md b/docs/data/routes/docs/client-frameworks/react-native/sample-app/en.md index 3186daaf2d..49b2aa0afd 100644 --- a/docs/data/routes/docs/client-frameworks/react-native/sample-app/en.md +++ b/docs/data/routes/docs/client-frameworks/react-native/sample-app/en.md @@ -10,9 +10,9 @@ JSS React-Native sample app is a practical sample that demonstrates patterns of ## Prerequisites The basic sample for React Native is based on a project created via the React Native CLI, e.g. `react-native init` -Your first step will be to follow the instructions on this page: https://facebook.github.io/react-native/docs/getting-started.html +Your first step will be to follow the instructions on this page: https://reactnative.dev/docs/environment-setup -Choose the `Building Projects with Native Code` tab, then choose your Development OS and app Target OS. We have tested the basic sample app on the following configurations: +Choose the `React Native CLI Quickstart` tab, then choose your Development OS and app Target OS. We have tested the basic sample app on the following configurations: * Windows / Android * In this configuration, testing was done using a physical device connected via USB to the development machine, not the Android emulator. @@ -67,7 +67,7 @@ Connected mode essentially means that all route data and network images for your `start-ios:connected` -For more information on Connected mode, please refer to the official Sitecore JSS documentation: https://jss.sitecore.net/#/application-modes?id=connected-developer-mode +For more information on Connected mode, please refer to the official Sitecore JSS documentation: https://jss.sitecore.com/#/application-modes?id=connected-developer-mode ### Connected Tunnel Mode diff --git a/docs/data/routes/docs/client-frameworks/react/sample-app/en.md b/docs/data/routes/docs/client-frameworks/react/sample-app/en.md index 5289ce967e..2fd9b04b0f 100644 --- a/docs/data/routes/docs/client-frameworks/react/sample-app/en.md +++ b/docs/data/routes/docs/client-frameworks/react/sample-app/en.md @@ -16,7 +16,7 @@ The React sample supports running in all [JSS application modes](/docs/fundament ## Routing + State Management -The sample app uses dynamic routing based on the [Layout Service](/docs/fundamentals/services/layout-service) (or local route data files in _disconnected mode_), and uses route/navigation changes to trigger app state changes. Thus tracing the primary execution flow should begin with the route configuration. +The sample app uses dynamic routing based on the [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) (or local route data files in _disconnected mode_), and uses route/navigation changes to trigger app state changes. Thus tracing the primary execution flow should begin with the route configuration. ### Client-side routing @@ -34,7 +34,7 @@ When the React app is pre-rendered by a Node server, thus returning HTML to the 1. [Integrated mode only] Sitecore will receive the request, parse the route server-side, and determine whether the requested item will be handled by a JSS application, and thus which bundle to execute. 1. [Headless mode only] A request is received by the Node SSR proxy and passed on to a Sitecore layout service -1. The Node host will invoke the `renderView` function in the `server/server.js`. The function arguments include the route data / [Layout Service](/docs/fundamentals/services/layout-service) output. +1. The Node host will invoke the `renderView` function in the `server/server.js`. The function arguments include the route data / [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) output. 1. The `renderView` function performs the following steps: * Receive the data to use when server-side rendering (layout service, dictionary) * Sets the SSR data into the app's initial state using `setServerSideRenderingState()` diff --git a/docs/data/routes/docs/client-frameworks/vue/reference/en.md b/docs/data/routes/docs/client-frameworks/vue/reference/en.md index 642b5e4667..75d2d4dbff 100644 --- a/docs/data/routes/docs/client-frameworks/vue/reference/en.md +++ b/docs/data/routes/docs/client-frameworks/vue/reference/en.md @@ -6,7 +6,7 @@ title: Vue Package Reference # JSS Vue Package -The `sitecore-jss-vue` package is a library that delivers UI helper components and helper utilities for rendering data from the Sitecore [Layout Service](/docs/fundamentals/services/layout-service) (provided via JSS server package). +The `sitecore-jss-vue` package is a library that delivers UI helper components and helper utilities for rendering data from the Sitecore [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) (provided via JSS server package). # Getting started diff --git a/docs/data/routes/docs/client-frameworks/vue/sample-app/en.md b/docs/data/routes/docs/client-frameworks/vue/sample-app/en.md index 0fb20f1596..b92384f333 100644 --- a/docs/data/routes/docs/client-frameworks/vue/sample-app/en.md +++ b/docs/data/routes/docs/client-frameworks/vue/sample-app/en.md @@ -22,7 +22,7 @@ The JSS Vue sample primarily uses [Single-File Components (SFC)](https://vuejs.o ## Routing + State Management -The sample app uses dynamic routing based on the [Layout Service](/docs/fundamentals/services/layout-service) (or local route data files in _disconnected mode_), and uses route/navigation changes to trigger app state changes. Thus tracing the primary execution flow should begin with the route configuration. +The sample app uses dynamic routing based on the [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) (or local route data files in _disconnected mode_), and uses route/navigation changes to trigger app state changes. Thus tracing the primary execution flow should begin with the route configuration. ### Client-side routing @@ -43,7 +43,7 @@ When the Vue app is pre-rendered by a Node server, thus returning HTML to the cl 1. [Integrated mode only] Sitecore will receive the request, parse the route server-side, and determine whether the requested item will be handled by a JSS application, and thus which bundle to execute. 1. [Headless mode only] A request is received by the Node SSR proxy and passed on to a Sitecore layout service. -1. The Node host will invoke the `renderView` function in the `server/server.js` file. The function arguments include the route data / [Layout Service](/docs/fundamentals/services/layout-service) output. +1. The Node host will invoke the `renderView` function in the `server/server.js` file. The function arguments include the route data / [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) output. 1. The `renderView` function performs the following steps: * Receive the data to use when server-side rendering (layout service, dictionary) * Create and initialize the app via the same `createApp.js` file used in client-side rendering. diff --git a/docs/data/routes/docs/en.md b/docs/data/routes/docs/en.md index 4e7d3d47ad..7c723658fa 100644 --- a/docs/data/routes/docs/en.md +++ b/docs/data/routes/docs/en.md @@ -10,6 +10,10 @@ New to JSS? Learn key concepts in the [introduction area](/docs/introduction/why Ready to get into code? The [Quick start](/docs/nextjs/getting-started-nextjs/walkthrough-dotnetnew) is written just for you. +> To ensure that your new JSS application is compatible with your licensed Sitecore XP version, consult the [compatibility table](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0541788). +> +> To create an application using a previous version of JSS, see an example in the [JSS CLI reference](/docs/fundamentals/cli). + ## Questions? See the [Help, FAQ, and Known Issues](/help). Not there? [Ask on Sitecore StackExchange](https://sitecore.stackexchange.com/questions/tagged/jss). @@ -21,4 +25,4 @@ We'd love to hear from you! - For bugs, file those in GitHub. - For thoughts and comments, you can find us in `#jss` on Sitecore Community Slack (how to join community Slack). -We hope you enjoy JSS and build something really cool with it! :) \ No newline at end of file +We hope you enjoy JSS and build something really cool with it! :) diff --git a/docs/data/routes/docs/fundamentals/application-modes/en.md b/docs/data/routes/docs/fundamentals/application-modes/en.md index 2ba4f9ac2f..3a888a0e34 100644 --- a/docs/data/routes/docs/fundamentals/application-modes/en.md +++ b/docs/data/routes/docs/fundamentals/application-modes/en.md @@ -101,7 +101,7 @@ Consult the [headless with `sitecore-jss-proxy`](/docs/techniques/ssr/headless-m ## API-Only Mode -In this mode, you consume data directly from Sitecore's headless APIs - [Layout Service](/docs/fundamentals/services/layout-service), [GraphQL](/docs/fundamentals/services/graphql), [Dictionary Service](/docs/fundamentals/services/dictionary-service), [Sitecore Services Client](https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/sitecoreservicesclient/sitecoreservicesclient), etc. +In this mode, you consume data directly from Sitecore's headless APIs - [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service), [GraphQL](/docs/fundamentals/services/graphql), [Dictionary Service](/docs/fundamentals/services/dictionary/sitecore-dictionary-service), [Sitecore Services Client](https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/sitecoreservicesclient/sitecoreservicesclient), etc. API-only mode can be used with any platform that understands JSON data to consume Sitecore-provided content and personalized layout information. When the data is used this way, none of the JSS npm packages (or indeed any JavaScript) is required. Experience editor will not be supported. diff --git a/docs/data/routes/docs/fundamentals/architecture/en.md b/docs/data/routes/docs/fundamentals/architecture/en.md index bbad973ee5..b068e27898 100644 --- a/docs/data/routes/docs/fundamentals/architecture/en.md +++ b/docs/data/routes/docs/fundamentals/architecture/en.md @@ -15,7 +15,7 @@ Driving layout dynamically enables JSS apps to support content editor driven lay JSS High Level Elements * **JSS SDKs**: A series of **[npm packages](https://www.npmjs.com/org/sitecore-jss)** facilitate working with Sitecore data and layout in JavaScript. Framework-specific SDKs provide Sitecore's dynamic *placeholder* layout system and helpers for rendering Sitecore fields so they can be editable by authors. -* **[Sitecore Layout Service](/docs/fundamentals/services/layout-service)**: provides the composition of route/pages, as well as the needed data for each component. The client SDKs make it easy to consume this data and render a data-driven (that is, Sitecore-driven) layout. +* **[Sitecore Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service)**: provides the composition of route/pages, as well as the needed data for each component. The client SDKs make it easy to consume this data and render a data-driven (that is, Sitecore-driven) layout. * **[JavaScript view engine](/docs/fundamentals/services/view-engine)**: Allows Sitecore to perform server-side rendering (SSR) of JavaScript applications, enabling use of the Sitecore Experience Editor. * **Application import**: Developers may take a [code-first approach](/docs/fundamentals/dev-workflows/code-first) when using JSS via the [Application Import Service](/docs/fundamentals/services/app-import), which generates Sitecore renderings, templates and/or content based on data and JavaScript-defined Sitecore entities such as renderings and templates. @@ -24,8 +24,8 @@ Driving layout dynamically enables JSS apps to support content editor driven lay JSS Sitecore Integration and Data Flow * Using [manifest definitions](/docs/techniques/working-disconnected/manifest-api) and the [JSS CLI](/docs/fundamentals/cli), developers can deploy an application "code first" via the [Import Service](/docs/fundamentals/services/app-import). Note that this is optional -- you always have the option of working [Sitecore-first](/docs/fundamentals/dev-workflows/sitecore-first). -* As described above, the [Layout Service](/docs/fundamentals/services/layout-service) provides the data needed to render the JSS app. It is typically consumed for both initial render on the server, as well as directly from the browser on route change. +* As described above, the [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) provides the data needed to render the JSS app. It is typically consumed for both initial render on the server, as well as directly from the browser on route change. * The JSS [View Engine](/docs/fundamentals/services/view-engine) runs within the Sitecore instance and provides server-side rendering via communication with an out of process [node.js](https://nodejs.org) instance, which it manages. -* JSS apps may consume the [JSS Dictionary Service](/docs/fundamentals/services/dictionary-service), [Sitecore GraphQL](/docs/fundamentals/services/graphql), other [Sitecore.Services.Client](https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/sitecoreservicesclient/sitecoreservicesclient) services, or custom REST endpoints as needed. +* JSS apps may consume the [JSS Dictionary Service](/docs/fundamentals/services/dictionary/sitecore-dictionary-service), [Sitecore GraphQL](/docs/fundamentals/services/graphql), other [Sitecore.Services.Client](https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/sitecoreservicesclient/sitecoreservicesclient) services, or custom REST endpoints as needed. * For a true headless architecture, you may utilize independent node.js host(s) for server-side rendering of your application, via the [sitecore-jss-proxy](/docs/techniques/ssr/headless-mode-ssr) module. * [App configuration](/docs/fundamentals/services/app-configuration) within Sitecore provides app-specific settings for the Import Service and View Engine. \ No newline at end of file diff --git a/docs/data/routes/docs/fundamentals/cli/en.md b/docs/data/routes/docs/fundamentals/cli/en.md index a2b779dadd..a32a590a47 100644 --- a/docs/data/routes/docs/fundamentals/cli/en.md +++ b/docs/data/routes/docs/fundamentals/cli/en.md @@ -12,6 +12,46 @@ During JSS development, you will be commonly using scripts provided by the _JSS These are the main scripts you will be using frequently during JSS development. These were partially covered in [Quick start](/docs/client-frameworks/getting-started/quick-start). +### `jss create` +Creates a JSS application. You must provide an application name and a framework. + +``` +jss create +``` + +**Required parameters** + +|Parameter |Description| Value type| +| --- | --- | --- | +|`name`| The name of the app to create.|`String`| +|`template`| The template to create the app from; corresponds to folders in the [Official JSS repository](https://github.com/Sitecore/jss/tree/master/samples)|`String`| + +**Optional parameters** + +|Parameter| Description| Options | Default |Template| +| --- | --- | --- | --- | --- | +|`--version` | Show version number | - | `true` | all | +|`--help` | Show help for the command | - | `true` | all | +|`--hostName`, `-r` | Sets the host name of the Sitecore site if this app is deployed to Sitecore. | - | `$name.dev.local` | all | +|`--repository`, `-r` | Configures the repository to use for creating the JSS app | A repository: githubusername/reponame | `Sitecore/jss` | all | +|`--branch`, `-b` | Configures the branch of the repository to use for creating the JSS app | A branch name | `master` | all | +|`--source`, `-s` | Sources the app template from a local filesystem path, instead of a GitHub repository. Use for custom JSS app templates | A local directory path | - | all | +|`--proxy`, `-p` | Specifies a HTTP proxy when downloading templates. | A local directory path | - | all | +|`--fetchWith` | Specifies how the applicaiton should fetch Sitecore layout and dictionary data. |`REST` or `GraphQL` | `REST` | nextjs | +|`--prerender` | Specifies the Next.js pre-rendering form for the primary `[[...path]].tsx` route. | `SSG` or `SSR` | `SSG` | nextjs | + +**Examples** +``` +// React-based app using a specific version of JSS +jss create my-jss-app react --branch release/11.0.0 + +// Next.js-based application with Static Generation and fetching data using GraphQL +jss create my-jss-app nextjs --prerender SSG --fetchWith GraphQL + +// Next.js-based application with Server-Side Rendering and fetching data using REST +jss create my-jss-app nextjs --prerender SSR --fetchWith REST +``` + ### `jss setup` Runs the interactive setup process where you will optionally provide info about connecting/deploying to a Sitecore instance. The input is saved to `scjssconfig.json` file in the app root. @@ -114,4 +154,4 @@ EXPANDED=admin$PASSWORD # becomes 'admin$PASSWORD' ESCAPED=admin\$PASSWORD -``` \ No newline at end of file +``` diff --git a/docs/data/routes/docs/fundamentals/personalization/en.md b/docs/data/routes/docs/fundamentals/personalization/en.md index e7b59759a7..015a4db0e6 100644 --- a/docs/data/routes/docs/fundamentals/personalization/en.md +++ b/docs/data/routes/docs/fundamentals/personalization/en.md @@ -10,7 +10,7 @@ One of the major advantages of Sitecore is its ability to personalize and respon ## Personalization -In JSS [personalization](https://doc.sitecore.net/sitecore_experience_platform/digital_marketing/personalization/walkthrough_personalizing_components) works exactly how it does in a non-headless Sitecore site. The [Layout Service](/docs/fundamentals/services/layout-service) renders pages using the exact same pathway as a traditional Sitecore site uses - meaning that personalization rules, multivariate tests, etc are all respected. As a developer, there's nothing you have to do. The content returned to your JSS app is pre-personalized before it is received. +In JSS [personalization](https://doc.sitecore.net/sitecore_experience_platform/digital_marketing/personalization/walkthrough_personalizing_components) works exactly how it does in a non-headless Sitecore site. The [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) renders pages using the exact same pathway as a traditional Sitecore site uses - meaning that personalization rules, multivariate tests, etc are all respected. As a developer, there's nothing you have to do. The content returned to your JSS app is pre-personalized before it is received. ## Analytics @@ -18,7 +18,7 @@ Sitecore gathers behavioral analytics data on visitors that can be used for info #### Via Layout Service -[Layout Service](/docs/fundamentals/services/layout-service) requests are tracked on the server-side as a 'page view' just like a traditional Sitecore site would. This includes any goals, events, etc configured to be triggered by the route item. Because Sitecore's session tracking is cookie-based, it is important to pass browser cookies to Layout Service requests (this is done by default). +[Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) requests are tracked on the server-side as a 'page view' just like a traditional Sitecore site would. This includes any goals, events, etc configured to be triggered by the route item. Because Sitecore's session tracking is cookie-based, it is important to pass browser cookies to Layout Service requests (this is done by default). > If you are tracking route/page views exclusively from the client-side (i.e. using cached route data), you can disable tracking of Layout Service requests by sending `tracking=false` in the service call's query string. diff --git a/docs/data/routes/docs/fundamentals/services/dictionary-service/en.md b/docs/data/routes/docs/fundamentals/services/dictionary-service/en.md deleted file mode 100644 index 1bbedafc46..0000000000 --- a/docs/data/routes/docs/fundamentals/services/dictionary-service/en.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -name: dictionary-service -routeTemplate: ./data/component-templates/article.yml -title: Dictionary Service ---- - -# Dictionary Service - -Often multilingual apps will need a dictionary of static phrases that require translation. Commonly this would be items such as form labels, global navigation items, footers, etc. Sitecore JSS provides an additional REST endpoint for retrieving an app-specific translation dictionary, backed by a Sitecore feature called *Dictionary Domains*. The URL format for this API is: - -`/sitecore/api/jss/dictionary///` - -For example: -http://JssReactWeb/sitecore/api/jss/dictionary/JssReactWeb/es-MX/ - -```json -{ - "lang": "es-MX", - "app": "JssReactWeb", - "phrases": { - "Copyright": "{{year}} Inicio Bootstrap", - "Home": "Inicio", - "Start Bootstrap": "Inicio Bootstrap" - } -} -``` - -It's up to you how you invoke and utilize this data. For example, the React App utilizes the `i18next` module with `i18next-fetch-backend`. - -> Note for Sitecore devs and admins: By default all JSS apps have a dictionary domain configured for the app. You can alter the app's dictionary domain in the [App configuration](/docs/techniques/content-translation). - -## Invoking the Dictionary Service from JSS - -The Sitecore JSS SDK provides a simple API to make utilizing the Dictionary Service easier. Create instance of `DictionaryService` class and enter configuration: -```javascript -import { DictionaryService } from '@sitecore-jss/sitecore-jss-nextjs'; -import config from './config'; - -const dictionaryService = new DictionaryService({ - apiHost: config.sitecoreApiHost, - apiKey: config.sitecoreApiKey, - siteName: config.jssAppName, -}); -``` -The `DictionaryServiceConfig` type is found in the `@sitecore-jss\sitecore-jss` package. `DictionaryService` contains caching enabled by default. - -The `dataFetcher` option enables you to implement whichever data access method you wish. JSS ships with axios, which can be imported from `src\data-fetcher.js`. -```javascript -import { AxiosResponse } from 'axios'; -import { - AxiosDataFetcher, - DictionaryService, - DictionaryServiceData -} from '@sitecore-jss/sitecore-jss-nextjs'; -import config from 'temp/config'; - -function dataFetcher(url: string, data?: unknown): Promise> { - return new AxiosDataFetcher().fetch(url, data); -} - -const dictionaryService = new DictionaryService({ - apiHost: config.sitecoreApiHost, - apiKey: config.sitecoreApiKey, - siteName: config.jssAppName, - dataFetcher, -}); - -const language = 'en'; - -dictionaryService.fetchDictionaryData(language).then(data => { - console.log(JSON.stringify(data, null, 2)); -}); -``` - -If you'd like to learn more about other translation techniques with JSS, see [Content Translation](/docs/techniques/content-translation) \ No newline at end of file diff --git a/docs/data/routes/docs/fundamentals/services/dictionary/jss-dictionary-api/en.md b/docs/data/routes/docs/fundamentals/services/dictionary/jss-dictionary-api/en.md new file mode 100644 index 0000000000..5e7eaabf6f --- /dev/null +++ b/docs/data/routes/docs/fundamentals/services/dictionary/jss-dictionary-api/en.md @@ -0,0 +1,123 @@ +--- +name: jss-dictionary-api +routeTemplate: ./data/component-templates/article.yml +title: JSS Dictionary API +--- + +# JSS Dictionary API + +Sitecore JSS, through the core JSS NPM package `sitecore-jss`, provides a simple API to help you fetch app-specific translation dictionaries using the [Sitecore Dictionary Service](/docs/fundamentals/services/dictionary/sitecore-dictionary-service). Once you have the dictionary data, it is up to you to choose how to utilize it and what internationalization libraries you prefer. + +## Examples + +The following sections provide some simplified examples to demonstrate how to use the JSS Dictionary API. If your project is based on a JSS sample application (you set it up with `jss create` or copied a sample from the [JSS repository](https://github.com/Sitecore/jss/blob/release/18.0.0/samples)), your application already handles fetching of dictionary data. + +The following examples show you how to retrieve dictionary data from your Sitecore instance using the REST and GraphQL. + +> For all the examples below, we assume you will create the files in the root directory of the application and that you have a `config.js` file in that same directory. Adjust the `import` statements as necessary to reflect your project's setup. + +### Fetching dictionary data with GraphQL + +You can fetch dictionary data from Sitecore using GraphQL and the JSS [`GraphQLDictionaryService`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/modules/i18n_graphql_dictionary_service.md). + +1. In a file `dictionary-service.ts`, create and configure an instance of the [`GraphQLDictionaryService`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/classes/i18n_graphql_dictionary_service.GraphQLDictionaryService.md): + +```javascript +import {GraphQLDictionaryService} from '@sitecore-jss/sitecore-jss'; +import config from './config'; + +export const dictionaryService = new GraphQLDictionaryService({ + endpoint: config.graphQLEndpoint, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, + /* + The Dictionary Service needs a root item ID in order to fetch dictionary phrases for the current + app. If your Sitecore instance only has 1 JSS App, you can specify the root item ID here; + otherwise, the service will attempt to figure out the root item for the current JSS App using GraphQL and app name. + rootItemId: '{GUID}' + */ +``` + +2. In the file where you want to fetch the data, import and use your new dictionary service instance: + +```javascript +import { dictionaryService } from './dictionary-service'; +const language = 'en'; +dictionaryService.fetchDictionaryData(language).then(data => { + // do something with the data +}); +``` + +### Fetching dictionary data with REST + +To invoke the REST Dictionary Service from a JSS application, use the JSS [`RestDictionaryService`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/modules/i18n_rest_dictionary_service.md): + +1. In a file `dictionary-service.ts`, create an instance of the [`RestDictionaryService` class](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/classes/i18n_rest_dictionary_service.RestDictionaryService.md) and provide the configuration object: + +```javascript +import { RestDictionaryService } from '@sitecore-jss/sitecore-jss'; +import config from './config'; + +export const dictionaryService = new RestDictionaryService({ + apiHost: config.sitecoreApiHost, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, +}); +``` +2. In the file where you want to fetch the data, import and use your new dictionary service instance: + +```javascript +import { dictionaryService } from './dictionary-service'; +const language = 'en'; +dictionaryService.fetchDictionaryData(language).then(data => { + // do something with the data +}); +``` + +### Using a custom data fetcher + +The [`RestDictionaryServiceConfig`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/modules/i18n_rest_dictionary_service.md#restdictionaryserviceconfig) type accepts a `dataFetcher` property. You can use this property to pass a custom data fetcher to your instance of the Dictionary Service. By default, the JSS REST Dictionary service uses [`axios`](https://www.npmjs.com/package/axios). + +To use a REST dictionary service with a custom data fetcher: + +1. In a file `dictionary-service.ts`, create an instance of the `RestDictionaryService` class and provide the configuration object: + +```typescript +import { AxiosResponse } from 'axios'; +import { + AxiosDataFetcher, + RestDictionaryService, + DictionaryServiceData +} from '@sitecore-jss/sitecore-jss'; +import config from './config'; + +// define your custom data fetcher +function dataFetcher(url: string, data?: unknown): Promise> { + return new AxiosDataFetcher().fetch(url, data); +} + +export const dictionaryService = new RestDictionaryService({ + apiHost: config.sitecoreApiHost, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, + // provide your custom data fetcher to the service instance + dataFetcher +}); +``` + +2. Import and use the new dictionary service: +```javascript +import { dictionaryService } from './dictionary-service'; + +const language = 'en'; + +dictionaryService.fetchDictionaryData(language).then(data => { + // do something with the data +}); +``` + +### Dictionary data + +The method [`fetchDictionaryData`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/classes/i18n_dictionary_service.DictionaryServiceBase.md#fetchdictionarydata) returns a key-value pair map of [`dictionary phrases`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/interfaces/i18n_dictionary_service.DictionaryPhrases.md). + +If you'd like to learn more about other translation techniques with JSS, see [Content Translation](/docs/techniques/content-translation). diff --git a/docs/data/routes/docs/fundamentals/services/dictionary/overview/en.md b/docs/data/routes/docs/fundamentals/services/dictionary/overview/en.md new file mode 100644 index 0000000000..ccd6a41bee --- /dev/null +++ b/docs/data/routes/docs/fundamentals/services/dictionary/overview/en.md @@ -0,0 +1,31 @@ +--- +name: overview +routeTemplate: ./data/component-templates/article.yml +title: Dictionary Services and APIs +--- + +# Dictionary Services and APIs + +Often, multilingual apps need a dictionary of static phrases that require translation. Commonly this would be items such as form labels, global navigation items, footers, etc. + +## Sitecore endpoints for dictionary data + +There are several options for fetching dictionaries from Sitecore: + +- Call the [REST Dictionary Service endpoint](/docs/fundamentals/services/dictionary/sitecore-dictionary-service) provided by Headless Services. + +- Query the [Sitecore Edge Preview GraphQL endpoint](#sitecore-graphql) provided by Headless Services. +- Query the GraphQL endpoint provided by [Sitecore Experience Edge for XM](#sitecore-experience-edge-for-xm). +- Query the original [Sitecore GraphQL Endpoint](/docs/techniques/graphql/graphql-overview#configuring-a-graphql-endpoint). This endpoint is currently used by React, Angular and Vue sample applications versions 18.0.0 and earlier. + +### REST Dictionary Service +The [Sitecore REST Dictionary Service endpoint](/docs/fundamentals/services/dictionary/sitecore-dictionary-service) is a REST endpoint providing app-specific dictionary data. +### Sitecore Edge Preview GraphQL +[Sitecore Edge Preview GraphQL API](https://doc.sitecore.com/en/developers/101/developer-tools/the-architecture-of-sitecore-experience-edge-for-xm.html#the-preview-graphql-endpoint_body) is an implementation of a GraphQL server on top of Sitecore. The Sitecore GraphQL schema mirrors the [Experience Edge schema](https://doc.sitecore.com/developers/101/developer-tools/en/the-experience-edge-schema.html). +### Sitecore Experience Edge for XM +[Sitecore Experience Edge for XM](https://doc.sitecore.com/developers/101/developer-tools/en/introducing-sitecore-experience-edge-for-xm.html) comes with a read-only GraphQL schema that is designed to accommodate common front-end use cases for headless Sitecore development. Read about the [Experience Edge schema](https://doc.sitecore.com/developers/101/developer-tools/en/the-experience-edge-schema.html). +### Sitecore GraphQL Endpoint +The [Sitecore GraphQL Endpoint](/docs/techniques/graphql/graphql-overview#configuring-a-graphql-endpoint), the first-ever introduced by JSS Server Components, is currently used only by React, Angular and Vue sample applications provided by JSS versions 18.0.0 and earlier. + +## JSS Dictionary API +When using JSS, you can get dictionary data from any of the endpoints mentioned earlier, without worrying about data fetching implementation details. The [JSS Dictionary API](/docs/fundamentals/services/dictionary/jss-dictionary-api) abstracts data fetching implementation details into services, clients and data fetchers for both REST and GraphQL endpoints. See some [usage examples](/docs/fundamentals/services/dictionary/jss-dictionary-api#examples). diff --git a/docs/data/routes/docs/fundamentals/services/dictionary/sitecore-dictionary-service/en.md b/docs/data/routes/docs/fundamentals/services/dictionary/sitecore-dictionary-service/en.md new file mode 100644 index 0000000000..3d47239834 --- /dev/null +++ b/docs/data/routes/docs/fundamentals/services/dictionary/sitecore-dictionary-service/en.md @@ -0,0 +1,27 @@ +--- +name: sitecore-dictionary-service +routeTemplate: ./data/component-templates/article.yml +title: Sitecore Dictionary Service +--- + +# Sitecore Dictionary Service + +Sitecore Headless Services provides a REST endpoint for retrieving an app-specific translation dictionary. + +> Note: If you provide the `sc_lang` parameter to [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) requests, the service will return content in the specified language. The Dictionary Service returns translated phrases in your app. + +The endpoint format for this API is `/sitecore/api/jss/dictionary///`. + +For example, a request to `http://JssReactWeb.dev/sitecore/api/jss/dictionary/JssReactWeb/es-MX/` will return: + +```json +{ + "lang": "es-MX", + "app": "JssReactWeb", + "phrases": { + "Copyright": "{{year}} Inicio Bootstrap", + "Home": "Inicio", + "Start Bootstrap": "Inicio Bootstrap" + } +} +``` \ No newline at end of file diff --git a/docs/data/routes/docs/fundamentals/services/forms-service/en.md b/docs/data/routes/docs/fundamentals/services/forms-service/en.md index b0a712e9e4..91f4b6dee4 100644 --- a/docs/data/routes/docs/fundamentals/services/forms-service/en.md +++ b/docs/data/routes/docs/fundamentals/services/forms-service/en.md @@ -8,7 +8,7 @@ title: Forms Service To enable consuming [Sitecore Forms](https://doc.sitecore.com/users/101/sitecore-experience-platform/en/introducing-sitecore-forms.html) from JSS, APIs are provided to: -* Get form data from [Layout Service](/docs/fundamentals/services/layout-service) using a [Rendering Contents Resolver](/docs/techniques/extending-layout-service/layoutservice-rendering-contents) +* Get form data from [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) using a [Rendering Contents Resolver](/docs/techniques/extending-layout-service/layoutservice-rendering-contents) * Accept form posts and return JSON data in a REST service. The URL for for this API is `/api/jss/formbuilder` The usage and setup of the forms service are detailed in the [forms reference documentation](/docs/techniques/forms). diff --git a/docs/data/routes/docs/fundamentals/services/graphql/en.md b/docs/data/routes/docs/fundamentals/services/graphql/en.md index 4c9b2de813..ef395e7579 100644 --- a/docs/data/routes/docs/fundamentals/services/graphql/en.md +++ b/docs/data/routes/docs/fundamentals/services/graphql/en.md @@ -9,37 +9,37 @@ JSS applications can use GraphQL to query and update data. ## What is GraphQL? -[GraphQL](http://graphql.org/) is a query language for your API. Think of it in SQL terms as "the world's best `SELECT` statement." When you use GraphQL, only the exact data that the frontend needs is returned by the server. This provides the capability to have bandwidth savings vs a REST API, while also exposing a great amount of flexibility because not every element of the API need be calculated for every request. Because GraphQL is a protocol, it also enables additional optimizations like _query batching_ that are impossible with a REST API. +[GraphQL](http://graphql.org/) is a query language for your API. Think of it in SQL terms as "the world's best `SELECT` statement." When you use GraphQL, only the exact data that the frontend application needs is returned by the server. Compared to a REST API, GraphQL allows for well-crafted queries that save bandwidth. Because GraphQL is a protocol, it enables additional optimizations like _query batching_ that are impossible with a REST API. -There are very good [tutorials](http://graphql.org/learn/) out there on how to use and learn GraphQL, including [Apollo Launchpad](https://launchpad.graphql.com/) that lets you create a GraphQL server and query it right in a browser. +> TIP! You can learn GraphQL using the official [tutorials](http://graphql.org/learn/). You can create a GraphQL server and query it right in a browser by using tools such as [Apollo Launchpad](https://launchpad.graphql.com/). ## What is the Sitecore GraphQL API? -The Sitecore GraphQL API is an implementation of a GraphQL server on top of Sitecore. It is is designed to be a generic GraphQL service platform, not simply a content API, and can serve or aggregate any data that you can access from the Sitecore server and present it via GraphQL queries. The API also supports real-time data using GraphQL subscriptions. +The Sitecore GraphQL API is an implementation of a GraphQL server on top of Sitecore. It is designed to be a generic GraphQL service platform, not simply a content API, and can serve or aggregate any data that you can access from the Sitecore server and present it via GraphQL queries. The API also supports real-time data using GraphQL subscriptions. [Check out the API documentation](/docs/techniques/graphql/graphql-overview) for a more detailed look at the Sitecore GraphQL API. ## Using GraphQL with JSS apps -JSS apps have several choices in terms of using GraphQL. With _integrated_ GraphQL, the format of the [route data](/docs/techniques/working-disconnected/manifest-api) returned for a specific component by the Sitecore [Layout Service](/docs/fundamentals/services/layout-service) can be modified into the result of a GraphQL query. With _connected_ GraphQL, a JSS app makes direct HTTP requests to a Sitecore GraphQL endpoint. +JSS apps have several choices in terms of using GraphQL. With _integrated_ GraphQL, the format of the [layout data](/docs/techniques/working-disconnected/manifest-api) returned for a specific component by the Sitecore [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) can be modified into the result of a GraphQL query. With _connected_ GraphQL, a JSS app makes direct HTTP requests to a Sitecore GraphQL endpoint. > All JSS sample apps come with examples of using GraphQL, both Integrated and Connected. Refer to the apps for more detailed usage examples and commented code. ### _Integrated_ GraphQL -With _integrated_ GraphQL, the format of the [route data](/docs/techniques/working-disconnected/manifest-api) returned for a specific component by the Sitecore Layout Service can be modified into the result of a GraphQL query. This means that you can define a GraphQL query that defines the data you require to power a frontend component, and then receive the data from that query back as a property (i.e. `props.fields` for a React component). This gives you tight control over getting only what data you need, and also gives you the power of GraphQL if you require advanced data sources such as child items or CRM data. +With _integrated_ GraphQL, the format of the [layout data](/docs/techniques/working-disconnected/manifest-api) returned for a specific component by the Sitecore Layout Service can be modified into the result of a GraphQL query. This means that you can define a GraphQL query that defines the data you require to power a front-end component, and then receive the data from that query back as a property (i.e. `props.fields` for a React component). This gives you tight control over getting only what data you need, and also gives you the power of GraphQL if you require advanced data sources such as child items or CRM data. **When to use Integrated GraphQL** -* Your component needs more data than its datasource template fields that is part of your GraphQL schema -* The datasource template contains extra fields that you do not need to render -* You do not wish to have any client-side GraphQL libraries such as Apollo (integrated requires no additional dependency other than JSS) +* Your component needs more data than its datasource template fields that is part of your GraphQL schema. +* The datasource template contains extra fields that you do not need to render. +* You do not wish to have any client-side GraphQL libraries such as Apollo (integrated requires no additional dependency other than JSS). **When to avoid Integrated GraphQL** -* The component uses only content template field data. The default route data output is sufficient without needing GraphQL. -* Your GraphQL query is not performant; perhaps it aggregates 3-4 REST API calls behind the scenes for example. Integrated GraphQL blocks rendering of the app until all queries for the layout have completed because it's all one HTTP request for the route data + GraphQL queries; use Connected GraphQL to defer longer running queries until after the initial layout is rendered. -* The component needs to issue additional GraphQL queries in response to state changes. Integrated queries run only when the route data is loaded. +* The component uses only content template field data. The default layout data output is sufficient without needing GraphQL. +* Your GraphQL query is not performant. For example, it aggregates 3-4 REST API calls behind the scenes. Integrated GraphQL blocks the rendering of the app until all queries for the layout have completed because it's all one HTTP request for the layout data + GraphQL queries; use Connected GraphQL to defer longer running queries until after the initial layout is rendered. +* The component needs to issue additional GraphQL queries in response to state changes. Integrated queries run only when the layout data is loaded. * The component needs to run _mutations_ (updates) or _subscriptions_ (real-time data). Only queries can run in integrated mode. **How to use Integrated GraphQL** @@ -52,14 +52,14 @@ With _connected_ GraphQL, a JSS app makes direct HTTP requests to a Sitecore Gra **When to use Connected GraphQL** -* You need to load data asynchronously after the page layout is rendered, or in response to app state changes other than route change +* You need to load data asynchronously after the page layout is rendered, or in response to app state changes other than route change. * The component needs to run _mutations_ (updates) or _subscriptions_ (real-time data). -* You need full control over the lifecycle of your app's queries and state, such as integration with Redux or [apollo-link-state](https://github.com/apollographql/apollo-link-state) +* You need full control over the lifecycle of your app's queries and state, such as integration with Redux or [apollo-link-state](https://github.com/apollographql/apollo-link-state). **When to avoid Connected GraphQL** -* The component uses only content template field data. The default route data output is sufficient without needing GraphQL. -* The added page weight of a GraphQL client library is undesirable +* The component uses only content template field data. The default layout data output is sufficient without needing GraphQL. +* The added page weight of a GraphQL client library is undesirable. **How to use Connected GraphQL** diff --git a/docs/data/routes/docs/fundamentals/services/layout-service/en.md b/docs/data/routes/docs/fundamentals/services/layout-service/en.md deleted file mode 100644 index d4dc2950cb..0000000000 --- a/docs/data/routes/docs/fundamentals/services/layout-service/en.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -name: layout-service -routeTemplate: ./data/component-templates/article.yml -title: Sitecore Layout Service ---- - -# The Sitecore Layout Service - -The Sitecore Layout Service is the REST endpoint which provides data for Sitecore JSS apps. -In order to preserve the full capabilities of Sitecore XP within JSS, it's necessary to expose -Sitecore layout as structured data -- "rendering" to JSON rather than HTML markup. Much of the -capability of the platform is based in the rendering engine -- Content Personalization, -Content Testing, and the Experience Editor. By leveraging the same engine to produce structured -JSON output, the Layout Service decouples "layout" and "rendering," enabling you to render -Sitecore components in your chosen JavaScript framework. - -![Layout Service Flow](/assets/img/layout-service-flow.svg) - -The Layout Service provides additional data about the requested item as well: - -* Includes field values and metadata about the requested item, including its ID and template. -* Outputs placeholders and their renderings in a nested tree structure, representative of the parent/child relationships in the layout. This simplifies the rendering logic in the client significantly. -* Serializes the content associated with the rendering. By default, this is the rendering's datasource item. -* Renders Sitecore fields to structured JSON based on field type, allowing structured use of field values and metadata (e.g. image `alt` text). -* Includes customizable "context" data useful for rendering (e.g. data from `Sitecore.Context` such as the current site, user, and editing mode). -* When executed in editing mode via the Experience Editor, includes: - * Rendered fields with Experience Editor markup for inline editing. - * Rendering and placeholder "chromes" from the rendering engine, which allows the Experience Editor to insert editing controls. - -## Using the Layout Service - -There are two actions that Layout Service exposes: - -1. Getting the output of the whole layout for the item. - - ``` - /sitecore/api/layout/render/[config]?item=[path]&sc_lang=[language]&sc_apikey=[key]&tracking=[true|false] - ``` - - | Parameter | Description | - |-----------|-------------| - | `config` | The name of the Layout Service configuration to use. For JSS, this will usually be `jss`. More information can be found below on customizing Layout Service configurations. | - | `item` | The path to the item, relative to the context site's home item or item GUID (ID). | - | `sc_lang` | The language version of the item you wish to retrieve. | - | `sc_apikey` | An [SSC API Key](https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/sitecoreservicesclient/api_keys_for_the_odata_item_service) which has been configured for use with the Layout Service controller (`Sitecore.LayoutService.Mvc.Controllers.LayoutServiceController, Sitecore.LayoutService.Mvc`). An API Key is required in the query string or `sc_apikey` HTTP Header. | - | `tracking` | (optional) Enables/disables analytics tracking for the Layout Service invocation. Default is `true`. See details below on the Layout Service and Analytics. | - -2. Getting the output of a particular placeholder. - - This action is useful in special circumstances when your app needs to access a portion of the layout, therefore minimizing the amount of data processed and sent over the wire. - - ``` - /sitecore/api/layout/placeholder/[config]?placeholderName=/main&item=[path]&sc_lang=[language]&sc_apikey=[key]&tracking=[true|false] - ``` - - This action accept all the same parameters as the `/render` action described above, plus one more below. - - | Parameter | Description | - |-----------|-------------| - | `placeholderName` | The name of the placeholder to render. The value of this parameter can be retrieved from the layout details in Content Editor. Due to the dynamic placeholders used out of the box for `jss`, configuration, make sure you use the dynamic placeholder format here. | - - > Consider adding `tracking=false` if you use this action to avoid extra page visits registered within visit, which will be reflected in xDB. - -> Other general Sitecore query string parameters will work with the Layout Service as well, such as `sc_camp` for triggering an analytics campaign. - -You should always invoke the Layout Service using a host name which will resolve to the desired Site Context, as Layout Service paths are relative to the site Home item. In addition, the site context is needed for the analytics tracking included in Layout Service calls. - -## The Layout Service and Sitecore Placeholders - -To output the full structured layout of an item, the Layout Service needs to know what -placeholders are present on a rendering. Previously, this was not exposed as data on a rendering, -rather just through the code of the rendering itself -- e.g. `@Html.Sitecore().Placeholder("content")`. In order -to make these "exposed" placeholders discoverable, the Layout Service adds a new field to the Sitecore rendering -definition. - -![Exposed Placeholders](/assets/img/layout-service-exposed-placeholders.png) - -> This is not to be confused with the `Allowed Controls` on Placeholder Settings, which defines what renderings can be added to a placeholder. The `Layout Service Placeholders` field defines the placeholders that will be used within the rendering in your JavaScript component. - -### Dynamic Placeholder Keys - -By default, JSS's configuration of the Layout Service assumes that all placeholders other than the root placeholder (usually `main`) are [dynamic placeholders](/docs/techniques/dynamic-placeholders), and will use Sitecore's built-in dynamic placeholder logic to determine the actual placeholder keys to "render." - -## Layout Service and Analytics - -The Layout Service executes within the Sitecore MVC rendering engine, and thus retains all Sitecore analytics tracking and functionality. This means that if you use the Layout Service for routing in your JSS app, each route change will reflect as a page view in your analytics data. To avoid confusing URLs in your analytics data, the Layout Service will set the resolved `item` and its path as the tracked item and URL, respectively. - -If you don't want analytics tracking for your JSS app, or for particular Layout Service calls, set the `tracking` parameter to `false`. - -> _NOTE_: As of Sitecore 10.0.1, Sitecore sets the `Secure` flag on all cookies by default. This can impact JSS local development in *Connected* and *Headless* modes, as the proxied Sitecore cookies (including analytics cookies) will be rejected by the browser if your application is not running under HTTPS, and thus visits will not be tracked and content may not be personalized. To work around this, you can either: -> * Enable HTTPS in your local environment by modifying the node server, using a local reverse proxy, or using a service such as ngrok. -> * If you are running Sitecore in containers for development, you can make use of the Traefik reverse proxy that is provided in the `docker-compose` environment. -> * Transform the Sitecore Web.config and set: -> * `requireSSL` to `false` and `sameSite` to `Unspecified` in the `httpCookies` configuration -> * `cookieSameSite` to `Unspecified` in the `sessionState` configuration -> * **This is not recommended for production.** - -## Invoking the Layout Service from JSS - -The Sitecore JSS SDK provides a simple API to make utilizing the Layout Service easier. Enter your configuration into the `fetchOptions` object and pass it into `dataApi.fetchRouteData()`. The `fetcher` option enables you to implement whichever data access method you wish. JSS ships with axios, which can be imported from `src\dataFetcher.js`. - -The `dataApi` object is found in the `@sitecore-jss\sitecore-jss` package but is also exposed via the framework-specific SDKs - -```javascript -import { dataApi } from '@sitecore-jss/sitecore-jss-react'; -import { dataFetcher } from './dataFetcher'; - -const fetchOptions = { - fetcher: dataFetcher, - layoutServiceConfig: { - host: 'http://mysitecore', - configurationName: 'jss', - }, - querystringParams: { - sc_lang: 'en', - tracking: false, - sc_apikey: '{00000000-0000-0000-0000-000000000000}', - sc_camp: 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' - }, - requestConfig: { - // AxiosRequestConfig -- https://github.com/axios/axios#request-config - // Note: `withCredentials: true` is added automatically - timeout: 3000, - headers: { - 'X-JSS': 'Experience is asynchronous' - } - }, -} - -dataApi.fetchRouteData('/', fetchOptions).then(route => { - console.log(JSON.stringify(route, null, 2)); -}); -``` - -## Extending Layout Service - -See [Layout Service Extensibility](../../techniques/extending-layout-service/extending-layout-service-overview) diff --git a/docs/data/routes/docs/fundamentals/services/layout/jss-layout-api/en.md b/docs/data/routes/docs/fundamentals/services/layout/jss-layout-api/en.md new file mode 100644 index 0000000000..aea5eb69aa --- /dev/null +++ b/docs/data/routes/docs/fundamentals/services/layout/jss-layout-api/en.md @@ -0,0 +1,120 @@ +--- +name: jss-layout-api +routeTemplate: ./data/component-templates/article.yml +title: JSS Layout API +--- +# JSS Layout API + +The JSS Layout API is a suite of services, clients and data fetchers that facilitate retrieving Sitecore layout data from Sitecore REST and/or GraphQL endpoints. +## Examples + +The following sections provide some simplified examples to demonstrate how to use the JSS Layout API. If your project is based on a JSS sample application (you set it up with `jss create` or copied a sample from the [JSS repository](https://github.com/Sitecore/jss/tree/master/samples)), your application already handles fetching of layout data. + +The following examples show you how to retrieve layout data from your Sitecore instance using the REST and GraphQL. + +> For all the examples below, we assume you will create the files in the root directory of the application and that you have a `config.js` file in that same directory. Adjust the `import` statements as necessary to reflect your project's setup. + +## Fetching layout data with GraphQL + +You can fetch layout data from Sitecore using GraphQL and the JSS [`GraphQLLayoutService`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/modules/layout_graphql_layout_service.md). + +1. In a file `layout-service.ts`, create and configure an instance of the [`GraphQLLayoutService`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/classes/layout_graphql_layout_service.GraphQLLayoutService.md) using : + +```javascript +import {GraphQLLayoutService} from '@sitecore-jss/sitecore-jss'; +import config from './config'; + +export const layoutService = new GraphQLLayoutService({ + endpoint: config.graphQLEndpoint, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName +}) +``` + +2. In the file where you want to fetch the data, import and use your new layout service instance: + +```javascript +import { layoutService } from './layout-service'; +const language = 'en'; +layoutService.fetchLayoutData(language).then(data => { + // do something with the data +}); +``` + +> TIP: You can pass a `formatLayoutQuery` option to your GraphQLLayoutService instance to override the default query. See the [`GraphQLLayoutServiceConfig`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/classes/layout_graphql_layout_service.GraphQLLayoutService.md) type for details. + +## Fetching layout data with REST + +To invoke the REST Layout Service from a JSS application using the JSS [`RestLayoutService`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/modules/layout_rest_layout_service.md): + +1. In a file `layout-service.ts`, create an instance of the [`RestLayoutService` class](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/classes/layout_rest_layout_service.RestLayoutService.md) and provide the configuration object (of type [`RestLayoutServiceConfig`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/modules/layout_rest_layout_service.md#restlayoutserviceconfig)): + +```javascript +import { RestLayoutService } from '@sitecore-jss/sitecore-jss'; +import config from './config'; + +export const layoutService = new RestLayoutService({ + apiHost: config.sitecoreApiHost, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, + // tracking: false // if you wish to disable tracking +}); +``` +2. In the file where you want to fetch the data, import and use your new layout service instance: + +```javascript +import { layoutService } from './layout-service'; + +const language = 'en'; +const sitecoreRoutePath = '/styleguide'; + +layoutService.fetchLayoutData(sitecoreRoutePath, language).then(data => { + // do something with the data +}); +``` + +### Using a custom data fetcher + +The [`RestLayoutServiceConfig`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/modules/layout_rest_layout_service.md#restlayoutserviceconfig) type accepts a `dataFetcherResolver` property. You can use this property to pass a custom data fetcher to your instance of the Layout Service. By default, the JSS REST Layout service uses [`axios`](https://www.npmjs.com/package/axios). + +To use a REST layout service with a custom data fetcher: + +1. In a file `layout-service.ts`, create an instance of the [`RestLayoutService` class](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss/classes/layout_rest_layout_service.RestLayoutService.md) and provide the configuration object: + +```typescript +import { AxiosResponse } from 'axios'; +import { + AxiosDataFetcher, + RestLayoutService, + LayoutServiceData +} from '@sitecore-jss/sitecore-jss'; +import config from './config'; + +// define your custom data fetcher +function dataFetcher(url: string, data?: unknown): Promise> { + return new AxiosDataFetcher().fetch(url, data); +} + +export const layoutService = new RestLayoutService({ + apiHost: config.sitecoreApiHost, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, + tracking: false, // if you wish to disable tracking + // provide your custom data fetcher to the service instance + dataFetcherResolver: () => dataFetcher +}); +``` + +2. Import and use the new layout service: + +```javascript +import { layoutService } from './layout-service'; + +const language = 'en'; +const sitecoreRoutePath = '/styleguide'; + +layoutService.fetchLayoutData(sitecoreRoutePath, language).then(data => { + // do something with the data +}); +``` + diff --git a/docs/data/routes/docs/fundamentals/services/layout/overview/en.md b/docs/data/routes/docs/fundamentals/services/layout/overview/en.md new file mode 100644 index 0000000000..f7b3ecc005 --- /dev/null +++ b/docs/data/routes/docs/fundamentals/services/layout/overview/en.md @@ -0,0 +1,30 @@ +--- +name: overview +routeTemplate: ./data/component-templates/article.yml +title: Layout Services and APIs +--- +# Layout Services and APIs + +To fetch and use Sitecore layout information in your JSS application, you use the [JSS Layout API](#jss-layout-api). + +## Sitecore endpoints for layout data + +There are several options for fetching dictionaries from Sitecore: + +- Call the [REST Layout Service endpoint](/docs/fundamentals/services/layout/sitecore-layout-service) provided by Headless Services. + +- Query the [Sitecore Edge Preview GraphQL endpoint](#sitecore-graphql) provided by Headless Services. +- Query the GraphQL endpoint provided by [Sitecore Experience Edge for XM](#sitecore-experience-edge-for-xm). +- Query the original [Sitecore GraphQL Endpoint](/docs/techniques/graphql/graphql-overview#configuring-a-graphql-endpoint). This endpoint is currently used by React, Angular and Vue sample applications versions 18.0.0 and earlier. + +### REST Layout Service +The [Sitecore REST layout Service endpoint](/docs/fundamentals/services/layout/sitecore-layout-service) is a REST endpoint providing app-specific layout data. +### Sitecore Edge Preview GraphQL +[Sitecore Edge Preview GraphQL API](https://doc.sitecore.com/en/developers/101/developer-tools/the-architecture-of-sitecore-experience-edge-for-xm.html#the-preview-graphql-endpoint_body) is an implementation of a GraphQL server on top of Sitecore. The Sitecore GraphQL schema mirrors the [Experience Edge schema](https://doc.sitecore.com/developers/101/developer-tools/en/the-experience-edge-schema.html). +### Sitecore Experience Edge for XM +[Sitecore Experience Edge for XM](https://doc.sitecore.com/developers/101/developer-tools/en/introducing-sitecore-experience-edge-for-xm.html) comes with a read-only GraphQL schema that is designed to accommodate common front-end use cases for headless Sitecore development. Read about the [Experience Edge schema](https://doc.sitecore.com/developers/101/developer-tools/en/the-experience-edge-schema.html). +### Sitecore GraphQL Endpoint +The [Sitecore GraphQL Endpoint](/docs/techniques/graphql/graphql-overview#configuring-a-graphql-endpoint), the first-ever introduced by JSS Server Components, is currently used only by React, Angular and Vue sample applications provided by JSS versions 18.0.0 and earlier. + +## JSS Layout API +When using JSS, you can get layout data from any of the endpoints mentioned earlier, without worrying about data fetching implementation details. The [JSS Layout API](/docs/fundamentals/services/layout/jss-layout-api) abstracts data fetching implementation details into services, clients and data fetchers for both REST and GraphQL endpoints. See some [usage examples](/docs/fundamentals/services/layout/jss-layout-api#examples). \ No newline at end of file diff --git a/docs/data/routes/docs/fundamentals/services/layout/sitecore-layout-service/en.md b/docs/data/routes/docs/fundamentals/services/layout/sitecore-layout-service/en.md new file mode 100644 index 0000000000..fbf9c6bf4c --- /dev/null +++ b/docs/data/routes/docs/fundamentals/services/layout/sitecore-layout-service/en.md @@ -0,0 +1,103 @@ +--- +name: sitecore-layout-service +routeTemplate: ./data/component-templates/article.yml +title: Sitecore Layout Service +--- + +# The Sitecore Layout Service + +The Sitecore Layout Service exposes Sitecore layout as structured data for Sitecore JSS apps, allowing JSS applications to preserve the full capabilities of Sitecore XP. Instead of rendering HTML markup, the endpoints return JSON. + +The Sitecore Layout Service comes with a REST and a GraphQL endpoint. + +Many of the platform's capabilities, such as Content Personalization, Content Testing, and the Experience Editor, rely on the rendering engine. The Layout Service leverages the rendering engine to produce structured JSON output, effectively decoupling "layout" and "rendering." This decoupling allows you to render Sitecore components in your chosen JavaScript framework. + +![Layout Service Flow](/assets/img/layout-service-flow.svg) + +The Layout Service provides additional data about the requested items, as follows: + +- It includes field values and metadata about the requested item, including its ID and template. + +- It outputs placeholders and their renderings in a nested tree structure, representing the parent/child relationships in the layout and simplifying the rendering logic in the client. + +- It serializes the content associated with the rendering. By default, this is the rendering's datasource item. + +- It renders Sitecore fields to structured JSON based on field types, allowing for structured use of field values and metadata (for example, image alt text). + +- It includes customizable "context" data helpful in rendering (for example, data from `Sitecore.Context` such as the current site, user, and editing mode). + +- When executed in editing mode via the Experience Editor, it includes: + - Rendered fields with Experience Editor markup for inline editing. + - Rendering and placeholder markup from the rendering engine, allowing the Experience Editor to insert editing controls. + +## Using the Layout Service + +There are two actions that Layout Service exposes: + +1. Getting the output of the whole layout for the item. + + ``` + /sitecore/api/layout/render/[config]?item=[path]&sc_lang=[language]&sc_apikey=[key]&tracking=[true|false] + ``` + + | Parameter | Description | + |-----------|-------------| + | `config` | The name of the Layout Service configuration to use. For JSS, this will usually be `jss`. More information can be found below on customizing Layout Service configurations. | + | `item` | The path to the item, relative to the context site's home item or item GUID (ID). | + | `sc_lang` | The language version of the item you wish to retrieve. | + | `sc_apikey` | An [SSC API Key](https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/sitecoreservicesclient/api_keys_for_the_odata_item_service) which has been configured for use with the Layout Service controller (`Sitecore.LayoutService.Mvc.Controllers.LayoutServiceController, Sitecore.LayoutService.Mvc`). An API Key is required in the query string or `sc_apikey` HTTP Header. | + | `tracking` | (optional, for Sitecore XP only) Enables/disables analytics tracking for the Layout Service invocation. Default is `true`. See details below on the Layout Service and Analytics. | + +2. Getting the output of a particular placeholder. + + This action is useful in special circumstances when your app needs to access a portion of the layout, minimizing the amount of data processed and sent over the wire. + + ``` + /sitecore/api/layout/placeholder/[config]?placeholderName=/main&item=[path]&sc_lang=[language]&sc_apikey=[key]&tracking=[true|false] + ``` + + This action accepts all the same parameters as the `/render` action described above, plus one more below. + + | Parameter | Description | + |-----------|-------------| + | `placeholderName` | The name of the placeholder to render. The value of this parameter can be retrieved from the layout details in Content Editor. Due to the dynamic placeholders used out of the box for `jss`, configuration, make sure you use the dynamic placeholder format here. | + + > Consider adding `tracking=false` if you use this action to avoid extra page visits registered within the visit, which will be reflected in xDB. + +> Other general Sitecore query string parameters will also work with the Layout Service, such as `sc_camp` for triggering an analytics campaign. + +You should always invoke the Layout Service using a hostname which will resolve to the desired Site Context, as Layout Service paths are relative to the site Home item. In addition, the site context is needed for the analytics tracking included in Layout Service calls. + +## The Layout Service and Sitecore Placeholders + +To output the full structured layout of an item, the Layout Service needs to know what +placeholders are present on a rendering. Previously, this was not exposed as data on a rendering, +rather just through the code of the rendering itself -- for example, `@Html.Sitecore().Placeholder("content")`. To make these "exposed" placeholders discoverable, the Layout Service adds a new field to the Sitecore rendering +definition. + +![Exposed Placeholders](/assets/img/layout-service-exposed-placeholders.png) + +> This is not to be confused with the `Allowed Controls` on Placeholder Settings, which defines what renderings can be added to a placeholder. The `Layout Service Placeholders` field defines the placeholders used within the rendering in your JavaScript component. + +### Dynamic Placeholder Keys + +By default, JSS's configuration of the Layout Service assumes that all placeholders other than the root placeholder (usually `main`) are [dynamic placeholders](/docs/techniques/dynamic-placeholders) and will use Sitecore's built-in dynamic placeholder logic to determine the actual placeholder keys to "render." + +## Layout Service and Analytics + +The Layout Service executes within the Sitecore MVC rendering engine and thus retains all Sitecore analytics tracking and functionality. This means that if you use the Layout Service for routing in your JSS app, each route change will reflect as a page view in your analytics data. To avoid confusing URLs in your analytics data, the Layout Service will set the resolved `item` and its path as the tracked item and URL, respectively. + +If you don't want analytics tracking for your JSS app or particular Layout Service calls, set the `tracking` parameter to `false`. + +> _NOTE_: As of Sitecore 10.0.1, Sitecore sets the `Secure` flag on all cookies by default. This can impact JSS local development in *Connected* and *Headless* modes, as the proxied Sitecore cookies (including analytics cookies) will be rejected by the browser if your application is not running under HTTPS. Thus visits will not be tracked, and content may not be personalized. To work around this, you can either: +> * Enable HTTPS in your local environment by modifying the node server, using a local reverse proxy, or using a service such as ngrok. +> * If you are running Sitecore in containers for development, you can use the Traefik reverse proxy provided in the `docker-compose` environment. +> * Transform the Sitecore `Web.config` and set: +> * `requireSSL` to `false` and `sameSite` to `Unspecified` in the `httpCookies` configuration +> * `cookieSameSite` to `Unspecified` in the `sessionState` configuration +> * **This is not recommended for production.** + + +## Extending Layout Service + +See [Layout Service Extensibility](/docs/techniques/extending-layout-service/extending-layout-service-overview). \ No newline at end of file diff --git a/docs/data/routes/docs/fundamentals/services/overview/en.md b/docs/data/routes/docs/fundamentals/services/overview/en.md new file mode 100644 index 0000000000..e03cb74706 --- /dev/null +++ b/docs/data/routes/docs/fundamentals/services/overview/en.md @@ -0,0 +1,59 @@ +--- +name: services-overview +routeTemplate: ./data/component-templates/article.yml +title: JSS Services & APIs +--- + +# JSS Services & APIs + +This section describes the services and APIs available in Sitecore Headless Services (formerly known as JSS Server Components) and the Sitecore JavaScript Rendering SDK (JSS). + +The services and APIs described in this section, unless otherwise stated, are available for all our framework-specific rendering SDKs. + +Our SDKs' most frequently used services follow a service-client-fetcher pattern of implementation and support REST request/response, GraphQL queries, or both. The services using this pattern are: + +- [Layout Service](/docs/fundamentals/services/layout/overview) - available for all frameworks, with REST and GraphQL endpoints. +- [Dictionary Service](/docs/fundamentals/services/dictionary/overview) - available for all frameworks, with REST and GraphQL endpoints. +- [Sitemap Service](/docs/nextjs/services/graphql-sitemap-service) - available for Next.js only, GraphQL only. + +Depending on your local development setup, chosen development workflow and framework, you might also need to become familiar with: +- [App Configuration](/docs/fundamentals/services/app-configuration). +- [App Import](/docs/fundamentals/services/app-import). +- [GraphQL](/docs/fundamentals/services/graphql). +- [Tracking](/docs/fundamentals/services/tracking). +- [Forms](/docs/fundamentals/services/forms-service). +- [View Engine](/docs/fundamentals/services/view-engine). + +## Terminology + +Before diving into the specifics of each service, you should be aware of the following terminology for JSS services: + +**Factory** + +A factory creates an instance of a *service*. In the [Next.js sample application](https://github.com/Sitecore/jss/tree/5982057c9a92e3c1a899a2b741e64f6a4dc04713/samples/nextjs/src/lib), there are examples of factories for services with support for both GraphQL and REST. + +**Service** + +A service is a JavaScript abstraction (class) that facilitates retrieving Sitecore data. +A service: +- Accepts a configuration object. +- Contains a fetch method. +- Has a *client* performing the fetching of data. +- Defines data models. +- Validates (developer input) logic. +- Implements a default *Fetcher*. + +**Client** + +A client uses a *JSS service* to interact with a Sitecore Headless Service or third-party service. + +**Fetcher** + +A fetcher describes the data-fetching function of *services*. + +## Service Customization + +As of JSS 18.0.0, the recommended method for customizing/extending a front-end JSS service is to: + +1. extend the service itself, followed by +2. using your new service in a service factory. \ No newline at end of file diff --git a/docs/data/routes/docs/fundamentals/services/tracking/en.md b/docs/data/routes/docs/fundamentals/services/tracking/en.md index f91d399e20..b71145017d 100644 --- a/docs/data/routes/docs/fundamentals/services/tracking/en.md +++ b/docs/data/routes/docs/fundamentals/services/tracking/en.md @@ -72,7 +72,7 @@ The tracking API ships with TypeScript typings, so with TS-aware editors like VS The tracking API supports tracking arbitrary page view events. This can be useful for things like tracking route changes that do not involve a Layout Service request (cached, custom routes, etc). When tracking page views, it's important to know: -* Requests to [Layout Service](/docs/fundamentals/services/layout-service) will track a page view by default. This can be disabled by adding `tracking=false` to the Layout Service request query string (configurable via the `dataApi` object in JSS apps). Disabling LS tracking may make sense if all page tracking is to be handled using the tracking API. +* Requests to [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) will track a page view by default. This can be disabled by adding `tracking=false` to the Layout Service request query string (configurable via the `RestLayoutService` class in JSS apps). Disabling LS tracking may make sense if all page tracking is to be handled using the tracking API. * Page view events require a Sitecore Item ID to track against, even though the URL tracked is arbitrary. If tracking non-item-based routes, you may need to create surrogate items to track against. ```js diff --git a/docs/data/routes/docs/fundamentals/troubleshooting/debug-logging/en.md b/docs/data/routes/docs/fundamentals/troubleshooting/debug-logging/en.md new file mode 100644 index 0000000000..5acb357369 --- /dev/null +++ b/docs/data/routes/docs/fundamentals/troubleshooting/debug-logging/en.md @@ -0,0 +1,61 @@ +--- +name: debug-logging +routeTemplate: ./data/component-templates/article.yml +title: Debug Logging +--- +# Debug Logging in JSS + +The Sitecore JSS npm packages utilize the [debug](https://www.npmjs.com/package/debug) module for debug logging. + +> `debug` is like an augmented version of `console.log`, but unlike `console.log`, you don't have to comment out debug logs in production code. The flipside being that you can easily enable debug logs in production when necessary using _environment variables_. + +All Sitecore JSS logs are organized under the root namespace `sitecore-jss`. Logging is turned off by default and can be conditionally turned on by using the `DEBUG` environment variable. + +> Note: The debug logs only include server-side code, so there is no benefit to [enabling debug logging in the browser](https://www.npmjs.com/package/debug#browser-support). + +To output all debug logs available, set the `DEBUG` environment variable to `sitecore-jss:*` (`*` is used as a wildcard). + +``` +DEBUG=sitecore-jss:* +``` + +Or be selective and show for example only layout service logs. + +``` +DEBUG=sitecore-jss:layout +``` + +Or show all _but_ layout service logs (`-` prefix will exclude). + +``` +DEBUG=sitecore-jss:*,-sitecore-jss:layout +``` + +> To learn more about the `DEBUG` syntax, see [debug](https://www.npmjs.com/package/debug#wildcards). + +## Namespaces + +The following lists all namespaces available, along with the applicable Sitecore JSS npm packages and sample applications. + +| Namespace | Package(s) / Sample(s) | Description | +| --- | --- | --- | +| `sitecore-jss:http` | `sitecore-jss`, `nextjs` | HTTP request and response logging for default fetch wrappers (`GraphQLRequestClient` and `AxiosDataFetcher`). | +| `sitecore-jss:dictionary` | `sitecore-jss`, `nextjs`, `node-headless-ssr-experience-edge` | Trace logging for dictionary service implementations (`GraphQLDictionaryService` and `RestDictionaryService`). | +| `sitecore-jss:layout` | `sitecore-jss`, `nextjs`, `node-headless-ssr-experience-edge` | Trace logging for layout service implementations (`GraphQLLayoutService` and `RestLayoutService`). | +| `sitecore-jss:editing` | `sitecore-jss-nextjs`, `nextjs` | Trace logging for Next.js Experience Editor integration middleware. | +| `sitecore-jss:sitemap` | `sitecore-jss-nextjs`, `nextjs` | Trace logging for Next.js GraphQL sitemap service (`GraphQLSitemapService`). | + +## Advanced options + +When running through Node.js, you can set a few additional environment variables that will change the behavior of the debug logging. + +| Name | Purpose | +| --- | --- | +| `DEBUG` | Enables/disables specific debugging namespaces. | +| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). Default is `false`. | +| `DEBUG_COLORS` | Whether or not to use colors in the debug output. Default is `true`. | +| `DEBUG_DEPTH` | Object inspection depth. Default is `2`. | +| `DEBUG_MULTILINE` | Pretty-print inspected objects on multiple lines. Default is `false` (single line). | +| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. Default is `false`. | + +> To learn more about the `DEBUG_` environment variables, see [debug](https://www.npmjs.com/package/debug#environment-variables). \ No newline at end of file diff --git a/docs/data/routes/docs/introduction/why-jss/en.md b/docs/data/routes/docs/introduction/why-jss/en.md index 0634b1da5a..b34fccf3e3 100644 --- a/docs/data/routes/docs/introduction/why-jss/en.md +++ b/docs/data/routes/docs/introduction/why-jss/en.md @@ -16,6 +16,7 @@ After they assemble components, Content Authors can apply Sitecore-specific feat ## What is JSS + JSS is a set of npm packages containing: 1. Core packages that abstract away the "Sitecore stuff" like talking to different Sitecore APIs. 2. Framework-specific packages with components that render data managed by the core packages. @@ -42,7 +43,7 @@ With JSS, all the benefits of JavaScript frameworks, such as Next's image optimi - JSS enables workflows where front-end and back-end teams can work in parallel. -- JSS provides sample applications, which serve as an onboarding tool and living documentation. +- JSS provides sample applications that serve as an onboarding tool and living documentation. - Abstractions for front-end developers that allow working with Sitecore declaratively. diff --git a/docs/data/routes/docs/nextjs/data-fetching/customizing-static-paths/en.md b/docs/data/routes/docs/nextjs/data-fetching/customizing-static-paths/en.md index 1fd065ea74..112186c52b 100644 --- a/docs/data/routes/docs/nextjs/data-fetching/customizing-static-paths/en.md +++ b/docs/data/routes/docs/nextjs/data-fetching/customizing-static-paths/en.md @@ -3,4 +3,232 @@ name: customizing-static-paths routeTemplate: ./data/component-templates/article.yml title: Customizing build-time static paths --- -# Walkthrough: Customizing build-time static paths \ No newline at end of file +# Walkthrough: Customizing build-time static paths + +For very large websites with many pages, products or articles, the static generation of all the pages could take a long time. You can reduce the build time of your static generated application by excluding some types of pages/items from static generation. + +You can achieve this by customizing which pages are generated at build time by [`getStaticPaths`](/docs/nextjs/data-fetching/getStaticPaths), a function that returns the list of paths for which the application should generate pages statically. + +This walkthrough describes how to customize the output of the `sitemap-fetcher` (used in `getStaticPaths`). + +## Create a custom sitemap service + +You can extend the class `GraphQLSitemapService` and the interface `GraphQLSitemapServiceConfig` to allow you to exclude a particular item type: + +1. In `src/lib`, create a new file `sitemap-service.ts`. + +2. In the new file, import the class `GraphQLSitemapService` and the interface `GraphQLSitemapServiceConfig` from our Next.js SDK. + ``` + import { + GraphQLSitemapService, + GraphQLSitemapServiceConfig, + } from '@sitecore-jss/sitecore-jss-nextjs'; + ``` + +3. Extend the `GraphQLSitemapServiceConfig`, add an additional option to the service configuration: + ```typescript + export interface ExtendedSitemapServiceConfig extends GraphQLSitemapServiceConfig { + /** + * Item with sub-paths to exclude + */ + + excludeItemId?: string; + } + ``` + +4. Sitecore Delivery Edge requires a valid ID in the search query. For those instances where you will not use the `excludeItemId` option, you will need to provide a valid, but empty, id. Declare an `emptyID` constant: + +```typescript +const emptyId = '{00000000-0000-0000-0000-000000000000}'; +``` + +5. Extend the `GraphQLSitemapService` class and override the `query` getter such that, if you provide an ID for `excludeItemId` it will not return items of that type: +```typescript +export class ExtendedSitemapService extends GraphQLSitemapService { + protected get query(): string { + return /* GraphQL */ ` + query SitemapQuery( + $rootItemId: String! + $language: String! + $pageSize: Int = 10 + $hasLayout: String = "true" + $after: String + $excludeItemId: String = "${this.options.excludeItemId ?? emptyId}" + ) { + search( + where: { + AND: [ + { name: "_path", value: $rootItemId, operator: CONTAINS } + { name: "_path", value: $excludeItemId, operator: NCONTAINS } + { name: "_language", value: $language } + { name: "_hasLayout", value: $hasLayout } + ] + } + first: $pageSize + after: $after + ) { + total + pageInfo { + endCursor + hasNext + } + results { + url { + path + } + } + } + } + `; + } + constructor(public options: ExtendedSitemapServiceConfig) { + super(options); + } +``` +> Note that we provide `$excludeItemId: String = "${this.options.excludeItemId ?? emptyId}"` in the query parameters , as well as the condition `{ name: "_path", value: $excludeItemId, operator: NCONTAINS }` to the `search` query. +## Create custom sitemap fetchers to customize lists of static paths +With the new sitemap service in place, you can now add sitemap fetchers that suit your needs. + +- In `src/lib/sitemap-fetcher.js`, import the necessary libraries, including your new sitemap service: + +```typescript +/* eslint-disable @typescript-eslint/no-var-requires */ +import { StaticPath } from '@sitecore-jss/sitecore-jss-nextjs'; +import { GetStaticPathsContext } from 'next'; +import config from 'temp/config'; +import { config as packageConfig } from '../../package.json'; +import { ExtendedSitemapService } from './sitemap-service'; // your new service +import { ItemIds } from './constants'; +``` + +### Fetch all pages, excluding some item types +You can use your new `ExtendedSitemapService` to create a sitemap fetcher that excludes specific item types from the list of static paths. For example, to fetch all pages except Products: + +1. In `src/lib/sitemap-fetcher.js`, implement a `RootSitemapFetcher`: + +```typescript +export class RootSitemapFetcher { + private _graphqlSitemapService: ExtendedSitemapService; + + constructor() { + this._graphqlSitemapService = new ExtendedSitemapService({ + endpoint: config.graphQLEndpoint, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, + excludeItemId: ItemIds.Products, // Exclude products + }); + } + + async fetch(context?: GetStaticPathsContext): Promise { + return (process.env.EXPORT_MODE + ? this._graphqlSitemapService.fetchExportSitemap(packageConfig.language) + : this._graphqlSitemapService.fetchSSGSitemap(context?.locales || []) + ).then((results) => { + // Compensate for current bug on Delivery Edge where the root '/products' item + // is being returned from the search query which excludes it ({ name: "_path", value: $productsItemId, operator: NCONTAINS }) + return results.filter((value) => value.params.path[0] !== 'products'); + }); + } +} +``` + +2. Export an instance of `RootSitemapFetcher`: + +```typescript +export const rootSitemapFetcher = new RootSitemapFetcher(); +``` + +3. In your application's `[[path]].tsx`, import the instance of the `RootSitemapFetcher`: + +```typescript +import { rootSitemapFetcher } from 'lib/sitemap-fetcher'; +``` + +4. Modify / add `getStaticPaths` to use the `rootSitemapFetcher`: +```typescript +export const getStaticPaths: GetStaticPaths = async (context) => { + if (process.env.NODE_ENV !== 'development') { + // Note: Next.js runs export in production mode + const paths = await rootSitemapFetcher.fetch(context); + + return { + paths, + fallback: process.env.EXPORT_MODE ? false : 'blocking', + }; + } + + return { + paths: [], + fallback: 'blocking', + }; +}; +``` + +### Fetch only products + +You can use the new `ExtendedSitemapService` to fetch only a specific type of items. For example, to fetch only Products: + +1. In `src/lib/sitemap-fetcher.js`, implement a `ProductSitemapFetcher`, to only return product paths: + +```typescript +export class ProductSitemapFetcher { + private _graphqlSitemapService: ExtendedSitemapService; + + constructor() { + this._graphqlSitemapService = new ExtendedSitemapService({ + endpoint: config.graphQLEndpoint, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, + rootItemId: ItemIds.Products, // Only products + }); + } + + async fetch(context?: GetStaticPathsContext): Promise { + return (process.env.EXPORT_MODE + ? this._graphqlSitemapService.fetchExportSitemap(packageConfig.language) + : this._graphqlSitemapService.fetchSSGSitemap(context?.locales || []) + ).then((results) => { + results.forEach((value) => { + value.params.path.shift(); // Remove the leading 'products' path fragment + }); + return results; + }); + } +} +``` + +2. Export an instance of the fetcher: + +```typescript +export const productSitemapFetcher = new ProductSitemapFetcher(); +``` + +3. In your application's `products/[[path]].tsx`, import the instance of the `ProductSitemapFetcher`: + +```typescript +import { productSitemapFetcher } from 'lib/sitemap-fetcher'; +``` + +2. Modify / add `getStaticPaths` to use the `productSitemapFetcher`: +```typescript +export const getStaticPaths: GetStaticPaths = async (context) => { + + if (process.env.NODE_ENV !== 'development') { + // Note: Next.js runs export in production mode + const paths = await productSitemapFetcher.fetch(context); + + return { + paths, + fallback: process.env.EXPORT_MODE ? false : 'blocking', + }; + } + + return { + paths: [], + fallback: 'blocking', + }; + }; +``` + + + diff --git a/docs/data/routes/docs/nextjs/data-fetching/data-services/en.md b/docs/data/routes/docs/nextjs/data-fetching/data-services/en.md index fd858d9e17..eebb5db863 100644 --- a/docs/data/routes/docs/nextjs/data-fetching/data-services/en.md +++ b/docs/data/routes/docs/nextjs/data-fetching/data-services/en.md @@ -6,23 +6,25 @@ title: Data services used by Next.js with JSS # Data Services Used by Next.js with JSS -JSS Next.js applications support both forms of pre-rendering provided by Next.js: +A Next.js-based JSS applications support both forms of pre-rendering provided by Next.js: * Static Site Generation (SSG) * Server-side Rendering (SSR). Next.js uses different data fetching strategies for each pre-rendering form. +> See the Next.js documentation on [Data Fetching](https://nextjs.org/docs/basic-features/data-fetching) for more information about Next.js data fetching functions, and the `context` argument. + ## JSS Next.js data fetching -The JSS Next.js sample application includes usage examples for both data fetching strategies available in Next.js, as follows: +The Next.js-based JSS sample application includes usage examples for both data fetching strategies available in Next.js, as follows: -* `src/pages/[[path]].tsx` implements `GetStaticPaths` and `GetStaticProps` (SSG). -* `src/page_examples/[[path]].SSR.tsx` implements `GetServerSideProps` (SSR). +* [`src/pages/[[..path]].tsx`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/pages/%5B%5B%2E%2E%2Epath%5D%5D.tsx) implements `GetStaticPaths` and `GetStaticProps` (SSG). +* [`src/pages/[[..path]].SSR.tsx`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/pages/%5B%5B%2E%2E%2Epath%5D%5D.SSR.tsx) implements `GetServerSideProps` (SSR). -> See the Next.js documentation on [Data Fetching](https://nextjs.org/docs/basic-features/data-fetching) for more information about Next.js data fetching functions, and the `context` argument. +> You can choose the initial pre-rendering form for `[[..path]].tsx` during the application creation step with the optional `prerender` parameter. Consult the [JSS CLI reference](/docs/fundamentals/cli) for details about `jss create`. -In the preceding examples, the implementations of `GetStaticProps` and `GetServerSideProps` leverage the `SitecorePagePropsFactory`. See the `SitecorePagePropsFactory` definition in [`src/lib/page-props-factory.ts`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/lib/page-props-factory.ts). +In the preceding examples, the implementations of `GetStaticProps` and `GetServerSideProps` leverage the `SitecorePagePropsFactory`. See the `SitecorePagePropsFactory` definition in [`src/lib/page-props-factory.ts`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/lib/page-props-factory.ts). The factory exposes the method `create(context: GetServerSidePropsContext | GetStaticPropsContext)` that is responsible for fetching all data needed to render the page (the page `props`), depending on the `context` in which it is used. @@ -42,11 +44,13 @@ export type SitecorePageProps = { ## Page `props` -To prepare the page `props`, the `SitecorePagePropsFactory` uses the [Layout Service](/docs/fundamentals/services/layout-service).and the [Dictionary Service](/docs/fundamentals/services/dictionary-service). +To prepare the page `props`, the `SitecorePagePropsFactory` uses the [Layout Service API](/docs/fundamentals/services/layout/overview) and the [Dictionary Service API](/docs/fundamentals/services/dictionary/overview). You may use either the REST-based or GraphQL-based dictionary and layout services depending on requirements. -> If you need additional data for every page, you should fetch it inside the `SitecorePagePropsFactory` and return it together with the other properties. +> You can choose the initial dictionary and layout data fetch method during the application creation step with the optional `fetchWith` parameter. Consult the [JSS CLI reference](/docs/fundamentals/cli) for details about `jss create`. -> We are currently using standard REST-based dictionary and layout services. For Sitecore Experience Edge, we will soon provide GraphQL-based implementations. +> You can [switch the fetch method](/docs/nextjs/data-fetching/switching-fetch-method) after project creation. + +> If you need additional data for every page, you should fetch it inside the `SitecorePagePropsFactory` and return it together with the other properties. ### locale @@ -54,11 +58,13 @@ The factory retrieves the `context` locale as configured in the `i18n` entry of ### layoutData -The `layoutData` prop stores `LayoutServiceData` from the Sitecore Layout Service provided by a `RestLayoutService` instance. The `RestLayoutServices` fetches `LayoutServiceData` using the Sitecore Layout Service REST API using Axios as the default data fetcher. In SSR mode, it will set up the required request and response `headers` using the attributes `context.req` and `context.res` to provide the ability to use [Sitecore Tracking](/docs/fundamentals/services/tracking#jss-tracking). +The `layoutData` prop stores `LayoutServiceData` from either the Sitecore Layout Service REST API (`RestLayoutService`) or the Sitecore GraphQL Edge schema (`GraphQLLayoutService`). See [Layout Service API reference](/docs/fundamentals/services/layout/overview) for more information. + +In SSR context, it will send the `context.req` and `context.res` to provide the ability to use [Sitecore Tracking & Analytics](/docs/nextjs/tracking-and-analytics/overview). ### dictionary -The `dictionary` prop contains `DictionaryPhrases` from the Sitecore Dictionary Service. A `RestDictionaryService` instance fetches dictionary data for the given language using the Sitecore Dictionary Service REST API. The `RestDictionaryService` uses Axios as the default data fetcher. By default, `caching` is enabled, and the `cacheTimeout` is 60 sec. You can disable/enable caching using the `cacheEnabled` property, and you can customize cache timeout using the `cacheTimeout` property. +The `dictionary` prop contains `DictionaryPhrases` from either the Sitecore Dictionary Service REST API (`RestDictionaryService`) or the Sitecore GraphQL Edge schema (`GraphQLDictionaryService`). See [Dictionary Service API reference](/docs/fundamentals/services/dictionary/overview) for more information. ### componentProps @@ -72,4 +78,4 @@ If the Layout Service returns a `404` status for our page route, it will update ## Experience Editor (Next.js Preview Context) -While working in the Experience Editor, the sample Next.js application is in [preview](https://nextjs.org/docs/advanced-features/preview-mode) mode. The `SitecorePagePropsFactory` uses the `editingDataService`. The service uses `layoutData`, `dictionary`, and `language` data sent with the editing request in `context.previewData`. +While working in the Experience Editor, the sample Next.js application is in [preview mode](https://nextjs.org/docs/advanced-features/preview-mode). In this case the `SitecorePagePropsFactory` uses the `editingDataService` to retrieve `layoutData`, `dictionary`, and `language` data sent with the editing request. See [Experience Editor Integration Architecture](/docs/nextjs/experience-editor/architecture) for more information. \ No newline at end of file diff --git a/docs/data/routes/docs/nextjs/data-fetching/getStaticPaths/en.md b/docs/data/routes/docs/nextjs/data-fetching/getStaticPaths/en.md index 5667fb775f..83e48f3245 100644 --- a/docs/data/routes/docs/nextjs/data-fetching/getStaticPaths/en.md +++ b/docs/data/routes/docs/nextjs/data-fetching/getStaticPaths/en.md @@ -1,120 +1,22 @@ --- name: getStaticPaths routeTemplate: ./data/component-templates/article.yml -title: getStaticPaths and the Sitemap Service +title: getStaticPaths --- -# getStaticPaths and the Sitemap Service +# getStaticPaths +Our Next.js sample application comes out of the box with a single [dynamic route](https://nextjs.org/docs/routing/dynamic-routes) `src/pages/[[...path]].tsx` - meaning the application does not know which page this is unless we tell it. To do so in a Next.js application, you use [getStaticPaths](https://nextjs.org/docs/basic-features/data-fetching#getstaticpaths-static-generation). +If you chose to use static generation when creating your Next.js application, the dynamic, catch-all route `src/pages/[[...path]].tsx` implements and exports the `getStaticPaths` function. -Next.js provides the ability to generate pages with dynamic routes. +> Before using `getStaticPaths` read more about [the `fallback` key](https://nextjs.org/docs/basic-features/data-fetching#the-fallback-key-required). -If a page has [dynamic routes](https://nextjs.org/docs/routing/dynamic-routes) and uses [getStaticProps](https://nextjs.org/docs/basic-features/data-fetching#getstaticprops-static-generation), you can define a list of paths that you want pre-render to HTML at build time. +`getStaticPaths` identifies which page/route to fetch data for with [getStaticProps](https://nextjs.org/docs/basic-features/data-fetching#getstaticprops-static-generation) and pre-render based on the returned data. -Before using [getStaticPaths](https://nextjs.org/docs/basic-features/data-fetching#getstaticpaths-static-generation) read more about [the `fallback` key](https://nextjs.org/docs/basic-features/data-fetching#the-fallback-key-required). +The function leverages a `SitemapFetcher` instance that gathers the list of pages as follows: -## getStaticPaths +* In `development` mode, the `sitemapFetcher`, through an instance of `DisconnectedSitemapService`, generates the list of pages using a `ManifestInstance`. The sample application uses `sitecore/manifest/sitecore-import.json`. You can generate by running `jss manifest` or `jss start:disconnected-proxy`. `DisconnectedSitemapService` will go through the manifest routes and generate all paths for pre-rendering. You will not have pre-rendered pages because `getStaticPaths` runs on [every request](https://nextjs.org/docs/basic-features/data-fetching#runs-on-every-request-in-development-1). -Our Next.js sample provides a simple way to handle `getStaticPaths` in different modes. +* In `production` mode, `sitemapFetcher` uses an instance of the [`GraphQLSitemapService`](/docs/nextjs/services/graphql-sitemap-service) to fetch the paths for pre-rendering. -See the `src/pages/[[...path]].tsx` file contains the exported `getStaticPaths` function. - -* In `development` mode, you will not have pre-rendered pages because`getStaticPaths` runs on [every request](https://nextjs.org/docs/basic-features/data-fetching#runs-on-every-request-in-development-1). -* In `production` mode, `getStaticPaths` will use `sitemapFetcher` to fetch the paths for pre-rendering. See the `sitemapFetcher` implementation in `src/lib/sitemap-fetcher.ts`. - -## GraphQLSitemapService - -This service generates the `sitemap` using the `config.graphqlEndpoint` endpoint. - -It exposes `fetchSSGSitemap` and `fetchExportSitemap`. - -* For static export, `fetchExportSitemap`. As static export doesn't support multilingual apps, this function accepts one `language` and will only run GraphQL queries for that language. - -* In SSG mode, use `fetchSSGSitemap`. This function accepts an array of supported `languages`. It will include the `locale` property because the sample application enables i18n by default. It will run GraphQL query for each language. - -You can customize the default search query used to fetch items and generate the sitemap. - -The default search query is: - -```graphql -query { - search( - where: { - AND:[ - { - name:"_path", - value:"${rootItemId.toLowerCase()}" # provided root item id - }, - { - name:"_language", - value:"${locale}" # provided language - }, - { - name:"_hasLayout", - value :"true" - } - ] - } - ) { - results { - url { - path - } - } - } -} -``` - - - -It is not always desirable to pre-render all the pages. If you have many pages and you wish to customize the search query, use the `formatSearchQuery` argument. Map `language` and `rootItemId` on the new search query. - -The following example shows a query that retrieves only the first 10 items: - -```typescript -const formatSearchQuery = (rootItemId: string, locale: string) => -`search( - first: 10, - where: { - AND:[ - { - name:"_path", - value:"${rootItemId}" - }, - { - name:"_language", - value:"${locale}" - }, - { - name:"_hasLayout", - value :"true" - } - ] - } -)`; - -this._graphqlSitemapService.fetchSSGSitemap( - context?.locales || [], - this.GRAPHQL_ROOT_ITEM_PATH, - formatSearchQuery -); -``` -When you execute `fetchSSGSitemap`/`fetchExportSitemap` using the `GraphQLSitemapService`, the service executes the following steps: - -1. Fetch the `rootItemId` using the provided `rootItemPath`. -2. Fetch items using `rootItemId` and the provided `locale`. -3. Merge loaded items in the correct format for SSG or static HTML export. - -> Remember to update the value of the `GRAPHQL_ROOT_ITEM_PATH` if you changed the location of your root item. - -### Static HTML Export - -If you use [Static HTML Export](/docs/nextjs/deploying-to-production/export) you should define the environment variable `EXPORT_MODE=true`. - -#### Disconnected mode - -If you run `export` in `disconnected` mode, `sitemapFetcher` will use the `DisconnectedSitemapService` which accepts a `ManifestInstance`. The sample application uses `sitecore/manifest/sitecore-import.json`. You can generate by running `jss manifest` or `jss start:disconnected-proxy`. `DisconnectedSitemapService` will go through the manifest routes and generate all paths for pre-rendering. - -#### Connected mode - -If you run `export` in `connected` mode, `sitemapFetcher` will use the `GraphQLSitemapService`. +> You can inspect the `sitemapFetcher` implementation in `src/lib/sitemap-fetcher.ts`. diff --git a/docs/data/routes/docs/nextjs/data-fetching/switching-fetch-method/en.md b/docs/data/routes/docs/nextjs/data-fetching/switching-fetch-method/en.md new file mode 100644 index 0000000000..1f190408b4 --- /dev/null +++ b/docs/data/routes/docs/nextjs/data-fetching/switching-fetch-method/en.md @@ -0,0 +1,27 @@ +--- +name: switching-fetch-method +routeTemplate: ./data/component-templates/article.yml +title: Switching between REST and GraphQL +--- +# Walkthrough: Switching between REST and GraphQL for Layout and Dictionary data + +The Next.js sample application can use either the Sitecore Layout Service REST API or the Sitecore GraphQL Edge schema to fetch layout and dictionary data. + +> See [Layout Service API reference](/docs/fundamentals/services/layout/overview) and [Dictionary Service API reference](/docs/fundamentals/services/dictionary/overview) for more information. + +You can change the data-fetching method after project creation. + +## From REST to GraphQL + +To switch the Next.js sample application from REST to GraphQL: + +1. Move or delete `\lib\dictionary-service-factory.ts` and `\lib\layout-service-factory.ts`. +2. Download [`dictionary-service-factory.ts`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/lib/dictionary-service-factory.ts) and [`layout-service-factory.ts`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/lib/layout-service-factory.ts) to `\lib\`. + +## From GraphQL to REST + +To switch the Next.js sample application from GraphQL to REST: + +1. Move or delete `\lib\dictionary-service-factory.ts` and `\lib\layout-service-factory.ts`. +2. Download [`dictionary-service-factory.rest.ts`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/lib/dictionary-service-factory.rest.ts) and [`layout-service-factory.rest.ts`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/lib/layout-service-factory.rest.ts) to `\lib\`. +3. Rename as `dictionary-service-factory.ts` and `layout-service-factory.ts` respectively. diff --git a/docs/data/routes/docs/nextjs/deploying-to-production/export/en.md b/docs/data/routes/docs/nextjs/deploying-to-production/export/en.md index 63079f30c8..0eaece6126 100644 --- a/docs/data/routes/docs/nextjs/deploying-to-production/export/en.md +++ b/docs/data/routes/docs/nextjs/deploying-to-production/export/en.md @@ -9,6 +9,7 @@ You can serve your JSS Next.js application as static HTML files using any static > Static HTML export does not support: > +> * Server-side Rendered (SSR) pages (using `getServerSideProps`). > * Internationalized routing. > * Request rewrites. > * Visitor identification. @@ -26,13 +27,9 @@ To export your JSS Next.js application as static HTML files, you must: Before exporting your application, you must: -1. Remove internationalization configuration: - * In `next.config.js`, delete the `i18n` configuration. - * In `package.json`, delete any language configuration under `config.language`. +1. In `next.config.js`, remove `rewrites` and `i18n`. -2. In `next.config.js`, remove `rewrites`. - -3. In `JssNextWeb.config`: +2. In `JssNextWeb.config`: * Include the Sitecore server URL as part of the media requests: @@ -58,9 +55,11 @@ Before exporting your application, you must: * Run `jss deploy config`. -4. Remove usage of `` component in `src/components/Layout.tsx`. +3. Remove usage of `` component in `src/components/Layout.tsx`. + +4. In `.env`, define the `PUBLIC_URL` variable. -5. In `.env`, define the `PUBLIC_URL` variable. +5. In `.env`, add `EXPORT_MODE=true`. 6. In `package.json`, add the following scripts: diff --git a/docs/data/routes/docs/nextjs/deploying-to-production/server-components/en.md b/docs/data/routes/docs/nextjs/deploying-to-production/server-components/en.md index 7877e77a2a..101a1d70b6 100644 --- a/docs/data/routes/docs/nextjs/deploying-to-production/server-components/en.md +++ b/docs/data/routes/docs/nextjs/deploying-to-production/server-components/en.md @@ -26,4 +26,4 @@ Install using Headless Services WDP packages. ## Sitecore Containers Layer the Sitecore Headless Services module onto your container images in your Dockerfiles. * [Walkthrough: Add Sitecore modules to custom images](https://doc.sitecore.com/developers/101/developer-tools/en/add-sitecore-modules.html) -* [Sitecore container module reference for Headless Services](https://doc.sitecore.com/developers/101/developer-tools/en/sitecore-module-reference.html#idp15853) \ No newline at end of file +* [Sitecore container module reference for Headless Services](https://doc.sitecore.com/developers/101/developer-tools/en/sitecore-module-reference.html#javascript-services--jss---sitecore-headless-services_body) \ No newline at end of file diff --git a/docs/data/routes/docs/nextjs/deploying-to-production/vercel/en.md b/docs/data/routes/docs/nextjs/deploying-to-production/vercel/en.md index ac2a89b5f6..6a1979350b 100644 --- a/docs/data/routes/docs/nextjs/deploying-to-production/vercel/en.md +++ b/docs/data/routes/docs/nextjs/deploying-to-production/vercel/en.md @@ -5,7 +5,6 @@ title: Deploying to Vercel --- # Walkthrough: Deploying to Vercel - Vercel is an all-in-one platform with Global CDNs supporting deployment and delivery of static & [Jamstack](https://jamstack.org/) apps. Vercel has first-class support for Next.js. This guide will demonstrate deploying the Next.js sample app that's generated by the `jss create` command to Vercel. Assuming you already have the sample app set up and connected to a Sitecore instance, complete the following steps to deploy the sample app to production: @@ -13,22 +12,54 @@ This guide will demonstrate deploying the Next.js sample app that's generated by 1. Execute the steps provided in the Next.js guide for [Getting Started](https://nextjs.org/docs/deployment#getting-started) with deployment. 2. Add [environment variables](https://nextjs.org/docs/basic-features/environment-variables#environment-variables-on-vercel) to Vercel or modify `.env` file. We recommend to use environment variables in Vercel: * `PUBLIC_URL` - your Vercel deployment URL. - * `SITECORE_API_KEY` - your Sitecore API key is needed to build the app. - * `SITECORE_API_HOST` - your Sitecore API hostname. + * `SITECORE_API_KEY` - your Sitecore API key. For Sitecore XM, the `SITECORE_API_KEY` will be your Sitecore SSC API key. For Sitecore Experience Edge, this will be the [API key provisioned here](https://doc.sitecore.com/en/developers/101/developer-tools/test-your-queries.html#UUID-779f6288-57a9-7a09-aa44-3c130d3cad33_procedure-idm4588913365819232428308238427). + * `SITECORE_API_HOST` - your Sitecore API hostname. The `SITECORE_API_HOST` is not required for Sitecore Experience Edge. * `JSS_EDITING_SECRET` - your secret token. The `JSS_EDITING_SECRET` is optional for deployments but necessary if you want to use the Experience Editor with your Next.js Vercel deployment. Read about [connecting your Next.js application to the Experience Editor](/docs/nextjs/experience-editor/walkthrough). + * `GRAPH_QL_ENDPOINT` - your GraphQL endpoint. The `GRAPH_QL_ENDPOINT` is required for Sitecore Experience Edge. For Sitecore XM, this is typically optional. By default, the endpoint is calculated using the resolved Sitecore API hostname + the `graphQLEndpointPath` defined in your `package.json`. 3. Push the changes to your Git provider. -## `publish:end` webhook invocation +## Video demonstration + +

+ Watch the following video to see the deployment process and get some tips. + +

+ +## Sitecore XM `publish:end` webhook invocation -Using the `publish:end` webhook, you can automatically trigger static site generation, cache clearing, and other automated activities with webhook support. +Using the Sitecore XM `publish:end` webhook, you can automatically trigger static site generation, cache clearing, and other automated activities with webhook support. -To enable the `Publish:end` hook, you must: +To enable the `Publish:end` hook: 1. [Create a deploy hook](https://vercel.com/docs/more/deploy-hooks#creating-a-deploy-hook) in Vercel. 2. Create webhook config based on example `/App_Config/Sitecore/JavaScriptServices/Sitecore.JavaScriptServices.AppServices.PublishingWebHook.config.example`, and include it in your solution: * `url` - Required. The URL of the hook to be invoked. - * `method` - Optional. The HTTP method for invoking webhook. Possible values are `POST` or `GET`. The default method is `POST`. + * `method` - Optional. The HTTP method for invoking webhook. Possible values are `POST` or `GET`. The default method is `POST`. * `site` - Optional. The sites which should trigger the webhook when published. By default, Sitecore will trigger the webhook for every published item. If you provide the site parameter, the webhook will be invoked if the published item root is an ancestor, descendant, or equal to the configured site's root item. 3. Deploy webhook config to your Sitecore instance. 4. Publish items. 5. On Vercel, check that the end of the publishing process triggered a new deployment. + +## Webhooks on Edge + +Instead of triggering a webhook when the publishing process finalizes in Sitecore, if you are using Sitecore Experience Edge, you can trigger webhooks when your data reaches the Edge Delivery Platform. + +You can register, update, remove or list webhooks with the help of the Experience Edge [Admin API](https://doc.sitecore.com/developers/101/developer-tools/en/admin-api.html). + +> Before using the Admin API for any operations, make sure to [obtain an authentication token](https://doc.sitecore.com/developers/101/developer-tools/en/request-a-jwt-for-experience-edge-xm-using-oauth.html). + +To trigger a new deployment on Vercel when your data reaches the Edge Delivery Platform: + +1. [Create a deploy hook](https://vercel.com/docs/more/deploy-hooks#creating-a-deploy-hook) in Vercel and copy the URL of the webhook. +2. Send a `POST` request to the Admin API webhook endpoint `https://edge.sitecorecloud.io/api/admin/v1/webhook` as follows: +```json +{ + "label": "My new webhook", + "createdBy": "SOME_USER_ID", + "uri": "YOUR_VERCEL_WEBHOOK_URL", + "method": "GET" +} +``` +3. To verify the request completed successfully, check that you received a `201 Created` response status code. +4. Make some changes in Sitecore and publish. +5. When the Experience Edge finishes processing the new data, the publishing process is complete and Vercel should start a new deployment. diff --git a/docs/data/routes/docs/nextjs/experience-edge/api/en.md b/docs/data/routes/docs/nextjs/experience-edge/api/en.md new file mode 100644 index 0000000000..d793fc7ea6 --- /dev/null +++ b/docs/data/routes/docs/nextjs/experience-edge/api/en.md @@ -0,0 +1,19 @@ +--- +name: edge-api +routeTemplate: ./data/component-templates/article.yml +title: Unified GraphQL Schema +--- +# Unified GraphQL Schema + +Unified = serves data from multiple authoring sources through a single endpoint. + +## Queries + +### search +Need to specify operator required for the multi-value fields like _path and _templates. + +Ex. [Dictionary search query](https://github.com/Sitecore/jss/blob/6a2f9497d9fa377ae4ce489d1e76bb341f385751/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L11) + +Even though _hasLayout should always be "true" in this query, using a variable is necessary for compatibility with Edge. + +TODO: Will there be a KB article that describes this known issue? diff --git a/docs/data/routes/docs/nextjs/getting-started-nextjs/how-is-nextjs-different/en.md b/docs/data/routes/docs/nextjs/getting-started-nextjs/how-is-nextjs-different/en.md index 46d57fe6f0..b76df4ffe7 100644 --- a/docs/data/routes/docs/nextjs/getting-started-nextjs/how-is-nextjs-different/en.md +++ b/docs/data/routes/docs/nextjs/getting-started-nextjs/how-is-nextjs-different/en.md @@ -8,11 +8,11 @@ The Next.js SDK for Sitecore has some key differences from other Sitecore JavaSc ## Architecture and Deployment * Next.js provides built-in options for build time and runtime static site generation (SSG). - * Out of the box, the Next.js SDK does not support Sitecore tracking or personalization with SSG. + * Out of the box, the Next.js SDK does not support Sitecore tracking or personalization with SSG or Sitecore GraphQL Edge. * The _Headless SSR Proxy_ is not required for [production deployment](/docs/nextjs/deploying-to-production/deployment-options). * Next.js has built-in pre-rendering. * Next.js has [built-in rewrite / proxying support](https://nextjs.org/docs/api-reference/next.config.js/rewrites#rewriting-to-an-external-url) - * Sitecore tracking and analytics are supported through [header passing](/docs/nextjs/tracking-and-analytics/overview) (SSR-only). + * Sitecore tracking and analytics are supported through [header passing](/docs/nextjs/tracking-and-analytics/overview) (SSR with Sitecore Layout Service REST API only). * [Experience Editor integration](/docs/nextjs/experience-editor/walkthrough) does not require a separate deployment, and only supports the [HTTP Rendering Engine](/docs/fundamentals/services/view-engine#http-rendering-engine). * There is no requirement to install node.js on your Sitecore Content Management role. * There is never a need to deploy your application to the Sitecore Content Management role. @@ -21,10 +21,11 @@ The Next.js SDK for Sitecore has some key differences from other Sitecore JavaSc ## Development * Overall, less boilerplate code than other Sitecore JavaScript SDKs. * Development and production runtime parity, including server-side rendering during development. -* The Next.js Styleguide sample has a simplified component filesystem structure. -* The Next.js Styleguide sample defaults to TypeScript, which is supported out of the box by Next.js. -* The Next.js Styleguide sample includes code generation for GraphQL schema types. -* A [container-based starter template](/docs/nextjs/getting-started-nextjs/walkthrough-dotnetnew/) is available for Next.js, which is optimized for a [Sitecore-first workflow](/docs/fundamentals/dev-workflows/sitecore-first/). +* The Next.js Styleguide sample: + - has a simplified component filesystem structure. + - defaults to TypeScript, which is supported out of the box by Next.js. + - includes code generation for GraphQL schema types. +* A [container-based template](/docs/nextjs/getting-started-nextjs/walkthrough-dotnetnew/) is available for Next.js. The template is optimized for a [Sitecore-first workflow](/docs/fundamentals/dev-workflows/sitecore-first/). ## In Detail * You should not use `jss deploy app` or `jss deploy files` when working with Next.js. diff --git a/docs/data/routes/docs/nextjs/getting-started-nextjs/walkthrough-dotnetnew/en.md b/docs/data/routes/docs/nextjs/getting-started-nextjs/walkthrough-dotnetnew/en.md index a81b596b69..70323267e4 100644 --- a/docs/data/routes/docs/nextjs/getting-started-nextjs/walkthrough-dotnetnew/en.md +++ b/docs/data/routes/docs/nextjs/getting-started-nextjs/walkthrough-dotnetnew/en.md @@ -1,14 +1,16 @@ --- name: walkthrough-dotnetnew routeTemplate: ./data/component-templates/article.yml -title: Walkthrough with `dotnet new` +title: Walkthrough with 'dotnet new' --- -# Walkthrough: Using the Sitecore Container Starter Template for JSS Next.js Projects +# Walkthrough: Using the Sitecore Container Template for JSS Next.js Projects -Sitecore provides a Getting Started template for Sitecore developers that want to try out Sitecore JSS with [Sitecore Containers](https://doc.sitecore.com/developers/101/developer-tools/en/containers-in-sitecore-development.html), the [Sitecore Next.js SDK](https://jss.sitecore.com/), and [Sitecore Content Serialization](https://doc.sitecore.com/developers/101/developer-tools/en/sitecore-content-serialization.html). +Sitecore provides a Getting Started template for Sitecore developers that want to try out Sitecore JSS with [Sitecore Containers](https://doc.sitecore.com/developers/101/developer-tools/en/containers-in-sitecore-development.html), the [Sitecore Next.js SDK](/docs/nextjs/getting-started-nextjs/why-nextjs), and [Sitecore Content Serialization](https://doc.sitecore.com/developers/101/developer-tools/en/sitecore-content-serialization.html). For simplicity, this solution does not implement Sitecore Helix conventions for solution architecture. As you begin building your Sitecore solution, you should review [Sitecore Helix](https://helix.sitecore.net/) and the [Sitecore Helix Examples](https://sitecore.github.io/Helix.Examples/) for guidance on implementing a modular solution architecture. +> This template configures a development environment for the current release Sitecore XP and JSS. To find out which version of JSS to use with your licensed Sitecore XP version, consult [the compatibility table](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0541788). + The template includes: * A `docker-compose` environment for a Sitecore XP0 topology with a Next.js rendering host. @@ -53,7 +55,7 @@ See the [Sitecore Containers](https://doc.sitecore.com/developers/101/developer- ### Install the template -Before you can create a solution, you must download and install the .NET starter template in your file system. +Before you can create a solution, you must download and install the Next.js .NET template in your file system. To install the template: @@ -113,6 +115,12 @@ To create the `MyProject` solution: dotnet new sitecore.nextjs.gettingstarted -n MyProject ``` + > You can customize the parameters passed into the `jss create` command by this template via the `--JSSCreateParams` parameter, e.g. + > ``` + > dotnet new sitecore.nextjs.gettingstarted -n MyProject --JSSCreateParams "--fetchWith GraphQL --prerender SSR" + > ``` + > For more information on `jss create` parameters see [the JSS CLI reference](/docs/fundamentals/cli). + 5. Go to the `MyProject` folder. 6. To prepare the the Sitecore container environment, use the provided `init.ps1` script: diff --git a/docs/data/routes/docs/nextjs/getting-started-nextjs/walkthrough-jsscreate/en.md b/docs/data/routes/docs/nextjs/getting-started-nextjs/walkthrough-jsscreate/en.md index 0a1b8bfa53..ee0106d8fa 100644 --- a/docs/data/routes/docs/nextjs/getting-started-nextjs/walkthrough-jsscreate/en.md +++ b/docs/data/routes/docs/nextjs/getting-started-nextjs/walkthrough-jsscreate/en.md @@ -13,7 +13,7 @@ We recommend this approach for Sitecore developers who use the [code-first devel ## TL;DR -To quickly scaffold a JSS Next.js application, run the following commands in a terminal: +To quickly scaffold a JSS Next.js application with default configuration, run the following commands in a terminal: ``` npm install -g @sitecore-jss/sitecore-jss-cli @@ -22,6 +22,10 @@ cd my-first-jss-app jss start ``` +> To ensure that your new JSS application is compatible with your licensed Sitecore XP version, consult the [compatibility table](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0541788). +> +> To create an application using a previous version of JSS, see an example in the [JSS CLI reference](/docs/fundamentals/cli). + ## Create your application To create a JSS application, you must: @@ -34,15 +38,23 @@ To create a JSS application, you must: npm install -g @sitecore-jss/sitecore-jss-cli ``` - > To verify the successful installation of the JSS CLI and to see the list of commands availably globally, run `jss --help`. + > To verify the successful installation of the JSS CLI and to see the list of commands availability globally, run `jss --help`. 3. Run: ``` - jss create my-first-jss-app nextjs + jss create my-first-jss-app nextjs [--fetchWith {REST|GraphQL}] [--prerender {SSG|SSR}] ``` The command will create the JSS Next.js application and install the required packages. + + > For more information on `jss create` see [the JSS CLI reference](/docs/fundamentals/cli). + + + + > To ensure that your new JSS application is compatible with your licensed Sitecore XP version, consult the [compatibility table](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0541788). + > + > To create an application using a previous version of JSS, see an example in the [JSS CLI reference](/docs/fundamentals/cli). ## Run your application @@ -60,10 +72,14 @@ Deploying your code-first artifacts and content to Sitecore, WYSIWYG editing, an Sitecore requires Windows, but the instance can be on a virtual machine or a remote server. -To connect your application to Sitecore, you must: +To connect your application to Sitecore: 1. [Setup JSS Server Components](/docs/client-frameworks/getting-started/jss-server-install). -2. Run `jss deploy items`. - - - +2. Configure the Sitecore server to receive the JSS app: + 1. [Obtain a Sitecore API key](/docs/client-frameworks/getting-started/app-deployment#step-2-api-key). + 2. [Verify the API key is working](/docs/client-frameworks/getting-started/app-deployment#step-3-verification). +3. Deploy the application to Sitecore: + 1. [Setup connection information](/docs/client-frameworks/getting-started/app-deployment#step-1-setup-connection-information). + 2. [Deploy the configuration](/docs/client-frameworks/getting-started/app-deployment#step-2-config-deployment). + 3. Run `jss deploy items --includeContent --includeDictionary`. +4. [Connect to the Experience Editor](/docs/nextjs/experience-editor/walkthrough). diff --git a/docs/data/routes/docs/nextjs/getting-started-nextjs/why-nextjs/en.md b/docs/data/routes/docs/nextjs/getting-started-nextjs/why-nextjs/en.md index 225a87da74..ec5db17db1 100644 --- a/docs/data/routes/docs/nextjs/getting-started-nextjs/why-nextjs/en.md +++ b/docs/data/routes/docs/nextjs/getting-started-nextjs/why-nextjs/en.md @@ -37,9 +37,9 @@ The following video highlights the benefits of Next.js. - Next.js client-side routing support for Sitecore link and rich text fields. - Internationalization support via Sitecore language versions and Next.js internationalized routing. - Component-level data fetching for Sitecore-driven components. -- Sitecore analytics and personalization support (SSR-only). +- Sitecore analytics and personalization support (SSR with Sitecore Layout Service REST API only). - Support for JSS code-first workflow and mock Sitecore services. -- A sample/starter TypeScript-enabled implementation template which demonstrates common use cases. -- Containerized starter template for Windows-based developers. +- A TypeScript-enabled app sample demonstrating common use cases. +- Containerized template for Windows-based developers. - Other great built-in Next.js features like component-level CSS, code splitting, fast refresh, and more. - [Vercel](https://vercel.com/) deployment compatible. \ No newline at end of file diff --git a/docs/data/routes/docs/nextjs/getting-started-nextjs/workflow-options/en.md b/docs/data/routes/docs/nextjs/getting-started-nextjs/workflow-options/en.md index 34038abdaa..60d791a5c6 100644 --- a/docs/data/routes/docs/nextjs/getting-started-nextjs/workflow-options/en.md +++ b/docs/data/routes/docs/nextjs/getting-started-nextjs/workflow-options/en.md @@ -15,7 +15,7 @@ The resulting solution is optimized for a [Sitecore-first developer workflow](/d > This path requires a machine with the Windows operating system. -To create a solution from the Getting Started template, follow the [Walkthrough: Using the Sitecore Container Starter Template for JSS Next.js Projects](/docs/nextjs/getting-started-nextjs/walkthrough-dotnetnew). +To create a solution from the Getting Started template, follow the [Walkthrough: Using the Sitecore Container Template for JSS Next.js Projects](/docs/nextjs/getting-started-nextjs/walkthrough-dotnetnew). ## Front-end development only @@ -23,5 +23,4 @@ Get started with JSS front-end development on any operating system supported by > With this path, you only get a JSS application based on Next.js for a [code-first developer workflow](/docs/fundamentals/dev-workflows/code-first). You will need to perform additional steps to connect to a Sitecore instance. -Follow the [Walkthrough: Creating a JSS Next.js starter application](/docs/nextjs/getting-started-nextjs/walkthrough-jsscreate) to set up the starter application for front-end development. - +Follow the [Walkthrough: Creating a JSS Next.js application](/docs/nextjs/getting-started-nextjs/walkthrough-jsscreate) to set up the sample application for front-end development. diff --git a/docs/data/routes/docs/nextjs/graphql/introspection/en.md b/docs/data/routes/docs/nextjs/graphql/introspection/en.md index f9ca841880..10f7de979e 100644 --- a/docs/data/routes/docs/nextjs/graphql/introspection/en.md +++ b/docs/data/routes/docs/nextjs/graphql/introspection/en.md @@ -13,13 +13,9 @@ The file `.graphql-let.yml` in the sample app root contains configuration for `g > Read more about [graphql-let configuration](https://github.com/piglovesyou/graphql-let#configuration-is-compatible-with-codegenyml-except). -When working with GraphQL in the sample Next.js application, you should be aware of two concepts: -* **Introspection data**, which describes the queries supported by the GraphQL schema. Read more [here](https://graphql.org/learn/introspection). `graphq-let` uses this introspection data to understand which types it should use during code generation. -* **Fragment data**, which is basic information about the shape of the GraphQL schema. Apollo Client supports caching GraphQL responses, which can greatly reduce network traffic needs. To work correctly with interfaces in GraphQL, the Apollo Client needs to know the information in this file. Read more [here](https://www.apollographql.com/docs/react/advanced/fragments.html#fragment-matcher). +When working with GraphQL in the sample Next.js application, you should be aware of the concept of **introspection data**, which describes the queries supported by the GraphQL schema. Read more [here](https://graphql.org/learn/introspection). `graphq-let` uses this introspection data to understand which types it should use during code generation. -After you build the application for the first time, you will find: -* `src/temp/GraphQLIntrospectionResult.json`, containing introspection data. -* `src/temp/GraphQLFragmentTypes.json`, containing fragment data. +After you build the application for the first time, you will find `src/temp/GraphQLIntrospectionResult.json`, containing introspection data. When you alter Sitecore templates related to the site, you should update the introspection data. In the root of your Next.js application, run: @@ -27,10 +23,6 @@ In the root of your Next.js application, run: ``` jss graphql:update ``` -This script will fetch fresh introspection data and fragment data from your defined GraphQL endpoint and update the two files. +This calls a script `scripts/fetch-graphql-introspection-data.ts` which will fetch fresh introspection data from your defined GraphQL endpoint and update the file. -The script `jss graphql:update` calls two other scripts: -* `scripts/fetch-graphql-introspection-data.ts` is responsible for fetching introspection data. -* `scripts/update-graphql-fragment-data.ts` is responsible for fetching fragment data. - -Both scripts use the `graphQLEndpoint` defined in `src/temp/config.js`, a file generated when you start your sample app for the first time. +The script uses the `graphQLEndpoint` and `sitecoreApiKey` defined in `src/temp/config.js`, a file generated when you start your sample app for the first time. diff --git a/docs/data/routes/docs/nextjs/graphql/sample-app/en.md b/docs/data/routes/docs/nextjs/graphql/sample-app/en.md index 72d5094367..fc4ef5cb4a 100644 --- a/docs/data/routes/docs/nextjs/graphql/sample-app/en.md +++ b/docs/data/routes/docs/nextjs/graphql/sample-app/en.md @@ -3,4 +3,79 @@ name: sample-app routeTemplate: ./data/component-templates/article.yml title: Sitecore GraphQL in the sample app --- -# Sitecore GraphQL in the sample app \ No newline at end of file +# Sitecore GraphQL in the sample app + +## Disconnected mode + +If you created the app using `jss create my-app nextjs --fetchWith GraphQL`, your services will use the Sitecore GraphQL endpoint. + +Sitecore GraphQL does not come with a disconnected mock service, so it can only operate with a Next.js app in Connected mode. The disconnected server emulates the REST services only. + +Therefore, your service factories must return a REST service if you need to work in disconnected mode. + +To return a REST service for disconnected development from your service factories, leverage the `JSS_MODE` environment variable, as follows: + +1. Edit `src/lib/layout-service-factory.ts`: + +```js +import { + LayoutService, + GraphQLLayoutService, + RestLayoutService, + JSS_MODE_DISCONNECTED, +} from '@sitecore-jss/sitecore-jss-nextjs'; +import config from 'temp/config'; + +export class LayoutServiceFactory { + create(): LayoutService { + // Switch to REST endpoint if we are in disconnected mode + if (process.env.JSS_MODE === JSS_MODE_DISCONNECTED) { + return new RestLayoutService({ + apiHost: `http://localhost:${process.env.PROXY_PORT || 3042}`, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, + }); + } + + return new GraphQLLayoutService({ + endpoint: config.graphQLEndpoint, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, + }); + } +} + +export const layoutServiceFactory = new LayoutServiceFactory(); +``` + +2. Edit `src/lib/dictionary-service-factory.ts`: +```js +import { + DictionaryService, + RestDictionaryService, + GraphQLDictionaryService, + JSS_MODE_DISCONNECTED, +} from '@sitecore-jss/sitecore-jss-nextjs'; +import config from 'temp/config'; + +export class DictionaryServiceFactory { + create(): DictionaryService { + // Switch to REST endpoint if we are in disconnected mode + if (process.env.JSS_MODE === JSS_MODE_DISCONNECTED) { + return new RestDictionaryService({ + apiHost: `http://localhost:${process.env.PROXY_PORT || 3042}`, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, + }); + } + + return new GraphQLDictionaryService({ + endpoint: config.graphQLEndpoint, + apiKey: config.sitecoreApiKey, + siteName: config.jssAppName, + }); + } +} + +export const dictionaryServiceFactory = new DictionaryServiceFactory(); +``` diff --git a/docs/data/routes/docs/nextjs/page-routing/jss-routes/en.md b/docs/data/routes/docs/nextjs/page-routing/jss-routes/en.md index c13c835e60..929774a26b 100644 --- a/docs/data/routes/docs/nextjs/page-routing/jss-routes/en.md +++ b/docs/data/routes/docs/nextjs/page-routing/jss-routes/en.md @@ -18,7 +18,7 @@ Here's a high-level overview of the routing process. In the diagram above, you can see how the Next.js route is applied to Sitecore JSS. * The `[[...path]].tsx` Next.js route will catch any path and pass this information along to `getStaticProps` or `getServerSideProps` on the `context` object (as a tokenized array). -* The page props factory uses the path information to construct a normalized Sitecore item path. It then makes a request to the JSS [Layout Service](/docs/fundamentals/services/layout-service) to fetch layout data for the item. +* The *Page Props Factory* uses the path information to construct a normalized Sitecore item path. It then makes a request to the [Sitecore Layout Service REST API or Sitecore GraphQL Edge schema](/docs/nextjs/data-fetching/data-services#page-props) to fetch layout data for the item. ## i18n Routing diff --git a/docs/data/routes/docs/nextjs/page-routing/switching-to-ssr/en.md b/docs/data/routes/docs/nextjs/page-routing/switching-to-ssr/en.md index 5543a081d5..8a3339545a 100644 --- a/docs/data/routes/docs/nextjs/page-routing/switching-to-ssr/en.md +++ b/docs/data/routes/docs/nextjs/page-routing/switching-to-ssr/en.md @@ -1,17 +1,30 @@ --- name: switching-to-ssr routeTemplate: ./data/component-templates/article.yml -title: Switching to SSR +title: Switching between SSG and SSR --- -# Walkthrough: Switching to Server-Side Rendering (SSR) +# Walkthrough: Switching between Static Site Generation (SSG) and Server-Side Rendering (SSR) -By default, the Next.js sample application uses a route optimized for Static Site Generation (SSG). However, we have also provided a working SSR route you can use: [`\pages_examples\[[..path]].SSR.tsx`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/pages_examples/%5B%5B%2E%2E%2Epath%5D%5D.SSR.tsx). +The Next.js sample application `[[..path]].tsx` route can be optimized for either Static Site Generation (SSG) or Server-Side Rendering (SSR). -This file may be used as a starter for SSR routes in Next.js hybrid (both SSR & SSG) applications or may be used to switch the Next.js sample application to full SSR. +You can choose the initial pre-rendering form on create with the optional `prerender` parameter. SSG is used by default if you omit the parameter. For example, [with `jss create`](/docs/nextjs/getting-started-nextjs/walkthrough-jsscreate): -> See [Next.js documentation](https://nextjs.org/docs/basic-features/pages#two-forms-of-pre-rendering) to learn more about SSG, SSR, and hybrid modes of pre-rendering. +``` +jss create my-first-jss-app nextjs --prerender {SSG|SSR} +``` -To switch the Next.js sample application to full SSR: +However, you may wish to switch the pre-rendering form after creation or reference both for Next.js hybrid (both SSR & SSG) applications. -1. Rename the `\pages\[[..path]].tsx` to `[[..path]].SSG.tsx` and move to `\pages_examples\` -2. Rename the `\pages_examples\[[..path]].SSR.tsx` to `\pages_examples\[[..path]].tsx` and move to `\pages\` \ No newline at end of file +> See [Next.js documentation](https://nextjs.org/docs/basic-features/pages#two-forms-of-pre-rendering) to learn more about SSG, SSR, and hybrid forms of pre-rendering. + +To switch the Next.js sample application from SSG to SSR: + +1. Move or delete `\pages\[[..path]].tsx` +2. Download [`[[..path]].SSR.tsx`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/pages/%5B%5B%2E%2E%2Epath%5D%5D.SSR.tsx) to `\pages\` and rename as `[[..path]].tsx` +3. Delete `\lib\sitemap-fetcher.ts` (optional) + +To switch the Next.js sample application from SSR to SSG: + +1. Move or delete `\pages\[[..path]].tsx` +2. Download [`[[..path]].tsx`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/pages/%5B%5B%2E%2E%2Epath%5D%5D.tsx) to `\pages\` +3. Download [`sitemap-fetcher.ts`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/lib/sitemap-fetcher.ts) to `\lib\` \ No newline at end of file diff --git a/docs/data/routes/docs/nextjs/services/graphql-sitemap-service/en.md b/docs/data/routes/docs/nextjs/services/graphql-sitemap-service/en.md new file mode 100644 index 0000000000..1c7a9c3a4f --- /dev/null +++ b/docs/data/routes/docs/nextjs/services/graphql-sitemap-service/en.md @@ -0,0 +1,40 @@ +--- +name: graphql-sitemap-service +routeTemplate: ./data/component-templates/article.yml +title: GraphQL Sitemap Service +--- + +# GraphQL Sitemap Service + +The [`GraphQLSitemapService`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss-nextjs/modules/services_graphql_sitemap_service.md) fetches the list of site pages using Sitecore's GraphQL API. We commonly use this service in conjuction with `getStaticPaths`. Next.js uses the list of pages to fetch data for Static Generation and Export functionality. See [getStaticPaths](/docs/nextjs/data-fetching/getStaticPaths). + +## Configuration + +In the sample application, in `/src/lib/sitemap-fetcher.ts` you can inspect and modify the default SitemapFetcher configuration. + +The service comes preconfigured with: +- an `endpoint` - from `temp/config.graphQLEndpoint`, +- an `apiKey` - from `temp/config.sitecoreApiKey`, +- a `siteName` - from `temp/config.jssAppName`. + +You also have the possibility to specify a `rootItemId`. The Sitemap Service needs a root item ID in order to fetch the list of pages for the current app. If `rootItemId` is not specified, the service will attempt to figure out the root item for the current JSS app using GraphQL and the app name. + +> PERFORMANCE TIP: We **strongly** recommend you to specify a `rootItemId` to avoid a additional GraphQL lookups. + +> WARNING: Not specifying the `rootItemId` for the GraphQL Sitemap Service instance can cause errors when using our Next.js SDK in conjuction with SXA integration. + +The service exposes [`fetchSSGSitemap`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss-nextjs/classes/services_graphql_sitemap_service.GraphQLSitemapService.md#fetchssgsitemap) and [`fetchExportSitemap`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss-nextjs/classes/services_graphql_sitemap_service.GraphQLSitemapService.md#fetchexportsitemap). + +* For static export, `fetchExportSitemap`. As static export doesn't support multilingual apps, this function accepts one `language` and will only run GraphQL queries for that language. + +* For static generation, use `fetchSSGSitemap`. This function accepts an array of supported `languages`. It will include the `locale` property because the sample application enables i18n by default. It will run GraphQL query for each language. + +When you execute `fetchSSGSitemap`/`fetchExportSitemap` using the `GraphQLSitemapService`, the service executes the following steps: + +1. Fetch the `rootItemId` using the provided `rootItemPath`. +2. Fetch items using `rootItemId` and the provided `locale`. +3. Merge loaded items in the correct format for SSG or static HTML export. + +## Queries + +The [default GraphQL query used by GraphQL Sitemap Service](https://github.com/Sitecore/jss/blob/release/18.0.0/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L18-L49) to fetch items and generate the sitemap can be replaced with a custom query. To do so, extend the `GraphQLSitemapService` class, overriding the [`fetchSitemap`](https://github.com/Sitecore/jss/blob/release/18.0.0/ref-docs/sitecore-jss-nextjs/classes/services_graphql_sitemap_service.GraphQLSitemapService.md#fetchsitemap) method used internally by `fetchSSGSitemap` and `fetchExportSitemap`. diff --git a/docs/data/routes/docs/nextjs/tracking-and-analytics/configuration/en.md b/docs/data/routes/docs/nextjs/tracking-and-analytics/configuration/en.md index e3b2241bfc..41274472a0 100644 --- a/docs/data/routes/docs/nextjs/tracking-and-analytics/configuration/en.md +++ b/docs/data/routes/docs/nextjs/tracking-and-analytics/configuration/en.md @@ -9,33 +9,44 @@ This topic will guide you through the steps required to enable full Sitecore tra > See [Sitecore Experience Platform documentation](https://doc.sitecore.com/developers/101/sitecore-experience-platform/en/web-tracking.html) for more information about tracking and analytics. -Note this is different than *client-side tracking* via the JSS tracking API, which is possible for *both Static Site Generation (SSG) and Server-side Rendering (SSR)*. Please see the [JSS Tracking](/docs/fundamentals/services/tracking) page for details. +> Note this is different than *client-side tracking* via the JSS tracking API, which is possible for *both Static Site Generation (SSG) and Server-side Rendering (SSR)*. Please see the [JSS Tracking](/docs/fundamentals/services/tracking) page for details. -## Next.js application +JSS supports tracking and analytics only for server-side rendered applications using the REST fetch method. You can not currently use tracking and analytics with the Sitecore GraphQL Edge schema. -### SSR only +## Pre-requisites -You must use a Next.js SSR page route. An example SSR route is included with the Next.js sample app. See [this page](/docs/nextjs/page-routing/switching-to-ssr) for details. +- The application uses the SSR pre-rendering form. +- The application uses the [Sitecore Layout Service REST API](/docs/fundamentals/services/layout/sitecore-layout-service). -### Layout Service requests +> You can choose the pre-rendering form and the fetch method when creating the project with the JSS CLI. For details, consult the [JSS CLI reference](/docs/fundamentals/cli). -[Sitecore Layout Service](/docs/fundamentals/services/layout-service) requests must: +> If your application currently uses SSG, you can [switch to SSR](/docs/nextjs/page-routing/switching-to-ssr). -1. have tracking enabled (see [`tracking` parameter](/docs/fundamentals/services/layout-service#using-the-layout-service)), and -2. perform [header passing](/docs/nextjs/tracking-and-analytics/overview#header-passing) +> If your application currently uses the Sitecore GraphQL Edge schema, you can [switch to the Sitecore Layout Service REST API](/docs/nextjs/data-fetching/switching-fetch-method). + +## Layout Service requests + +Sitecore Layout Service requests must: + +1. Have tracking enabled (see [`tracking` parameter](/docs/fundamentals/services/layout/sitecore-layout-service#using-the-layout-service)). +2. Perform [header passing](/docs/nextjs/tracking-and-analytics/overview#header-passing). Both of these **are taken care of** using the `RestLayoutService` included with the Next.js SDK (part of the `@sitecore-jss/sitecore-jss-nextjs` npm package). > The Next.js sample app uses the `RestLayoutService` in the `SitecorePagePropsFactory`. See [`src/lib/page-props-factory.ts`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/lib/page-props-factory.ts) for details. -The `RestLayoutService` will track layout requests and perform header passing by default, so there is no extra configuration required. However, tracking can be disabled with the optional `tracking` parameter, so ensure this hasn't been specifically set to `false`. For example: +The `RestLayoutService` will track layout requests and perform header passing by default, so there is no extra configuration required. + +Tracking can be disabled with the optional `tracking` parameter, so ensure this hasn't been specifically set to `false`. For example: ```javascript this.layoutService = new RestLayoutService({ ... tracking: false, // <-- disables tracking! }); -``` +``` + +> You might want to [Enable or disable web tracking based on visitor consent](https://doc.sitecore.com/developers/101/sitecore-experience-platform/en/enable-or-disable-web-tracking-based-on-visitor-consent.html). ## Sitecore configuration diff --git a/docs/data/routes/docs/nextjs/tracking-and-analytics/overview/en.md b/docs/data/routes/docs/nextjs/tracking-and-analytics/overview/en.md index f06a373024..c17899004f 100644 --- a/docs/data/routes/docs/nextjs/tracking-and-analytics/overview/en.md +++ b/docs/data/routes/docs/nextjs/tracking-and-analytics/overview/en.md @@ -1,15 +1,15 @@ --- name: overview routeTemplate: ./data/component-templates/article.yml -title: Overview and architecture +title: Overview --- -# Tracking & Analytics Overview and Architecture +# Tracking and Analytics Overview -Full Sitecore analytics and personalization functionality is possible with Next.js on any SSR (Server-side Rendered) page route. +Sitecore analytics and personalization functionality is possible with Next.js only on SSR (Server-side Rendered) page routes using the [Sitecore Layout Service REST API](/docs/fundamentals/services/layout/sitecore-layout-service). -> Note [client-side JSS tracking](/docs/fundamentals/services/tracking) is possible for *both SSG and SSR*. +> See [Sitecore Experience Platform documentation](https://doc.sitecore.com/developers/101/sitecore-experience-platform/en/web-tracking.html) for more information about tracking and analytics. -> By default, the Next.js sample application uses a route optimized for SSG, but can be switched to SSR. See [here](/docs/nextjs/page-routing/switching-to-ssr) for steps. +> Note this is different than *client-side tracking* via the JSS tracking API, which is possible for *both Static Site Generation (SSG) and Server-side Rendering (SSR)*. Please see the [JSS Tracking](/docs/fundamentals/services/tracking) page for details. For Sitecore analytics and personalization to work with JSS, the appropriate HTTP headers must be present at the browser and Layout Service. @@ -19,7 +19,7 @@ With Next.js, this is accomplished by passing specific HTTP headers between the ## Header Passing -Here's how header passing works during a page request/response cycle. The flow is based on using the SSR page route example `pages_examples\[[...path]].SSR.tsx` that comes with the Next.js sample application. +Here's how header passing works during a page request/response cycle. The flow is based on using the [SSR `[[..path]].tsx`](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/pages/%5B%5B%2E%2E%2Epath%5D%5D.SSR.tsx) route example that comes with the Next.js sample application. Next.js Sitecore Analytics @@ -39,4 +39,4 @@ The `RestLayoutService` (part of the `@sitecore-jss/sitecore-jss-nextjs` npm pac ## Configuration -The Next.js sample application includes all configuration necessary to start using Sitecore analytics and personalization with Next.js SSR. However, additional steps may be required. Refer to [Enabling tracking and analytics](/docs/nextjs/tracking-and-analytics/configuration) for details. \ No newline at end of file +The Next.js sample application includes all configuration necessary to start using Sitecore analytics and personalization with Next.js SSR. However, additional steps may be required. Refer to [Enabling tracking and analytics](/docs/nextjs/tracking-and-analytics/configuration) for details. diff --git a/docs/data/routes/docs/nextjs/troubleshooting/en.md b/docs/data/routes/docs/nextjs/troubleshooting/en.md index 98263d6013..0588c2e943 100644 --- a/docs/data/routes/docs/nextjs/troubleshooting/en.md +++ b/docs/data/routes/docs/nextjs/troubleshooting/en.md @@ -6,12 +6,24 @@ title: Documentation # Troubleshooting +- [Debug logging](#debug-logging) - [General setup checklist](#general-setup-checklist) - [Server-side JavaScript errors](#server-side-javascript-errors) - [Errors regarding SSL certificates](#errors-regarding-ssl-certificates) - [Errors deploying a JSS app locally](#errors-deploying-a-jss-app-locally) - [Data-fetching issues](#data-fetching-issues) - [Errors in GraphiQL](#errors-in-graphiql) +- [App fails to render on Vercel after 18.0.0 upgrade](#app-fails-to-render-on-vercel-after-1800-upgrade) + +## Debug logging + +You can enable debug logging of the Sitecore JSS npm packages by setting the `DEBUG` environment variable. In your `.env` (or `.env.local` for local environments), add the following line: + +``` +DEBUG=sitecore-jss:* +``` + +This will output _all_ debug logs. However, you may wish to be more selective. Refer to [Debug logging](/docs/fundamentals/troubleshooting/debug-logging) for additional details. ## General setup checklist @@ -41,7 +53,7 @@ If you encounter unexpected JavaScript errors during the `npm install` or `build node -v npm -v ``` -Note that we test JSS using the **Long Term Support (TLS) versions of Node**. These are typically one major version behind the latest official Node version. +Note that we test JSS using the **Long Term Support (LTS) versions of Node**. These are typically one major version behind the latest official Node version. Note that the Node/npm version used by your CI/Production environments may differ from the version your local environment uses. When a project configuration does not require a specific Node/npm version in `package.json`, deployment agents commonly build using the most recent version available or an environment-specific "default" version. @@ -161,6 +173,20 @@ After creating a new user in the Sitecore Editor Role, attempting to edit JSS ap The workaround is to set 'Workflow State Write' for the `System/Workflows/JSS development workflow' item manually, enabling the Published state, which is final, to be editable. It allows the user to create a new version of an item for editing using the "Lock and Edit" option. +### GraphQL query error when trying to start Next.js app using a Sitecore + SXA instance +If you have an SXA integration with a JSS tenant and you deploy Next.js items into the JSS tenant, you might encounter a GraphQL query error when trying to start the Next.js app in production mode: + +`Error: Valid value for rootItemId not provided and failed to auto-resolve app root item.` + +This error occurs because the Next.js app and Next.js app items deployed into JSS tenant reference different templates, causing the query to fail. + +To prevent the error, define a `rootItemId` for your instances of GraphQL services, as follows: + +- `/src/lib/sitemap-fetcher.ts`. +- `/src/lib/layout-service-factory.ts`. +- `/src/lib/dictionary-service-factory.ts`. + + ## Other These are less common issues that we have encountered. @@ -168,9 +194,9 @@ These are less common issues that we have encountered. If the GraphQL schema changes, you must regenerate GraphQL introspection data. -In the sample app, you regenerate introspection data using the command `npm run graphql:update`. +In the sample app, you regenerate introspection data using the command `jss graphql:update`. -> The scripts that this calls depends on the `scjssconfig.json` file being present and populated. +> The script that this calls depends on the `scjssconfig.json` file being present and populated. ### Vercel unable to show data from a local Sitecore environment If you are using [ngrok](https://ngrok.com/) to expose your local Sitecore endpoint to Vercel, verify that you are using the `host-header` flag. @@ -178,3 +204,23 @@ For example, ``` ngrok http -host-header=rewrite ``` + +### App fails to render on Vercel after 18.0.0 upgrade + +If your app renders and builds correctly in your local development environment, but fails to render when deployed to Vercel, a possible reason for the issue might be an incorrect upgrade to version 18.0.0 or later. + +When creating your Next.js application using the `jss create` command, based on the options you chose or the default values for `--fetchWith` and `--prerender` options, the script will clean up after itself. + +When upgrading your Next.js application from JSS 16.0 to JSS 18.0, manually and copying the latest code from the repository, this automatic cleanup does not happen. Prior to version 18.0, `[[...path]].SSR.tsx` was located at `src/pages_examples/`. In version 18.0.0 and later, because of improvements to the `jss create` command, the source for the Next.js sample application holds **both** catch-all, dynamic routes for the `[...path]` parameter in `src/pages`. + + +To resolve the rendering issue: + +- Make sure you choose the right page source file and that you only have one catch-all, dynamic route in `src/pages` + + - If using server-side rendering, keep `src/path/[[...path]].SSR.tsx` and rename it to `[[...path]].tsx`. + + - If using static generation, delete `src/path/[[...path]].SSR.tsx`. + +- Redeploy your source code. + diff --git a/docs/data/routes/docs/techniques/authentication/sitecore-auth/en.md b/docs/data/routes/docs/techniques/authentication/sitecore-auth/en.md index 648acf0ab3..9d2af66bea 100644 --- a/docs/data/routes/docs/techniques/authentication/sitecore-auth/en.md +++ b/docs/data/routes/docs/techniques/authentication/sitecore-auth/en.md @@ -8,13 +8,13 @@ title: Sitecore Authentication Sitecore's security model allows you to restrict content access by users and roles, personalize on user profile, and more. It is built on top of ASP.NET Membership and by default utilizes the `.ASPXAUTH` cookie by default. -As the [Layout Service](/docs/fundamentals/services/layout-service) will respect any logged in users and Sitecore Security, you are fully able to utilize security and authentication with JSS. +As the [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) will respect any logged in users and Sitecore Security, you are fully able to utilize security and authentication with JSS. ## The SSC Authentication Service Sitecore Services Client includes an Authentication Service which can be utilized to RESTfully log into Sitecore and set the `.ASPXAUTH` cookie. You may invoke this service within your JSS application in order to utilize Sitecore authentication and authorization. -For more information on this service, see the [SSC API Documentation](https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/sitecoreservicesclient/the_restful_api_for_the_itemservice). +For more information on this service, see the [SSC API Documentation](https://doc.sitecore.com/en/developers/101/sitecore-experience-manager/the-restful-api-for-the-itemservice.html). > The SSC Auth services require an SSL/TLS connection, so for local development you will need to set up a certificate and SSL bindings for your Sitecore site. SSL configuration is beyond the scope of this documentation. `https://my.sitecore.hostname` should work, even if with a security warning, before attempting to use SSC auth from a JSS app. @@ -47,7 +47,7 @@ To test/explore authentication and security with a sample app, you'll need to cr ## SSC Auth -It is possible to build a simple login/logout using the [SSC Authentication services](https://doc.sitecore.net/sitecore_experience_platform/developing/developing_with_sitecore/sitecoreservicesclient/the_restful_api_for_the_itemservice). +It is possible to build a simple login/logout using the [SSC Authentication services](https://doc.sitecore.com/en/developers/101/sitecore-experience-manager/the-restful-api-for-the-itemservice.html). ### Integrated Mode diff --git a/docs/data/routes/docs/techniques/content-translation/en.md b/docs/data/routes/docs/techniques/content-translation/en.md index f9b09bfbd7..5b61eb1e04 100644 --- a/docs/data/routes/docs/techniques/content-translation/en.md +++ b/docs/data/routes/docs/techniques/content-translation/en.md @@ -12,7 +12,7 @@ The sample apps shows one approach to using the tools provided by JSS to make yo ## Translation of Layout Service Content -The [Layout Service](/docs/fundamentals/services/layout-service) will fully respect the Sitecore *Language Context* when fetching route and context data. This means that requests to the Layout Service can utilize the `sc_lang` param to request content in a specific language. +The [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) will fully respect the Sitecore *Language Context* when fetching route and context data. This means that requests to the Layout Service can utilize the `sc_lang` param to request content in a specific language. e.g. `http://JssReactWeb/sitecore/api/layout/render/jss?item=/Services&sc_lang=es-MX&sc_apikey={YOUR_API_KEY}` @@ -30,7 +30,7 @@ This is only the default convention for multilingual content for sample apps, de ## Translation of Dictionary Items -Sitecore JSS provides an additional REST [Dictionary Service](/docs/fundamentals/services/dictionary-service) to support acquiring translated phrases in your app. The sample apps demonstrate using this service to translate static text. +Sitecore JSS provides an additional REST [Dictionary Service](/docs/fundamentals/services/dictionary/sitecore-dictionary-service) to support acquiring translated phrases in your app. The sample apps demonstrate using this service to translate static text. ## Language Routing / Language in URL diff --git a/docs/data/routes/docs/techniques/extending-layout-service/extending-layout-service-overview/en.md b/docs/data/routes/docs/techniques/extending-layout-service/extending-layout-service-overview/en.md index 64f8e52818..1588d395fc 100644 --- a/docs/data/routes/docs/techniques/extending-layout-service/extending-layout-service-overview/en.md +++ b/docs/data/routes/docs/techniques/extending-layout-service/extending-layout-service-overview/en.md @@ -8,7 +8,7 @@ title: Extending Layout Service You have a number of options for customizing the output of the Layout Service. -> Looking for [Layout Service basics](/docs/fundamentals/services/layout-service)? +> Looking for [Layout Service basics](/docs/fundamentals/services/layout/overview)? ## Anatomy of a Layout Service Request @@ -180,4 +180,13 @@ After patching in your custom configuration, you can utilize it in your JSS App ``` -You'll need to ensure that you provide this configuration name in your client code as well when invoking Layout Service via the `dataApi` (see examples above). +Provide configuration name in your client code as well when invoking Layout Service via the `RestLayoutService`. + +```javascript +const layoutService = new RestLayoutService({ + apiHost: 'http://mysitecore', + apiKey: '{00000000-0000-0000-0000-000000000000}', + siteName: 'jssappname', + configurationName: 'my-jss-config', +}); +``` \ No newline at end of file diff --git a/docs/data/routes/docs/techniques/forms/en.md b/docs/data/routes/docs/techniques/forms/en.md index 45b12d216c..504f5c2327 100644 --- a/docs/data/routes/docs/techniques/forms/en.md +++ b/docs/data/routes/docs/techniques/forms/en.md @@ -5,7 +5,7 @@ title: Forms + JSS --- # Sitecore Forms + JSS -JSS provides the capability to consume and post [Sitecore Forms](https://doc.sitecore.com/users/91/sitecore-experience-platform/en/introducing-sitecore-forms.html) from JSS apps. Sitecore Forms is a capable form-authoring framework that enables marketers to author their own forms, collect data, and analyze form performance. +JSS provides the capability to consume and post [Sitecore Forms](https://doc.sitecore.com/users/101/sitecore-experience-platform/en/introducing-sitecore-forms.html) from JSS apps. Sitecore Forms is a capable form-authoring framework that enables marketers to author their own forms, collect data, and analyze form performance. Usage of Sitecore Forms in JSS works like this: @@ -13,7 +13,7 @@ Usage of Sitecore Forms in JSS works like this: ## Getting Started -This document assumes you are familiar with JSS fundamentals and have a React-based JSS app that you have set up and deployed to Sitecore. It is not possible to use Sitecore Forms in disconnected mode. +This document assumes you are familiar with JSS fundamentals and have a React- or Next.js-based JSS app that you have set up and deployed to Sitecore. It is not possible to use Sitecore Forms in disconnected mode. ### Creating a Sitecore Form @@ -23,7 +23,7 @@ For the sake of simplicity, consider starting off with a simple form with a text ### Creating a Form Rendering component for your JSS App -> JSS comes with a **React** example of consuming the forms API. It is possible to consume the forms schema data with other frameworks as well, but example components are not provided. +> JSS comes with a **React** example of consuming the Forms API. It is possible to consume the forms schema data with other frameworks as well, but example components are not provided. To add a form to the JSS app we need a component to render the form. A form rendering component is a normal JSS component, but since disconnected mode is not supported for forms we'll create it Sitecore-first. @@ -54,12 +54,11 @@ To use the sample forms implementation, install the forms packages: * run command `npm i @sitecore-jss/sitecore-jss-forms` * run command `npm i @sitecore-jss/sitecore-jss-react-forms` -### Implement the Form React component +### Implement the Form component -To make the form render as a form, we need to tell React how to render the Sitecore Forms schema. +To make the form render as a form, we need to tell the application how to render the Sitecore Forms schema. -* Create a new React component in `src/components/Form/index.js` -* Set the contents to: +1. Create a new component in `src/components/Form/index.js` with the following content: ```jsx import React from 'react'; @@ -73,15 +72,15 @@ export default function Form(props) { return {JSON.stringify(form, null, 2)}; } ``` - -* Start the JSS app in connected mode with `jss start:connected` -* You should see the form data dumped to the page as JSON +2. Start the JSS app in connected mode with `jss start:connected`. +3. You should see the form data dumped to the page as JSON. ### Use the sample JSS forms implementation Sitecore provides a sample implementation of rendering this form data into a usable React form for your reference and modification. The sample implementation provides a native React state-based implementation using controlled form components. It supports client and server-side validation and multistep forms. -To use the example React forms implementation, modify your Form component to use the library's form components: +#### Implement the Form in a React-based JSS app +To use the example React forms implementation, modify your Form component to use the library's form components and `withRouter` from `react-router-dom`: ```jsx import { Form } from '@sitecore-jss/sitecore-jss-react-forms'; @@ -89,7 +88,7 @@ import React from 'react'; import { withRouter } from 'react-router-dom'; import { sitecoreApiHost, sitecoreApiKey } from '../../temp/config'; -const JssForm = ({ fields, history }) => ( +const JssReactForm = ({ fields, history }) => (
( /> ); -export default withRouter(JssForm); +export default withRouter(JssReactForm); ``` +#### Implement the Form in a Next.js-based JSS app + +To render a Sitecore Form in a Next.js-based JSS app, the solution is similar to the React example. + +For the Next.js app, however, you will need to use `withRouter` provided by `next/router`. + +Another key difference is that you need to pass a `router` object to the form rendering function. + +```jsx +import { Form } from '@sitecore-jss/sitecore-jss-react-forms'; +import React from 'react'; +import { withRouter } from 'next/router'; +import { sitecoreApiHost, sitecoreApiKey } from '../temp/config'; + +const JssNextForm = ({ fields, router }: any) => ( + router.push(url)} + /> + ); + +export default withRouter(JssNextForm); +``` + +In the file `next.config.base.js`, add the following rewrite definition to the connected mode rewrites to prevent CORS and 404 errors: + +```javascript + { + source: '/api/jss/:path*', + destination: `${jssConfig.sitecoreApiHost}/api/jss/:path*` + }, +``` + +#### A note on using forms in `headless` mode -> If you are using `headless` mode, set `sitecoreApiHost={''}`, so requests will be sent directly to your node server. -> If you send requests directly to Sitecore instance you will get an error (only in headless mode). +*In `headless` mode*, if you send requests directly to the Sitecore instance you will get an error. Make sure to set `sitecoreApiHost` to an empty string `sitecoreApiHost={''}`, so requests will be sent directly to your node server. #### Customizing sample forms markup diff --git a/docs/data/routes/docs/techniques/mvc-integration/javascript-rendering/en.md b/docs/data/routes/docs/techniques/mvc-integration/javascript-rendering/en.md index a2a34e365f..97cc7ae0e5 100644 --- a/docs/data/routes/docs/techniques/mvc-integration/javascript-rendering/en.md +++ b/docs/data/routes/docs/techniques/mvc-integration/javascript-rendering/en.md @@ -138,7 +138,7 @@ Note: serialized field names will be returned with their letter case preserved, ### `placeholders` -This property is an object containing the [layout service](/docs/fundamentals/services/layout-service) data for any placeholders set on the rendering item's `Layout Service Placeholders` field. The format of the `placeholders` object will match the format found in [route data for a JSS app](/docs/fundamentals/services/layout-service). You can use this to expose placeholders from within your JS rendering - for example, to embed Sitecore MVC or XSLT renderings _inside your JS rendering_. +This property is an object containing the [layout service](/docs/fundamentals/services/layout/sitecore-layout-service) data for any placeholders set on the rendering item's `Layout Service Placeholders` field. The format of the `placeholders` object will match the format found in the route data for a JSS app. You can use this to expose placeholders from within your JS rendering - for example, to embed Sitecore MVC or XSLT renderings _inside your JS rendering_. ### `context` diff --git a/docs/data/routes/docs/techniques/ssr/headless-mode-ssr/en.md b/docs/data/routes/docs/techniques/ssr/headless-mode-ssr/en.md index 1688fba70e..74671a7abd 100644 --- a/docs/data/routes/docs/techniques/ssr/headless-mode-ssr/en.md +++ b/docs/data/routes/docs/techniques/ssr/headless-mode-ssr/en.md @@ -10,6 +10,8 @@ JSS supports headless server-side rendering using any service that supports host All Sitecore marketing features are supported by this headless mode, including personalization, tracking, multivariate testing, etc. + > NodeJS is a third-party technology that you must configure according to your specific use-case scenarios for Headless mode. + ## How to use 1. Clone [the JSS samples repository](https://github.com/sitecore/jss) and copy the `samples/node-headless-ssr-proxy` folder to your disk, for example: `c:\jss-headless`. @@ -68,7 +70,7 @@ But you can extend it and remove additional headers. ### Media URLs in headless mode -The [Layout Service](/docs/fundamentals/services/layout-service) will return URLs to images with the Sitecore server URL included. For example: +The [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) will return URLs to images with the Sitecore server URL included. For example: * The Sitecore server is `http://siteco.re` * An image in a media field, or a rich text field, would be returned something like `http://sitecor.re/-/media/jss.jpg` diff --git a/docs/data/routes/docs/techniques/ssr/sitecore-experience-edge/en.md b/docs/data/routes/docs/techniques/ssr/sitecore-experience-edge/en.md new file mode 100644 index 0000000000..71efd7fa8a --- /dev/null +++ b/docs/data/routes/docs/techniques/ssr/sitecore-experience-edge/en.md @@ -0,0 +1,78 @@ +--- +name: ssr-experience-edge +routeTemplate: ./data/component-templates/article.yml +title: SSR using Sitecore Experience Edge +--- + +# Server-side rendering using Sitecore Experience Edge + +You can configure server-side rendering (SSR) for your JSS application using a Sitecore Experience Edge endpoint. + +Sitecore provides a [sample for server-side rendering using a Sitecore Experience Edge endpoint](https://github.com/Sitecore/jss/tree/dev/samples/node-headless-ssr-experience-edge), Node.js, and Express. + + > NodeJS is a third-party technology that you must configure according to your specific use-case scenarios for Headless mode. + +The application renders your JSS application, querying layout and dictionary data without proxying the requests. + +> The sample for SSR using a Sitecore Experience Edge endpoint is _experimental_ and not officially supported by Sitecore. + +## Pre-requisites + +To use this technique, you need: + +1. A Sitecore instance with [Headless Services installed](/docs/client-frameworks/getting-started/jss-server-install). + +2. A Sitecore API key. + +3. A React, Vue or Angular application built with JSS that: + + - Supports [server-side rendering in integrated mode](/docs/techniques/ssr/integrated-mode-ssr). + + - Supports the Experience Edge GraphQL schema. + + > JSS applications, except those based on Next.js, still use the legacy/non-Edge GraphQL schema. You will need to update your application's GraphQL components and queries to be compatible with the Experience Edge schema. See the [GraphQL-ConnectedDemo](https://github.com/Sitecore/jss/blob/master/samples/nextjs/src/components/graphql/GraphQL-ConnectedDemo.tsx) component and [the associated GraphQL query](https://github.com/Sitecore/jss/blob/dev/samples/nextjs/src/components/graphql/GraphQL-ConnectedDemo.graphql) in the Next.js sample application. + + - Provides the `SITECORE_API_KEY`. The `GraphQLRequestClient` uses the API key to set the `sc_apikey` header for authentication on both the Sitecore XM Edge schema and Sitecore Experience Edge. + +## How to use the sample + +To use the SSR rendering with Sitecore Experience Edge: + +1. Create the SSR application based on the `node-headless-ssr-experience-edge` sample. In this example, we name it `jss-edge`. + + ``` + jss create jss-edge node-headless-ssr-experience-edge + ``` + +2. In your React/Vue/Angular app's root directory, build your JSS app for production with `jss build`. + +3. Copy the production build artifacts from your app (`/dist` or `/build` within the app) to the `sitecoreDistPath` set in your app's `package.json` under the SSR sample root path. For example, `jss-edge/dist/`. + +> Alternatively, change the `instancePath` in your JSS app's `scjssconfig.json` to the SSR sample root path, and then use `jss deploy files` to complete the deployment to the SSR sample. + +5. In `jss-edge/config.js`, set the values for: + + - `appName` to the value set for your JSS application in `config.appName` in the `package.json` file. + - `bundlePath` to the path where you copied the built JSS app's `server.bundle.js`. For example: `'./dist//server.bundle'`. + - `endpoint` to your Experience Edge endpoint. + - `apiKey` to the [API key provisioned on Sitecore Experience Edge](https://doc.sitecore.com/en/developers/101/developer-tools/test-your-queries.html#UUID-779f6288-57a9-7a09-aa44-3c130d3cad33_procedure-idm4588913365819232428308238427). + - `defaultLanguage` to the JSS app's default language used to determine language context if no language is specified in the request URL. + - `port` for starting the SSR sample. + + Alternatively, you can define values for the [environment variables](#environment-variables) used by the SSR sample. + +6. Test the SSR application by running `npm run start`. + +## Environment Variables + +You can set the following environment variables to configure the SSR sample instead of modifying `config.js`, for environments where this is more desirable, like containers: + +| Parameter | Description | +| ----------------------------------- | ------------------------------------------------------------ | +| `SITECORE_JSS_APP_NAME` | The JSS app's name. Used when request layout data and dictionary using graphql query and the default value of `SITECORE_JSS_SERVER_BUNDLE` if not set. | +| `SITECORE_API_KEY` | [The API key provisioned on Sitecore Experience Edge.](https://doc.sitecore.com/en/developers/101/developer-tools/test-your-queries.html#UUID-779f6288-57a9-7a09-aa44-3c130d3cad33_procedure-idm4588913365819232428308238427) | +| `SITECORE_JSS_SERVER_BUNDLE` | Path to the JSS app's `server.bundle.js` file. | +| `SITECORE_EXPERIENCE_EDGE_ENDPOINT` | Sitecore Experience Edge endpoint. | +| `DEFAULT_LANGUAGE` | The JSS app's default language. Used to determine language context if language unspecified in the request URL. | +| `PORT` | Optional. Port used when starting the sample. See the default in [config.js](https://github.com/Sitecore/jss/blob/dev/samples/node-headless-ssr-experience-edge/config.js). | + diff --git a/docs/data/routes/docs/techniques/working-disconnected/disconnected-overview/en.md b/docs/data/routes/docs/techniques/working-disconnected/disconnected-overview/en.md index 29d2f487a0..d377578e00 100644 --- a/docs/data/routes/docs/techniques/working-disconnected/disconnected-overview/en.md +++ b/docs/data/routes/docs/techniques/working-disconnected/disconnected-overview/en.md @@ -3,43 +3,58 @@ name: disconnected-overview routeTemplate: ./data/component-templates/article.yml title: Working Disconnected --- -# Working Disconnected +# Working disconnected -When utilizing a code-first approach with JSS, the application can run during development without the need for a Sitecore instance. In order to support this, as well as deploy the disconnected data to Sitecore later, we need a way define your app's data without Sitecore. +When utilizing a code-first approach with JSS, the application can run during development without a Sitecore instance. -This is accomplished via the _manifest_ generation process. The manifest is a JSON file that represents your data in a format that can be imported into Sitecore or used to host the app disconnected. +To support working disconnected and deploy the data to Sitecore later, we need to define your app's data without Sitecore using the _manifest_ generation process. -> It is important to note that manifest generation and the corresponding code-first approach for JSS apps is entirely _**optional**_. Your app can utilize a Sitecore-first approach, in which case you would not need to generate an app manifest but you would need a Sitecore instance to run the app. -> -> An app with a manifest can also run in _connected mode_, where actual Sitecore data is used - which may be deployed by the manifest. -> -> We recommend using code-first to do at least the initial deployment of a JSS app to Sitecore, even if [not using the pattern](/docs/fundamentals/dev-workflows/sitecore-first) after that, to save time setting up root items and such for your application. +The manifest is a JSON file representing your data in a format that can be imported into Sitecore or used to host the app disconnected. -## Types of Manifest Data +Manifest generation and the corresponding code-first approach for JSS apps is entirely _**optional**_. An app with a manifest can also run in _connected mode_, where it uses actual Sitecore data - which the manifest may deploy. -There are several kinds of data that can be added to the JSS manifest. In the sample apps, these live under `/data` and `/sitecore/definitions`. +> Your app can utilize a [Sitecore-first approach](/docs/fundamentals/dev-workflows/sitecore-first), in which case you do not need to generate an app manifest. Developing Sitecore-first requires a Sitecore instance to run the app. + +> We recommend using code-first for the initial deployment of a JSS app to Sitecore, even if not using the pattern after that, to save time setting up items for your JSS application. + + +## Types of manifest data + +You can add several types of data to the JSS manifest. These live under `/data` and `/sitecore/definitions` in the sample apps. ### Routes -Routes are an essential component of any app. These define the routes (somewhat like pages if you're new to JS apps, or like items under a site root for Sitecore developers) that make up your application. The sample apps use the most popular routing platform for their library (i.e. `react-router`) to enable these defined routes to resolve when the app is run. +Routes are an essential component of any app. These define the routes that make up your application. You can think of them as: -Routes are hierarchically defined, forming a traditional page-tree architecture. There is no requirement to force your app to use this exact routing paradigm; if you need to do routing in a complex way that is fine. The Sitecore [Layout Service](/docs/fundamentals/services/layout-service), which provides route data, expects to receive a route path to retrieve data for but that does not mean the frontend router must use that exact route path in the browser. _NOTE: using custom routing may require implementation of the same custom routing on the Sitecore backend to allow for editing the custom routed site. When possible, try to use hierarchical routes._ +Somewhat like website pages if you're new to JS apps or, +Items under a site root if you're a Sitecore developer. +The sample apps use the most popular routing platform for their library (for example, `react-router`) to enable these defined routes to resolve when the app runs. -A route definition contains at a minimum a `name` (used to construct the route segment). Most routes will also define `placeholders`, which allow defining a set of frontend components and data that should be placed inside JSS `Placeholder` components of the same name. +Routes are hierarchically defined, forming a traditional page-tree architecture. Since there is no requirement to force your app to use this routing paradigm, you can implement more complex routing patterns if you need to. The Sitecore [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) expects to receive a route for retrieving data. But that does not mean the frontend router must use that exact route path in the browser. + +> Using custom routing may require implementing the same custom routing on the Sitecore backend to allow editing the custom routed site. When possible, try to use hierarchical routes. + +A minimal route definition contains a `name` (used to construct the route segment). Most routes also define `placeholders`, defining a set of frontend components and data placed inside JSS `Placeholder` components of the same name. In the sample apps, routes are defined in `/data/routes/[path-to-route]/[language].{yaml|yml|json}`. For example, `/data/routes/en.yml` would be the route data for the `/` route in English, or `/data/routes/about/es-MX.yml` would be the data for the `/about` route in Spanish (Mexico). -#### A Crash Course in JSS Layout +#### A crash course in JSS layout + +In a JSS app, _placeholders_ and _components_ determine the content of your application's routes. -In a JSS app, the content of your application's routes are determined by _placeholders_ and _components_. +A _component_ is what it sounds like: a frontend component. These components are defined just like any standard component in your library of choice (for example, Vue.js). The only particular property of a JSS component is the one that contains the content data that it should render, which, in production, comes from Sitecore. -A _component_ is exactly what it sounds like: a frontend component. These components are defined just like any normal component in your library of choice (i.e. Vue). A JSS component's only special property is that it gets a special prop passed to it that contains the content data that it should render, which comes from Sitecore in production. Where components diverge into special territory is that they are _dynamically bound to routes_. You'll never directly instantiate or render a component other than by adding it to a route by name - that's the JSS infrastructure's job. The component data structure is defined by its +Where components diverge into JSS-specific territory is that they are _dynamically bound to routes_. You'll never directly instantiate or render a component - that is the JSS infrastructure's job. What you need to do, however, is adding it to a route by name. The component data structure is defined by its fields defined in the corresponding Sitecore rendering's data template." -A _placeholder_ is a special component that JSS includes. When added to the app root component, or another component, this component creates a _named placeholder key_ that you can dynamically place other _components_ that are registered with JSS into. In the case of being connected to Sitecore, placeholders are how features of Sitecore such as personalization, testing, and editors' ability to alter the page layout work. Which components are bound within a placeholder is determined by the route data file, when disconnected. +A _placeholder_ is a special component included with JSS. When added to the app's root component, or another component, this component creates a _named placeholder key_. You can use the named placeholder key for dynamically placing other _components_ registered with JSS in the corresponding placeholder. -See also [understanding layout](/docs/fundamentals/understanding-layout) +When connected to Sitecore, placeholders enable the functionality of Sitecore features, such as personalization, testing, and editors' ability to alter the page layout. -#### The Structure of a Route File +When working disconnected from Sitecore, you determine the binding of components to specific placeholders through the route data file. + +See also [understanding layout](/docs/fundamentals/understanding-layout). + +#### The structure of a route file Very advanced capabilities are available in route files (see the reference material for the full APIs), but they can also be quite simple to define. Here's a sample route data file, written in YAML, that defines data for an `about` route: @@ -50,17 +65,16 @@ Very advanced capabilities are available in route files (see the reference mater name: about # The root of the layout for this route placeholders: - # this defines the components that belong in the 'main' placeholder - # defining this means it's expected to have a component added - # to the root app component + # defines the components that belong in the 'main' placeholder + # defining the appname-main placeholder requires a component added to the root app component appname-main: # Adds a component called 'Heading' to the route in the 'main' placeholder - componentName: Heading # Component data can be as complex as a reference to another component (see the reference), - # or as simple as defining field values that the component will receive + # or as simple as defining field values that the component receives fields: - # Fields must be defined on the component definition (see below) to be used - # a field consists of a top level named object, and a child value which may be a simple string, + # To use fields, they must be defined on the component definition (see below) + # a field consists of a top-level named object and a child value which may be a simple string, # or something more complex for fields like images titleField: value: Page Title @@ -68,7 +82,7 @@ placeholders: value: src: "/assets/img/logo.png" alt: Logo - # A component can itself expose placeholders (e.g. Heading might expose 'appname-heading-content') that contain more components + # A component can itself expose placeholders (for example, Heading might expose 'appname-heading-content') that contain more components # Child placeholders are defined hierarchically under the component that exposes them placeholders: appname-heading-content: @@ -77,7 +91,7 @@ placeholders: # ... ``` -If you're more comfortable with JSON, and don't mind the excessive quotes and brackets, lack of comments, and need to escape content blocks, here's an equivalent in JSON: +Here's an equivalent in JSON: ```json { @@ -110,13 +124,13 @@ If you're more comfortable with JSON, and don't mind the excessive quotes and br } ``` -### Component Content +### Component content -Component content is a way to share components between routes. A common scenario for using this might be that you're sketching out a JSS site but the only content for it is _lorem ipsum_ text and FPO (for placement only) images, and you don't want to maintain many copies of the same component. Or that there are pieces of shared content that are used on multiple routes. +Component content is a way to share components between routes. A typical scenario for using component content might be sketching out a JSS site with only _lorem ipsum_ text and FPO (for placement only) images and therefore not wanting to maintain many copies of the same component. Or that there are pieces of content shared across multiple routes. -Component content is organized in a similar folder structure to routes (`/data/component-content`), with the same folder-and-language naming convention - for example `/data/component-content/ComponentName/id/en.yml`. Conventionally you should store component content under a folder named for its component that it defines (e.g. `ComponentName` in the preceding example). +Component content is organized in a similar folder structure to routes (`/data/component-content`), with the same folder-and-language naming convention. Conventionally you should store component content under a folder named for its component that it defines. For example, `/data/component-content//id/en.yml`. -The content of a shared component looks exactly like a component added directly to a route, _except that you must specify an **id** and **name** attribute so it can be referred to_. The ID value must be unique across the entire JSS application. +The content of a shared component looks exactly like a component added directly to a route, _except that you must specify an **id** and a **name** attribute so it can be referred to_. The ID value must be unique across the entire JSS application. ```yaml /data/component-content/Heading/fpo-heading/en.yml @@ -129,7 +143,7 @@ fields: value: Page Title ``` -Using the shared component on routes is very simple: you add a component to a placeholder but instead of specifying a `componentName` and `name`, specify _only the `id`_: +Using the shared component on routes is very simple: you add a component to a placeholder. Instead of specifying a `componentName` and `name`, you specify _only the `id`_: ```yaml /data/routes/en.yml @@ -140,9 +154,13 @@ placeholders: - id: fpo-heading ``` -The `fpo-heading` we defined is now referenced on the home route, and all of its data is expanded into the home route layout. +In the previous example, we reference the`fpo-heading` on the home route. All of its data is expanded into the home route layout. + +Another way to reference content that takes effect when you import the site into Sitecore is copying. When you import a reference like `fpo-heading`, in Sitecore, all usages of that reference are placed in a single content item. It facilitates sharing content (such as copyright). + +> A bad practice is to use references to repeat _lorem ipsum_ content on a multicolumn promo, tabs, or carousel. In such case, when imported, the final content will _not_ be shared and should be unique. -There is another way to reference content as well that takes effect when the site is imported into Sitecore: copying. When a reference like the above is imported all usages of that reference are placed in a single content item in Sitecore. This is great for actually shared content (say, a copyright). It's bad if you've been using references to repeat _lorem ipsum_ content on a multicolumn promo, tabs, or carousel - in that case when imported the final content will _not_ be shared, and should be unique. Doing this is as simple as adding `copy: true` to your ID reference: +To reference content when importing the site into Sitecore through copyuing simply add `copy: true` to your ID reference: ```yaml /data/routes/en.yml @@ -159,20 +177,20 @@ placeholders: copy: true ``` -With the above setup the two tabs are shared _while disconnected_, but when imported to Sitecore become separate items that can be changed independently. +With setup defined here, the two tabs are shared _while disconnected_. When imported to Sitecore, they become separate items that you can change independently. ### Content -It's possible to define content items that are neither routes nor shared component content - for example, items that contain content for static items, or items that are shared options for multilist fields in content (see the [route data](/docs/techniques/working-disconnected/manifest-api)). +It's possible to define content items that are neither routes nor shared component content. Examples include items that contain content for static items or items that are shared options for multi-list fields in content. See the [route data](/docs/techniques/working-disconnected/manifest-api). Content items work exactly like component content, with two exceptions: -* Instead of `componentName`, specify `template` -* Definitions are stored in `/data/content` +* Instead of `componentName`, specify `template`. +* You store definitions for content items in `/data/content`. ### Dictionary -JSS allows you to develop multilingual applications while disconnected. A common requirement in this sort of application is to have a _dictionary_ that translates non-content text elements such as form labels or global elements. +JSS allows you to develop multilingual applications while disconnected. A common requirement in multilingual applications is to have a _dictionary_ that translates non-content text elements such as form labels or global elements. JSS sample applications define their dictionaries under `/data/dictionary` - a single file per language, such as `en.yaml` or `es-MX.json`, is added with a simple mapping between dictionary key and value: @@ -186,22 +204,24 @@ LoginFailed: Nombre de usuario y / o contraseña inválido. ## The Manifest JavaScript API -The manifest is generated by taking the YAML or JSON manifest data files described previously and reading them, then adding them to a JavaScript API that generates the manifest. This means that you can replace the JSON or YAML files with direct JS API calls, should you wish to do so. The sample apps use the convention of the `/data` folder as a convention only - the actual manifest is created using the manifest source files in `/sitecore/definitions/*.sitecore.js`. These manifest definition files use helper libraries to crawl the YAML/JSON files and add them to the JS manifest object. If you wish to extend or replace the `/data` convention, that's entirely possible. +JSS generates the manifest by reading the YAML or JSON manifest data files described earlier, then adding them to a JavaScript API that generates the manifest. Therefore, should you wish to, you could replace the JSON or YAML files with direct JS API calls. -There are some manifest items, components and placeholders, which are normally defined using the JS API directly. +The sample apps use the convention of the `/data` folder as a convention only - the actual manifest is created using the manifest source files in `/sitecore/definitions/*.sitecore.js`. These manifest definition files use helper libraries to crawl the YAML/JSON files and add them to the JS manifest object. You can extend or replace the `/data` convention, if you wish to. + +Some manifest items, components, and placeholders are usually defined using the JS API directly. ### Components -Each frontend component that is added to a _route_ must be defined. This enables JSS to register the component with Sitecore, and provide appropriate infrastructure to give it the content that it needs to render. +You must define each frontend component added to a _route_, so that JSS can register the component within Sitecore and provide the appropriate infrastructure to give it the necessary content. -Component definitions are conventionally stored in `/sitecore/definitions/components/ComponentName.sitecore.js` If you're using TypeScript, `.ts` is also allowed. The `.sitecore` in the name is also important. +Component definitions are conventionally stored in `/sitecore/definitions/components/.sitecore.{js|ts}`. The `.sitecore` in the name is mandatory. Here's a sample component definition: ```js -// NOTE: if you use an editor, such as VS Code, that reads typings data from imported libraries -// you will receive code completion hints for the manifest definitions - +/* +NOTE: if you use an editor, such as VS Code, that reads typings data from imported libraries, you will receive code completion hints for the manifest definitions. +*/ import { addComponent } from '@sitecore-jss/sitecore-jss-manifest'; export default (manifest) => { @@ -221,9 +241,9 @@ export default (manifest) => { }; ``` -### Placeholder Definitions +### Placeholder definitions -Defining placeholders explicitly in the manifest is optional. Any placeholder name referred to by a route will be automatically known by the manifest. However, explicitly registering a placeholder allows you to set a display name for it, so that content editors can see something friendlier than `appname-content-leftside-upsidedown-2`. +Defining placeholders explicitly in the manifest is optional. Any placeholder name referred to by a route will be automatically known by the manifest. However, explicitly registering a placeholder allows you to set a display name for it so that content editors can see something friendlier than `appname-content-leftside-upsidedown-2`. An explicit placeholder definition is a line in `/sitecore/definitions/placeholders.sitecore.js`: @@ -237,22 +257,23 @@ export default (manifest) => { }; ``` -## Generating a Manifest +## Generating a manifest -Once the manifest is defined, it has to be generated to create the complete manifest definition (normally emitted to `/sitecore/manifest` in your app). You can make a manifest standalone with the `jss manifest` CLI command, however it's more common that the manifest will be generated during the startup of the disconnected dev server (`jss start`) or during a deployment (`jss deploy items`) unless you're debugging the manifest contents. +Once defined, you must generate the manifest to create the complete manifest definition (normally emitted to `/sitecore/manifest` in your app). You can make a manifest standalone with the `jss manifest` CLI command. However, unless you're debugging the manifest contents, it's more common that JSS generates the manifest: + - during the startup of the disconnected dev server (`jss start`) or, + - during a deployment (`jss deploy items`). -When the manifest generation process executes in any of these scenarios, it will do the following: +When the manifest generation process executes in any of these scenarios: -1. Locate all `/sitecore/definitions/*.sitecore.js` manifest files in your application. This convention is used for files that are part of the manifest. -2. Iterate over the manifest files, invoking the `default` export of each file. The `default` export is expected to be a `function` with signature: `function(manifest) { }`. -3. Each `.sitecore.js` file will invoke various methods on the `manifest` instance that is received by the `default` function, such as `addComponent` or `addRoute`. -4. After all `.sitecore.js` files are processed, the manifest output will be generated via a series of pipelines and the output will either be written to `/sitecore/manifest` or to the console (with `--manifestOutputPath console`). +1. JSS locates all `/sitecore/definitions/*.sitecore.{js|ts}` manifest files in your application. We use this naming convention for files that the manifest should include. +2. JSS iterates over the manifest files, invoking the `default` export of each file. The `default` export is expected to be a `function` with the signature: `function(manifest) { }`. +3. Each `.sitecore.{js|ts}` file invokes various methods on the `manifest` instance received by the `default` function, such as `addComponent` or `addRoute`. +4. After processing all `.sitecore.{js|ts}` files, JSS generates the manifest output through a series of pipelines and write the output to `/sitecore/manifest` or to the console (with `--manifestOutputPath console`). -> The manifest generation process supports transpiled (ES6/TypeScript) manifest sources. In the sample apps, the transpilers' default settings are configured in `/sitecore/definitions/config.js`; this can be overridden with the `--require` argument to the CLI command that generates the manifest. +> The manifest generation process supports transpiled (ES6/TypeScript) manifest sources. In the sample apps, you can find the transpilers' default settings in `/sitecore/definitions/config.js`. You can override this path with the `--require` argument to the CLI command that generates the manifest. ## Reference ### CLI -Use `jss manifest --help` for the latest documentation. Note that arguments to `jss manifest` are also valid when used with `jss package` or `jss deploy items` which imply manifest generation by default (unless `--skipManifest` is used). - +Use `jss manifest --help` for the latest documentation. Note that arguments to `jss manifest` are also valid when used with `jss package` or `jss deploy items`, which imply manifest generation by default (unless you use `--skipManifest`). \ No newline at end of file diff --git a/docs/data/routes/docs/techniques/working-disconnected/manifest-api/en.md b/docs/data/routes/docs/techniques/working-disconnected/manifest-api/en.md index 5216d496f6..254598e331 100644 --- a/docs/data/routes/docs/techniques/working-disconnected/manifest-api/en.md +++ b/docs/data/routes/docs/techniques/working-disconnected/manifest-api/en.md @@ -12,7 +12,7 @@ The manifest API is used to define the structure of your JSS site while it is di Route data is used to represent the routes served by your app when running in _disconnected mode_. The `Placeholder` component, and any components that it renders, expect route data to adhere to a specific schema - outlined in the [Reference](#reference) below. -For disconnected development, route data is typically retrieved from static YAML or JSON files, or simple JavaScript files. For connected development or production, the route data is retrieved using calls to the Sitecore [Layout Service](/docs/fundamentals/services/layout-service) (via HTTP, or in-process for integrated mode SSR). +For disconnected development, route data is typically retrieved from static YAML or JSON files, or simple JavaScript files. For connected development or production, the route data is retrieved using calls to the Sitecore [Layout Service](/docs/fundamentals/services/layout/sitecore-layout-service) (via HTTP, or in-process for integrated mode SSR). The sample apps define route data in `/data/routes` by using [YAML](https://en.wikipedia.org/wiki/YAML) files. You can choose to use JSON files instead if you prefer that format (just rename the file to .json and run the content through a [YAML-to-JSON converter](https://jsonformatter.org/yaml-to-json)). YAML supports comments, multiline values, and other niceties that make the content authoring experience a bit nicer. diff --git a/docs/data/routes/help/en.md b/docs/data/routes/help/en.md index aa465ba129..1bdcc9bc38 100644 --- a/docs/data/routes/help/en.md +++ b/docs/data/routes/help/en.md @@ -135,21 +135,6 @@ Attempt to connect to Node timed out after 60000ms. * Placeholders defined in JSS will use the global `key` field on their Placeholder Settings. This means that conflicts may arise if non-JSS and JSS apps use the same placeholder key on a multi-site Sitecore installation. This is not a JSS-specific issue, and to avoid it give JSS apps unique placeholder names such as `myapp-main`. Note that JSS apps will _not_ conflict with each other when using the same placeholder keys, if there are multiple JSS sites. -* Site detection that is not based on `hostName` but on `virtualFolder` / `physicalFolder` attributes requires additional configuration and query string based site name specification. Search your app for `dataApi`, and find where the dataApi's `fetchRouteData()` function is being called. Add `sc_site` to the options passed to `fetchRouteData` like so: - -``` -const fetchOptions = { - // ... - querystringParams: { - // ... (i.e. 'sc_lang') - sc_site: 'name of your site definition in Sitecore' - }, -}; - -// pseudocode -dataApi.fetchRouteData(route, fetchOptions); -``` - ## Troubleshooting ### Missing Layout Service Placeholder Data diff --git a/docs/data/routes/release-notes/en.md b/docs/data/routes/release-notes/en.md index 32573c9bf5..8480f334cb 100644 --- a/docs/data/routes/release-notes/en.md +++ b/docs/data/routes/release-notes/en.md @@ -4,8 +4,109 @@ routeTemplate: ./data/component-templates/full-page.yml title: Release Notes --- # Release Notes +> Our docs are moving soon. We will continue to capture detailed notes relevant to developers in our [changelog](https://github.com/Sitecore/jss/blob/dev/CHANGELOG.md). -## Sitecore JSS 16.0 for Sitecore 10 +## JSS 18.0.0 Release Notes + +> JSS 18.0.0 is compatible with Sitecore 10.1. To ensure that your JSS application is compatible with your licensed Sitecore version, consult the [compatibility table](https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0541788). + +### Breaking changes + +> There are [migration instructions](/upgrade-guides/18.0) from JSS 16-based applications. + +`[sitecore-jss-react-native]` Removed `dataConversation`, since `editable` property not used in `disconnected` mode. (#624) + +`[samples/angular]` Upgrade `angular` to v11. (#635) + +`[samples/nextjs]` Change how a custom query can be used in GraphQLSitemapService. Previous way: pass a `formatSearchQuery` function to `fetchExportSitemap` or `fetchSSGSitemap`. New way: extend the `GraphQLSitemapService` class and override the `fetchSitemap` method. (#638) + +* As part of adding support for Experience Edge, Sitecore XM's graphQL API was updated to mirror Experience Edge's schema. The following updates in JSS + * [sitecore-jss-nextjs] Update sitemap query to comply with changes to the GraphQL API + * [samples/nextjs] Update generated TypeScript models for GraphQL components to comply with changes to the GraphQL API + +With the added support of GraphQL endpoints, the API surface area of JSS has essentially doubled. As a result, some reorganizing was done in the base packages, which causes breaking changes for how some services, classes and functions are exported. If you have imports from JSS base packages in your project, they may need to be updated per the [migration guide table](https://jss.sitecore.com/upgrade-guides/18.0). + +## Introducing support for Sitecore Experience Edge 🎉🎉🎉 + +[Experience Edge](https://doc.sitecore.com/developers/101/developer-tools/en/introducing-sitecore-experience-edge-for-xm.html) is Sitecore's new delivery platform, which serves Sitecore data to your JSS app at blazing fast speeds. You should learn about the [Experience Edge GraphQL schema](https://doc.sitecore.com/developers/101/developer-tools/en/the-experience-edge-schema.html). + +`[samples/nextjs]` +* Update Sitecore configuration patches with relevant Edge-specific definitions. +* [#695](https://github.com/Sitecore/jss/pull/695) Add settings for language fallback with Experience Edge. +* [#696](https://github.com/Sitecore/jss/pull/696) Add `IncludeServerUrlInMediaUrls` "default" configuration to avoid exposing the Sitecore server publicly when using Experience Edge. + +`[react]` `[angular]` and `[vue]` samples can also utilize Sitecore Experience Edge. A new `[node-headless-ssr-experience-edge]` sample has been adeded to demonstrate how to configure this. [Read docs](/docs/techniques/ssr/sitecore-experience-edge). + +### Documentation + +We have added/updated documentation for our main package and our Next.js SDK, as follows: + +For `sitecore-jss`, see: +* [Dictionary Service](https://jss.sitecore.com/docs/fundamentals/services/dictionary/overview). +* [Layout Service](https://jss.sitecore.com/docs/fundamentals/services/layout/overview). +* [JSS reference docs](https://github.com/Sitecore/jss/tree/release/18.0.0/ref-docs/sitecore-jss). + +For `sitecore-jss-nextjs`, see: +* [GraphQL Sitemap Service](https://jss.sitecore.com/docs/nextjs/services/graphql-sitemap-service). +* [Next.js SDK reference docs](https://github.com/Sitecore/jss/tree/release/18.0.0/ref-docs/sitecore-jss-nextjs). + + +### New & Improved Service Classes + +`[sitecore-jss]` +* `GraphQLDictionaryService` is a new service for fetching dictionary data using GraphQL [Read docs](https://jss.sitecore.com/docs/fundamentals/services/dictionary/jss-dictionary-api). +* `GraphQLLayoutService` is a new service for fetching layout data using GraphQL [Read docs](https://jss.sitecore.com/docs/fundamentals/services/layout/jss-layout-api). +* [#716](https://github.com/Sitecore/jss/pull/716) Allow overriding which "named" Layout Service configuration (from Sitecore config) is used by JSS. +* Allow overriding 3rd party dependencies in JSS services that depend on 3rd party functionality (GraphQLLayoutService, RestDictionaryService, GraphQLDictionaryService, GraphQLSitemapService). + +`[sitecore-jss-nextjs]` +* Make `GraphQLSitemapService` easier to customize by allowing overrides of default options. ([#682](https://github.com/Sitecore/jss/pull/682), [#705](https://github.com/Sitecore/jss/pull/705)) + +### Other Notable Improvements + +* `[sitecore-jss]` Enable **debug logging** for JSS services using the [debug](https://www.npmjs.com/package/debug) module. [Read docs](/docs/fundamentals/troubleshooting/debug-logging). +* New options in `jss create` command. [Read docs](/docs/fundamentals/cli#jss-create). + +`[samples/react-native]` (#624) +* Add shared `` component in order to have shared navigation panel. +* Make Sitecore logo in header is touchable and will navigate to Home page when click on it. +* Remove usage of `dataConversation`. + +### Bug Fixes + +`[sitecore-jss]` +* Fix issue with dictionary phrases not being cached when caching is enabled (#639) +* `mediaApi.updateImageUrl` now *only* switches to JSS media handler prefix if `imageParams` are sent. Otherwise, the original media URL is returned. Fixes hash errors ("ERROR MediaRequestProtection: An invalid/missing hash value was encountered.") from appearing in Sitecore logs (#681) + +`[samples/nextjs]` `[samples/react]` `[samples/vue]` +* Fix issue where using the `jss scaffold` generated files with inconsistent line endings (#684) +* Update Text components to accept number values (#713) + +`[sitecore-jss-nextjs]` +* Fix issue with `getStaticPaths`only pre-rendering the first 10 pages (638) +* Fix issue where links inside RichText controls caused pages to load twice (659) + +`[sitecore-jss-react]` Render value instead of array of single value when value doesn't contain line breaks (714) + +`[sitecore-jss-react-native]` (#624) +* [Image] Pass Object `style` type for `SvgUrI` instead of Array. +* [Date] Always render `` if `editable` is provided. + +`[samples/react-native]` (#624) +* Fix Styleguide-FieldUsage-Date not working in connected mode. +* **Styleguide-FieldUsage-Image**: Fix incorrect `src` prop type in disconnected mode. Fix 'Plain image' example in connected mode. Remove unsupported 'Srcset image' adaptive example. +* **Styleguide-ComponentParams**: fix incorrect `params` prop types in connected mode. +* Fix connected tunnel mode for secure (https) Sitecore endpoints. + +`[samples/node-headless-ssr-proxy]` Fix how header value for 'accept-encoding' is set. This resolves an issue in the Angular sample where the /graphql page caused a console error (#680) + +`[sitecore-jss-forms]` Fix issue where pre-filled (default) form data isn't removed for multi-valued fields when user de-selects values (#677) + +. + +. + +## Sitecore JSS 16.0 for Sitecore 10.1 ### Upgrading @@ -37,7 +138,11 @@ There are [migration instructions](/upgrade-guides/16.0) from JSS 15-based appli * [PR #459](https://github.com/Sitecore/jss/pull/459) [sitecore-jss-react] Fix propType of `missingComponentComponent`, resolving an issue with custom "Missing Component" components not working. * [PR #538](https://github.com/Sitecore/jss/pull/538) [sitecore-jss-react] Fix propType of `errorComponent`, resolving an issue with custom "Error" components not working. * [PR #521](https://github.com/Sitecore/jss/pull/521) [packages/samples] Upgrade react, react-dom. -* + +. + +. + ## Sitecore JSS 15.0.1 ### Bug Fixes diff --git a/docs/data/routes/upgrade-guides/18.0/en.md b/docs/data/routes/upgrade-guides/18.0/en.md new file mode 100644 index 0000000000..8577e78940 --- /dev/null +++ b/docs/data/routes/upgrade-guides/18.0/en.md @@ -0,0 +1,82 @@ +--- +name: "18.0" +routeTemplate: ./data/component-templates/full-page.yml +title: Upgrading to JSS 18.0 +--- + +# Upgrading from JSS 16.0 to JSS 18.0 + +1. Update peer dependencies version. +2. Update all @sitecore-jss/* packages to the latest 18.x version. +3. Angular sample: + * Upgrade Angular to version 11. Use [Angular update guide](https://update.angular.io/?l=3&v=10.0-11.0). +4. Next.js sample: + * Keep only one `[[...path]]` page if upgrading from the source code of the sample application. See the explanation for this in our [Troubleshooting guide for Next.js](/docs/nextjs/troubleshooting#app-fails-to-render-on-vercel-after-1800-upgrade). + +## API changes in `sitecore-jss` package + +With the added support of GraphQL endpoints, the API surface area of JSS has essentially doubled. As a result, some reorganizing was done in the base packages, which causes breaking changes for how some services, classes and functions are exported. + +If you are importing any of these into your project, the imports need to be updated per the table below. + +|Service Type|JSS 16.0 API | JSS 18.0 API | change description +|---|---|---|--- +|**General data fetching**||| +||`dataApi.fetchData` | `fetchData` | exported directly +||`HttpResponse` | - | no change +||`HttpJsonFetcher` | `HttpDataFetcher` | renamed +||`AxiosDataFetcher` | - | no change +||`AxiosDataFetcherConfig` | - | no change +||`GraphQLRequestClient` | - | no change +||| `GraphQLRequestClientConfig` | new +|**Media API**||| +||`mediaApi.*` | - | no change +|**Layout Service & Route Data**||| +||`dataApi.LayoutServiceConfig` | `LayoutServiceConfig` | exported directly +||`dataApi.BaseRequestOptions` |X| merged into `LayoutServiceRequestOptions` +||`dataApi.LayoutServiceRequestOptions`* |X | removed +||`dataApi.fetchRouteData`** | - | no change +||`dataApi.fetchPlaceholderData`** | - | no change +||`LayoutService` | - | no change +||`LayoutServiceRequestOptions` | - | no change +||`RestLayoutService` | - | no change +||`RestLayoutServiceConfig` | - | no change +||`DataFetcherResolver` | - | no change +||`LayoutServiceData` | - | no change +||`LayoutServicePageState` | - | no change +||`LayoutServiceContext` | - | no change +||`LayoutServiceContextData` | - | no change +||X| `GraphQLLayoutService` | new +||X| `GraphQLLayoutServiceConfig` | new +||`RouteData` | - | no change +||`PlaceholderData` | - | no change +||`ComponentRendering` | - | no change +||`HtmlElementRendering` | - | no change +||`Field` | - | no change +||`Item` | - | no change +||`PlaceholdersData` | - | no change +||`ComponentFields` | - | no change +||`ComponentParams` | - | no change +||`getFieldValue` | - | no change +||`getChildPlaceholder` | - | no change +|**Internationalization**||| +||`DictionaryPhrases` | - | no change +||`DictionaryService` | - | no change +||`DictionaryServiceData` | `RestDictionaryServiceData` | renamed +||`RestDictionaryService` | - | no change +||`RestDictionaryServiceConfig` | - | no change +||X| `GraphQLDictionaryService` | new +||X| `GraphQLDictionaryServiceConfig` | new +|**Utilities**||| +||`isExperienceEditorActive` | - | no change +||`isServer` | - | no change +||`resetExperienceEditorChromes` | - | no change +||X| `resolveUrl` | new +||X| `getAppRootId` | new +||X| `constants` | new +||X| `debug` | new +||X| `Debugger` | new + +> \* in JSS 16.0, `dataApi.LayoutServiceRequestOptions` was also exported as `LayoutServiceRequestOptions`. Only the `dataApi.LayoutServiceRequestOptions` export has been removed. Importing `LayoutServiceRequestOptions` is still valid. + +> ** `dataApi.fetchRouteData` and `dataApi.fetchPlaceholderData` are deprecated and will be removed in a future release. These are the only two remaining exports from `dataApi`, so any references to `dataApi` should be removed. diff --git a/docs/package-lock.json b/docs/package-lock.json index 0f03422ebf..4b3fbaf573 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -1,6 +1,6 @@ { "name": "sitecore-jss-docs", - "version": "13.0.0", + "version": "16.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2061,9 +2061,9 @@ }, "dependencies": { "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true } } @@ -3014,24 +3014,30 @@ "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true } } @@ -4610,9 +4616,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "hpack.js": { @@ -5603,9 +5609,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash._baseget": { @@ -8314,9 +8320,9 @@ } }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yargs": { "version": "14.2.3", @@ -9460,9 +9466,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -10392,9 +10398,9 @@ "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "yallist": { diff --git a/docs/package.json b/docs/package.json index 91b0124538..a4a865a0b7 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,10 +1,10 @@ { "name": "sitecore-jss-docs", - "version": "13.0.0", + "version": "16.0.0", "description": "Doc site for Sitecore JavaScript SDK", "engines": { - "node": "10.17.0", - "npm": "6.11.3" + "node": "14.16.0", + "npm": "6.14.11" }, "config": { "appName": "JssDocs", diff --git a/docs/sitecore/definitions/routes.sitecore.js b/docs/sitecore/definitions/routes.sitecore.js index 34f8c9e557..07f1deb5c3 100644 --- a/docs/sitecore/definitions/routes.sitecore.js +++ b/docs/sitecore/definitions/routes.sitecore.js @@ -96,7 +96,7 @@ const parseRouteData = (sourceRouteData, file) => { const relativePath = path.relative(rootPath, file).replace(/\\/g, '/'); routeData.fields.editLink = { text: 'Edit this on GitHub', - href: `https://github.com/Sitecore/jss/edit/master/docs/${relativePath}`, + href: `https://github.com/Sitecore/jss/edit/release/18.0.0/docs/${relativePath}`, }; } diff --git a/docs/src/app/components/FeatureJumboShort.js b/docs/src/app/components/FeatureJumboShort.js index 15455ec70b..e586b8a7f4 100644 --- a/docs/src/app/components/FeatureJumboShort.js +++ b/docs/src/app/components/FeatureJumboShort.js @@ -5,32 +5,8 @@ import { RichText, Text, Image } from '@sitecore-jss/sitecore-jss-react'; const FeatureJumboShort = ({ fields }) => (
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/docs/src/app/components/Navigation/docs.js b/docs/src/app/components/Navigation/docs.js index 2b490f7213..f8c05ce737 100644 --- a/docs/src/app/components/Navigation/docs.js +++ b/docs/src/app/components/Navigation/docs.js @@ -133,39 +133,13 @@ export default { displayName: 'Understanding layout', }, { - url: 'personalization', - displayName: 'Personalization', - }, - { - url: 'dev-workflows', - displayName: 'Developer workflows', + url: 'services', + displayName: 'Services and APIs', children: [ { - url: 'overview', + url: 'services-overview', displayName: 'Overview', }, - { - url: 'code-first', - displayName: 'Code-first', - }, - { - url: 'sitecore-first', - displayName: 'Sitecore-first', - }, - ], - }, - { - url: 'application-modes', - displayName: 'Application modes', - }, - { - url: 'cli', - displayName: 'JSS CLI', - }, - { - url: 'services', - displayName: 'Services and APIs', - children: [ { url: 'app-configuration', displayName: 'App Configuration', @@ -175,8 +149,22 @@ export default { displayName: 'App Import', }, { - url: 'layout-service', - displayName: 'Layout Service', + url: 'layout', + displayName: 'Layout', + children: [ + { + url: 'overview', + displayName: 'Overview' + }, + { + url: 'sitecore-layout-service', + displayName: 'Sitecore Layout Service' + }, + { + url: 'jss-layout-api', + displayName: 'JSS Layout API' + } + ] }, { url: 'graphql', @@ -191,8 +179,22 @@ export default { displayName: 'Forms', }, { - url: 'dictionary-service', - displayName: 'Dictionary Service', + url: 'dictionary', + displayName: 'Dictionary', + children: [ + { + url: 'overview', + displayName: 'Overview' + }, + { + url: 'sitecore-dictionary-service', + displayName: 'Sitecore Dictionary Service' + }, + { + url: 'jss-dictionary-api', + displayName: 'JSS Dictionary API' + } + ] }, { url: 'view-engine', @@ -200,6 +202,37 @@ export default { }, ], }, + { + url: 'personalization', + displayName: 'Personalization', + }, + { + url: 'dev-workflows', + displayName: 'Developer workflows', + children: [ + { + url: 'overview', + displayName: 'Overview', + }, + { + url: 'code-first', + displayName: 'Code-first', + }, + { + url: 'sitecore-first', + displayName: 'Sitecore-first', + }, + ], + }, + { + url: 'application-modes', + displayName: 'Application modes', + }, + { + url: 'cli', + displayName: 'JSS CLI', + }, + { url: 'troubleshooting', displayName: 'Troubleshooting', @@ -208,6 +241,10 @@ export default { url: 'node-certificates', displayName: 'Sitecore CA certificates for Node.js', }, + { + url: 'debug-logging', + displayName: 'Debug logging', + }, ], }, ], @@ -290,6 +327,10 @@ export default { url: 'headless-mode-ssr', displayName: 'via Headless Mode', }, + { + url: 'ssr-experience-edge', + displayName: 'using Experience Edge', + }, { url: 'server-rendering-viewbag', displayName: 'Adding Data for SSR', diff --git a/docs/src/app/components/Navigation/nextjs.js b/docs/src/app/components/Navigation/nextjs.js index 0165018d02..5ee38b70e0 100644 --- a/docs/src/app/components/Navigation/nextjs.js +++ b/docs/src/app/components/Navigation/nextjs.js @@ -34,6 +34,16 @@ export default { } ], }, + { + url: 'services', + displayName: 'Services & APIs', + children: [ + { + url: 'graphql-sitemap-service', + displayName: 'GraphQL Sitemap Service' + } + ] + }, { url: 'experience-editor', displayName: 'Experience Editor', @@ -86,11 +96,11 @@ export default { }, { url: 'switching-to-ssr', - displayName: 'Switching to SSR', + displayName: 'Switching between SSG and SSR', }, { - url: 'error-pages', - displayName: 'Error Pages', + url: 'error-pages', + displayName: 'Error Pages', }, ], }, @@ -104,16 +114,20 @@ export default { }, { url: 'getStaticPaths', - displayName: 'getStaticPaths & sitemap service', + displayName: 'getStaticPaths', + }, + { + url: 'customizing-static-paths', + displayName: 'Customizing static paths', }, - //{ - // url: 'customizing-static-paths', - // displayName: 'Customizing static paths', - //}, { url: 'component-level-data-fetching', displayName: 'Component-level data fetching', }, + { + url: 'switching-fetch-method', + displayName: 'Switching between REST and GraphQL', + } ], }, { @@ -124,10 +138,10 @@ export default { // url: 'edge-schema-introduction', // displayName: 'Introduction to the Edge Schema', //}, - //{ - // url: 'sample-app', - // displayName: 'Sitecore GraphQL in the sample app', - //}, + { + url: 'sample-app', + displayName: 'Sitecore GraphQL in the sample app', + }, { url: 'introspection', displayName: 'Introspecting the GraphQL schema' diff --git a/docs/src/app/components/RouteLinkedRichText.js b/docs/src/app/components/RouteLinkedRichText.js index fba0cbe46f..c830169cd6 100644 --- a/docs/src/app/components/RouteLinkedRichText.js +++ b/docs/src/app/components/RouteLinkedRichText.js @@ -16,7 +16,16 @@ class RouteLinkedRichText extends React.Component { // props.history comes from the react-router withRouter() higher order component. routeHandler(event) { event.preventDefault(); - this.props.history.push(event.target.pathname); + // Sometimes the event.target is an element wrapped in an anchor. + // In those cases, the previous code would not work, as `pathname` might be undefined. + // To fix, establish proper target. + const target = event.target.pathname ? event.target : event.target.parentElement + + const hash = target.hash + + let destination = hash ? `${target.pathname}${hash}` : target.pathname + + this.props.history.push(destination); } // rebinds event handlers to route links within this component diff --git a/docs/src/boot/RouteHandler.js b/docs/src/boot/RouteHandler.js index aa41baf9f7..3786aefb4c 100644 --- a/docs/src/boot/RouteHandler.js +++ b/docs/src/boot/RouteHandler.js @@ -21,7 +21,7 @@ export default class RouteHandler extends React.Component { this.state = { notFound: true }; } } - + componentWillReceiveProps(newProps) { const existingRoute = this.props.route.match.url; const newRoute = newProps.route.match.url; @@ -33,6 +33,9 @@ export default class RouteHandler extends React.Component { return; } + // grab location hash + let hash = newProps.route.location.hash; + // get the route data for the new route SitecoreContentService.getRouteData(newRoute).then((routeData) => { if (routeData !== null) { @@ -44,7 +47,26 @@ export default class RouteHandler extends React.Component { }); this.setState({ state: routeData, notFound: false }); - window.scrollTo(0, 0); + + // handle hash presence + if (hash) { + let element = document.getElementById(hash.replace("#", "")); + + if (!element) { + return + } + + // Add scroll to hash + setTimeout(() => { + window.scrollTo({ + behavior: "auto", + top: element ? element.offsetTop : 0 + }); + }, 100); + } else { + window.scrollTo(0, 0); + } + } else { this.setState({ notFound: true }); } diff --git a/e2e/README.md b/e2e/README.md index d658d549b3..5b3c651c89 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -54,7 +54,7 @@ JSS has many possible operation modes that should be tested. Run the scripts in 1. Smokey e2e tests (foreach-instance XM, XP - NOT azure) - Execute Smokey on XM1/XP1 on-premise installations to verify disconnected and integrated mode workflows. 1. Azure-specific deploy + e2e tests (foreach-app, azure only) - - See https://jss.sitecore.net/docs/techniques/azure-deployment (don't forget to set the Node version) + - See https://jss.sitecore.com/docs/techniques/azure-deployment (don't forget to set the Node version) - Push build artifacts & configs via FTPS or Kudu - Import the site with `jss deploy items -c -d` in `en` and `da-DK` 1. Experience Editor testing (foreach-app react, angular, vue) @@ -124,7 +124,7 @@ _Execute after baseline script. Execute each step once per sample app (react, vu _Execute after baseline script._ -1. Perform all necessary setup steps for your environment (Android or iOS). Read the **Prerequisities** section of the `sitecore-jss-react-native` documentation for more information: http://jss.sitecore.net/docs/client-frameworks/react-native +1. Perform all necessary setup steps for your environment (Android or iOS). Read the **Prerequisities** section of the `sitecore-jss-react-native` documentation for more information: http://jss.sitecore.com/docs/client-frameworks/react-native - If you haven't done this before, it will take some time, plan accordingly. @@ -140,7 +140,7 @@ _Execute after baseline script._ 1. Start app in `connected-tunnel` mode with `jss start-android:connected-tunnel` or `jss start-ios:connected-tunnel` (depending on your platform). - Use `jss deploy items -c -d` to generate the app manifest and deploy to a Sitecore instance. - - Read the **Connected Tunnel Mode** section on the doc site for more information about what Connected Tunnel Mode is: http://jss.sitecore.net/docs/client-frameworks/react-native + - Read the **Connected Tunnel Mode** section on the doc site for more information about what Connected Tunnel Mode is: http://jss.sitecore.com/docs/client-frameworks/react-native - The build process for Connected Tunnel mode is the same as for Disconnected mode, just with different configuration. - The app will run in the simulator or physical device and should look identical to the app in Disconnected mode. - Make changes to app content and/or media in Sitecore, save/publish, then refresh app to ensure it is displaying the changes. @@ -157,7 +157,7 @@ _Execute after baseline script._ #### Client-side Embedding (Embedded Wizard) -This test plan basically mirrors the installation and verification instructions from the **Client-side Embedding** page of the doc site: http://jss.sitecore.net/docs/techniques/mvc-integration/client-side-embedding +This test plan basically mirrors the installation and verification instructions from the **Client-side Embedding** page of the doc site: http://jss.sitecore.com/docs/techniques/mvc-integration/client-side-embedding 1. Follow `Step 1` of the guide. @@ -169,7 +169,7 @@ This test plan basically mirrors the installation and verification instructions #### JavaScript Rendering Type -This test plan largely mirrors the **Getting Started** and **Component Library** sections of the **Sitecore JavaScript rendering** page of the doc site: http://jss.sitecore.net/docs/techniques/mvc-integration/javascript-rendering +This test plan largely mirrors the **Getting Started** and **Component Library** sections of the **Sitecore JavaScript rendering** page of the doc site: http://jss.sitecore.com/docs/techniques/mvc-integration/javascript-rendering 1. Follow the `Getting Started` section of the guide. diff --git a/e2e/cypress/package-lock.json b/e2e/cypress/package-lock.json index 2868803d53..9ff797aac0 100644 --- a/e2e/cypress/package-lock.json +++ b/e2e/cypress/package-lock.json @@ -793,9 +793,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "is-ci": { diff --git a/e2e/smokey/Pipelines/0 Setup/15 Deploy scjssconfig.json.ps1 b/e2e/smokey/Pipelines/0 Setup/15 Deploy scjssconfig.json.ps1 index f839726032..adba0a8f5a 100644 --- a/e2e/smokey/Pipelines/0 Setup/15 Deploy scjssconfig.json.ps1 +++ b/e2e/smokey/Pipelines/0 Setup/15 Deploy scjssconfig.json.ps1 @@ -29,4 +29,4 @@ $buildBlock = { & jss setup --nonInteractive --instancePath $global:SitecorePath --deployUrl "$hostName/sitecore/api/jss/import" --layoutServiceHost $hostName --apiKey $global:ApiKey --deploySecret "SmokeyGenerated-$secret" } -Invoke-ForEachSampleApp $buildBlock -blacklist @("node-headless-ssr-proxy", "react-native") +Invoke-ForEachSampleApp $buildBlock -blacklist @("node-headless-ssr-experience-edge", "node-headless-ssr-proxy", "react-native") diff --git a/e2e/smokey/Pipelines/0 Setup/60 Manifest Sample Apps.ps1 b/e2e/smokey/Pipelines/0 Setup/60 Manifest Sample Apps.ps1 index c4bd3919e4..4056585243 100644 --- a/e2e/smokey/Pipelines/0 Setup/60 Manifest Sample Apps.ps1 +++ b/e2e/smokey/Pipelines/0 Setup/60 Manifest Sample Apps.ps1 @@ -7,4 +7,4 @@ $buildBlock = { Write-Host "Manifesting all JSS sample apps..." # Note: React native does not have a build script -Invoke-ForEachSampleApp $buildBlock -blacklist @("node-headless-ssr-proxy", "react-native", "sitecore-javascript-renderings") +Invoke-ForEachSampleApp $buildBlock -blacklist @("node-headless-ssr-experience-edge", "node-headless-ssr-proxy", "react-native", "sitecore-javascript-renderings") diff --git a/e2e/smokey/Pipelines/0 Setup/70 Package Sample Apps.ps1 b/e2e/smokey/Pipelines/0 Setup/70 Package Sample Apps.ps1 index 76c213947d..579c96ce70 100644 --- a/e2e/smokey/Pipelines/0 Setup/70 Package Sample Apps.ps1 +++ b/e2e/smokey/Pipelines/0 Setup/70 Package Sample Apps.ps1 @@ -8,4 +8,4 @@ $buildBlock = { Write-Host "Packaging all JSS sample apps..." # Note: React native does not have a build script -Invoke-ForEachSampleApp $buildBlock -blacklist @("node-headless-ssr-proxy", "react-native", "sitecore-javascript-renderings") +Invoke-ForEachSampleApp $buildBlock -blacklist @("node-headless-ssr-experience-edge", "node-headless-ssr-proxy", "react-native", "sitecore-javascript-renderings") diff --git a/e2e/smokey/Pipelines/0 Setup/80 Deploy hosts entries.ps1 b/e2e/smokey/Pipelines/0 Setup/80 Deploy hosts entries.ps1 index 1b7253d118..6fe58c77d1 100644 --- a/e2e/smokey/Pipelines/0 Setup/80 Deploy hosts entries.ps1 +++ b/e2e/smokey/Pipelines/0 Setup/80 Deploy hosts entries.ps1 @@ -16,4 +16,4 @@ $buildBlock = { } # Note: Embedded Wizard sample uses an existing site, so it does not need a hosts entry -Invoke-ForEachSampleApp $buildBlock -blacklist @("node-headless-ssr-proxy", "sitecore-embedded-jss-app", "react-native", "sitecore-javascript-renderings") +Invoke-ForEachSampleApp $buildBlock -blacklist @("node-headless-ssr-experience-edge", "node-headless-ssr-proxy", "sitecore-embedded-jss-app", "react-native", "sitecore-javascript-renderings") diff --git a/e2e/smokey/Pipelines/1 Deploy/00 Deploy JSS Configs.ps1 b/e2e/smokey/Pipelines/1 Deploy/00 Deploy JSS Configs.ps1 index 2d755e763b..025db52665 100644 --- a/e2e/smokey/Pipelines/1 Deploy/00 Deploy JSS Configs.ps1 +++ b/e2e/smokey/Pipelines/1 Deploy/00 Deploy JSS Configs.ps1 @@ -5,4 +5,4 @@ $processBlock = { & jss deploy config } -Invoke-ForEachSampleApp $processBlock -blacklist @('node-headless-ssr-proxy', 'react-native', 'sitecore-javascript-renderings') \ No newline at end of file +Invoke-ForEachSampleApp $processBlock -blacklist @('node-headless-ssr-experience-edge', 'node-headless-ssr-proxy', 'react-native', 'sitecore-javascript-renderings') \ No newline at end of file diff --git a/e2e/smokey/Pipelines/1 Deploy/10 Deploy Sample Apps.ps1 b/e2e/smokey/Pipelines/1 Deploy/10 Deploy Sample Apps.ps1 index 615c9f240c..9181619996 100644 --- a/e2e/smokey/Pipelines/1 Deploy/10 Deploy Sample Apps.ps1 +++ b/e2e/smokey/Pipelines/1 Deploy/10 Deploy Sample Apps.ps1 @@ -6,4 +6,4 @@ $deployBlock = { & jss deploy app --skipPackage --skipBuild } -Invoke-ForEachSampleApp $deployBlock -blacklist @('node-headless-ssr-proxy', 'react-native', 'sitecore-javascript-renderings') +Invoke-ForEachSampleApp $deployBlock -blacklist @('node-headless-ssr-experience-edge', 'node-headless-ssr-proxy', 'react-native', 'sitecore-javascript-renderings') diff --git a/e2e/smokey/Pipelines/1 Deploy/20 Deploy Sample Apps - Danish.ps1 b/e2e/smokey/Pipelines/1 Deploy/20 Deploy Sample Apps - Danish.ps1 index 3f054318b4..e9c1cea6ba 100644 --- a/e2e/smokey/Pipelines/1 Deploy/20 Deploy Sample Apps - Danish.ps1 +++ b/e2e/smokey/Pipelines/1 Deploy/20 Deploy Sample Apps - Danish.ps1 @@ -6,4 +6,4 @@ $deployBlock = { & jss deploy items -c -d --language da-DK } -Invoke-ForEachSampleApp $deployBlock -blacklist @('node-headless-ssr-proxy', 'react-native', 'sitecore-javascript-renderings', 'sitecore-embedded-jss-app') +Invoke-ForEachSampleApp $deployBlock -blacklist @('node-headless-ssr-experience-edge', 'node-headless-ssr-proxy', 'react-native', 'sitecore-javascript-renderings', 'sitecore-embedded-jss-app') diff --git a/e2e/smokey/Pipelines/2 Test/10 Request app LS.ps1 b/e2e/smokey/Pipelines/2 Test/10 Request app LS.ps1 index 97bd6dddf2..7bbd798fc6 100644 --- a/e2e/smokey/Pipelines/2 Test/10 Request app LS.ps1 +++ b/e2e/smokey/Pipelines/2 Test/10 Request app LS.ps1 @@ -28,6 +28,7 @@ $buildBlock = { } Invoke-ForEachSampleApp $buildBlock -blacklist @( + "node-headless-ssr-experience-edge", "node-headless-ssr-proxy", "sitecore-embedded-jss-app", # does not come with a home item we can request as it's embedded "react-native", # mobile app has no home page diff --git a/e2e/smokey/Pipelines/2 Test/20 Request app Dictionary Service.ps1 b/e2e/smokey/Pipelines/2 Test/20 Request app Dictionary Service.ps1 index cb97796bef..0a445bae14 100644 --- a/e2e/smokey/Pipelines/2 Test/20 Request app Dictionary Service.ps1 +++ b/e2e/smokey/Pipelines/2 Test/20 Request app Dictionary Service.ps1 @@ -30,6 +30,7 @@ $buildBlock = { } Invoke-ForEachSampleApp $buildBlock -blacklist @( + "node-headless-ssr-experience-edge", "node-headless-ssr-proxy", "sitecore-embedded-jss-app", # does not come with a home item we can request as it's embedded "react-native", # mobile app has no home page diff --git a/e2e/smokey/Pipelines/2 Test/30 Request app SSR pages.ps1 b/e2e/smokey/Pipelines/2 Test/30 Request app SSR pages.ps1 index 28954edbb8..6b7bc3b5ea 100644 --- a/e2e/smokey/Pipelines/2 Test/30 Request app SSR pages.ps1 +++ b/e2e/smokey/Pipelines/2 Test/30 Request app SSR pages.ps1 @@ -26,6 +26,7 @@ $buildBlock = { } Invoke-ForEachSampleApp $buildBlock -blacklist @( + "node-headless-ssr-experience-edge", "node-headless-ssr-proxy", "sitecore-embedded-jss-app", # does not come with a home item we can request as it's embedded "react-native", # mobile app has no home page diff --git a/e2e/smokey/Pipelines/2 Test/40 Run cypress e2e tests.ps1 b/e2e/smokey/Pipelines/2 Test/40 Run cypress e2e tests.ps1 index bbe5fd996a..e05389da10 100644 --- a/e2e/smokey/Pipelines/2 Test/40 Run cypress e2e tests.ps1 +++ b/e2e/smokey/Pipelines/2 Test/40 Run cypress e2e tests.ps1 @@ -41,6 +41,7 @@ $buildBlock = { } Invoke-ForEachSampleApp $buildBlock -blacklist @( + "node-headless-ssr-experience-edge", "node-headless-ssr-proxy", "sitecore-embedded-jss-app", # does not come with a home item we can request as it's embedded "react-native", # mobile app has no home page diff --git a/lerna.json b/lerna.json index bcb0d55f8c..cc39cea370 100644 --- a/lerna.json +++ b/lerna.json @@ -4,5 +4,5 @@ "packages/*", "samples/*" ], - "version": "16.0.0" + "version": "18.0.0-canary.7" } diff --git a/package-lock.json b/package-lock.json index bc95871d11..dd84c5c5b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,47 +11,6 @@ "@babel/highlight": "^7.10.4" } }, - "@babel/core": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", - "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.6", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.5", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.5", - "@babel/types": "^7.11.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "@babel/generator": { "version": "7.11.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", @@ -63,91 +22,6 @@ "source-map": "^0.5.0" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", - "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx-experimental": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.11.5.tgz", - "integrity": "sha512-Vc4aPJnRZKWfzeCBsqTBnzulVNjABVdahSPhtdMD3Vs80ykx4a87jTHtF/VR+alSrDmNvat7l13yrRHauGcHVw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/types": "^7.11.5" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" - } - }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", - "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, "@babel/helper-function-name": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", @@ -168,94 +42,6 @@ "@babel/types": "^7.10.4" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - } - }, "@babel/helper-split-export-declaration": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", @@ -271,17 +57,6 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, - "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, "@babel/highlight": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", @@ -299,2806 +74,3234 @@ "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", "dev": true }, - "@babel/plugin-external-helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.10.4.tgz", - "integrity": "sha512-5mASqSthmRNYVXOphYzlqmR3Y8yp5SZMZhtKDh2DGV3R2PWGLEmP7qOahw66//6m4hjhlpV1bVM7xIJHt1F77Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-export-default-from": { + "@babel/template": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.10.4.tgz", - "integrity": "sha512-G1l00VvDZ7Yk2yRlC5D8Ybvu3gmeHS3rCHoUYdjrqGYUtdeOBoRypnvDZ5KQqxyaiiGHWnVDeSEzA5F9ozItig==", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-export-default-from": "^7.10.4" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "@babel/traverse": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "@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": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "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" + } + } } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "@evocateur/libnpmaccess": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz", + "integrity": "sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@evocateur/npm-registry-fetch": "^4.0.0", + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "npm-package-arg": "^6.1.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + } } }, - "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "@evocateur/libnpmpublish": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz", + "integrity": "sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@evocateur/npm-registry-fetch": "^4.0.0", + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "semver": "^5.5.1", + "ssri": "^6.0.1" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "@evocateur/npm-registry-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz", + "integrity": "sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.1.2" } }, - "@babel/plugin-syntax-export-default-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.4.tgz", - "integrity": "sha512-79V6r6Pgudz0RnuMGp5xidu6Z+bPFugh8/Q9eDHonmLp4wKFAZDwygJwYgCzuDu8lFA/sYyT+mc5y2wkd7bTXA==", + "@evocateur/pacote": { + "version": "9.6.5", + "resolved": "https://registry.npmjs.org/@evocateur/pacote/-/pacote-9.6.5.tgz", + "integrity": "sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", - "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@evocateur/npm-registry-fetch": "^4.0.0", + "bluebird": "^3.5.3", + "cacache": "^12.0.3", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.5.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.4.4", + "npm-pick-manifest": "^3.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.3", + "safe-buffer": "^5.2.0", + "semver": "^5.7.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "@babel/plugin-syntax-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", - "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "@lerna/add": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-3.21.0.tgz", + "integrity": "sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@evocateur/pacote": "^9.6.3", + "@lerna/bootstrap": "3.21.0", + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/npm-conf": "3.16.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "npm-package-arg": "^6.1.0", + "p-map": "^2.1.0", + "semver": "^6.2.0" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "@lerna/bootstrap": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.21.0.tgz", + "integrity": "sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/has-npm-version": "3.16.5", + "@lerna/npm-install": "3.16.5", + "@lerna/package-graph": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/rimraf-dir": "3.16.5", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", + "@lerna/symlink-binary": "3.17.0", + "@lerna/symlink-dependencies": "3.17.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "get-port": "^4.2.0", + "multimatch": "^3.0.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0", + "p-waterfall": "^1.0.0", + "read-package-tree": "^5.1.6", + "semver": "^6.2.0" } }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "@lerna/changed": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-3.21.0.tgz", + "integrity": "sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@lerna/collect-updates": "3.20.0", + "@lerna/command": "3.21.0", + "@lerna/listable": "3.18.5", + "@lerna/output": "3.13.0" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "@lerna/check-working-tree": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz", + "integrity": "sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@lerna/collect-uncommitted": "3.16.5", + "@lerna/describe-ref": "3.16.5", + "@lerna/validation-error": "3.13.0" } }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "@lerna/child-process": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-3.16.5.tgz", + "integrity": "sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "chalk": "^2.3.1", + "execa": "^1.0.0", + "strong-log-transformer": "^2.0.0" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", - "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", + "@lerna/clean": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-3.21.0.tgz", + "integrity": "sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/rimraf-dir": "3.16.5", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0", + "p-waterfall": "^1.0.0" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "@lerna/cli": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-3.18.5.tgz", + "integrity": "sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/global-options": "3.13.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2", + "yargs": "^14.2.2" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "@lerna/collect-uncommitted": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz", + "integrity": "sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/child-process": "3.16.5", + "chalk": "^2.3.1", + "figgy-pudding": "^3.5.1", + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "@lerna/collect-updates": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-3.20.0.tgz", + "integrity": "sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/child-process": "3.16.5", + "@lerna/describe-ref": "3.16.5", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "slash": "^2.0.0" } }, - "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "@lerna/command": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-3.21.0.tgz", + "integrity": "sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", - "globals": "^11.1.0" + "@lerna/child-process": "3.16.5", + "@lerna/package-graph": "3.18.5", + "@lerna/project": "3.21.0", + "@lerna/validation-error": "3.13.0", + "@lerna/write-log-file": "3.13.0", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^1.0.0", + "is-ci": "^2.0.0", + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "@lerna/conventional-commits": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz", + "integrity": "sha512-z4ZZk1e8Mhz7+IS8NxHr64wyklHctCJyWpJKEZZPJiLFJ8yKto/x38O80R10pIzC0rr8Sy/OsjSH4bl0TbbgqA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/validation-error": "3.13.0", + "conventional-changelog-angular": "^5.0.3", + "conventional-changelog-core": "^3.1.6", + "conventional-recommended-bump": "^5.0.0", + "fs-extra": "^8.1.0", + "get-stream": "^4.0.0", + "lodash.template": "^4.5.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "pify": "^4.0.1", + "semver": "^6.2.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, - "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "@lerna/create": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-3.22.0.tgz", + "integrity": "sha512-MdiQQzCcB4E9fBF1TyMOaAEz9lUjIHp1Ju9H7f3lXze5JK6Fl5NYkouAvsLgY6YSIhXMY8AHW2zzXeBDY4yWkw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@evocateur/pacote": "^9.6.3", + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.21.0", + "@lerna/npm-conf": "3.16.0", + "@lerna/validation-error": "3.13.0", + "camelcase": "^5.0.0", + "dedent": "^0.7.0", + "fs-extra": "^8.1.0", + "globby": "^9.2.0", + "init-package-json": "^1.10.3", + "npm-package-arg": "^6.1.0", + "p-reduce": "^1.0.0", + "pify": "^4.0.1", + "semver": "^6.2.0", + "slash": "^2.0.0", + "validate-npm-package-license": "^3.0.3", + "validate-npm-package-name": "^3.0.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "@lerna/create-symlink": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-3.16.2.tgz", + "integrity": "sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@zkochan/cmd-shim": "^3.1.0", + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz", - "integrity": "sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ==", + "@lerna/describe-ref": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-3.16.5.tgz", + "integrity": "sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.10.4" + "@lerna/child-process": "3.16.5", + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "@lerna/diff": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-3.21.0.tgz", + "integrity": "sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.21.0", + "@lerna/validation-error": "3.13.0", + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "@lerna/exec": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-3.21.0.tgz", + "integrity": "sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/profiler": "3.20.0", + "@lerna/run-topologically": "3.18.5", + "@lerna/validation-error": "3.13.0", + "p-map": "^2.1.0" } }, - "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "@lerna/filter-options": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-3.20.0.tgz", + "integrity": "sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/collect-updates": "3.20.0", + "@lerna/filter-packages": "3.18.0", + "dedent": "^0.7.0", + "figgy-pudding": "^3.5.1", + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "@lerna/filter-packages": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-3.18.0.tgz", + "integrity": "sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@lerna/validation-error": "3.13.0", + "multimatch": "^3.0.0", + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-object-assign": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.10.4.tgz", - "integrity": "sha512-6zccDhYEICfMeQqIjuY5G09/yhKzG30DKHJeYBQUHIsJH7c2jXSGvgwRalufLAXAq432OSlsEfAOLlzEsQzxVw==", + "@lerna/get-npm-exec-opts": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz", + "integrity": "sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "@lerna/get-packed": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-3.16.0.tgz", + "integrity": "sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" + "fs-extra": "^8.1.0", + "ssri": "^6.0.1", + "tar": "^4.4.8" } }, - "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "@lerna/github-client": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-3.22.0.tgz", + "integrity": "sha512-O/GwPW+Gzr3Eb5bk+nTzTJ3uv+jh5jGho9BOqKlajXaOkMYGBELEAqV5+uARNGWZFvYAiF4PgqHb6aCUu7XdXg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/child-process": "3.16.5", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^16.28.4", + "git-url-parse": "^11.1.2", + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "@lerna/gitlab-client": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz", + "integrity": "sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "node-fetch": "^2.5.0", + "npmlog": "^4.1.2", + "whatwg-url": "^7.0.0" } }, - "@babel/plugin-transform-react-display-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz", - "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } + "@lerna/global-options": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-3.13.0.tgz", + "integrity": "sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ==", + "dev": true }, - "@babel/plugin-transform-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", - "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", + "@lerna/has-npm-version": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz", + "integrity": "sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "^7.10.4", - "@babel/helper-builder-react-jsx-experimental": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@lerna/child-process": "3.16.5", + "semver": "^6.2.0" } }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz", - "integrity": "sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg==", + "@lerna/import": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-3.22.0.tgz", + "integrity": "sha512-uWOlexasM5XR6tXi4YehODtH9Y3OZrFht3mGUFFT3OIl2s+V85xIGFfqFGMTipMPAGb2oF1UBLL48kR43hRsOg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.21.0", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "fs-extra": "^8.1.0", + "p-map-series": "^1.0.0" } }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz", - "integrity": "sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA==", + "@lerna/info": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-3.21.0.tgz", + "integrity": "sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@lerna/command": "3.21.0", + "@lerna/output": "3.13.0", + "envinfo": "^7.3.1" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "@lerna/init": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-3.21.0.tgz", + "integrity": "sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg==", "dev": true, "requires": { - "regenerator-transform": "^0.14.2" + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.21.0", + "fs-extra": "^8.1.0", + "p-map": "^2.1.0", + "write-json-file": "^3.2.0" } }, - "@babel/plugin-transform-runtime": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz", - "integrity": "sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg==", + "@lerna/link": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-3.21.0.tgz", + "integrity": "sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "resolve": "^1.8.1", - "semver": "^5.5.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "@lerna/command": "3.21.0", + "@lerna/package-graph": "3.18.5", + "@lerna/symlink-dependencies": "3.17.0", + "p-map": "^2.1.0", + "slash": "^2.0.0" } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "@lerna/list": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-3.21.0.tgz", + "integrity": "sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/listable": "3.18.5", + "@lerna/output": "3.13.0" } }, - "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "@lerna/listable": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-3.18.5.tgz", + "integrity": "sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + "@lerna/query-graph": "3.18.5", + "chalk": "^2.3.1", + "columnify": "^1.5.4" } }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "@lerna/log-packed": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-3.16.0.tgz", + "integrity": "sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" + "byte-size": "^5.0.1", + "columnify": "^1.5.4", + "has-unicode": "^2.0.1", + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "@lerna/npm-conf": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-3.16.0.tgz", + "integrity": "sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "config-chain": "^1.1.11", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, - "@babel/plugin-transform-typescript": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz", - "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==", + "@lerna/npm-dist-tag": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz", + "integrity": "sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-typescript": "^7.10.4" + "@evocateur/npm-registry-fetch": "^4.0.0", + "@lerna/otplease": "3.18.5", + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "@lerna/npm-install": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-3.16.5.tgz", + "integrity": "sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@lerna/child-process": "3.16.5", + "@lerna/get-npm-exec-opts": "3.13.0", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "signal-exit": "^3.0.2", + "write-pkg": "^3.1.0" } }, - "@babel/register": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.11.5.tgz", - "integrity": "sha512-CAml0ioKX+kOAvBQDHa/+t1fgOt3qkTIz0TrRtRAT6XY0m5qYZXR85k6/sLCNPMGhYDlCFHCYuU0ybTJbvlC6w==", + "@lerna/npm-publish": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-3.18.5.tgz", + "integrity": "sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "lodash": "^4.17.19", - "make-dir": "^2.1.0", - "pirates": "^4.0.0", - "source-map-support": "^0.5.16" + "@evocateur/libnpmpublish": "^1.2.2", + "@lerna/otplease": "3.18.5", + "@lerna/run-lifecycle": "3.16.2", + "figgy-pudding": "^3.5.1", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "pify": "^4.0.1", + "read-package-json": "^2.0.13" }, "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true } } }, - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "@lerna/npm-run-script": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz", + "integrity": "sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "@lerna/child-process": "3.16.5", + "@lerna/get-npm-exec-opts": "3.13.0", + "npmlog": "^4.1.2" } }, - "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "@lerna/otplease": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-3.18.5.tgz", + "integrity": "sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@lerna/prompt": "3.18.5", + "figgy-pudding": "^3.5.1" } }, - "@babel/traverse": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", - "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", + "@lerna/output": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-3.13.0.tgz", + "integrity": "sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.5", - "@babel/types": "^7.11.5", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "npmlog": "^4.1.2" } }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "@lerna/pack-directory": { + "version": "3.16.4", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-3.16.4.tgz", + "integrity": "sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "dev": true, - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "@lerna/get-packed": "3.16.0", + "@lerna/package": "3.16.0", + "@lerna/run-lifecycle": "3.16.2", + "figgy-pudding": "^3.5.1", + "npm-packlist": "^1.4.4", + "npmlog": "^4.1.2", + "tar": "^4.4.10", + "temp-write": "^3.4.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==", + "@lerna/package": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-3.16.0.tgz", + "integrity": "sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw==", "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" + "load-json-file": "^5.3.0", + "npm-package-arg": "^6.1.0", + "write-pkg": "^3.1.0" }, "dependencies": { - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" } - } - } - }, - "@evocateur/libnpmaccess": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz", - "integrity": "sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg==", - "dev": true, - "requires": { - "@evocateur/npm-registry-fetch": "^4.0.0", - "aproba": "^2.0.0", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.0.0", - "npm-package-arg": "^6.1.0" - }, - "dependencies": { - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", "dev": true } } }, - "@evocateur/libnpmpublish": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz", - "integrity": "sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg==", + "@lerna/package-graph": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-3.18.5.tgz", + "integrity": "sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA==", "dev": true, "requires": { - "@evocateur/npm-registry-fetch": "^4.0.0", - "aproba": "^2.0.0", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.0.0", - "lodash.clonedeep": "^4.5.0", - "normalize-package-data": "^2.4.0", + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/validation-error": "3.13.0", "npm-package-arg": "^6.1.0", - "semver": "^5.5.1", - "ssri": "^6.0.1" - }, - "dependencies": { - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "npmlog": "^4.1.2", + "semver": "^6.2.0" } }, - "@evocateur/npm-registry-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz", - "integrity": "sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g==", + "@lerna/prerelease-id-from-version": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz", + "integrity": "sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA==", "dev": true, "requires": { - "JSONStream": "^1.3.4", - "bluebird": "^3.5.1", - "figgy-pudding": "^3.4.1", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "npm-package-arg": "^6.1.0", - "safe-buffer": "^5.1.2" + "semver": "^6.2.0" } }, - "@evocateur/pacote": { - "version": "9.6.5", - "resolved": "https://registry.npmjs.org/@evocateur/pacote/-/pacote-9.6.5.tgz", - "integrity": "sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w==", + "@lerna/profiler": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-3.20.0.tgz", + "integrity": "sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg==", "dev": true, "requires": { - "@evocateur/npm-registry-fetch": "^4.0.0", - "bluebird": "^3.5.3", - "cacache": "^12.0.3", - "chownr": "^1.1.2", "figgy-pudding": "^3.5.1", - "get-stream": "^4.1.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "minimatch": "^3.0.4", - "minipass": "^2.3.5", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "normalize-package-data": "^2.5.0", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.4.4", - "npm-pick-manifest": "^3.0.0", - "osenv": "^0.1.5", - "promise-inflight": "^1.0.1", - "promise-retry": "^1.1.1", - "protoduck": "^5.0.1", - "rimraf": "^2.6.3", - "safe-buffer": "^5.2.0", - "semver": "^5.7.0", - "ssri": "^6.0.1", - "tar": "^4.4.10", - "unique-filename": "^1.1.1", - "which": "^1.3.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2", + "upath": "^1.2.0" } }, - "@jest/types": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.5.2.tgz", - "integrity": "sha512-QDs5d0gYiyetI8q+2xWdkixVQMklReZr4ltw7GFDtb4fuJIBCE6mzj2LnitGqCuAlLap6wPyb8fpoHgwZz5fdg==", + "@lerna/project": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-3.21.0.tgz", + "integrity": "sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" + "@lerna/package": "3.16.0", + "@lerna/validation-error": "3.13.0", + "cosmiconfig": "^5.1.0", + "dedent": "^0.7.0", + "dot-prop": "^4.2.0", + "glob-parent": "^5.0.0", + "globby": "^9.2.0", + "load-json-file": "^5.3.0", + "npmlog": "^4.1.2", + "p-map": "^2.1.0", + "resolve-from": "^4.0.0", + "write-json-file": "^3.2.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" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.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==", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "color-name": "~1.1.4" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, - "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==", + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "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==", + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", "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==", + } + } + }, + "@lerna/prompt": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-3.18.5.tgz", + "integrity": "sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ==", + "dev": true, + "requires": { + "inquirer": "^6.2.0", + "npmlog": "^4.1.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "has-flag": "^4.0.0" + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "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 + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } } } }, - "@lerna/add": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/add/-/add-3.21.0.tgz", - "integrity": "sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A==", + "@lerna/publish": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-3.22.1.tgz", + "integrity": "sha512-PG9CM9HUYDreb1FbJwFg90TCBQooGjj+n/pb3gw/eH5mEDq0p8wKdLFe0qkiqUkm/Ub5C8DbVFertIo0Vd0zcw==", "dev": true, "requires": { + "@evocateur/libnpmaccess": "^3.1.2", + "@evocateur/npm-registry-fetch": "^4.0.0", "@evocateur/pacote": "^9.6.3", - "@lerna/bootstrap": "3.21.0", + "@lerna/check-working-tree": "3.16.5", + "@lerna/child-process": "3.16.5", + "@lerna/collect-updates": "3.20.0", "@lerna/command": "3.21.0", - "@lerna/filter-options": "3.20.0", + "@lerna/describe-ref": "3.16.5", + "@lerna/log-packed": "3.16.0", "@lerna/npm-conf": "3.16.0", - "@lerna/validation-error": "3.13.0", - "dedent": "^0.7.0", - "npm-package-arg": "^6.1.0", - "p-map": "^2.1.0", - "semver": "^6.2.0" - } - }, - "@lerna/bootstrap": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.21.0.tgz", - "integrity": "sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw==", - "dev": true, - "requires": { - "@lerna/command": "3.21.0", - "@lerna/filter-options": "3.20.0", - "@lerna/has-npm-version": "3.16.5", - "@lerna/npm-install": "3.16.5", - "@lerna/package-graph": "3.18.5", + "@lerna/npm-dist-tag": "3.18.5", + "@lerna/npm-publish": "3.18.5", + "@lerna/otplease": "3.18.5", + "@lerna/output": "3.13.0", + "@lerna/pack-directory": "3.16.4", + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/prompt": "3.18.5", "@lerna/pulse-till-done": "3.13.0", - "@lerna/rimraf-dir": "3.16.5", "@lerna/run-lifecycle": "3.16.2", "@lerna/run-topologically": "3.18.5", - "@lerna/symlink-binary": "3.17.0", - "@lerna/symlink-dependencies": "3.17.0", "@lerna/validation-error": "3.13.0", - "dedent": "^0.7.0", - "get-port": "^4.2.0", - "multimatch": "^3.0.0", + "@lerna/version": "3.22.1", + "figgy-pudding": "^3.5.1", + "fs-extra": "^8.1.0", "npm-package-arg": "^6.1.0", "npmlog": "^4.1.2", "p-finally": "^1.0.0", "p-map": "^2.1.0", - "p-map-series": "^1.0.0", - "p-waterfall": "^1.0.0", - "read-package-tree": "^5.1.6", + "p-pipe": "^1.2.0", "semver": "^6.2.0" } }, - "@lerna/changed": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-3.21.0.tgz", - "integrity": "sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw==", + "@lerna/pulse-till-done": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz", + "integrity": "sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA==", "dev": true, "requires": { - "@lerna/collect-updates": "3.20.0", - "@lerna/command": "3.21.0", - "@lerna/listable": "3.18.5", - "@lerna/output": "3.13.0" + "npmlog": "^4.1.2" } }, - "@lerna/check-working-tree": { - "version": "3.16.5", - "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz", - "integrity": "sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==", + "@lerna/query-graph": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-3.18.5.tgz", + "integrity": "sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA==", "dev": true, "requires": { - "@lerna/collect-uncommitted": "3.16.5", - "@lerna/describe-ref": "3.16.5", - "@lerna/validation-error": "3.13.0" + "@lerna/package-graph": "3.18.5", + "figgy-pudding": "^3.5.1" } }, - "@lerna/child-process": { + "@lerna/resolve-symlink": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz", + "integrity": "sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2", + "read-cmd-shim": "^1.0.1" + } + }, + "@lerna/rimraf-dir": { "version": "3.16.5", - "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-3.16.5.tgz", - "integrity": "sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg==", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz", + "integrity": "sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA==", "dev": true, "requires": { - "chalk": "^2.3.1", - "execa": "^1.0.0", - "strong-log-transformer": "^2.0.0" + "@lerna/child-process": "3.16.5", + "npmlog": "^4.1.2", + "path-exists": "^3.0.0", + "rimraf": "^2.6.2" } }, - "@lerna/clean": { + "@lerna/run": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-3.21.0.tgz", - "integrity": "sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg==", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-3.21.0.tgz", + "integrity": "sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q==", "dev": true, "requires": { "@lerna/command": "3.21.0", "@lerna/filter-options": "3.20.0", - "@lerna/prompt": "3.18.5", - "@lerna/pulse-till-done": "3.13.0", - "@lerna/rimraf-dir": "3.16.5", - "p-map": "^2.1.0", - "p-map-series": "^1.0.0", - "p-waterfall": "^1.0.0" + "@lerna/npm-run-script": "3.16.5", + "@lerna/output": "3.13.0", + "@lerna/profiler": "3.20.0", + "@lerna/run-topologically": "3.18.5", + "@lerna/timer": "3.13.0", + "@lerna/validation-error": "3.13.0", + "p-map": "^2.1.0" } }, - "@lerna/cli": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-3.18.5.tgz", - "integrity": "sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA==", + "@lerna/run-lifecycle": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz", + "integrity": "sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A==", "dev": true, "requires": { - "@lerna/global-options": "3.13.0", - "dedent": "^0.7.0", - "npmlog": "^4.1.2", - "yargs": "^14.2.2" + "@lerna/npm-conf": "3.16.0", + "figgy-pudding": "^3.5.1", + "npm-lifecycle": "^3.1.2", + "npmlog": "^4.1.2" } }, - "@lerna/collect-uncommitted": { - "version": "3.16.5", - "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz", - "integrity": "sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg==", + "@lerna/run-topologically": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-3.18.5.tgz", + "integrity": "sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg==", "dev": true, "requires": { - "@lerna/child-process": "3.16.5", - "chalk": "^2.3.1", + "@lerna/query-graph": "3.18.5", "figgy-pudding": "^3.5.1", - "npmlog": "^4.1.2" + "p-queue": "^4.0.0" } }, - "@lerna/collect-updates": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-3.20.0.tgz", - "integrity": "sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q==", + "@lerna/symlink-binary": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz", + "integrity": "sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ==", "dev": true, "requires": { - "@lerna/child-process": "3.16.5", - "@lerna/describe-ref": "3.16.5", - "minimatch": "^3.0.4", - "npmlog": "^4.1.2", - "slash": "^2.0.0" + "@lerna/create-symlink": "3.16.2", + "@lerna/package": "3.16.0", + "fs-extra": "^8.1.0", + "p-map": "^2.1.0" } }, - "@lerna/command": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/command/-/command-3.21.0.tgz", - "integrity": "sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ==", + "@lerna/symlink-dependencies": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz", + "integrity": "sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q==", "dev": true, "requires": { - "@lerna/child-process": "3.16.5", - "@lerna/package-graph": "3.18.5", - "@lerna/project": "3.21.0", - "@lerna/validation-error": "3.13.0", - "@lerna/write-log-file": "3.13.0", - "clone-deep": "^4.0.1", - "dedent": "^0.7.0", - "execa": "^1.0.0", - "is-ci": "^2.0.0", - "npmlog": "^4.1.2" + "@lerna/create-symlink": "3.16.2", + "@lerna/resolve-symlink": "3.16.0", + "@lerna/symlink-binary": "3.17.0", + "fs-extra": "^8.1.0", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0" } }, - "@lerna/conventional-commits": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz", - "integrity": "sha512-z4ZZk1e8Mhz7+IS8NxHr64wyklHctCJyWpJKEZZPJiLFJ8yKto/x38O80R10pIzC0rr8Sy/OsjSH4bl0TbbgqA==", + "@lerna/timer": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-3.13.0.tgz", + "integrity": "sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw==", + "dev": true + }, + "@lerna/validation-error": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-3.13.0.tgz", + "integrity": "sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA==", "dev": true, "requires": { - "@lerna/validation-error": "3.13.0", - "conventional-changelog-angular": "^5.0.3", - "conventional-changelog-core": "^3.1.6", - "conventional-recommended-bump": "^5.0.0", - "fs-extra": "^8.1.0", - "get-stream": "^4.0.0", - "lodash.template": "^4.5.0", - "npm-package-arg": "^6.1.0", - "npmlog": "^4.1.2", - "pify": "^4.0.1", - "semver": "^6.2.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } + "npmlog": "^4.1.2" } }, - "@lerna/create": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@lerna/create/-/create-3.22.0.tgz", - "integrity": "sha512-MdiQQzCcB4E9fBF1TyMOaAEz9lUjIHp1Ju9H7f3lXze5JK6Fl5NYkouAvsLgY6YSIhXMY8AHW2zzXeBDY4yWkw==", + "@lerna/version": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-3.22.1.tgz", + "integrity": "sha512-PSGt/K1hVqreAFoi3zjD0VEDupQ2WZVlVIwesrE5GbrL2BjXowjCsTDPqblahDUPy0hp6h7E2kG855yLTp62+g==", "dev": true, "requires": { - "@evocateur/pacote": "^9.6.3", + "@lerna/check-working-tree": "3.16.5", "@lerna/child-process": "3.16.5", + "@lerna/collect-updates": "3.20.0", "@lerna/command": "3.21.0", - "@lerna/npm-conf": "3.16.0", + "@lerna/conventional-commits": "3.22.0", + "@lerna/github-client": "3.22.0", + "@lerna/gitlab-client": "3.15.0", + "@lerna/output": "3.13.0", + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/prompt": "3.18.5", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", "@lerna/validation-error": "3.13.0", - "camelcase": "^5.0.0", + "chalk": "^2.3.1", "dedent": "^0.7.0", - "fs-extra": "^8.1.0", - "globby": "^9.2.0", - "init-package-json": "^1.10.3", - "npm-package-arg": "^6.1.0", + "load-json-file": "^5.3.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "p-map": "^2.1.0", + "p-pipe": "^1.2.0", "p-reduce": "^1.0.0", - "pify": "^4.0.1", + "p-waterfall": "^1.0.0", "semver": "^6.2.0", "slash": "^2.0.0", - "validate-npm-package-license": "^3.0.3", - "validate-npm-package-name": "^3.0.0", - "whatwg-url": "^7.0.0" + "temp-write": "^3.4.0", + "write-json-file": "^3.2.0" }, "dependencies": { + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true } } }, - "@lerna/create-symlink": { - "version": "3.16.2", - "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-3.16.2.tgz", - "integrity": "sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw==", + "@lerna/write-log-file": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-3.13.0.tgz", + "integrity": "sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A==", "dev": true, "requires": { - "@zkochan/cmd-shim": "^3.1.0", - "fs-extra": "^8.1.0", - "npmlog": "^4.1.2" + "npmlog": "^4.1.2", + "write-file-atomic": "^2.3.0" } }, - "@lerna/describe-ref": { - "version": "3.16.5", - "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-3.16.5.tgz", - "integrity": "sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw==", + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "dev": true, "requires": { - "@lerna/child-process": "3.16.5", - "npmlog": "^4.1.2" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, - "@lerna/diff": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-3.21.0.tgz", - "integrity": "sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw==", + "@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": { - "@lerna/child-process": "3.16.5", - "@lerna/command": "3.21.0", - "@lerna/validation-error": "3.13.0", - "npmlog": "^4.1.2" + "@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 + } } }, - "@lerna/exec": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-3.21.0.tgz", - "integrity": "sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q==", + "@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": { - "@lerna/child-process": "3.16.5", - "@lerna/command": "3.21.0", - "@lerna/filter-options": "3.20.0", - "@lerna/profiler": "3.20.0", - "@lerna/run-topologically": "3.18.5", - "@lerna/validation-error": "3.13.0", - "p-map": "^2.1.0" + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" } }, - "@lerna/filter-options": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-3.20.0.tgz", - "integrity": "sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g==", + "@octokit/auth-token": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.2.tgz", + "integrity": "sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ==", "dev": true, "requires": { - "@lerna/collect-updates": "3.20.0", - "@lerna/filter-packages": "3.18.0", - "dedent": "^0.7.0", - "figgy-pudding": "^3.5.1", - "npmlog": "^4.1.2" + "@octokit/types": "^5.0.0" } }, - "@lerna/filter-packages": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-3.18.0.tgz", - "integrity": "sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ==", - "dev": true, - "requires": { - "@lerna/validation-error": "3.13.0", - "multimatch": "^3.0.0", - "npmlog": "^4.1.2" - } - }, - "@lerna/get-npm-exec-opts": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz", - "integrity": "sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw==", - "dev": true, - "requires": { - "npmlog": "^4.1.2" - } - }, - "@lerna/get-packed": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-3.16.0.tgz", - "integrity": "sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw==", + "@octokit/endpoint": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.8.tgz", + "integrity": "sha512-MuRrgv+bM4Q+e9uEvxAB/Kf+Sj0O2JAOBA131uo1o6lgdq1iS8ejKwtqHgdfY91V3rN9R/hdGKFiQYMzVzVBEQ==", "dev": true, "requires": { - "fs-extra": "^8.1.0", - "ssri": "^6.0.1", - "tar": "^4.4.8" + "@octokit/types": "^5.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } } }, - "@lerna/github-client": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-3.22.0.tgz", - "integrity": "sha512-O/GwPW+Gzr3Eb5bk+nTzTJ3uv+jh5jGho9BOqKlajXaOkMYGBELEAqV5+uARNGWZFvYAiF4PgqHb6aCUu7XdXg==", - "dev": true, - "requires": { - "@lerna/child-process": "3.16.5", - "@octokit/plugin-enterprise-rest": "^6.0.1", - "@octokit/rest": "^16.28.4", - "git-url-parse": "^11.1.2", - "npmlog": "^4.1.2" - } + "@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true }, - "@lerna/gitlab-client": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz", - "integrity": "sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q==", + "@octokit/plugin-paginate-rest": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", + "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", "dev": true, "requires": { - "node-fetch": "^2.5.0", - "npmlog": "^4.1.2", - "whatwg-url": "^7.0.0" + "@octokit/types": "^2.0.1" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } } }, - "@lerna/global-options": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-3.13.0.tgz", - "integrity": "sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ==", + "@octokit/plugin-request-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz", + "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==", "dev": true }, - "@lerna/has-npm-version": { - "version": "3.16.5", - "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz", - "integrity": "sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q==", + "@octokit/plugin-rest-endpoint-methods": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", + "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", "dev": true, "requires": { - "@lerna/child-process": "3.16.5", - "semver": "^6.2.0" + "@octokit/types": "^2.0.1", + "deprecation": "^2.3.1" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } } }, - "@lerna/import": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@lerna/import/-/import-3.22.0.tgz", - "integrity": "sha512-uWOlexasM5XR6tXi4YehODtH9Y3OZrFht3mGUFFT3OIl2s+V85xIGFfqFGMTipMPAGb2oF1UBLL48kR43hRsOg==", + "@octokit/request": { + "version": "5.4.9", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.9.tgz", + "integrity": "sha512-CzwVvRyimIM1h2n9pLVYfTDmX9m+KHSgCpqPsY8F1NdEK8IaWqXhSBXsdjOBFZSpEcxNEeg4p0UO9cQ8EnOCLA==", "dev": true, "requires": { - "@lerna/child-process": "3.16.5", - "@lerna/command": "3.21.0", - "@lerna/prompt": "3.18.5", - "@lerna/pulse-till-done": "3.13.0", - "@lerna/validation-error": "3.13.0", - "dedent": "^0.7.0", - "fs-extra": "^8.1.0", - "p-map-series": "^1.0.0" + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^5.0.0", + "deprecation": "^2.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "once": "^1.4.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/request-error": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.2.tgz", + "integrity": "sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==", + "dev": true, + "requires": { + "@octokit/types": "^5.0.1", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } } }, - "@lerna/info": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/info/-/info-3.21.0.tgz", - "integrity": "sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA==", + "@octokit/request-error": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", + "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", "dev": true, "requires": { - "@lerna/command": "3.21.0", - "@lerna/output": "3.13.0", - "envinfo": "^7.3.1" + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } } }, - "@lerna/init": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/init/-/init-3.21.0.tgz", - "integrity": "sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg==", + "@octokit/rest": { + "version": "16.43.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", + "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", "dev": true, "requires": { - "@lerna/child-process": "3.16.5", - "@lerna/command": "3.21.0", - "fs-extra": "^8.1.0", - "p-map": "^2.1.0", - "write-json-file": "^3.2.0" + "@octokit/auth-token": "^2.4.0", + "@octokit/plugin-paginate-rest": "^1.1.1", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "2.4.0", + "@octokit/request": "^5.2.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", + "btoa-lite": "^1.0.0", + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" } }, - "@lerna/link": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/link/-/link-3.21.0.tgz", - "integrity": "sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ==", + "@octokit/types": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", + "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", "dev": true, "requires": { - "@lerna/command": "3.21.0", - "@lerna/package-graph": "3.18.5", - "@lerna/symlink-dependencies": "3.17.0", - "p-map": "^2.1.0", - "slash": "^2.0.0" + "@types/node": ">= 8" } }, - "@lerna/list": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/list/-/list-3.21.0.tgz", - "integrity": "sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg==", + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "requires": { - "@lerna/command": "3.21.0", - "@lerna/filter-options": "3.20.0", - "@lerna/listable": "3.18.5", - "@lerna/output": "3.13.0" + "@types/minimatch": "*", + "@types/node": "*" } }, - "@lerna/listable": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-3.18.5.tgz", - "integrity": "sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg==", - "dev": true, - "requires": { - "@lerna/query-graph": "3.18.5", - "chalk": "^2.3.1", - "columnify": "^1.5.4" - } + "@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 }, - "@lerna/log-packed": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-3.16.0.tgz", - "integrity": "sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ==", - "dev": true, - "requires": { - "byte-size": "^5.0.1", - "columnify": "^1.5.4", - "has-unicode": "^2.0.1", - "npmlog": "^4.1.2" - } + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true }, - "@lerna/npm-conf": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-3.16.0.tgz", - "integrity": "sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA==", - "dev": true, - "requires": { - "config-chain": "^1.1.11", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } + "@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "dev": true }, - "@lerna/npm-dist-tag": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz", - "integrity": "sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ==", - "dev": true, - "requires": { - "@evocateur/npm-registry-fetch": "^4.0.0", - "@lerna/otplease": "3.18.5", - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.1.0", - "npmlog": "^4.1.2" - } + "@types/node": { + "version": "14.11.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz", + "integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw==", + "dev": true }, - "@lerna/npm-install": { - "version": "3.16.5", - "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-3.16.5.tgz", - "integrity": "sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg==", - "dev": true, - "requires": { - "@lerna/child-process": "3.16.5", - "@lerna/get-npm-exec-opts": "3.13.0", - "fs-extra": "^8.1.0", - "npm-package-arg": "^6.1.0", - "npmlog": "^4.1.2", - "signal-exit": "^3.0.2", - "write-pkg": "^3.1.0" - } + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true }, - "@lerna/npm-publish": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-3.18.5.tgz", - "integrity": "sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg==", + "@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": { - "@evocateur/libnpmpublish": "^1.2.2", - "@lerna/otplease": "3.18.5", - "@lerna/run-lifecycle": "3.16.2", - "figgy-pudding": "^3.5.1", - "fs-extra": "^8.1.0", - "npm-package-arg": "^6.1.0", - "npmlog": "^4.1.2", - "pify": "^4.0.1", - "read-package-json": "^2.0.13" + "@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": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "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 } } }, - "@lerna/npm-run-script": { - "version": "3.16.5", - "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz", - "integrity": "sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ==", + "@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": { - "@lerna/child-process": "3.16.5", - "@lerna/get-npm-exec-opts": "3.13.0", - "npmlog": "^4.1.2" + "@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" + } + } } }, - "@lerna/otplease": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-3.18.5.tgz", - "integrity": "sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog==", + "@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": { - "@lerna/prompt": "3.18.5", - "figgy-pudding": "^3.5.1" + "@typescript-eslint/scope-manager": "4.10.0", + "@typescript-eslint/types": "4.10.0", + "@typescript-eslint/typescript-estree": "4.10.0", + "debug": "^4.1.1" } }, - "@lerna/output": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@lerna/output/-/output-3.13.0.tgz", - "integrity": "sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg==", + "@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": { - "npmlog": "^4.1.2" + "@typescript-eslint/types": "4.10.0", + "@typescript-eslint/visitor-keys": "4.10.0" } }, - "@lerna/pack-directory": { - "version": "3.16.4", - "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-3.16.4.tgz", - "integrity": "sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng==", - "dev": true, - "requires": { - "@lerna/get-packed": "3.16.0", - "@lerna/package": "3.16.0", - "@lerna/run-lifecycle": "3.16.2", - "figgy-pudding": "^3.5.1", - "npm-packlist": "^1.4.4", - "npmlog": "^4.1.2", - "tar": "^4.4.10", - "temp-write": "^3.4.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 }, - "@lerna/package": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/@lerna/package/-/package-3.16.0.tgz", - "integrity": "sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw==", + "@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": { - "load-json-file": "^5.3.0", - "npm-package-arg": "^6.1.0", - "write-pkg": "^3.1.0" + "@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": { - "load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - } + "@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 }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "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 }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true - } - } - }, - "@lerna/package-graph": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-3.18.5.tgz", - "integrity": "sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA==", - "dev": true, - "requires": { - "@lerna/prerelease-id-from-version": "3.16.0", - "@lerna/validation-error": "3.13.0", - "npm-package-arg": "^6.1.0", - "npmlog": "^4.1.2", - "semver": "^6.2.0" - } - }, - "@lerna/prerelease-id-from-version": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz", - "integrity": "sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA==", - "dev": true, - "requires": { - "semver": "^6.2.0" - } - }, - "@lerna/profiler": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-3.20.0.tgz", - "integrity": "sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "fs-extra": "^8.1.0", - "npmlog": "^4.1.2", - "upath": "^1.2.0" - } - }, - "@lerna/project": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/project/-/project-3.21.0.tgz", - "integrity": "sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A==", - "dev": true, - "requires": { - "@lerna/package": "3.16.0", - "@lerna/validation-error": "3.13.0", - "cosmiconfig": "^5.1.0", - "dedent": "^0.7.0", - "dot-prop": "^4.2.0", - "glob-parent": "^5.0.0", - "globby": "^9.2.0", - "load-json-file": "^5.3.0", - "npmlog": "^4.1.2", - "p-map": "^2.1.0", - "resolve-from": "^4.0.0", - "write-json-file": "^3.2.0" - }, - "dependencies": { - "load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "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": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" + "fill-range": "^7.0.1" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "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": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "path-type": "^4.0.0" } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true - } - } - }, - "@lerna/prompt": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-3.18.5.tgz", - "integrity": "sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ==", - "dev": true, - "requires": { - "inquirer": "^6.2.0", - "npmlog": "^4.1.2" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "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": { - "restore-cursor": "^2.0.0" + "@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" } }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "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": { - "escape-string-regexp": "^1.0.5" + "to-regex-range": "^5.0.1" } }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", "dev": true, "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" + "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" } }, - "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 - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "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 }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "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": { - "mimic-fn": "^1.0.0" + "yallist": "^4.0.0" } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "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": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "braces": "^3.0.1", + "picomatch": "^2.0.5" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "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": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "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 } } }, - "@lerna/publish": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-3.22.1.tgz", - "integrity": "sha512-PG9CM9HUYDreb1FbJwFg90TCBQooGjj+n/pb3gw/eH5mEDq0p8wKdLFe0qkiqUkm/Ub5C8DbVFertIo0Vd0zcw==", + "@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": { - "@evocateur/libnpmaccess": "^3.1.2", - "@evocateur/npm-registry-fetch": "^4.0.0", - "@evocateur/pacote": "^9.6.3", - "@lerna/check-working-tree": "3.16.5", - "@lerna/child-process": "3.16.5", - "@lerna/collect-updates": "3.20.0", - "@lerna/command": "3.21.0", - "@lerna/describe-ref": "3.16.5", - "@lerna/log-packed": "3.16.0", - "@lerna/npm-conf": "3.16.0", - "@lerna/npm-dist-tag": "3.18.5", - "@lerna/npm-publish": "3.18.5", - "@lerna/otplease": "3.18.5", - "@lerna/output": "3.13.0", - "@lerna/pack-directory": "3.16.4", - "@lerna/prerelease-id-from-version": "3.16.0", - "@lerna/prompt": "3.18.5", - "@lerna/pulse-till-done": "3.13.0", - "@lerna/run-lifecycle": "3.16.2", - "@lerna/run-topologically": "3.18.5", - "@lerna/validation-error": "3.13.0", - "@lerna/version": "3.22.1", - "figgy-pudding": "^3.5.1", - "fs-extra": "^8.1.0", - "npm-package-arg": "^6.1.0", - "npmlog": "^4.1.2", - "p-finally": "^1.0.0", - "p-map": "^2.1.0", - "p-pipe": "^1.2.0", - "semver": "^6.2.0" + "@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 + } } }, - "@lerna/pulse-till-done": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz", - "integrity": "sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA==", + "@zkochan/cmd-shim": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz", + "integrity": "sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg==", "dev": true, "requires": { - "npmlog": "^4.1.2" + "is-windows": "^1.0.0", + "mkdirp-promise": "^5.0.1", + "mz": "^2.5.0" } }, - "@lerna/query-graph": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-3.18.5.tgz", - "integrity": "sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA==", + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { - "@lerna/package-graph": "3.18.5", - "figgy-pudding": "^3.5.1" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, - "@lerna/resolve-symlink": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz", - "integrity": "sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ==", + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "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 + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "requires": { - "fs-extra": "^8.1.0", - "npmlog": "^4.1.2", - "read-cmd-shim": "^1.0.1" + "es6-promisify": "^5.0.0" } }, - "@lerna/rimraf-dir": { - "version": "3.16.5", - "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz", - "integrity": "sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA==", + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", "dev": true, "requires": { - "@lerna/child-process": "3.16.5", - "npmlog": "^4.1.2", - "path-exists": "^3.0.0", - "rimraf": "^2.6.2" + "humanize-ms": "^1.2.1" } }, - "@lerna/run": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@lerna/run/-/run-3.21.0.tgz", - "integrity": "sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "@lerna/command": "3.21.0", - "@lerna/filter-options": "3.20.0", - "@lerna/npm-run-script": "3.16.5", - "@lerna/output": "3.13.0", - "@lerna/profiler": "3.20.0", - "@lerna/run-topologically": "3.18.5", - "@lerna/timer": "3.13.0", - "@lerna/validation-error": "3.13.0", - "p-map": "^2.1.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "@lerna/run-lifecycle": { - "version": "3.16.2", - "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz", - "integrity": "sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A==", + "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", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "@lerna/npm-conf": "3.16.0", - "figgy-pudding": "^3.5.1", - "npm-lifecycle": "^3.1.2", - "npmlog": "^4.1.2" + "color-convert": "^1.9.0" } }, - "@lerna/run-topologically": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-3.18.5.tgz", - "integrity": "sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg==", + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", "dev": true, "requires": { - "@lerna/query-graph": "3.18.5", - "figgy-pudding": "^3.5.1", - "p-queue": "^4.0.0" + "default-require-extensions": "^2.0.0" } }, - "@lerna/symlink-binary": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz", - "integrity": "sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ==", + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "requires": { - "@lerna/create-symlink": "3.16.2", - "@lerna/package": "3.16.0", - "fs-extra": "^8.1.0", - "p-map": "^2.1.0" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "@lerna/symlink-dependencies": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz", - "integrity": "sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "@lerna/create-symlink": "3.16.2", - "@lerna/resolve-symlink": "3.16.0", - "@lerna/symlink-binary": "3.17.0", - "fs-extra": "^8.1.0", - "p-finally": "^1.0.0", - "p-map": "^2.1.0", - "p-map-series": "^1.0.0" + "sprintf-js": "~1.0.2" } }, - "@lerna/timer": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-3.13.0.tgz", - "integrity": "sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw==", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, - "@lerna/validation-error": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-3.13.0.tgz", - "integrity": "sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA==", + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz", + "integrity": "sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "npmlog": "^4.1.2" + "array-uniq": "^1.0.1" } }, - "@lerna/version": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/@lerna/version/-/version-3.22.1.tgz", - "integrity": "sha512-PSGt/K1hVqreAFoi3zjD0VEDupQ2WZVlVIwesrE5GbrL2BjXowjCsTDPqblahDUPy0hp6h7E2kG855yLTp62+g==", + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { - "@lerna/check-working-tree": "3.16.5", - "@lerna/child-process": "3.16.5", - "@lerna/collect-updates": "3.20.0", - "@lerna/command": "3.21.0", - "@lerna/conventional-commits": "3.22.0", - "@lerna/github-client": "3.22.0", - "@lerna/gitlab-client": "3.15.0", - "@lerna/output": "3.13.0", - "@lerna/prerelease-id-from-version": "3.16.0", - "@lerna/prompt": "3.18.5", - "@lerna/run-lifecycle": "3.16.2", - "@lerna/run-topologically": "3.18.5", - "@lerna/validation-error": "3.13.0", - "chalk": "^2.3.1", - "dedent": "^0.7.0", - "load-json-file": "^5.3.0", - "minimatch": "^3.0.4", - "npmlog": "^4.1.2", - "p-map": "^2.1.0", - "p-pipe": "^1.2.0", - "p-reduce": "^1.0.0", - "p-waterfall": "^1.0.0", - "semver": "^6.2.0", - "slash": "^2.0.0", - "temp-write": "^3.4.0", - "write-json-file": "^3.2.0" + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "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", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", + "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { - "load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" + "is-descriptor": "^1.0.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "kind-of": "^6.0.0" } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } } } }, - "@lerna/write-log-file": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-3.13.0.tgz", - "integrity": "sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A==", + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { - "npmlog": "^4.1.2", - "write-file-atomic": "^2.3.0" + "tweetnacl": "^0.14.3" } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "before-after-hook": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "@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==", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "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 + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } } } }, - "@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==", + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", "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==", + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", + "dev": true + }, + "byte-size": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-5.0.1.tgz", + "integrity": "sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" } }, - "@octokit/auth-token": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.2.tgz", - "integrity": "sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ==", + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "@octokit/types": "^5.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, - "@octokit/endpoint": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.8.tgz", - "integrity": "sha512-MuRrgv+bM4Q+e9uEvxAB/Kf+Sj0O2JAOBA131uo1o6lgdq1iS8ejKwtqHgdfY91V3rN9R/hdGKFiQYMzVzVBEQ==", + "caching-transform": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", + "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", "dev": true, "requires": { - "@octokit/types": "^5.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "hasha": "^3.0.0", + "make-dir": "^2.0.0", + "package-hash": "^3.0.0", + "write-file-atomic": "^2.4.2" }, "dependencies": { - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } }, - "@octokit/plugin-enterprise-rest": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", - "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", "dev": true }, - "@octokit/plugin-paginate-rest": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", - "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "dev": true, "requires": { - "@octokit/types": "^2.0.1" + "callsites": "^2.0.0" }, "dependencies": { - "@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, - "requires": { - "@types/node": ">= 8" - } + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true } } }, - "@octokit/plugin-request-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz", - "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==", - "dev": true - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", - "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, "requires": { - "@octokit/types": "^2.0.1", - "deprecation": "^2.3.1" - }, - "dependencies": { - "@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, - "requires": { - "@types/node": ">= 8" - } - } + "caller-callsite": "^2.0.0" } }, - "@octokit/request": { - "version": "5.4.9", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.9.tgz", - "integrity": "sha512-CzwVvRyimIM1h2n9pLVYfTDmX9m+KHSgCpqPsY8F1NdEK8IaWqXhSBXsdjOBFZSpEcxNEeg4p0UO9cQ8EnOCLA==", + "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", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.0.0", - "@octokit/types": "^5.0.0", - "deprecation": "^2.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.1", - "once": "^1.4.0", - "universal-user-agent": "^6.0.0" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { - "@octokit/request-error": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.2.tgz", - "integrity": "sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "@octokit/types": "^5.0.1", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "is-descriptor": "^0.1.0" } - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true } } }, - "@octokit/request-error": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", - "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "@octokit/types": "^2.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { - "@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "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": { - "@types/node": ">= 8" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } } } }, - "@octokit/rest": { - "version": "16.43.2", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", - "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", - "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.0", - "@octokit/plugin-paginate-rest": "^1.1.1", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "2.4.0", - "@octokit/request": "^5.2.0", - "@octokit/request-error": "^1.0.2", - "atob-lite": "^2.0.0", - "before-after-hook": "^2.0.0", - "btoa-lite": "^1.0.0", - "deprecation": "^2.0.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lodash.uniq": "^4.5.0", - "octokit-pagination-methods": "^1.1.0", - "once": "^1.4.0", - "universal-user-agent": "^4.0.0" - } + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true }, - "@octokit/types": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", - "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "requires": { - "@types/node": ">= 8" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" } }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "@types/minimatch": "*", - "@types/node": "*" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "@types/graceful-fs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz", - "integrity": "sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ==", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "@types/node": "*" + "color-name": "1.1.3" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "columnify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "*" + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, - "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { - "@types/istanbul-lib-report": "*" + "delayed-stream": "~1.0.0" } }, - "@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": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", - "dev": true - }, - "@types/node": { - "version": "14.11.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz", - "integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw==", + "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 }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "@types/yargs": { - "version": "15.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.8.tgz", - "integrity": "sha512-b0BYzFUzBpOhPjpl1wtAHU994jBeKF4TKVlT7ssFv44T617XNcPdRoG4AzHLVshLzlrF7i3lTelH7UbuNYV58Q==", + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "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" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" }, "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==", + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "requires": { - "tslib": "^1.8.1" + "is-obj": "^2.0.0" } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "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==", + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "@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" - } - } + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "@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==", + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", "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" + "ini": "^1.3.4", + "proto-list": "~1.2.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==", + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "conventional-changelog-angular": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz", + "integrity": "sha512-nSLypht/1yEflhuTogC03i7DX7sOrXGsRn14g131Potqi6cbGbGEE9PSDEHKldabB6N76HiSyw9Ph+kLmC04Qw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.10.0", - "@typescript-eslint/visitor-keys": "4.10.0" + "compare-func": "^2.0.0", + "q": "^1.5.1" } }, - "@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==", + "conventional-changelog-core": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz", + "integrity": "sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==", "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" + "conventional-changelog-writer": "^4.0.6", + "conventional-commits-parser": "^3.0.3", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "2.0.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^2.0.3", + "lodash": "^4.2.1", + "normalize-package-data": "^2.3.5", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^3.0.0" }, "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==", + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "fill-range": "^7.0.1" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "path-type": "^4.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, - "fast-glob": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", - "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "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" + "pify": "^3.0.0" } }, - "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==", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } }, - "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "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" + "find-up": "^2.0.0", + "read-pkg": "^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==", + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.17.tgz", + "integrity": "sha512-IKQuK3bib/n032KWaSb8YlBFds+aLmzENtnKtxJy3+HqDq5kohu3g/UdNbIHeJWygfnEbZjnCKFxAW0y7ArZAw==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "conventional-commits-filter": "^2.0.6", + "dateformat": "^3.0.0", + "handlebars": "^4.7.6", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^7.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^3.0.0" + }, + "dependencies": { + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-commits-filter": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz", + "integrity": "sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz", + "integrity": "sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA==", + "dev": true, + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.1", + "lodash": "^4.17.15", + "meow": "^7.0.0", + "split2": "^2.0.0", + "through2": "^3.0.0", + "trim-off-newlines": "^1.0.0" + }, + "dependencies": { + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-recommended-bump": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz", + "integrity": "sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ==", + "dev": true, + "requires": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.1.1", + "conventional-commits-filter": "^2.0.2", + "conventional-commits-parser": "^3.0.3", + "git-raw-commits": "2.0.0", + "git-semver-tags": "^2.0.3", + "meow": "^4.0.0", + "q": "^1.5.1" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "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==", + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "dev": true, "requires": { - "yallist": "^4.0.0" + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" } }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", "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==", + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", "dev": true, "requires": { - "is-number": "^7.0.0" + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" } }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", "dev": true, "requires": { - "tslib": "^1.8.1" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" } }, - "yallist": { + "parse-json": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "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==", + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", "dev": true - } - } - }, - "@zkochan/cmd-shim": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz", - "integrity": "sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg==", - "dev": true, - "requires": { - "is-windows": "^1.0.0", - "mkdirp-promise": "^5.0.1", - "mz": "^2.5.0" - } - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + } } }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "absolute-path": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", - "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c=", - "dev": true + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "dev": true, "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" } }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "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==", + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, - "agentkeepalive": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", - "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "cp-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", + "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", "dev": true, "requires": { - "humanize-ms": "^1.2.1" + "graceful-fs": "^4.1.2", + "make-dir": "^2.0.0", + "nested-error-stacks": "^2.0.0", + "pify": "^4.0.1", + "safe-buffer": "^5.0.1" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "color-convert": "^1.9.0" + "array-find-index": "^1.0.1" } }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "number-is-nan": "^1.0.0" } }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "default-require-extensions": "^2.0.0" + "assert-plus": "^1.0.0" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "ms": "2.1.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz", - "integrity": "sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", "dev": true }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "dev": true, "requires": { - "array-uniq": "^1.0.1" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", "dev": true }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "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 }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", "dev": true, "requires": { - "safer-buffer": "~2.1.0" + "strip-bom": "^3.0.0" } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "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 - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "requires": { - "lodash": "^4.17.14" + "clone": "^1.0.2" } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "atob-lite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", - "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", - "dev": true - }, - "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", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "dev": true - }, - "babel-preset-fbjs": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz", - "integrity": "sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw==", - "dev": true, - "requires": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + "object-keys": "^1.0.12" } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", @@ -3130,996 +3333,900 @@ } } }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "before-after-hook": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", - "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "asap": "^2.0.0", + "wrappy": "1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "path-type": "^3.0.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "pify": "^3.0.0" } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true } } }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { - "node-int64": "^0.4.0" + "esutils": "^2.0.2" } }, - "btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true - }, - "byline": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", - "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", - "dev": true + "dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } }, - "byte-size": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-5.0.1.tgz", - "integrity": "sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==", + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "caching-transform": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", - "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", + "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 + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "requires": { - "hasha": "^3.0.0", - "make-dir": "^2.0.0", - "package-hash": "^3.0.0", - "write-file-atomic": "^2.4.2" + "iconv-lite": "^0.6.2" }, "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true } } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } + "once": "^1.4.0" } }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "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": { - "caller-callsite": "^2.0.0" + "ansi-colors": "^4.1.1" } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "envinfo": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", + "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", "dev": true }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "is-arrayish": "^0.2.1" } }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "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-negative-zero": "^2.0.0", + "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" } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "eslint": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", + "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "@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": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "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": { - "is-descriptor": "^0.1.0" + "color-convert": "^2.0.1" } - } - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.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 + "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" + } }, - "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==", + "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": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "color-name": "~1.1.4" } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "columnify": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", - "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", - "dev": true, - "requires": { - "strip-ansi": "^3.0.0", - "wcwidth": "^1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + }, + "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 }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "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": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "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", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - }, - "dependencies": { - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "is-obj": { + "eslint-visitor-keys": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true - } - } - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, "requires": { - "ms": "2.0.0" + "type-fest": "^0.8.1" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "conventional-changelog-angular": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz", - "integrity": "sha512-nSLypht/1yEflhuTogC03i7DX7sOrXGsRn14g131Potqi6cbGbGEE9PSDEHKldabB6N76HiSyw9Ph+kLmC04Qw==", - "dev": true, - "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - } - }, - "conventional-changelog-core": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz", - "integrity": "sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==", - "dev": true, - "requires": { - "conventional-changelog-writer": "^4.0.6", - "conventional-commits-parser": "^3.0.3", - "dateformat": "^3.0.0", - "get-pkg-repo": "^1.0.0", - "git-raw-commits": "2.0.0", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^2.0.3", - "lodash": "^4.2.1", - "normalize-package-data": "^2.3.5", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^3.0.0" - }, - "dependencies": { - "load-json-file": { + "has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "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": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "yallist": "^4.0.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "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 + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "lru-cache": "^6.0.0" } }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "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": { - "pify": "^3.0.0" + "shebang-regex": "^3.0.0" } }, - "pify": { + "shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "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": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "ansi-regex": "^5.0.0" } }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "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": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "has-flag": "^4.0.0" } }, - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "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 } } }, - "conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", - "dev": true - }, - "conventional-changelog-writer": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.17.tgz", - "integrity": "sha512-IKQuK3bib/n032KWaSb8YlBFds+aLmzENtnKtxJy3+HqDq5kohu3g/UdNbIHeJWygfnEbZjnCKFxAW0y7ArZAw==", + "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": { - "compare-func": "^2.0.0", - "conventional-commits-filter": "^2.0.6", - "dateformat": "^3.0.0", - "handlebars": "^4.7.6", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^7.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^3.0.0" + "get-stdin": "^6.0.0" + } + }, + "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": { + "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": { - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" + "ms": "2.1.2" + } + }, + "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 } } }, - "conventional-commits-filter": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz", - "integrity": "sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw==", + "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": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" + "prettier-linter-helpers": "^1.0.0" } }, - "conventional-commits-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz", - "integrity": "sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA==", + "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": { - "JSONStream": "^1.0.4", - "is-text-path": "^1.0.1", - "lodash": "^4.17.15", - "meow": "^7.0.0", - "split2": "^2.0.0", - "through2": "^3.0.0", - "trim-off-newlines": "^1.0.0" + "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" + } + }, + "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 + }, + "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" + } + }, + "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": { - "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true } } }, - "conventional-recommended-bump": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz", - "integrity": "sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ==", + "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": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^2.1.1", - "conventional-commits-filter": "^2.0.2", - "conventional-commits-parser": "^3.0.3", - "git-raw-commits": "2.0.0", - "git-semver-tags": "^2.0.3", - "meow": "^4.0.0", - "q": "^1.5.1" + "estraverse": "^5.2.0" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "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 + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" + "is-descriptor": "^0.1.0" } }, - "concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "is-extendable": "^0.1.0" } }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "map-obj": { + "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } - }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "is-plain-object": "^2.0.4" } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "pify": "^3.0.0" + "is-descriptor": "^1.0.0" } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "is-extendable": "^0.1.0" } }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "kind-of": "^6.0.0" } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "kind-of": "^6.0.0" } }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", - "dev": true - } - } - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true } } }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", "dev": true, "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "dependencies": { - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + } + } + }, + "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 + }, + "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" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "is-extendable": "^0.1.0" } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true } } }, - "cp-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", - "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", + "commondir": "^1.0.1", "make-dir": "^2.0.0", - "nested-error-stacks": "^2.0.0", - "pify": "^4.0.1", - "safe-buffer": "^5.0.1" + "pkg-dir": "^3.0.0" }, "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -4130,12 +4237,45 @@ "semver": "^5.6.0" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -4144,4101 +4284,1953 @@ } } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "locate-path": "^2.0.0" } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "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": { - "array-find-index": "^1.0.1" + "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" + } + } } }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "flatted": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", "dev": true }, - "dargs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", - "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "foreground-child": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", "dev": true, "requires": { - "ms": "2.1.2" - } - }, - "debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "cross-spawn": "^4", + "signal-exit": "^3.0.0" }, "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true } } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } }, - "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 + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { - "strip-bom": "^3.0.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "clone": "^1.0.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "minipass": "^2.6.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "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 + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" }, "dependencies": { - "is-accessor-descriptor": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "kind-of": "^6.0.0" + "number-is-nan": "^1.0.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "kind-of": "^6.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "ansi-regex": "^2.0.0" } } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "denodeify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", - "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", - "dev": true - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "detect-indent": { + "genfun": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", "dev": true }, - "dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", "dev": true, "requires": { - "path-type": "^3.0.0" + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" }, "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "pify": "^3.0.0" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", "dev": true } } }, - "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" - } - }, - "dot-prop": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", - "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", "dev": true }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "pump": "^3.0.0" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "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 - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } + "assert-plus": "^1.0.0" } }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "git-raw-commits": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", + "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==", "dev": true, "requires": { - "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", - "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", - "dev": true - }, - "envinfo": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", - "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", - "dev": true - }, - "err-code": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", - "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", - "dev": true, - "requires": { - "stackframe": "^1.1.1" - } - }, - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "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-negative-zero": "^2.0.0", - "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" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "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" + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.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" - } - }, - "chalk": { + "camelcase": { "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" - } + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true }, - "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==", + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "dev": true, "requires": { - "color-name": "~1.1.4" + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" } }, - "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==", + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, - "eslint-visitor-keys": { + "map-obj": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", "dev": true }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" } }, - "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==", + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", "dev": true, "requires": { - "yallist": "^4.0.0" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" } }, - "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 - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.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==", + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "pify": "^3.0.0" } }, - "shebang-regex": { + "pify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "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==", + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.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==", + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { - "has-flag": "^4.0.0" + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", "dev": true, "requires": { - "isexe": "^2.0.0" + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" } }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", "dev": true } } }, - "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==", + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", "dev": true, "requires": { - "get-stdin": "^6.0.0" + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" } }, - "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==", + "git-semver-tags": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.3.tgz", + "integrity": "sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==", "dev": true, "requires": { - "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" + "meow": "^4.0.0", + "semver": "^6.0.0" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "dev": true, "requires": { - "ms": "2.1.2" + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" } }, - "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==", + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "yallist": "^4.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" } }, - "yallist": { + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "parse-json": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", "dev": true } } }, - "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==", + "git-up": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.2.tgz", + "integrity": "sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ==", "dev": true, "requires": { - "prettier-linter-helpers": "^1.0.0" + "is-ssh": "^1.3.0", + "parse-url": "^5.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==", + "git-url-parse": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.3.0.tgz", + "integrity": "sha512-i3XNa8IKmqnUqWBcdWBjOcnyZYfN3C1WRvnKI6ouFWwsXCZEnlgbwbm55ZpJ3OJMhfEP/ryFhqW8bBhej3C5Ug==", "dev": true, "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "git-up": "^4.0.0" } }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "ini": "^1.3.2" } }, - "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 + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "is-glob": "^4.0.1" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", "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==", + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", "dev": true, "requires": { - "estraverse": "^5.1.0" + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" }, "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "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==", + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "requires": { - "estraverse": "^5.2.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" }, "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true }, - "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "exec-sh": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", - "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, - "execa": { + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-buffer": "^1.1.5" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "hasha": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", + "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", + "dev": true, + "requires": { + "is-stream": "^1.0.1" + } }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "agent-base": "4", + "debug": "3.1.0" }, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "agent-base": "^4.3.0", + "debug": "^3.1.0" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "ms": "^2.1.1" + } + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "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 + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "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" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "p-try": "^2.0.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "p-limit": "^2.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "find-up": "^3.0.0" } } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } + "once": "^1.3.0", + "wrappy": "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==", + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "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=", + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "init-package-json": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.10.3.tgz", + "integrity": "sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==", "dev": true, "requires": { - "reusify": "^1.0.4" + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "requires": { - "bser": "2.1.1" - } + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true }, - "fbjs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", - "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "core-js": "^2.4.1", - "fbjs-css-vars": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "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==", + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "flat-cache": "^3.0.4" + "ci-info": "^2.0.0" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "kind-of": "^3.0.2" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-buffer": "^1.1.5" } } } }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "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 + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" }, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "p-try": "^2.0.0" + "is-buffer": "^1.1.5" } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true } } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "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" - } - } + "isobject": "^3.0.1" } }, - "flatted": { - "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": { + "is-regex": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "has-symbols": "^1.0.1" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "foreground-child": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "is-ssh": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.2.tgz", + "integrity": "sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ==", "dev": true, "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } + "protocols": "^1.1.0" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "map-cache": "^0.2.2" + "has-symbols": "^1.0.1" } }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "text-extensions": "^1.0.0" } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "requires": { - "minipass": "^2.6.0" - } + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true }, - "fs.realpath": { + "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "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=", + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "genfun": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", - "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } }, - "get-pkg-repo": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", - "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "meow": "^3.3.0", - "normalize-package-data": "^2.3.0", - "parse-github-repo-url": "^1.3.0", - "through2": "^2.0.0" + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" }, "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { + "make-dir": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" } }, - "get-stdin": { + "pify": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "has-flag": "^3.0.0" } - }, - "path-exists": { + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "make-dir": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" } }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, - "get-port": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", - "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "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", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-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", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "pump": "^3.0.0" + "graceful-fs": "^4.1.6" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "git-raw-commits": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", - "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==", + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lerna": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz", + "integrity": "sha512-vk1lfVRFm+UuEFA7wkLKeSF7Iz13W+N/vFd48aW2yuS7Kv0RbNm2/qcDPV863056LMfkRlsEe+QYOw3palj5Lg==", "dev": true, "requires": { - "dargs": "^4.0.1", - "lodash.template": "^4.0.2", - "meow": "^4.0.0", - "split2": "^2.0.0", - "through2": "^2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "dev": true, - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - } - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", - "dev": true - }, - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } - }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", - "dev": true, - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" - } - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", - "dev": true - } - } - }, - "git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", - "dev": true, - "requires": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - } - }, - "git-semver-tags": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.3.tgz", - "integrity": "sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==", - "dev": true, - "requires": { - "meow": "^4.0.0", - "semver": "^6.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "dev": true, - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - } - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", - "dev": true - }, - "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - } - }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", - "dev": true, - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" - } - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", - "dev": true - } - } - }, - "git-up": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.2.tgz", - "integrity": "sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ==", - "dev": true, - "requires": { - "is-ssh": "^1.3.0", - "parse-url": "^5.0.0" - } - }, - "git-url-parse": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.3.0.tgz", - "integrity": "sha512-i3XNa8IKmqnUqWBcdWBjOcnyZYfN3C1WRvnKI6ouFWwsXCZEnlgbwbm55ZpJ3OJMhfEP/ryFhqW8bBhej3C5Ug==", - "dev": true, - "requires": { - "git-up": "^4.0.0" - } - }, - "gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", - "dev": true, - "requires": { - "ini": "^1.3.2" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "handlebars": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", - "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hasha": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", - "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", - "dev": true, - "requires": { - "is-stream": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "dev": true, - "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "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" - } - } - } - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "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 - }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "image-size": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", - "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==", - "dev": 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" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.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", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "init-package-json": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.10.3.tgz", - "integrity": "sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==", - "dev": true, - "requires": { - "glob": "^7.1.1", - "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", - "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "1 || 2", - "semver": "2.x || 3.x || 4 || 5", - "validate-npm-package-license": "^3.0.1", - "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "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 - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-ssh": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.2.tgz", - "integrity": "sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ==", - "dev": true, - "requires": { - "protocols": "^1.1.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", - "dev": true, - "requires": { - "text-extensions": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "dev": true, - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - }, - "dependencies": { - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dev": true, - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - } - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", - "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } - }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0" - } - }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true - }, - "jest-haste-map": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.5.2.tgz", - "integrity": "sha512-lJIAVJN3gtO3k4xy+7i2Xjtwh8CfPcH08WYjZpe9xzveDaqGw9fVNCpkYu6M525wKFVkLmyi7ku+DxCAP1lyMA==", - "dev": true, - "requires": { - "@jest/types": "^26.5.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.5.0", - "jest-util": "^26.5.2", - "jest-worker": "^26.5.0", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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 - }, - "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" - } - }, - "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" - } - } - } - }, - "jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "dev": true - }, - "jest-serializer": { - "version": "26.5.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.5.0.tgz", - "integrity": "sha512-+h3Gf5CDRlSLdgTv7y0vPIAoLgX/SI7T4v6hy+TEXMgYbv+ztzbg5PSN6mUXAT/hXYHvZRWm+MaObVfqkhCGxA==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - } - }, - "jest-util": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.5.2.tgz", - "integrity": "sha512-WTL675bK+GSSAYgS8z9FWdCT2nccO1yTIplNLPlP0OD8tUk/H5IrWKMMRudIQQ0qp8bb4k+1Qa8CxGKq9qnYdg==", - "dev": true, - "requires": { - "@jest/types": "^26.5.2", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" - }, - "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" - } - }, - "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" - } - }, - "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 - }, - "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" - } - }, - "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 - }, - "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 - }, - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "jest-validate": { - "version": "26.5.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.5.3.tgz", - "integrity": "sha512-LX07qKeAtY+lsU0o3IvfDdN5KH9OulEGOMN1sFo6PnEf5/qjS1LZIwNk9blcBeW94pQUI9dLN9FlDYDWI5tyaA==", - "dev": true, - "requires": { - "@jest/types": "^26.5.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.5.2" - }, - "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" - } - }, - "camelcase": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.1.0.tgz", - "integrity": "sha512-WCMml9ivU60+8rEJgELlFp1gxFcEGxwYleE3bziHEDeqsqAWGHdimB7beBFGjLzVNgPGyDsfgXLQEYMpmIFnVQ==", - "dev": true - }, - "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 - }, - "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" - } - } - } - }, - "jest-worker": { - "version": "26.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.5.0.tgz", - "integrity": "sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "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 - }, - "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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "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", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-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", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "lerna": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz", - "integrity": "sha512-vk1lfVRFm+UuEFA7wkLKeSF7Iz13W+N/vFd48aW2yuS7Kv0RbNm2/qcDPV863056LMfkRlsEe+QYOw3palj5Lg==", - "dev": true, - "requires": { - "@lerna/add": "3.21.0", - "@lerna/bootstrap": "3.21.0", - "@lerna/changed": "3.21.0", - "@lerna/clean": "3.21.0", - "@lerna/cli": "3.18.5", - "@lerna/create": "3.22.0", - "@lerna/diff": "3.21.0", - "@lerna/exec": "3.21.0", - "@lerna/import": "3.22.0", - "@lerna/info": "3.21.0", - "@lerna/init": "3.21.0", - "@lerna/link": "3.21.0", - "@lerna/list": "3.21.0", - "@lerna/publish": "3.22.1", - "@lerna/run": "3.21.0", - "@lerna/version": "3.22.1", - "import-local": "^2.0.0", - "npmlog": "^4.1.2" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "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" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", - "dev": true - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "macos-release": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", - "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==", - "dev": true - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "make-fetch-happen": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", - "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", - "dev": true, - "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^12.0.0", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^4.0.0", - "ssri": "^6.0.0" - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "meow": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", - "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "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 - } - } - }, - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "@lerna/add": "3.21.0", + "@lerna/bootstrap": "3.21.0", + "@lerna/changed": "3.21.0", + "@lerna/clean": "3.21.0", + "@lerna/cli": "3.18.5", + "@lerna/create": "3.22.0", + "@lerna/diff": "3.21.0", + "@lerna/exec": "3.21.0", + "@lerna/import": "3.22.0", + "@lerna/info": "3.21.0", + "@lerna/init": "3.21.0", + "@lerna/link": "3.21.0", + "@lerna/list": "3.21.0", + "@lerna/publish": "3.22.1", + "@lerna/run": "3.21.0", + "@lerna/version": "3.22.1", + "import-local": "^2.0.0", + "npmlog": "^4.1.2" } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "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 - }, - "metro": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.60.0.tgz", - "integrity": "sha512-1R/upsJ1h3oj9wQnLYq1QImOVbrGH70eOR4W9kwV+0Exgo3L8krblUOaXr7wyuynSEBaDY25SqnkJ+NWbjtk+A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.0.0", - "@babel/generator": "^7.5.0", - "@babel/parser": "^7.0.0", - "@babel/plugin-external-helpers": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "absolute-path": "^0.0.0", - "accepts": "^1.3.7", - "async": "^2.4.0", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^2.2.0", - "denodeify": "^1.2.1", - "error-stack-parser": "^2.0.6", - "eventemitter3": "^3.0.0", - "fbjs": "^1.0.0", - "fs-extra": "^1.0.0", - "graceful-fs": "^4.1.3", - "image-size": "^0.6.0", - "invariant": "^2.2.4", - "jest-haste-map": "^26.0.1", - "jest-worker": "^26.0.0", - "lodash.throttle": "^4.1.1", - "metro-babel-register": "0.60.0", - "metro-babel-transformer": "0.60.0", - "metro-cache": "0.60.0", - "metro-config": "0.60.0", - "metro-core": "0.60.0", - "metro-hermes-compiler": "0.60.0", - "metro-inspector-proxy": "0.60.0", - "metro-minify-uglify": "0.60.0", - "metro-react-native-babel-preset": "0.60.0", - "metro-resolver": "0.60.0", - "metro-source-map": "0.60.0", - "metro-symbolicate": "0.60.0", - "metro-transform-plugins": "0.60.0", - "metro-transform-worker": "0.60.0", - "mime-types": "^2.1.27", - "mkdirp": "^0.5.1", - "node-fetch": "^2.2.0", - "nullthrows": "^1.1.1", - "rimraf": "^2.5.4", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "strip-ansi": "^6.0.0", - "temp": "0.8.3", - "throat": "^5.0.0", - "ws": "^1.1.5", - "yargs": "^15.3.1" - }, - "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" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.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 - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "fs-extra": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", - "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" - } - }, - "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 - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "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" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } + }, + "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" } }, - "metro-babel-register": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.60.0.tgz", - "integrity": "sha512-zUmx9srlkX0dThdpRN/jWcOGG89mIaLT9+BMrFn2Pb1kqwnThfu2vm+eRIQPbFGrceVCXjL5OSXlBlhguo5bog==", + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "@babel/core": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/register": "^7.0.0", - "escape-string-regexp": "^1.0.5" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, - "metro-babel-transformer": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.60.0.tgz", - "integrity": "sha512-7liSVU+Ighta38l12BrIlhUtphxdZddTMrJrnUSbNM9J3fMsWUVZogpnH8reioiEiu4D4mwTHEukIbiFJyGdHg==", + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "requires": { - "@babel/core": "^7.0.0", - "metro-source-map": "0.60.0" + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" } }, - "metro-cache": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.60.0.tgz", - "integrity": "sha512-Tlpj0rLuwz0yVql+6hZ+FXDvzVx68DBbbqDZLjaw/hH47cSufb6XCBm2xmMOLeuV/BuGNg4tybd45O3aG53FHQ==", + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "requires": { - "metro-core": "0.60.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4" + "lodash._reinterpolate": "^3.0.0" } }, - "metro-config": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.60.0.tgz", - "integrity": "sha512-FM5qMh9bHosfLc7GAsACxNYe/nG3582GHnmxkbg1JNx4ILZ5nNsnBwPHVuhXPvWwOW6WJr9TrgvFsJOrPKq4mQ==", + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "cosmiconfig": "^5.0.5", - "jest-validate": "^26.0.1", - "metro": "0.60.0", - "metro-cache": "0.60.0", - "metro-core": "0.60.0" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, - "metro-core": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.60.0.tgz", - "integrity": "sha512-kGdj0C2AQJNoOguefQ+SXFi3lxSdTZ0NgCNPRy2ybx9hHItfn0ls1vpIKO/Bgn/e+PPqJGMtbznmLA8BNwouKQ==", + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { - "jest-haste-map": "^26.0.1", - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.60.0" + "yallist": "^3.0.2" } }, - "metro-hermes-compiler": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.60.0.tgz", - "integrity": "sha512-P/mD2AOGCeitFgA7BX5zi/XCEJvJ5IcM1n9a1hHEQt8RvhXT6vrofINYOkw3U0HWwEYt7Zy61l/uVI+G2tzkoA==", + "macos-release": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", + "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==", "dev": true }, - "metro-inspector-proxy": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.60.0.tgz", - "integrity": "sha512-lNkzyzZ5Becr3J9hvtoovOdFkylDDf0JjbMWFNdoBrZbIvgmbJNZ4bHmCMXZK5Iten80YSNh0w1ulmgpHHiYgA==", + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "requires": { - "connect": "^3.6.5", - "debug": "^2.2.0", - "ws": "^1.1.5", - "yargs": "^15.3.1" + "pify": "^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" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.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==", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, + } + } + }, + "make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "meow": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", + "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "dependencies": { "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -8258,12 +6250,6 @@ "p-locate": "^4.1.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -8288,51 +6274,69 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "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" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "read-pkg": "^5.2.0", + "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 + } } }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true + }, "yargs-parser": { "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", @@ -8345,13 +6349,13 @@ } } }, - "metro-minify-uglify": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.60.0.tgz", - "integrity": "sha512-ICKuF7RZEWT658P+hlhqTeo7Ba6YY+XiYLDVCSlcUffIyV8bbHE4JvcVpsUQ+/PcXX8WirUvC4NQu0XKuVOw9Q==", + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, "requires": { - "uglify-es": "^3.1.9" + "source-map": "^0.6.1" }, "dependencies": { "source-map": { @@ -8359,132 +6363,14 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - } } } }, - "metro-react-native-babel-preset": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.60.0.tgz", - "integrity": "sha512-eByxCh52XWyMwh4eduzLz0HkraOX7X/tJBsOXvxhUaj8UEolxMYQWD1DO7rJbFiKfZbxRPortltDYzjJI4MpdQ==", - "dev": true, - "requires": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-exponentiation-operator": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-assign": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "react-refresh": "^0.4.0" - } - }, - "metro-resolver": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.60.0.tgz", - "integrity": "sha512-xemtydxR7y75zswKv04qrOKB7VQYaDUorItyfc9IDFgUS3ayC1+814I7VOLeVWk53fWm+BbmaUTfPuwi/yBxzw==", - "dev": true, - "requires": { - "absolute-path": "^0.0.0" - } - }, - "metro-source-map": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.60.0.tgz", - "integrity": "sha512-zq7gP4SwZ0dtM3J9kBMVd+FVS2v6/4hmR21cTOAXk7Mi7KnSnb1onuQaTwi4m6fdlr19N9A7Ad2VU0q+uVlFyA==", - "dev": true, - "requires": { - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "invariant": "^2.2.4", - "metro-symbolicate": "0.60.0", - "ob1": "0.60.0", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - } - }, - "metro-symbolicate": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.60.0.tgz", - "integrity": "sha512-H9g6CflHY0k+dpuxvmRIFs1FyGbxs/IhBlfBks0c3L9wr+1mJT63K5pjlhoonKB0c///wMTP+kUuSMRRox2qhQ==", - "dev": true, - "requires": { - "invariant": "^2.2.4", - "metro-source-map": "0.60.0", - "source-map": "^0.5.6", - "through2": "^2.0.1", - "vlq": "^1.0.0" - } - }, - "metro-transform-plugins": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.60.0.tgz", - "integrity": "sha512-yv+bwsyI3kAn8bX5APhK5TnW/7DLlFWZJD8VjlN3ciKEBCgdI5a73h7iHcdIL7m+mDY9lqgdEQIR0Jud11npUA==", - "dev": true, - "requires": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.5.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0" - } - }, - "metro-transform-worker": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.60.0.tgz", - "integrity": "sha512-fDht5wrNBT958JAnR/rmGyQPCon/h0cqn+jyC4gaZjk3wdgXmC54DfoCu5GNK6X6TQsuOb1lCLQfXx6Tz8CtxA==", - "dev": true, - "requires": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.5.0", - "@babel/parser": "^7.0.0", - "@babel/types": "^7.0.0", - "babel-preset-fbjs": "^3.3.0", - "metro": "0.60.0", - "metro-babel-transformer": "0.60.0", - "metro-cache": "0.60.0", - "metro-hermes-compiler": "0.60.0", - "metro-source-map": "0.60.0", - "metro-transform-plugins": "0.60.0" - } + "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": "3.1.10", @@ -8710,12 +6596,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -8778,18 +6658,6 @@ } } }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, "nopt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", @@ -8820,12 +6688,6 @@ } } }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, "normalize-url": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", @@ -8934,12 +6796,6 @@ "set-blocking": "~2.0.0" } }, - "nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -9103,12 +6959,6 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, - "ob1": { - "version": "0.60.0", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.60.0.tgz", - "integrity": "sha512-hi8vHBZiYIIoQMzwieQGv+VnPMFNaDciSyZhQNTXl54NB0MYOviQoeEbVqD6dcTHPE8nuJMbIZ0lIRiksAMB0A==", - "dev": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -9225,15 +7075,6 @@ "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", "dev": true }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -9257,12 +7098,6 @@ "word-wrap": "^1.2.3" } }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -9439,12 +7274,6 @@ "protocols": "^1.4.0" } }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -9514,15 +7343,6 @@ "pinkie": "^2.0.0" } }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -9550,44 +7370,6 @@ "fast-diff": "^1.1.2" } }, - "pretty-format": { - "version": "26.5.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.5.2.tgz", - "integrity": "sha512-VizyV669eqESlkOikKJI8Ryxl/kPpbdLwNdPs2GrbQs18MpySB5S0Yo0N7zkg2xTRiFq4CFw8ct5Vg4a0xP0og==", - "dev": true, - "requires": { - "@jest/types": "^26.5.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.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 - } - } - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -9600,15 +7382,6 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "~2.0.3" - } - }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -9724,18 +7497,6 @@ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", - "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", - "dev": true - }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -9822,36 +7583,6 @@ "strip-indent": "^3.0.0" } }, - "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -9868,49 +7599,12 @@ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "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", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, "release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", @@ -9920,12 +7614,6 @@ "es6-error": "^4.0.1" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", @@ -10052,12 +7740,6 @@ "glob": "^7.1.3" } }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true - }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -10109,56 +7791,12 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "dev": true, - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", - "dev": true - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -10188,12 +7826,6 @@ } } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -10460,24 +8092,6 @@ "urix": "^0.1.0" } }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", @@ -10581,20 +8195,14 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" } }, - "stackframe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", - "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", - "dev": true - }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -10616,12 +8224,6 @@ } } }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -10830,24 +8432,6 @@ "yallist": "^3.0.3" } }, - "temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", - "dev": true, - "requires": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true - } - } - }, "temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", @@ -11021,12 +8605,6 @@ "thenify": ">= 3.1.0 < 4" } }, - "throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -11052,12 +8630,6 @@ "os-tmpdir": "~1.0.2" } }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -11185,16 +8757,10 @@ "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", "dev": true }, - "ua-parser-js": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", - "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==", - "dev": true - }, "uglify-js": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.2.tgz", - "integrity": "sha512-G440NU6fewtnQftSgqRV1r2A5ChKbU1gqFCJ7I8S7MPpY/eZZfLGefaY6gUZYiWebMaO+txgiQ1ZyLDuNWJulg==", + "version": "3.13.6", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz", + "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==", "dev": true, "optional": true }, @@ -11204,46 +8770,12 @@ "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", "dev": true }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", - "dev": true - }, "umask": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz", "integrity": "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=", "dev": true }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true - }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -11289,12 +8821,6 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -11377,12 +8903,6 @@ "object.getownpropertydescriptors": "^2.0.3" } }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -11425,21 +8945,6 @@ "extsprintf": "^1.2.0" } }, - "vlq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", - "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", - "dev": true - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -11455,12 +8960,6 @@ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, - "whatwg-fetch": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz", - "integrity": "sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ==", - "dev": true - }, "whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", @@ -11673,16 +9172,6 @@ } } }, - "ws": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", - "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", - "dev": true, - "requires": { - "options": ">=0.0.5", - "ultron": "1.0.x" - } - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -11690,9 +9179,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/package.json b/package.json index 54250f2aaf..d7d8849de9 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,10 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, @@ -29,10 +29,9 @@ "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", + "lerna": "^3.22.0", "nyc": "^14.1.1", "prettier": "^1.14.3", "typescript": "^3.9.6" } -} +} \ No newline at end of file diff --git a/packages/sitecore-jss-angular-schematics/README.md b/packages/sitecore-jss-angular-schematics/README.md index 7ea2d40270..bcf453f840 100644 --- a/packages/sitecore-jss-angular-schematics/README.md +++ b/packages/sitecore-jss-angular-schematics/README.md @@ -2,4 +2,4 @@ This module is provided as a part of Sitecore JavaScript Services. It contains Angular developer code generation schematics. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-angular-schematics/package-lock.json b/packages/sitecore-jss-angular-schematics/package-lock.json index 768fd08e6f..0d39aa2c59 100644 --- a/packages/sitecore-jss-angular-schematics/package-lock.json +++ b/packages/sitecore-jss-angular-schematics/package-lock.json @@ -1,45 +1,41 @@ { "name": "@sitecore-jss/sitecore-jss-angular-schematics", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { "@angular-devkit/core": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.0.7.tgz", - "integrity": "sha512-pXaZgsQ8LHpRx4QGAUYDE8GwBQLAtoqPh6oUCwRJwBExm5rl13OGPTBWewHiq0ysV/SnFXvOjxwAaHQvC1AgZw==", + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.5.tgz", + "integrity": "sha512-DRFvEHRKoC+hTwcOAJqLe6UQa+bpXc/1IGCMHWEbuply0KIFIGQOlmaYwFZKixz3HdFZlmoCMcAVkAXvyaWVsQ==", "requires": { - "ajv": "6.12.3", + "ajv": "6.12.6", "fast-json-stable-stringify": "2.1.0", "magic-string": "0.25.7", - "rxjs": "6.5.5", + "rxjs": "6.6.3", "source-map": "0.7.3" } }, "@angular-devkit/schematics": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.0.7.tgz", - "integrity": "sha512-eyyYPgpjtr3h7WbnNbkDubJ/p+8TgKU6abWd+NmBfTvyeHrpVFUYZabNRcdXwUDSVzfTQKdmLynIkESj/KROrg==", + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.5.tgz", + "integrity": "sha512-7RoWgpMvhljPhW9CMz1EtqkwNnGpnsPyy0N29ClHPUq+o8wLR0hvbLBDz1fKSF7j1AwRccaQSNTj8KWsjzQJLQ==", "requires": { - "@angular-devkit/core": "10.0.7", - "ora": "4.0.4", - "rxjs": "6.5.5" + "@angular-devkit/core": "11.2.5", + "ora": "5.3.0", + "rxjs": "6.6.3" } }, "@schematics/angular": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-10.0.7.tgz", - "integrity": "sha512-0SljGZjA68tOsn7OIps79lTy9Y96OZglLnBqO6pSLlmCkGMbjFY2ssKQXJzwR0jJ5+TWBjWjpn2U5mir4yzOuQ==", + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.2.5.tgz", + "integrity": "sha512-pjaK0gZyqhzgAVxMKElG6cDpAvNZ3adVCTA8dhEixpH+JaQdoczl59hMn7rH75yQW0PApe+8g7HMwVK6bLRmxQ==", "requires": { - "@angular-devkit/core": "10.0.7", - "@angular-devkit/schematics": "10.0.7" + "@angular-devkit/core": "11.2.5", + "@angular-devkit/schematics": "11.2.5", + "jsonc-parser": "3.0.0" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, "@types/jasmine": { "version": "2.8.16", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.16.tgz", @@ -53,9 +49,9 @@ "dev": true }, "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -82,6 +78,21 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -92,6 +103,15 @@ "concat-map": "0.0.1" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -111,9 +131,9 @@ } }, "cli-spinners": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz", - "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==" }, "clone": { "version": "1.0.4", @@ -193,6 +213,11 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -206,14 +231,18 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, "jasmine": { "version": "2.99.0", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz", @@ -236,12 +265,63 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "log-symbols": { + "jsonc-parser": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "requires": { - "chalk": "^2.4.2" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.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==", + "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==", + "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==", + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } } }, "magic-string": { @@ -266,11 +346,6 @@ "brace-expansion": "^1.1.7" } }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -289,33 +364,32 @@ } }, "ora": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz", - "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "requires": { - "chalk": "^3.0.0", + "bl": "^4.0.3", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", + "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", - "mute-stream": "0.0.8", + "log-symbols": "^4.0.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, "dependencies": { "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -340,9 +414,9 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { "has-flag": "^4.0.0" } @@ -360,6 +434,16 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -370,13 +454,18 @@ } }, "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "requires": { "tslib": "^1.9.0" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -392,6 +481,14 @@ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -409,24 +506,29 @@ } }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", + "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", "dev": true }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "requires": { "punycode": "^2.1.0" } }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", diff --git a/packages/sitecore-jss-angular-schematics/package.json b/packages/sitecore-jss-angular-schematics/package.json index db394ed57b..893e2f7a69 100644 --- a/packages/sitecore-jss-angular-schematics/package.json +++ b/packages/sitecore-jss-angular-schematics/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-angular-schematics", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "Scaffolding schematics for Sitecore JSS Angular apps", "scripts": { "build": "tsc -p tsconfig.json", @@ -11,24 +11,24 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, "schematics": "./src/collection.json", "dependencies": { - "@angular-devkit/schematics": "^10.0.7", - "@schematics/angular": "^10.0.7", + "@angular-devkit/schematics": "^11.2.5", + "@schematics/angular": "^11.2.5", "chalk": "^2.4.2" }, "devDependencies": { "@types/jasmine": "^2.8.0", "@types/node": "^12.7.8", "jasmine": "^2.99.0", - "typescript": "~3.9.7" + "typescript": "~4.1.5" }, "gitHead": "2f4820efddf4454eeee58ed1b2cc251969efdf5b" } diff --git a/packages/sitecore-jss-angular-schematics/src/jss-component/index.ts b/packages/sitecore-jss-angular-schematics/src/jss-component/index.ts index d3b051fe94..a63cfbd354 100644 --- a/packages/sitecore-jss-angular-schematics/src/jss-component/index.ts +++ b/packages/sitecore-jss-angular-schematics/src/jss-component/index.ts @@ -20,13 +20,14 @@ import { Tree, url, } from '@angular-devkit/schematics'; -import { getWorkspace } from '@schematics/angular/utility/config'; +import { getWorkspace } from '@schematics/angular/utility/workspace'; +import { ProjectType } from '@schematics/angular/utility/workspace-models'; import { parseName } from '@schematics/angular/utility/parse-name'; import { validateHtmlSelector, validateName } from '@schematics/angular/utility/validation'; import chalk from 'chalk'; import { Schema as ComponentOptions } from './schema'; -function buildSelector(options: ComponentOptions, projectPrefix: string) { +function buildSelector(options: ComponentOptions, projectPrefix?: string) { let selector = strings.dasherize(options.name); if (options.prefix) { selector = `${options.prefix}-${selector}`; @@ -38,16 +39,17 @@ function buildSelector(options: ComponentOptions, projectPrefix: string) { } export default function(options: ComponentOptions) { - return (host: Tree) => { - const workspace = getWorkspace(host); + return async (host: Tree) => { + const workspace = await getWorkspace(host); if (!options.project) { throw new SchematicsException('Option (project) is required.'); } - const project = workspace.projects[options.project]; + const project = workspace.projects.get(options.project); if (options.path === undefined) { - const projectDirName = project.projectType === 'application' ? 'app' : 'lib'; - options.path = `/${project.root}/src/${projectDirName}`; + const projectDirName = + project?.extensions.projectType === ProjectType.Application ? 'app' : 'lib'; + options.path = `/${project?.root}/src/${projectDirName}`; } // this is not an options option due to schematics issues with multiple template roots @@ -62,7 +64,7 @@ export default function(options: ComponentOptions) { const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; - options.selector = options.selector || buildSelector(options, project.prefix); + options.selector = options.selector || buildSelector(options, project?.prefix); validateName(options.name); validateHtmlSelector(options.selector); @@ -92,7 +94,7 @@ export default function(options: ComponentOptions) { options.lazyload ? noop() : filter((path) => !path.endsWith('.module.ts')), template({ ...strings, - 'if-flat': (s: string) => options.flat ? '' : s, + 'if-flat': (s: string) => (options.flat ? '' : s), ...options, }), move(parsedPath.path), @@ -104,7 +106,11 @@ export default function(options: ComponentOptions) { console.log(chalk.green(`Component ${options.name} is scaffolding.`)); console.log(chalk.green('Next steps:')); if (!options.noManifest) { - console.log(`* Define the component's data in ${chalk.green(`${manifestPath}/${options.name}.sitecore.ts`)}`); + console.log( + `* Define the component's data in ${chalk.green( + `${manifestPath}/${options.name}.sitecore.ts` + )}` + ); } else { console.log( `* Scaffold the component in Sitecore using '${chalk.green( @@ -112,16 +118,22 @@ export default function(options: ComponentOptions) { )}, or create the rendering item and datasource template yourself.` ); } - console.log(`* Implement the Angular component in ${chalk.green(`${parsedPath.path}/${parsedPath.name}`)}`); + console.log( + `* Implement the Angular component in ${chalk.green(`${parsedPath.path}/${parsedPath.name}`)}` + ); if (!options.noManifest) { - console.log(`* Add the component to a route layout (/data/routes) and test it with ${chalk.green('jss start')}`); + console.log( + `* Add the component to a route layout (/data/routes) and test it with ${chalk.green( + 'jss start' + )}` + ); } else { console.log( `* Deploy your app with the new component to Sitecore (${chalk.green( 'jss deploy:watch' )} or ${chalk.green('jss deploy files')})` ); - console.log(`* Add the component to a route using Sitecore Experience Editor, and test it.`); + console.log('* Add the component to a route using Sitecore Experience Editor, and test it.'); } console.log(); diff --git a/packages/sitecore-jss-angular/README.md b/packages/sitecore-jss-angular/README.md index 0c37e525db..9aac2fcefc 100644 --- a/packages/sitecore-jss-angular/README.md +++ b/packages/sitecore-jss-angular/README.md @@ -2,4 +2,4 @@ This module is provided as a part of Sitecore JavaScript Services. It contains Angular integration components and services for JSS. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-angular/ng-package.json b/packages/sitecore-jss-angular/ng-package.json index 124ede8cde..4865d1ba51 100644 --- a/packages/sitecore-jss-angular/ng-package.json +++ b/packages/sitecore-jss-angular/ng-package.json @@ -7,7 +7,7 @@ "@sitecore-jss/sitecore-jss": "@sitecore-jss/sitecore-jss" } }, - "whitelistedNonPeerDependencies": [ + "allowedNonPeerDependencies": [ "sitecore-jss" ] } diff --git a/packages/sitecore-jss-angular/ngcc.config.js b/packages/sitecore-jss-angular/ngcc.config.js deleted file mode 100644 index b15888e5ee..0000000000 --- a/packages/sitecore-jss-angular/ngcc.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - entryPoints: { - './dist': { - ignore: true, - }, - }, -}; \ No newline at end of file diff --git a/packages/sitecore-jss-angular/package-lock.json b/packages/sitecore-jss-angular/package-lock.json index fb0b7afe32..3bef815ea0 100644 --- a/packages/sitecore-jss-angular/package-lock.json +++ b/packages/sitecore-jss-angular/package-lock.json @@ -1,58 +1,60 @@ { "name": "@sitecore-jss/sitecore-jss-angular", - "version": "16.0.0", + "version": "18.0.0-canary.7", "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-2.0.2.tgz", + "integrity": "sha512-/hJNXUjPEXwsmXeWneAW7X3Jg+JwsMavQ8eQ4UevcaKx4Ozthh09n6oyegqc82Y48Adcce7KyalGCKmWY19piA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.3.0" + "@typescript-eslint/experimental-utils": "4.16.1" } }, "@angular/common": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-10.0.14.tgz", - "integrity": "sha512-EOAuaMt2HwJF3DtIJ/ksHtnF8Pqh5K2rWISYLEs9R3WNaSGn74kbCODAT4pNhI8P22Ykl3H4FmQUgnDZ3uDAUg==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.2.6.tgz", + "integrity": "sha512-q1yR6bktd5p987gLEKiFY4CrHcmBxks9R6GcdgzGneQsucDtGESzEKdcJ0uaMXE+9teS+fQy5GvXel6DlA/J+w==", "dev": true, "requires": { "tslib": "^2.0.0" }, "dependencies": { "tslib": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", - "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } }, "@angular/compiler": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-10.0.14.tgz", - "integrity": "sha512-lYNo6/MmnYAVFoDQDBB6HMFd9zHg3RHXc6hn+wchU0XSWiIsg6WYHbKOb/DyqUEyKebzy0gSKZf7gUeZHtj62Q==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.2.6.tgz", + "integrity": "sha512-3ijsCxnCLU1V1hy4UMf9qtMz5LR+wCdVFDqktEQccN9YEkN0cNtOc8Nu9EV9/mc2tqd1Q4xSBpb2o2mvpy7AhQ==", "dev": true, "requires": { "tslib": "^2.0.0" }, "dependencies": { "tslib": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", - "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } }, "@angular/compiler-cli": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-10.0.14.tgz", - "integrity": "sha512-WK+S90sjc+3iMo8/CuuAX0RdGFwyA9esqqC5fYG/MDZjKuPuhogiimmR0rY3P1Th7B9di8x012xiILbf4GsGUQ==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.2.6.tgz", + "integrity": "sha512-1OC8UkySaLzaw3aSrm8A6SA88CxQAdA4ffaOhBLE/Ee6CxpneVxn3ORlnccqnS8zWyEpschbootPJV56U3Azeg==", "dev": true, "requires": { + "@babel/core": "^7.8.6", + "@babel/types": "^7.8.6", "canonical-path": "1.0.0", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", @@ -65,7 +67,7 @@ "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", "tslib": "^2.0.0", - "yargs": "15.3.0" + "yargs": "^16.1.1" }, "dependencies": { "semver": { @@ -75,77 +77,77 @@ "dev": true }, "tslib": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", - "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } }, "@angular/core": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-10.0.14.tgz", - "integrity": "sha512-m+c9g6fA/gE+6K7It01b6r8TEmbuFjUZajQ9gG/pzist0mTBcqfvn0O4h5X+ebnSgw/bbnnp+4PbaXEi1pOWZQ==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.2.6.tgz", + "integrity": "sha512-lS5JOQ/Y9gbk5WiMnCp5Zyz2pRIoZ+IWLOXHU5rkQeXy0zE3eMJhw0FfpEK+X5CeSNl2EPVSPLT0MtDtbNPodg==", "dev": true, "requires": { "tslib": "^2.0.0" }, "dependencies": { "tslib": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", - "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } }, "@angular/platform-browser": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-10.0.14.tgz", - "integrity": "sha512-DcBZ1wt2TwtXrdcmCTWanAzu2Vxk5Uvioam0UcDxcgXD84T2fHipyfZVn07fMqRvzFQj45tDNAEevFBnGZar4w==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.2.6.tgz", + "integrity": "sha512-xnYpfoqWyQOUngfbHefsZMyelCSAaxpopu/WYP0gpbYh9qJiVhsN9s6zRMqOIPueq9lmvlEuGBMgaJjeD6Ei7Q==", "dev": true, "requires": { "tslib": "^2.0.0" }, "dependencies": { "tslib": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", - "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } }, "@angular/platform-browser-dynamic": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.14.tgz", - "integrity": "sha512-PPCAiNh/JSuQNKXOhj3a8CTFdVhTgF/EpGtaotnVr/BfbJMeFImKo7m2QQOTsAFaEP2DurSHnofPnMWAfHS2mg==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.6.tgz", + "integrity": "sha512-B56b8yPW3vAmPe4VONiBYEMZ6B1i5CUkJvit8qWWK3y7t5XrYOihIiGC0UqEDaw/uAg72GXjixspcxZWan5e9w==", "dev": true, "requires": { "tslib": "^2.0.0" }, "dependencies": { "tslib": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", - "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } }, "@angular/router": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-10.0.14.tgz", - "integrity": "sha512-VWzaNyPZDY99TMszV1GlXJgVOxXsjhJrsv3mIcjaz1dfdlKOeKTVDLdnyXfP9CkwE3PRmvG7eSXppIj6nn9BpQ==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.2.6.tgz", + "integrity": "sha512-n/3Sp36slXzRXUcUO9nVs3CkgFxa6U9A8GENeyxq9XQtcE912jOP4dzjDi3hlaNKbX9ijOyEh505KpqmiSYATg==", "dev": true, "requires": { "tslib": "^2.0.0" }, "dependencies": { "tslib": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", - "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true } } @@ -415,9 +417,9 @@ } }, "@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -427,7 +429,6 @@ "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" }, @@ -461,12 +462,6 @@ "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 } } }, @@ -477,35 +472,35 @@ "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==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.stat": "2.0.4", "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==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", "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==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.3", + "@nodelib/fs.scandir": "2.1.4", "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", - "integrity": "sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", + "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -527,9 +522,9 @@ } }, "@rollup/plugin-node-resolve": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", - "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -537,7 +532,19 @@ "builtin-modules": "^3.1.0", "deepmerge": "^4.2.2", "is-module": "^1.0.0", - "resolve": "^1.17.0" + "resolve": "^1.19.0" + }, + "dependencies": { + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + } } }, "@rollup/pluginutils": { @@ -565,6 +572,24 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, + "@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "dev": true + }, + "@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", + "dev": true + }, + "@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", + "dev": true + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -578,21 +603,15 @@ "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==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/node": { - "version": "12.12.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.26.tgz", - "integrity": "sha512-UmUm94/QZvU5xLcUlNR8hA7Ac+fGpO1EG/a8bcWVz0P0LqtxFmun9Y2bbtuckwGboWJIT70DoWq1r3hb56n3DA==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "version": "14.14.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", + "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", "dev": true }, "@types/q": { @@ -611,47 +630,46 @@ } }, "@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==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.16.1.tgz", + "integrity": "sha512-0Hm3LSlMYFK17jO4iY3un1Ve9x1zLNn4EM50Lia+0EV99NdbK+cn0er7HC7IvBA23mBg3P+8dUkMXy4leL33UQ==", "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", + "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/typescript-estree": "4.16.1", "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==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.16.1.tgz", + "integrity": "sha512-6IlZv9JaurqV0jkEg923cV49aAn8V6+1H1DRfhRcvZUrptQ+UtSKHb5kwTayzOYTJJ/RsYZdcvhOEKiBLyc0Cw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.3.0", - "@typescript-eslint/visitor-keys": "4.3.0" + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1" } }, "@typescript-eslint/types": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.3.0.tgz", - "integrity": "sha512-Cx9TpRvlRjOppGsU6Y6KcJnUDOelja2NNCX6AZwtVHRzaJkdytJWMuYiqi8mS35MRNA3cJSwDzXePfmhU6TANw==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.16.1.tgz", + "integrity": "sha512-nnKqBwMgRlhzmJQF8tnFDZWfunXmJyuXj55xc8Kbfup4PbkzdoDXZvzN8//EiKR27J6vUSU8j4t37yUuYPiLqA==", "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==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.16.1.tgz", + "integrity": "sha512-m8I/DKHa8YbeHt31T+UGd/l8Kwr0XCTCZL3H4HMvvLCT7HU9V7yYdinTOv1gf/zfqNeDcCgaFH2BMsS8x6NvJg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.3.0", - "@typescript-eslint/visitor-keys": "4.3.0", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1", "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" }, @@ -672,9 +690,9 @@ "dev": true }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -683,12 +701,12 @@ } }, "@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==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.16.1.tgz", + "integrity": "sha512-s/aIP1XcMkEqCNcPQtl60ogUYjSM8FU2mq1O7y5cFf3Xcob1z1iXWNB6cC43Op+NGRTFgGolri6s8z/efA9i1w==", "dev": true, "requires": { - "@typescript-eslint/types": "4.3.0", + "@typescript-eslint/types": "4.16.1", "eslint-visitor-keys": "^2.0.0" } }, @@ -720,16 +738,10 @@ "integrity": "sha512-oZRad/3SMOI/pxbbmqyurIx7jHw1wZDcR9G44L8pUVFEomX/0dH89SrM1KaDXuv1NpzAXz6Op/Xu/Qd5XXzdEA==", "dev": true }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, "ajv": { - "version": "6.12.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", - "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -777,9 +789,9 @@ } }, "app-root-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", - "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", "dev": true }, "argparse": { @@ -799,6 +811,24 @@ } } }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, "array-filter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", @@ -811,12 +841,6 @@ "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", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", - "dev": true - }, "asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -849,6 +873,12 @@ "util": "^0.12.0" } }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -861,18 +891,6 @@ "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", "dev": true }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -880,17 +898,16 @@ "dev": true }, "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.5.tgz", + "integrity": "sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA==", "dev": true, "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", + "browserslist": "^4.16.3", + "caniuse-lite": "^1.0.30001196", + "colorette": "^1.2.2", + "fraction.js": "^4.0.13", "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" } }, @@ -903,11 +920,14 @@ "array-filter": "^1.0.0" } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } }, "balanced-match": { "version": "1.0.0", @@ -916,9 +936,9 @@ "dev": true }, "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", "dev": true }, "base64-js": { @@ -933,26 +953,30 @@ "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, "binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", - "dev": true + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } + } }, "bn.js": { "version": "5.1.3", @@ -1114,15 +1138,16 @@ } }, "browserslist": { - "version": "4.14.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", - "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001135", - "electron-to-chromium": "^1.3.571", - "escalade": "^3.1.0", - "node-releases": "^1.1.61" + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" } }, "buffer": { @@ -1148,9 +1173,9 @@ "dev": true }, "builtin-modules": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", - "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true }, "builtin-status-codes": { @@ -1165,11 +1190,41 @@ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", "dev": true }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } }, "callsites": { "version": "3.1.0", @@ -1177,12 +1232,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -1204,9 +1253,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001137", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001137.tgz", - "integrity": "sha512-54xKQZTqZrKVHmVz0+UvdZR6kQc7pJDgfhsMYDG19ID1BWoNnDMFm5Q3uSBSU401pBvKYMsHAt9qhEDcxmk8aw==", + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", "dev": true }, "canonical-path": { @@ -1278,17 +1327,21 @@ "safe-buffer": "^5.0.1" } }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "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": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "restore-cursor": "^3.1.0" } }, + "cli-spinners": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", + "dev": true + }, "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -1307,35 +1360,61 @@ } }, "codelyzer": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.5.0.tgz", - "integrity": "sha512-oO6vCkjqsVrEsmh58oNlnJkRXuA30hF8cdNAQV9DytEalDwyOFRvHMnlKFzmOStNerOmPGZU9GAHnBo4tGvtiQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.1.tgz", + "integrity": "sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g==", "dev": true, "requires": { - "app-root-path": "^2.1.0", - "css-selector-tokenizer": "^0.7.0", + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", "semver-dsl": "^1.0.1", "source-map": "^0.5.7", - "sprintf-js": "^1.1.1" + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" }, "dependencies": { + "@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", + "dev": true + }, + "@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", + "dev": true } } }, "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", "dev": true, "requires": { "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-string": "^1.5.4" }, "dependencies": { "color-convert": { @@ -1371,9 +1450,9 @@ "dev": true }, "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", "dev": true, "requires": { "color-name": "^1.0.0", @@ -1381,9 +1460,9 @@ } }, "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, "colors": { @@ -1419,9 +1498,9 @@ } }, "commander": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.1.0.tgz", - "integrity": "sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, "commondir": { @@ -1430,22 +1509,10 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "concat-map": { @@ -1494,11 +1561,60 @@ } }, "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", "dev": true }, + "copy-anything": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", + "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", + "dev": true, + "requires": { + "is-what": "^3.12.0" + } + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, "create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", @@ -1626,6 +1742,28 @@ "requires": { "postcss": "^7.0.1", "timsort": "^0.3.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "css-parse": { @@ -1656,14 +1794,13 @@ "dev": true }, "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", "dev": true, "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" } }, "css-tree": { @@ -1677,9 +1814,9 @@ } }, "css-what": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", - "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", "dev": true }, "cssauron": { @@ -1692,15 +1829,49 @@ } }, "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", "dev": true, "requires": { "css-declaration-sorter": "^4.0.1", @@ -1731,8 +1902,30 @@ "postcss-ordered-values": "^4.1.2", "postcss-reduce-initial": "^4.0.3", "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", + "postcss-svgo": "^4.0.3", "postcss-unique-selectors": "^4.0.1" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-util-get-arguments": { @@ -1754,6 +1947,28 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-util-same-parent": { @@ -1763,28 +1978,28 @@ "dev": true }, "csso": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", - "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.39" + "css-tree": "^1.1.2" }, "dependencies": { "css-tree": { - "version": "1.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", - "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "requires": { - "mdn-data": "2.0.6", + "mdn-data": "2.0.14", "source-map": "^0.6.1" } }, "mdn-data": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", - "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true } } @@ -1801,6 +2016,12 @@ "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", + "dev": true + }, "date-format": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", @@ -1816,12 +2037,6 @@ "ms": "2.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -1952,9 +2167,9 @@ }, "dependencies": { "domelementtype": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", - "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true } } @@ -2003,30 +2218,36 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.575", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.575.tgz", - "integrity": "sha512-031VrjcilnE8bXivDGhEeuGjMZrjTAeyAKm3XWPY9SvGYE6Hn8003gCqoNszFu6lh1v0gDx5hrM0VE1cPSMUkQ==", + "version": "1.3.727", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", + "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==", "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true } } @@ -2044,68 +2265,27 @@ "dev": true }, "engine.io": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", - "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "0.3.1", - "debug": "~4.1.0", - "engine.io-parser": "~2.2.0", - "ws": "^7.1.2" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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 - } - } - }, - "engine.io-client": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.3.tgz", - "integrity": "sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw==", - "dev": true, - "requires": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~4.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" }, "dependencies": { - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -2113,29 +2293,16 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } } } }, "engine.io-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", - "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", "dev": true, "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" + "base64-arraybuffer": "0.1.4" } }, "enquirer": { @@ -2154,15 +2321,15 @@ "dev": true }, "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "optional": true, "requires": { @@ -2176,14 +2343,6 @@ "dev": true, "requires": { "is-arrayish": "^0.2.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - } } }, "es-abstract": { @@ -2223,9 +2382,9 @@ "dev": true }, "escalade": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.0.tgz", - "integrity": "sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-html": { @@ -2241,13 +2400,13 @@ "dev": true }, "eslint": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", - "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -2258,12 +2417,12 @@ "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", - "esquery": "^1.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -2271,7 +2430,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -2285,6 +2444,15 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -2305,12 +2473,12 @@ } }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", + "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "has-flag": { @@ -2325,6 +2493,12 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -2332,9 +2506,9 @@ "dev": true }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -2350,9 +2524,9 @@ } }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } @@ -2422,9 +2596,9 @@ "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==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -2462,9 +2636,9 @@ "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, "esutils": { @@ -2508,9 +2682,9 @@ "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==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -2540,18 +2714,18 @@ "dev": true }, "fastq": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", - "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "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==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -2587,16 +2761,6 @@ "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", "dev": true }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -2608,9 +2772,9 @@ }, "dependencies": { "flatted": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", - "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true } } @@ -2633,6 +2797,12 @@ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, + "fraction.js": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.13.tgz", + "integrity": "sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA==", + "dev": true + }, "fs-extra": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", @@ -2681,6 +2851,23 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -2711,9 +2898,9 @@ "dev": true }, "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -2739,19 +2926,10 @@ "function-bind": "^1.1.1" } }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dev": true, - "requires": { - "isarray": "2.0.1" - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, "has-flag": { @@ -2818,12 +2996,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, "hsl-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", @@ -2836,12 +3008,6 @@ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", "dev": true }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -2928,12 +3094,6 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2951,12 +3111,20 @@ "dev": true }, "injection-js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.3.1.tgz", - "integrity": "sha512-t+kpDAOL/DUZ68JncAhsb8C91qhJ6dXRMcOuvJfNA7sp63etdiQe6KQoxE/nZ5b2eTi0TQX6OothOCm89cLAJQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.4.0.tgz", + "integrity": "sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA==", "dev": true, "requires": { - "tslib": "^1.9.3" + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", + "dev": true + } } }, "inline-source-map": { @@ -2989,9 +3157,15 @@ "dev": true }, "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", "dev": true }, "is-binary-path": { @@ -3003,6 +3177,15 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-callable": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", @@ -3023,12 +3206,27 @@ "rgba-regex": "^1.0.0" } }, + "is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3056,6 +3254,12 @@ "is-extglob": "^2.1.1" } }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -3083,6 +3287,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "dev": true + }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -3107,14 +3317,17 @@ "has-symbols": "^1.0.1" } }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "dev": true }, "is-symbol": { "version": "1.0.3", @@ -3137,22 +3350,28 @@ "has-symbols": "^1.0.1" } }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, "is-wsl": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", "dev": true }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - }, "isbinaryfile": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", - "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", "dev": true }, "isexe": { @@ -3275,16 +3494,10 @@ "esprima": "^4.0.0" } }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema-traverse": { @@ -3324,9 +3537,9 @@ } }, "karma": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/karma/-/karma-5.2.3.tgz", - "integrity": "sha512-tHdyFADhVVPBorIKCX8A37iLHxc6RBRphkSoQ+MLKdAtFn1k97tD8WUGi1KlEtDZKL3hui0qhsY9HXUfSNDYPQ==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.2.tgz", + "integrity": "sha512-fo4Wt0S99/8vylZMxNj4cBFyOBBnC1bewZ0QOlePij/2SZVWxqbyLeIddY13q6URa2EpLRW8ixvFRUMjkmo1bw==", "dev": true, "requires": { "body-parser": "^1.19.0", @@ -3347,32 +3560,11 @@ "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^2.3.0", + "socket.io": "^3.1.0", "source-map": "^0.6.1", "tmp": "0.2.1", - "ua-parser-js": "0.7.22", - "yargs": "^15.3.1" - }, - "dependencies": { - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - } + "ua-parser-js": "^0.7.23", + "yargs": "^16.1.1" } }, "karma-chrome-launcher": { @@ -3471,17 +3663,19 @@ } }, "less": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/less/-/less-3.12.2.tgz", - "integrity": "sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", + "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==", "dev": true, "requires": { + "copy-anything": "^2.0.1", "errno": "^0.1.1", "graceful-fs": "^4.1.2", "image-size": "~0.5.0", "make-dir": "^2.1.0", "mime": "^1.4.1", - "native-request": "^1.0.5", + "needle": "^2.5.2", + "parse-node-version": "^1.0.1", "source-map": "~0.6.0", "tslib": "^1.10.0" }, @@ -3516,25 +3710,10 @@ "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", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.memoize": { @@ -3549,6 +3728,43 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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 + }, + "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" + } + } + } + }, "log4js": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", @@ -3692,6 +3908,12 @@ "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 + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -3734,12 +3956,11 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "native-request": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.7.tgz", - "integrity": "sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ==", - "dev": true, - "optional": true + "nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "dev": true }, "natural-compare": { "version": "1.4.0", @@ -3747,6 +3968,37 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "needle": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "optional": true + } + } + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -3754,72 +4006,94 @@ "dev": true }, "ng-packagr": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-10.1.2.tgz", - "integrity": "sha512-pm61gu6jPkohL8tFWk+2DwUtb3rs5GpND1ZjKUYv5WUJPUQmBfG5WvEO/CDVQpSDWhNWWLTt17NIQ+RS3hNUHg==", + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-11.2.4.tgz", + "integrity": "sha512-pAZYRWe4duLx6bXgfNKgT2XBHiepWz2sA+CaJ9UYEbLHE+QxYGtw/PJAC6o0zRDv1bBCkv5oquKTyTZtYjkAQQ==", "dev": true, "requires": { - "@rollup/plugin-commonjs": "^15.0.0", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-node-resolve": "^9.0.0", - "ajv": "^6.12.3", + "@rollup/plugin-commonjs": "^17.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^11.1.0", + "ajv": "^7.0.3", "ansi-colors": "^4.1.1", - "autoprefixer": "^9.6.5", - "browserslist": "^4.7.0", - "chokidar": "^3.2.1", - "commander": "^6.0.0", - "cssnano-preset-default": "^4.0.7", - "fs-extra": "^9.0.0", - "glob": "^7.1.2", - "injection-js": "^2.2.1", - "less": "^3.10.3", - "node-sass-tilde-importer": "^1.0.0", - "postcss": "^7.0.29", - "postcss-url": "^8.0.0", - "read-pkg-up": "^5.0.0", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.1", + "chokidar": "^3.5.1", + "commander": "^7.0.0", + "cssnano": "^4.1.10", + "glob": "^7.1.6", + "injection-js": "^2.4.0", + "less": "^4.1.0", + "node-sass-tilde-importer": "^1.0.2", + "ora": "^5.1.0", + "postcss": "^8.2.4", + "postcss-url": "^10.1.1", "rimraf": "^3.0.0", - "rollup": "^2.8.0", - "rollup-plugin-sourcemaps": "^0.6.0", + "rollup": "^2.37.0", + "rollup-plugin-sourcemaps": "^0.6.3", "rxjs": "^6.5.0", - "sass": "^1.23.0", - "stylus": "^0.54.7", - "terser": "^5.0.0" + "sass": "^1.32.5", + "stylus": "^0.54.8", + "sync-rpc": "^1.3.6", + "terser": "^5.5.1" }, "dependencies": { - "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "ajv": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz", + "integrity": "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==", "dev": true, "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "jsonfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", - "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^1.0.0" + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" } }, - "universalify": { + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } } } }, "node-releases": { - "version": "1.1.61", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", - "integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g==", + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, "node-sass-tilde-importer": { @@ -3831,18 +4105,6 @@ "find-parent-dir": "^0.3.0" } }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3870,16 +4132,10 @@ "boolbase": "~1.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-inspect": { @@ -3939,25 +4195,210 @@ } }, "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==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "es-abstract": "^1.18.0-next.2" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } } }, "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==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } } }, "on-finished": { @@ -3978,6 +4419,15 @@ "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.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -3992,34 +4442,54 @@ "word-wrap": "^1.2.3" } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "ora": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.0.tgz", + "integrity": "sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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 + }, + "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" + } + } } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, "pad": { @@ -4060,34 +4530,20 @@ } }, "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" + "json-parse-better-errors": "^1.0.1" } }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true }, "parseurl": { "version": "1.3.3", @@ -4101,12 +4557,6 @@ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -4158,16 +4608,38 @@ "optional": true }, "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "8.2.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", + "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map": "^0.6.1" + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -4179,17 +4651,6 @@ } } }, - "postcss-calc": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.4.tgz", - "integrity": "sha512-0I79VRAd1UTkaHzY9w83P39YGO/M3bG7/tNLrHGEunBolfoGM0hSjrGvjoeaj0JE/zIw5GsI2KZ0UwDJqv5hjw==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, "postcss-colormin": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", @@ -4203,11 +4664,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4221,11 +4702,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4236,6 +4737,28 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-duplicates": { @@ -4245,6 +4768,28 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-empty": { @@ -4254,6 +4799,28 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-overridden": { @@ -4263,6 +4830,28 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-merge-longhand": { @@ -4277,11 +4866,31 @@ "stylehacks": "^4.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4299,6 +4908,17 @@ "vendors": "^1.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -4309,6 +4929,15 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4322,11 +4951,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4342,11 +4991,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4364,11 +5033,31 @@ "uniqs": "^2.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4384,6 +5073,17 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -4394,6 +5094,15 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4404,6 +5113,28 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-display-values": { @@ -4417,11 +5148,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4437,11 +5188,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4457,11 +5228,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4476,11 +5267,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4495,11 +5306,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4514,11 +5345,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4534,11 +5385,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4552,11 +5423,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4571,11 +5462,31 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -4589,6 +5500,28 @@ "caniuse-api": "^3.0.0", "has": "^1.0.0", "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-reduce-transforms": { @@ -4603,76 +5536,134 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "dev": true, "requires": { "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", "util-deprecate": "^1.0.2" - }, - "dependencies": { - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - } } }, "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", "dev": true, "requires": { - "is-svg": "^3.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "svgo": "^1.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, "postcss-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-8.0.0.tgz", - "integrity": "sha512-E2cbOQ5aii2zNHh8F6fk1cxls7QVFZjLPSrqvmiza8OuXLzIpErij8BDS5Y3STPfJgpIMNCPEr8JlKQWEoozUw==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz", + "integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==", "dev": true, "requires": { - "mime": "^2.3.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.0", - "postcss": "^7.0.2", - "xxhashjs": "^0.2.1" + "make-dir": "~3.1.0", + "mime": "~2.5.2", + "minimatch": "~3.0.4", + "xxhashjs": "~0.2.2" + }, + "dependencies": { + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true + } } }, "postcss-value-parser": { @@ -4764,10 +5755,10 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, "randombytes": { @@ -4807,64 +5798,6 @@ "unpipe": "1.0.0" } }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - } - }, - "read-pkg-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-5.0.0.tgz", - "integrity": "sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^5.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -4891,54 +5824,22 @@ "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", "dev": true }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "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", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, "requires-port": { @@ -4968,6 +5869,16 @@ "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" + } + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -5012,18 +5923,27 @@ } }, "rollup": { - "version": "2.28.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.28.2.tgz", - "integrity": "sha512-8txbsFBFLmm9Xdt4ByTOGa9Muonmc8MfNjnGAR8U8scJlF1ZW7AgNZa7aqBXaKtlvnYP/ab++fQIq9dB9NWUbg==", + "version": "2.47.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.47.0.tgz", + "integrity": "sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg==", "dev": true, "requires": { - "fsevents": "~2.1.2" + "fsevents": "~2.3.1" + }, + "dependencies": { + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + } } }, "rollup-plugin-sourcemaps": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.2.tgz", - "integrity": "sha512-9AwTKg3yRykwzemfLt71ySe0LvrAci+bpsOL1LaTYFk5BX4HF6X7DQfpHa74ANfSja3hyjiQkXCR8goSOnW//Q==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", + "integrity": "sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==", "dev": true, "requires": { "@rollup/pluginutils": "^3.0.9", @@ -5031,15 +5951,18 @@ } }, "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 + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } }, "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", + "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -5058,12 +5981,12 @@ "dev": true }, "sass": { - "version": "1.26.11", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.11.tgz", - "integrity": "sha512-W1l/+vjGjIamsJ6OnTe0K37U2DBO/dgsv2Z4c89XQ8ZOO6l/VwkqwLSqoYzJeJs6CLuGSTRWc91GbQFL3lvrvw==", + "version": "1.32.13", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.13.tgz", + "integrity": "sha512-dEgI9nShraqP7cXQH+lEXVf73WOPCse0QlFzSD8k+1TcOxCMwVXfQlr0jtoluZysQOyJGnfr21dLvYKDJq8HkA==", "dev": true, "requires": { - "chokidar": ">=2.0.0 <4.0.0" + "chokidar": ">=3.0.0 <4.0.0" } }, "sax": { @@ -5087,12 +6010,6 @@ "semver": "^5.3.0" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -5130,6 +6047,12 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -5137,6 +6060,14 @@ "dev": true, "requires": { "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } } }, "slash": { @@ -5157,26 +6088,29 @@ } }, "socket.io": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", - "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", "dev": true, "requires": { - "debug": "~4.1.0", - "engine.io": "~3.4.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.3.0", - "socket.io-parser": "~3.4.0" + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -5188,96 +6122,29 @@ } }, "socket.io-adapter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", - "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", "dev": true }, - "socket.io-client": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", - "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", - "dev": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "engine.io-client": "~3.4.0", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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 - }, - "socket.io-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", - "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - } - } - }, "socket.io-parser": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", - "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", "dev": true, "requires": { - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "isarray": "2.0.1" + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -5315,9 +6182,9 @@ } }, "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "dev": true }, "sourcemap-codec": { @@ -5326,38 +6193,6 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", - "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", - "dev": true - }, "sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -5533,6 +6368,17 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -5543,6 +6389,15 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -5621,22 +6476,51 @@ "util.promisify": "~1.0.0" } }, + "sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "requires": { + "get-port": "^3.1.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==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "ajv": "^6.12.4", + "ajv": "^7.0.2", "lodash": "^4.17.20", "slice-ansi": "^4.0.0", "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", + "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "terser": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.3.tgz", - "integrity": "sha512-vRQDIlD+2Pg8YMwVK9kMM3yGylG95EIwzBai1Bw7Ot4OBfn3VP1TZn3EWx4ep2jERN/AmnVaTiGuelZSN7ds/A==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", + "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", "dev": true, "requires": { "commander": "^2.20.0", @@ -5694,12 +6578,6 @@ "rimraf": "^3.0.0" } }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -5722,9 +6600,9 @@ "dev": true }, "tsickle": { - "version": "0.37.1", - "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.37.1.tgz", - "integrity": "sha512-0GwgOJEnsmRsrONXCvcbAWY0CvdqF3UugPVoupUpA8Ul0qCPTuqqq0ou/hLqtKZOyyulzCP6MYRjb9/J1g9bJg==", + "version": "0.39.1", + "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.39.1.tgz", + "integrity": "sha512-CCc9cZhZbKoNizVM+K3Uqgit/go8GacjpqTv1cpwG/n2P0gB9GMoWZbxrUULDE9Wz26Lh86CGf6QyIPUVV1lnQ==", "dev": true }, "tslib": { @@ -5734,9 +6612,9 @@ "dev": true }, "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -5758,9 +6636,9 @@ } }, "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, "type-is": { @@ -5774,17 +6652,37 @@ } }, "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", + "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", "dev": true }, "ua-parser-js": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", - "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==", + "version": "0.7.28", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", + "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", "dev": true }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + } + } + }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", @@ -5848,16 +6746,6 @@ } } }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "util": { "version": "0.12.3", "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", @@ -5897,20 +6785,16 @@ "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==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "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", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true }, "vendors": { "version": "1.0.4", @@ -5948,11 +6832,18 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } }, "which-typed-array": { "version": "1.1.2", @@ -5974,17 +6865,6 @@ "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", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -5992,15 +6872,9 @@ "dev": true }, "ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", - "dev": true - }, - "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", "dev": true }, "xtend": { @@ -6018,12 +6892,6 @@ "cuint": "^0.2.2" } }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "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", @@ -6031,45 +6899,72 @@ "dev": true }, "yargs": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", - "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.0" + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true + } } }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "zone.js": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", + "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - }, - "zone.js": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", - "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", - "dev": true } } } diff --git a/packages/sitecore-jss-angular/package.json b/packages/sitecore-jss-angular/package.json index 0ca68428d3..08f3d39047 100644 --- a/packages/sitecore-jss-angular/package.json +++ b/packages/sitecore-jss-angular/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-angular", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "", "scripts": { "build": "ng-packagr -p ng-package.json", @@ -11,59 +11,59 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "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", - "@angular/core": "~10.0.11", - "@angular/platform-browser": "~10.0.11", - "@angular/platform-browser-dynamic": "~10.0.11", - "@angular/router": "~10.0.11", + "@angular-eslint/eslint-plugin": "2.0.2", + "@angular/common": "~11.2.6", + "@angular/compiler": "~11.2.6", + "@angular/compiler-cli": "~11.2.6", + "@angular/core": "~11.2.6", + "@angular/platform-browser": "~11.2.6", + "@angular/platform-browser-dynamic": "~11.2.6", + "@angular/router": "~11.2.6", "@types/jasmine": "^3.4.1", - "@types/node": "^12.7.8", - "codelyzer": "^4.5.0", - "eslint": "^7.15.0", + "@types/node": "^14.14.35", + "codelyzer": "^6.0.1", + "eslint": "^7.22.0", "jasmine-core": "^3.5.0", - "karma": "^5.1.0", + "karma": "^6.3.2", "karma-chrome-launcher": "^3.1.0", "karma-edge-launcher": "^0.4.2", "karma-firefox-launcher": "^1.2.0", "karma-jasmine": "^2.0.1", "karma-typescript": "^5.0.3", - "ng-packagr": "^10.0.4", + "ng-packagr": "^11.2.4", "reflect-metadata": "^0.1.13", - "rxjs": "~6.5.3", - "tsickle": "^0.37.0", - "typescript": "~3.9.7", - "url-parse": "^1.4.7", - "zone.js": "~0.10.3" + "rxjs": "~6.6.6", + "tsickle": "^0.39.1", + "typescript": "~4.1.5", + "zone.js": "~0.11.4" }, "peerDependencies": { - "@angular/common": "~10.0.11", - "@angular/core": "~10.0.11", - "@angular/router": "~10.0.11", - "rxjs": "^6.5.3" + "@angular/common": "~11.2.6", + "@angular/core": "~11.2.6", + "@angular/router": "~11.2.6", + "rxjs": "~6.6.6" }, "dependencies": { - "@sitecore-jss/sitecore-jss": "^16.0.0" + "@sitecore-jss/sitecore-jss": "^18.0.0-canary.7" }, "main": "dist/bundles/sitecore-jss-sitecore-jss-angular.umd.js", - "module": "dist/esm5/sitecore-jss-sitecore-jss-angular.js", + "module": "dist/fesm2015/sitecore-jss-sitecore-jss-angular.js", "es2015": "dist/esm2015/sitecore-jss-sitecore-jss-angular.js", "typings": "dist/sitecore-jss-sitecore-jss-angular.d.ts", "metadata": "dist/sitecore-jss-sitecore-jss-angular.metadata.json", - "esm5": "dist/esm5/sitecore-jss-sitecore-jss-angular.js", "esm2015": "dist/esm2015/sitecore-jss-sitecore-jss-angular.js", - "fesm5": "dist/fesm5/sitecore-jss-sitecore-jss-angular.js", "fesm2015": "dist/fesm2015/sitecore-jss-sitecore-jss-angular.js", + "module_ivy_ngcc": "dist/__ivy_ngcc__/fesm2015/sitecore-jss-sitecore-jss-angular.js", + "es2015_ivy_ngcc": "dist/__ivy_ngcc__/fesm2015/sitecore-jss-sitecore-jss-angular.js", + "fesm2015_ivy_ngcc": "dist/__ivy_ngcc__/fesm2015/sitecore-jss-sitecore-jss-angular.js", "sideEffects": false, "gitHead": "2f4820efddf4454eeee58ed1b2cc251969efdf5b" } 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 fd38ad573b..0d2c6a8232 100644 --- a/packages/sitecore-jss-angular/src/components/image.directive.spec.ts +++ b/packages/sitecore-jss-angular/src/components/image.directive.spec.ts @@ -1,7 +1,6 @@ import { Component, DebugElement, Input } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; -import * as URL from 'url-parse'; import { imageField as eeImageData } from '../testData/ee-data'; import { ImageDirective } from './image.directive'; @@ -205,11 +204,11 @@ describe('', () => { fixture2.detectChanges(); const img = de.nativeElement.getElementsByTagName('img')[0]; - const url = URL(img.getAttribute('src'), null as any, true); + const url = new URL(img.getAttribute('src'), 'http://test.com'); expect(url.pathname).toContain('/-/jssmedia/'); - expect(url.query.h).toBe(imageParams.h); - expect(url.query.w).toBe(imageParams.w); - expect(url.query.hash).toBeUndefined(); + expect(url.searchParams.get('h')).toBe(imageParams.h); + expect(url.searchParams.get('w')).toBe(imageParams.w); + expect(url.searchParams.get('hash')).toBeNull(); }); it('should update image url in EE mode', () => { @@ -217,22 +216,22 @@ describe('', () => { fixture2.detectChanges(); const img = de.nativeElement.getElementsByTagName('img')[0]; - const url = URL(img.getAttribute('src'), null as any, true); + const url = new URL(img.getAttribute('src'), 'http://test.com'); expect(url.pathname).toContain('/-/jssmedia/'); - expect(url.query.h).toBe(imageParams.h); - expect(url.query.w).toBe(imageParams.w); - expect(url.query.hash).toBeUndefined(); + expect(url.searchParams.get('h')).toBe(imageParams.h); + expect(url.searchParams.get('w')).toBe(imageParams.w); + expect(url.searchParams.get('hash')).toBeNull(); }); it('should update image url using custom mediaUrlPrefix', () => { const testImg = (expectedPrefix: string) => { const img = de.nativeElement.getElementsByTagName('img')[0]; - const url = URL(img.getAttribute('src'), null as any, true); + const url = new URL(img.getAttribute('src'), 'http://test.com'); expect(url.pathname).toContain(expectedPrefix); - expect(url.query.h).toBe(imageParams.h); - expect(url.query.w).toBe(imageParams.w); - expect(url.query.hash).toBeUndefined(); + expect(url.searchParams.get('h')).toBe(imageParams.h); + expect(url.searchParams.get('w')).toBe(imageParams.w); + expect(url.searchParams.get('hash')).toBeNull(); }; comp2.mediaUrlPrefix = /\/([-~]{1})test\//i; diff --git a/packages/sitecore-jss-angular/src/components/text.directive.spec.ts b/packages/sitecore-jss-angular/src/components/text.directive.spec.ts index 2717781497..7889bab909 100644 --- a/packages/sitecore-jss-angular/src/components/text.directive.spec.ts +++ b/packages/sitecore-jss-angular/src/components/text.directive.spec.ts @@ -48,6 +48,17 @@ describe('', () => { expect(rendered).toBe(''); }); + it('should render nothing with empty value', () => { + const field = { + value: '', + }; + + comp.field = field; + fixture.detectChanges(); + const rendered = de.nativeElement.innerHTML; + expect(rendered).toBe(''); + }); + it('should render editable with editable value', () => { const field = { value: 'value', @@ -97,6 +108,28 @@ describe('', () => { expect(rendered).toBe('value'); }); + it('should render number value', () => { + const field = { + value: 1.23, + }; + comp.field = field; + fixture.detectChanges(); + + const rendered = de.nativeElement.innerHTML; + expect(rendered).toBe('1.23'); + }); + + it('should render zero number value', () => { + const field = { + value: 0, + }; + comp.field = field; + fixture.detectChanges(); + + const rendered = de.nativeElement.innerHTML; + expect(rendered).toBe('0'); + }); + it('should render embedded html as-is when encoding is disabled', () => { const field = { value: 'some crazy stuff', diff --git a/packages/sitecore-jss-angular/src/components/text.directive.ts b/packages/sitecore-jss-angular/src/components/text.directive.ts index 4ba635b180..0f8e752f4f 100644 --- a/packages/sitecore-jss-angular/src/components/text.directive.ts +++ b/packages/sitecore-jss-angular/src/components/text.directive.ts @@ -38,7 +38,7 @@ export class TextDirective implements OnChanges { const field = this.field; let editable = this.editable; - if (!field || (!field.editable && !field.value)) { + if (!field || (!field.editable && (field.value === undefined || field.value === ''))) { return; } diff --git a/packages/sitecore-jss-angular/src/layout.service.ts b/packages/sitecore-jss-angular/src/layout.service.ts index ffe94254be..71d177b6b2 100644 --- a/packages/sitecore-jss-angular/src/layout.service.ts +++ b/packages/sitecore-jss-angular/src/layout.service.ts @@ -9,6 +9,7 @@ import { from as fromPromise, Observable, throwError as observableThrow } from ' import { catchError } from 'rxjs/operators'; import { LayoutServiceError } from './layout-service-error'; +// TODO: these are deprecated and we should switch to using new methods const { fetchRouteData, fetchPlaceholderData } = dataApi; @Injectable() diff --git a/packages/sitecore-jss-angular/src/public_api.ts b/packages/sitecore-jss-angular/src/public_api.ts index cd87bda324..6d01d89ced 100644 --- a/packages/sitecore-jss-angular/src/public_api.ts +++ b/packages/sitecore-jss-angular/src/public_api.ts @@ -36,7 +36,7 @@ export { ComponentRendering, ComponentFields, ComponentParams, - HttpJsonFetcher, + HttpDataFetcher, HttpResponse, isServer, } from '@sitecore-jss/sitecore-jss'; diff --git a/packages/sitecore-jss-cli/README.md b/packages/sitecore-jss-cli/README.md index 247191e0a0..6767fdff1c 100644 --- a/packages/sitecore-jss-cli/README.md +++ b/packages/sitecore-jss-cli/README.md @@ -2,5 +2,5 @@ This module is provided as a part of Sitecore JavaScript Services. It contains the JSS command line interface. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-cli/package-lock.json b/packages/sitecore-jss-cli/package-lock.json index 9109e43647..1425edc84e 100644 --- a/packages/sitecore-jss-cli/package-lock.json +++ b/packages/sitecore-jss-cli/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-cli", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1321,9 +1321,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "ignore": { @@ -1618,9 +1618,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "log-symbols": { @@ -2884,9 +2884,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yallist": { "version": "4.0.0", diff --git a/packages/sitecore-jss-cli/package.json b/packages/sitecore-jss-cli/package.json index ecb1d75c3f..efad5049d6 100644 --- a/packages/sitecore-jss-cli/package.json +++ b/packages/sitecore-jss-cli/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-cli", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "Sitecore JSS command-line", "scripts": { "build": "npm run clean && tsc", @@ -22,16 +22,16 @@ "main": "./dist/cli.js", "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, "dependencies": { - "@sitecore-jss/sitecore-jss-dev-tools": "^16.0.0", - "@sitecore-jss/sitecore-jss-manifest": "^16.0.0", + "@sitecore-jss/sitecore-jss-dev-tools": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-jss-manifest": "^18.0.0-canary.7", "axios": "^0.21.1", "chalk": "^2.4.2", "cross-spawn": "^7.0.0", diff --git a/packages/sitecore-jss-cli/src/scripts/create.ts b/packages/sitecore-jss-cli/src/scripts/create.ts index d07bb39f86..9c322ec58c 100644 --- a/packages/sitecore-jss-cli/src/scripts/create.ts +++ b/packages/sitecore-jss-cli/src/scripts/create.ts @@ -95,7 +95,7 @@ async function handler(argv: any) { } nextStepsList.push(`* Connect to Sitecore with ${chalk.green('jss setup')} (optional)`); - nextStepsList.push('* Check out the JSS documentation at https://jss.sitecore.net'); + nextStepsList.push('* Check out the JSS documentation at https://jss.sitecore.com'); if (!fs.existsSync(createScriptPath)) { console.warn( diff --git a/packages/sitecore-jss-cli/src/scripts/deploy.files.ts b/packages/sitecore-jss-cli/src/scripts/deploy.files.ts index 9e96963e3e..c7156cc721 100644 --- a/packages/sitecore-jss-cli/src/scripts/deploy.files.ts +++ b/packages/sitecore-jss-cli/src/scripts/deploy.files.ts @@ -1,5 +1,6 @@ /* eslint-disable prettier/prettier */ import { deploy, verifySetup, resolveScJssConfig } from '@sitecore-jss/sitecore-jss-dev-tools'; +import chalk from 'chalk'; import fs from 'fs'; import path from 'path'; import resolvePackage from '../resolve-package'; @@ -65,6 +66,18 @@ export const builder = { export async function handler(argv: any) { verifySetup(); + const packageJson = await resolvePackage(); + + if (!packageJson.config.sitecoreDistPath) { + console.error( + chalk.red( + 'The current project does not support file deployment into the Sitecore instance. You should use an HTTP POST based integration for Experience Editor support. See SDK documentation for details.' + ) + ); + + return; + } + if (!argv.skipBuild && argv.buildTaskName && argv.buildTaskName.length > 0) { runPackageScript([argv.buildTaskName]); } @@ -77,8 +90,6 @@ export async function handler(argv: any) { }; if (!options.sourcePath || !options.destinationPath) { - const packageJson = await resolvePackage(); - if (!options.sourcePath) { options.sourcePath = packageJson.config.buildArtifactsPath; if (!options.sourcePath) { @@ -89,9 +100,13 @@ export async function handler(argv: any) { // /dist = non-CRA convention options.sourcePath = path.resolve('dist'); } else { - throw new Error( - 'No source path specified, conventional build paths missing, and buildArtifactsPath config is not defined in package.json!' + console.error( + chalk.red( + 'No source path specified, conventional build paths missing, and buildArtifactsPath config is not defined in package.json!' + ) ); + + return; } } } diff --git a/packages/sitecore-jss-dev-tools/README.md b/packages/sitecore-jss-dev-tools/README.md index 916300b8d5..580cc00574 100644 --- a/packages/sitecore-jss-dev-tools/README.md +++ b/packages/sitecore-jss-dev-tools/README.md @@ -2,5 +2,5 @@ This module is provided as a part of Sitecore JavaScript Services. It contains developer tooling, such as development proxies and deployment scripts. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-dev-tools/package-lock.json b/packages/sitecore-jss-dev-tools/package-lock.json index bb34547b50..5138368707 100644 --- a/packages/sitecore-jss-dev-tools/package-lock.json +++ b/packages/sitecore-jss-dev-tools/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-dev-tools", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -523,6 +523,15 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -859,6 +868,7 @@ "has": "^1.0.3", "has-symbols": "^1.0.1", "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", "is-regex": "^1.1.1", "object-inspect": "^1.8.0", "object-keys": "^1.1.1", @@ -873,8 +883,100 @@ "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", "requires": { "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", "has-symbols": "^1.0.1", "object-keys": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + } + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } } } } @@ -1394,6 +1496,16 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1472,6 +1584,11 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1490,9 +1607,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "http-errors": { @@ -1579,6 +1696,11 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1587,6 +1709,14 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "requires": { + "call-bind": "^1.0.0" + } + }, "is-buffer": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", @@ -1628,11 +1758,21 @@ "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", "dev": true }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -1666,8 +1806,7 @@ "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 + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" }, "is-symbol": { "version": "1.0.3", @@ -1785,9 +1924,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.set": { @@ -3086,6 +3225,24 @@ "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", "dev": true }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + } + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -3145,6 +3302,18 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -3216,9 +3385,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss-dev-tools/package.json b/packages/sitecore-jss-dev-tools/package.json index 7847a84990..4094027c7b 100644 --- a/packages/sitecore-jss-dev-tools/package.json +++ b/packages/sitecore-jss-dev-tools/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-dev-tools", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "Utilities to assist in the development and deployment of Sitecore JSS apps.", "scripts": { "build": "npm run clean && tsc", @@ -21,17 +21,17 @@ "main": "./dist/index.js", "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, "dependencies": { - "@sitecore-jss/sitecore-jss": "^16.0.0", - "@sitecore-jss/sitecore-jss-manifest": "^16.0.0", - "@sitecore-jss/sitecore-jss-update-package": "^16.0.0", + "@sitecore-jss/sitecore-jss": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-jss-manifest": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-jss-update-package": "^18.0.0-canary.7", "axios": "^0.21.1", "chokidar": "^3.2.1", "del": "^5.1.0", diff --git a/packages/sitecore-jss-forms/README.md b/packages/sitecore-jss-forms/README.md index 3c887c33d5..2a935aa148 100644 --- a/packages/sitecore-jss-forms/README.md +++ b/packages/sitecore-jss-forms/README.md @@ -2,5 +2,5 @@ This module is provided as a part of Sitecore JavaScript Services. It contains the APIs for Sitecore Forms integration. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-forms/package-lock.json b/packages/sitecore-jss-forms/package-lock.json index f267e08d56..49c13e91da 100644 --- a/packages/sitecore-jss-forms/package-lock.json +++ b/packages/sitecore-jss-forms/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-forms", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -149,21 +149,6 @@ "integrity": "sha512-G0UmX5uKEmW+ZAhmZ6PLTQ5eu/VPaT+d/tdLd5IFsKRPcbe6lPxocBtcYBFSaLaCW8O60AX90e91Nsp8lVHCNw==", "dev": true }, - "@types/url-parse": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.1.0.tgz", - "integrity": "sha512-R3R19GWiA8YSB8UCs/nDqBZhgvdCae/URs5vE/6oldQ9NGjuXueicXNHmux+BJV67I8y+XBP4kBkCJ6NWGz0Gw==", - "dev": true, - "requires": { - "@types/url-search-params": "*" - } - }, - "@types/url-search-params": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/url-search-params/-/url-search-params-1.1.0.tgz", - "integrity": "sha512-MAiEDfjOmuZLSx2rrRj3rR2729wygQbq5mdQsEW4gMRFRDoW93lUU3n0ablmbAIL9pzharzhmcEjrO2zW0JSKg==", - "dev": true - }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -1291,9 +1276,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "ignore": { @@ -1350,9 +1335,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "is-arguments": { @@ -1639,9 +1624,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "log-symbols": { @@ -3038,9 +3023,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss-forms/package.json b/packages/sitecore-jss-forms/package.json index 97538db47e..cb58d28713 100644 --- a/packages/sitecore-jss-forms/package.json +++ b/packages/sitecore-jss-forms/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-forms", - "version": "16.0.0", + "version": "18.0.0-canary.7", "main": "dist/index.js", "scripts": { "build": "npm run clean && tsc", @@ -15,10 +15,10 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, @@ -28,7 +28,6 @@ "@types/lodash.unescape": "^4.0.4", "@types/mocha": "^5.2.5", "@types/node": "^10.12.0", - "@types/url-parse": "1.1.0", "axios": "^0.21.1", "axios-mock-adapter": "^1.15.0", "chai": "^4.2.0", @@ -42,7 +41,7 @@ "typescript": "^3.6.3" }, "dependencies": { - "@sitecore-jss/sitecore-jss": "^16.0.0" + "@sitecore-jss/sitecore-jss": "^18.0.0-canary.7" }, "description": "", "types": "types/index.d.ts", diff --git a/packages/sitecore-jss-forms/src/JssFormData.test.ts b/packages/sitecore-jss-forms/src/JssFormData.test.ts index 002cb8de59..abbb0dcc42 100644 --- a/packages/sitecore-jss-forms/src/JssFormData.test.ts +++ b/packages/sitecore-jss-forms/src/JssFormData.test.ts @@ -31,7 +31,19 @@ describe('JssFormData', () => { ]); }); - it('should merge overwriting existing values', () => { + it('should remove key', () => { + const formData = new JssFormData(); + + formData.append('xxx', 'val-xxx'); + formData.append('xxx', 'val-xxx'); + formData.append('yyy', 'val-yyy'); + + formData.remove('xxx'); + + expect(formData.get()).to.deep.equal([{ key: 'yyy', value: 'val-yyy' }]); + }); + + it('should merge overwriting existing empty data', () => { const x1formData = new JssFormData(); const x1 = { a1: 'a1-val', @@ -63,6 +75,49 @@ describe('JssFormData', () => { ]); }); + it('should merge overwriting existing pre-filled data', () => { + const x1formData = new JssFormData(); + x1formData.append('a1', 'a1-val1'); + x1formData.append('a2', 'a2-val1'); + const x1 = { + a1: 'a1-val2', + a2: 'a2-val2', + }; + + x1formData.mergeOverwritingExisting(x1); + + expect(x1formData.get()).to.deep.equal([ + { key: 'a1', value: 'a1-val2' }, + { key: 'a2', value: 'a2-val2' }, + ]); + + const x2formData = new JssFormData(); + x2formData.append('a1', 'a1-val1'); + x2formData.append('a3', 'a3-val1'); + x2formData.append('a5', 'a5-val1'); + x2formData.append('a5', 'a5-val2'); + + const x2 = { + a1: 'a1-val2', + a2: 'a2-val1', + a3: ['a3-val2', 'a3-val3'], + a4: ['a4-val1', 'a4-val2', 'a4-val3'], + a5: [], + }; + + x2formData.mergeOverwritingExisting(x2); + + expect(x2formData.get()).to.deep.equal([ + { key: 'a1', value: 'a1-val2' }, + { key: 'a2', value: 'a2-val1' }, + { key: 'a3', value: 'a3-val2' }, + { key: 'a3', value: 'a3-val3' }, + { key: 'a4', value: 'a4-val1' }, + { key: 'a4', value: 'a4-val2' }, + { key: 'a4', value: 'a4-val3' }, + ]); + }); + it('should convert data to url encoded form data', () => { const x1formData = new JssFormData(); diff --git a/packages/sitecore-jss-forms/src/JssFormData.ts b/packages/sitecore-jss-forms/src/JssFormData.ts index 89721da3b1..34b467e81f 100644 --- a/packages/sitecore-jss-forms/src/JssFormData.ts +++ b/packages/sitecore-jss-forms/src/JssFormData.ts @@ -21,10 +21,18 @@ export class JssFormData { * @param {string | File} value */ public set(key: string, value: string | File) { - this.data = this.data.filter((entry) => entry.key !== key); + this.remove(key); this.append(key, value); } + /** + * Removes any values for a given key from the form data. + * @param {string} key + */ + public remove(key: string) { + this.data = this.data.filter((entry) => entry.key !== key); + } + /** * Merges form data from a client-side state store (i.e. the user-specified values), overwriting any existing values for the keys * @param {Object} values @@ -38,13 +46,18 @@ export class JssFormData { // we want to _set_ the first one to override anything existing, // but _append_ anything after that to avoid overwriting our own values if (Array.isArray(value)) { - value.forEach((v: string | File, index: number) => { - if (index === 0) { - this.set(key, v); - } else { - this.append(key, v); - } - }); + if (value.length === 0) { + // if empty array, ensure any pre-filled values are cleared (i.e. user de-selected these) + this.remove(key); + } else { + value.forEach((v: string | File, index: number) => { + if (index === 0) { + this.set(key, v); + } else { + this.append(key, v); + } + }); + } } else { this.set(key, value.toString()); } diff --git a/packages/sitecore-jss-manifest/README.md b/packages/sitecore-jss-manifest/README.md index 8da9519a86..2a21e3fddd 100644 --- a/packages/sitecore-jss-manifest/README.md +++ b/packages/sitecore-jss-manifest/README.md @@ -3,4 +3,4 @@ This module is provided as a part of Sitecore JavaScript Services. It contains disconnected-mode manifest generation capabilities. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-manifest/package-lock.json b/packages/sitecore-jss-manifest/package-lock.json index c96a32bad8..c62b035611 100644 --- a/packages/sitecore-jss-manifest/package-lock.json +++ b/packages/sitecore-jss-manifest/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-manifest", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1654,9 +1654,9 @@ } }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "ignore": { @@ -1710,9 +1710,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "invariant": { @@ -2040,9 +2040,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "log-symbols": { @@ -3634,9 +3634,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yallist": { "version": "2.1.2", diff --git a/packages/sitecore-jss-manifest/package.json b/packages/sitecore-jss-manifest/package.json index 43447e557b..e9f286de3e 100644 --- a/packages/sitecore-jss-manifest/package.json +++ b/packages/sitecore-jss-manifest/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-manifest", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "", "main": "dist/index.js", "scripts": { @@ -17,16 +17,16 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, "dependencies": { - "@sitecore-jss/sitecore-jss": "^16.0.0", - "@sitecore-jss/sitecore-pipelines": "^16.0.0", + "@sitecore-jss/sitecore-jss": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-pipelines": "^18.0.0-canary.7", "fs-extra": "^8.1.0", "glob": "^7.1.4", "import-fresh": "^3.1.0", diff --git a/packages/sitecore-jss-nextjs/README.md b/packages/sitecore-jss-nextjs/README.md index 3a50825d65..22e332e6d9 100644 --- a/packages/sitecore-jss-nextjs/README.md +++ b/packages/sitecore-jss-nextjs/README.md @@ -1,6 +1,7 @@ -# Sitecore JavaScript Services for Next.js +# Sitecore JavaScript Rendering SDK for Next.js -This module is provided as a part of Sitecore JavaScript Services. It contains Next.js components and integration for JSS. +This module is provided as a part of Sitecore JavaScript Rendering SDK. It contains Next.js components and integration for JSS. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. +Consult the package [API reference documentation](/ref-docs/sitecore-jss-nextjs/). \ No newline at end of file diff --git a/packages/sitecore-jss-nextjs/package-lock.json b/packages/sitecore-jss-nextjs/package-lock.json index ff0851c62d..1f1509d6b6 100644 --- a/packages/sitecore-jss-nextjs/package-lock.json +++ b/packages/sitecore-jss-nextjs/package-lock.json @@ -1,13 +1,13 @@ { "name": "@sitecore-jss/sitecore-jss-nextjs", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { "@ampproject/toolbox-core": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@ampproject/toolbox-core/-/toolbox-core-2.6.1.tgz", - "integrity": "sha512-hTsd9J2yy3JPMClG8BuUhUfMDtd3oDhCuRe/SyZJYQfNMN8hQHt7LNXtdOzZr0Kw7nTepHmn7GODS68fZN4OQQ==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/@ampproject/toolbox-core/-/toolbox-core-2.7.4.tgz", + "integrity": "sha512-qpBhcS4urB7IKc+jx2kksN7BuvvwCo7Y3IstapWo+EW+COY5EYAUwb2pil37v3TsaqHKgX//NloFP1SKzGZAnw==", "dev": true, "requires": { "cross-fetch": "3.0.6", @@ -51,6 +51,37 @@ "terser": "5.1.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "cross-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.5.tgz", + "integrity": "sha512-FFLcLtraisj5eteosnX1gf01qYDCOc4fDy0+euOt8Kn9YBY2NtXL/pCoYPavw24NIQkQqm5ZOLsGD5Zzj0gyew==", + "dev": true, + "requires": { + "node-fetch": "2.6.0" + } + }, "cssnano-simple": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-1.2.0.tgz", @@ -73,9 +104,9 @@ } }, "domelementtype": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", - "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true }, "domhandler": { @@ -111,9 +142,9 @@ } }, "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, "htmlparser2": { @@ -143,30 +174,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "supports-color": { @@ -181,12 +188,12 @@ } }, "@ampproject/toolbox-runtime-version": { - "version": "2.7.0-alpha.1", - "resolved": "https://registry.npmjs.org/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.7.0-alpha.1.tgz", - "integrity": "sha512-JruvO4RfaC/piKOY/2w6vuasNjdrHnb+xvmQTl4zBBdMsDooohZKsN9jv9YiKIdpny4MzLt1ce497840vJJq+g==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.7.4.tgz", + "integrity": "sha512-SAdOUOERp42thVNWaBJlnFvFVvnacMVnz5z9LyUZHSnoL1EqrAW5Sz5jv+Ly+gkA8NYsEaUxAdSCBAzE9Uzb4Q==", "dev": true, "requires": { - "@ampproject/toolbox-core": "^2.6.0" + "@ampproject/toolbox-core": "2.7.4" } }, "@ampproject/toolbox-script-csp": { @@ -196,12 +203,23 @@ "dev": true }, "@ampproject/toolbox-validator-rules": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.5.4.tgz", - "integrity": "sha512-bS7uF+h0s5aiklc/iRaujiSsiladOsZBLrJ6QImJDXvubCAQtvE7om7ShlGSXixkMAO0OVMDWyuwLlEy8V1Ing==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.7.4.tgz", + "integrity": "sha512-z3JRcpIZLLdVC9XVe7YTZuB3a/eR9s2SjElYB9AWRdyJyL5Jt7+pGNv4Uwh1uHVoBXsWEVQzNOWSNtrO3mSwZA==", "dev": true, "requires": { - "cross-fetch": "3.0.5" + "cross-fetch": "3.0.6" + }, + "dependencies": { + "cross-fetch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz", + "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==", + "dev": true, + "requires": { + "node-fetch": "2.6.1" + } + } } }, "@babel/code-frame": { @@ -692,18 +710,18 @@ } }, "@hapi/boom": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.0.tgz", - "integrity": "sha512-4nZmpp4tXbm162LaZT45P7F7sgiem8dwAh2vHWT6XX24dozNjGMg6BvKCRvtCUcmcXqeMIUqWN8Rc5X8yKuROQ==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.2.tgz", + "integrity": "sha512-uJEJtiNHzKw80JpngDGBCGAmWjBtzxDCz17A9NO2zCi8LLBlb5Frpq4pXwyN+2JQMod4pKz5BALwyneCgDg89Q==", "dev": true, "requires": { "@hapi/hoek": "9.x.x" } }, "@hapi/hoek": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.1.0.tgz", - "integrity": "sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz", + "integrity": "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -795,12 +813,6 @@ "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 - }, "source-map": { "version": "0.8.0-beta.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", @@ -818,15 +830,6 @@ "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" - } } } }, @@ -925,9 +928,9 @@ } }, "@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==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/minimatch": { @@ -1699,9 +1702,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -1910,9 +1913,9 @@ "dev": true }, "bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "optional": true, "requires": { @@ -1928,9 +1931,9 @@ "dev": true }, "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "dev": true }, "boolbase": { @@ -2214,9 +2217,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001161", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001161.tgz", - "integrity": "sha512-JharrCDxOqPLBULF9/SPa6yMcBRTjZARJ6sc3cuKrPfyIk64JN6kuMINWqA99Xc8uElMFcROliwtz0n9pYej+g==", + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", "dev": true }, "caseless": { @@ -2333,13 +2336,10 @@ "dev": true }, "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, "cipher-base": { "version": "1.0.4", @@ -2475,9 +2475,9 @@ "dev": true }, "color-string": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", - "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", "dev": true, "optional": true, "requires": { @@ -2486,9 +2486,9 @@ } }, "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, "combined-stream": { @@ -2660,9 +2660,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -2694,23 +2694,6 @@ "sha.js": "^2.4.8" } }, - "cross-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.5.tgz", - "integrity": "sha512-FFLcLtraisj5eteosnX1gf01qYDCOc4fDy0+euOt8Kn9YBY2NtXL/pCoYPavw24NIQkQqm5ZOLsGD5Zzj0gyew==", - "dev": true, - "requires": { - "node-fetch": "2.6.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", - "dev": true - } - } - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2779,6 +2762,28 @@ "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", @@ -2788,37 +2793,16 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "supports-color": { "version": "6.1.0", @@ -2871,6 +2855,28 @@ "postcss": "^7.0.32" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", @@ -2880,30 +2886,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "supports-color": { @@ -2927,6 +2909,28 @@ "postcss": "^7.0.32" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "cssnano-preset-simple": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-1.2.1.tgz", @@ -2946,30 +2950,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "supports-color": { @@ -3058,9 +3038,9 @@ } }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { "ms": "2.1.2" } @@ -3272,9 +3252,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -3408,30 +3388,30 @@ } }, "electron-to-chromium": { - "version": "1.3.606", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.606.tgz", - "integrity": "sha512-+/2yPHwtNf6NWKpaYt0KoqdSZ6Qddt6nDfH/pnhcrHq9hSb23e5LFy06Mlf0vF2ykXvj7avJ597psqcbKnG5YQ==", + "version": "1.3.727", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", + "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==", "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -3458,9 +3438,9 @@ } }, "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -3566,9 +3546,9 @@ } }, "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "requires": { "prr": "~1.0.1" @@ -3964,9 +3944,9 @@ "dev": true }, "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "evp_bytestokey": { @@ -4046,9 +4026,9 @@ }, "dependencies": { "type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", - "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", "dev": true } } @@ -4835,9 +4815,9 @@ } }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "html-element-map": { @@ -4936,6 +4916,28 @@ "postcss": "^7.0.14" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", @@ -4945,30 +4947,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "supports-color": { @@ -5030,12 +5008,6 @@ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -5057,9 +5029,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, "optional": true }, @@ -5669,9 +5641,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.escape": { @@ -5930,9 +5902,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -6088,6 +6060,15 @@ "yargs-unparser": "2.0.0" }, "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -6354,9 +6335,9 @@ } }, "node-abi": { - "version": "2.19.3", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz", - "integrity": "sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.26.0.tgz", + "integrity": "sha512-ag/Vos/mXXpWLLAYWsAoQdgS+gW7IwvgMLOgqopm/DbzAjazLltzgzpVMsFlgmo9TzG5hGXeaBZx2AI731RIsQ==", "dev": true, "optional": true, "requires": { @@ -6364,9 +6345,9 @@ } }, "node-addon-api": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz", - "integrity": "sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", + "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==", "dev": true, "optional": true }, @@ -6493,9 +6474,9 @@ } }, "node-releases": { - "version": "1.1.67", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", - "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, "noop-logger": { @@ -7091,9 +7072,9 @@ "dev": true }, "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -7170,9 +7151,9 @@ }, "dependencies": { "nanoid": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.18.tgz", - "integrity": "sha512-rndlDjbbHbcV3xi+R2fpJ+PbGMdfBxz5v1fATIQFq0DP64FsicQdwnKLy47K4kZHdRpmQXtz24eGsxQqamzYTA==", + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", "dev": true } } @@ -7186,6 +7167,28 @@ "postcss": "^7.0.5" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", @@ -7195,30 +7198,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "supports-color": { @@ -7244,6 +7223,28 @@ "postcss-value-parser": "^4.1.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", @@ -7253,30 +7254,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "supports-color": { @@ -7300,6 +7277,28 @@ "postcss-selector-parser": "^6.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", @@ -7309,30 +7308,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "supports-color": { @@ -7356,6 +7331,28 @@ "postcss": "^7.0.6" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", @@ -7365,30 +7362,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "supports-color": { @@ -7411,6 +7384,28 @@ "postcss": "^7.0.26" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", @@ -7420,30 +7415,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "supports-color": { @@ -7458,14 +7429,12 @@ } }, "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "dev": true, "requires": { "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", "util-deprecate": "^1.0.2" } }, @@ -7606,9 +7575,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -7659,9 +7628,9 @@ "dev": true }, "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", "dev": true }, "querystring-es3": { @@ -7950,9 +7919,9 @@ "optional": true }, "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true }, "repeat-string": { @@ -8085,6 +8054,28 @@ "source-map": "0.6.1" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", @@ -8120,30 +8111,6 @@ "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - } } }, "supports-color": { @@ -8287,10 +8254,13 @@ } }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -8409,11 +8379,14 @@ }, "dependencies": { "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, - "optional": true + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -8752,9 +8725,9 @@ } }, "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "dev": true }, "spawn-wrap": { @@ -8836,9 +8809,9 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" @@ -9332,9 +9305,9 @@ } }, "tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "optional": true, "requires": { @@ -9648,12 +9621,6 @@ "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", "dev": true }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -9735,12 +9702,6 @@ "set-value": "^2.0.1" } }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -9848,6 +9809,12 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true } } }, @@ -10595,9 +10562,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss-nextjs/package.json b/packages/sitecore-jss-nextjs/package.json index df05e70812..1d8c039426 100644 --- a/packages/sitecore-jss-nextjs/package.json +++ b/packages/sitecore-jss-nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-nextjs", - "version": "16.0.0", + "version": "18.0.0-canary.7", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", "sideEffects": false, @@ -17,13 +17,13 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "publishConfig": { "access": "public" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, @@ -62,9 +62,9 @@ "react-dom": "^17.0.1" }, "dependencies": { - "@sitecore-jss/sitecore-jss": "^16.0.0", - "@sitecore-jss/sitecore-jss-manifest": "^16.0.0", - "@sitecore-jss/sitecore-jss-react": "^16.0.0", + "@sitecore-jss/sitecore-jss": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-jss-manifest": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-jss-react": "^18.0.0-canary.7", "prop-types": "^15.7.2", "sync-disk-cache": "^2.1.0" }, diff --git a/packages/sitecore-jss-nextjs/src/components/RichText.tsx b/packages/sitecore-jss-nextjs/src/components/RichText.tsx index 79010e87f1..f69d297a19 100644 --- a/packages/sitecore-jss-nextjs/src/components/RichText.tsx +++ b/packages/sitecore-jss-nextjs/src/components/RichText.tsx @@ -30,7 +30,7 @@ export const RichText = (props: RichTextProps): JSX.Element => { if (hasText && !isEditing) { initializeLinks(); } - }); + }, []); const routeHandler = (ev: MouseEvent) => { if (!ev.target) return; @@ -56,7 +56,6 @@ export const RichText = (props: RichTextProps): JSX.Element => { prefetched[link.pathname] = true; } - link.removeEventListener('click', routeHandler, false); link.addEventListener('click', routeHandler, false); }); }; diff --git a/packages/sitecore-jss-nextjs/src/index.ts b/packages/sitecore-jss-nextjs/src/index.ts index 45510cd12d..2f7134a0b8 100644 --- a/packages/sitecore-jss-nextjs/src/index.ts +++ b/packages/sitecore-jss-nextjs/src/index.ts @@ -1,28 +1,37 @@ export { dataApi, mediaApi, - isExperienceEditorActive, - resetExperienceEditorChromes, + // generic data access + HttpDataFetcher, + HttpResponse, AxiosDataFetcher, AxiosDataFetcherConfig, - LayoutService, - RestLayoutService, - RestLayoutServiceConfig, + // dictionary service DictionaryPhrases, - DictionaryServiceData, DictionaryService, + GraphQLRequestClient, + GraphQLDictionaryService, + GraphQLDictionaryServiceConfig, RestDictionaryService, RestDictionaryServiceConfig, + // layout service + LayoutService, LayoutServiceData, LayoutServicePageState, LayoutServiceContext, LayoutServiceContextData, + LayoutServiceRequestOptions, + GraphQLLayoutService, + GraphQLLayoutServiceConfig, + RestLayoutService, + RestLayoutServiceConfig, + isExperienceEditorActive, + resetExperienceEditorChromes, PlaceholdersData, RouteData, Field, Item, HtmlElementRendering, - LayoutServiceRequestOptions, getChildPlaceholder, getFieldValue, ComponentRendering, @@ -51,7 +60,7 @@ export { GraphQLSitemapServiceConfig, } from './services/graphql-sitemap-service'; -export { StaticPath } from './sharedTypes/sitemap'; +export { StaticPath } from './services/graphql-sitemap-service'; export { ComponentPropsReactContext, diff --git a/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts b/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts index b21e45e31f..4d62b1c3cd 100644 --- a/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts +++ b/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts @@ -1,5 +1,5 @@ import { NextApiRequest, NextApiResponse } from 'next'; -import { AxiosDataFetcher } from '@sitecore-jss/sitecore-jss'; +import { AxiosDataFetcher, debug } from '@sitecore-jss/sitecore-jss'; import { EditingData } from '../sharedTypes/editing-data'; import { EditingDataService, editingDataService } from '../services/editing-data-service'; import { QUERY_PARAM_EDITING_SECRET } from '../services/editing-data-service'; @@ -55,7 +55,8 @@ export class EditingRenderMiddleware { */ constructor(config?: EditingRenderMiddlewareConfig) { this.editingDataService = config?.editingDataService ?? editingDataService; - this.dataFetcher = config?.dataFetcher ?? new AxiosDataFetcher(); + this.dataFetcher = + config?.dataFetcher ?? new AxiosDataFetcher({ debugger: debug.experienceEditor }); this.resolvePageUrl = config?.resolvePageUrl ?? this.defaultResolvePageUrl; this.resolveServerUrl = config?.resolveServerUrl ?? this.defaultResolveServerUrl; } @@ -69,9 +70,17 @@ export class EditingRenderMiddleware { } private handler = async (req: NextApiRequest, res: NextApiResponse): Promise => { - const { method, query, body } = req; + const { method, query, body, headers } = req; + + debug.experienceEditor('editing render middleware start: %o', { + method, + query, + headers, + body, + }); if (method !== 'POST') { + debug.experienceEditor('invalid method - sent %s expected POST', method); res.setHeader('Allow', 'POST'); return res.status(405).json({ html: `Invalid request method '${method}'`, @@ -81,6 +90,11 @@ export class EditingRenderMiddleware { // Validate secret const secret = query[QUERY_PARAM_EDITING_SECRET] ?? body?.jssEditingSecret; if (secret !== getJssEditingSecret()) { + debug.experienceEditor( + 'invalid editing secret - sent "%s" expected "%s"', + secret, + getJssEditingSecret() + ); return res.status(401).json({ html: 'Missing or invalid secret', }); @@ -96,7 +110,7 @@ export class EditingRenderMiddleware { // Stash for use later on (i.e. within getStatic/ServerSideProps). // This ultimately gets stored on disk (using our EditingDataDiskCache) for compatibility with Vercel Serverless Functions. // Note we can't set this directly in setPreviewData since it's stored as a cookie (2KB limit) - // https://nextjs.org/docs/advanced-features/preview-mode#previewdata-size-limits + // https://nextjs.org/docs/advanced-features/preview-mode#previewdata-size-limits) const previewData = await this.editingDataService.setEditingData(editingData, serverUrl); // Enable Next.js Preview Mode, passing our preview data (i.e. editingData cache key) @@ -108,6 +122,7 @@ export class EditingRenderMiddleware { // Make actual render request for page route, passing on preview cookies. // Note timestamp effectively disables caching the request in Axios (no amount of cache headers seemed to do it) const requestUrl = this.resolvePageUrl(serverUrl, editingData.path); + debug.experienceEditor('fetching page route for %s', editingData.path); const pageRes = await this.dataFetcher.get(`${requestUrl}?timestamp=${Date.now()}`, { headers: { Cookie: cookies.join(';'), @@ -122,8 +137,11 @@ export class EditingRenderMiddleware { // show correct placeholders, so save and refresh won't be needed after adding each rendering html = html.replace(new RegExp('phkey', 'g'), 'key'); + const body = { html }; + // Return expected JSON result - res.status(200).json({ html }); + debug.experienceEditor('editing render middleware end: %o', { status: 200, body }); + res.status(200).json(body); } catch (error) { console.error(error); diff --git a/packages/sitecore-jss-nextjs/src/services/component-props-service.test.ts b/packages/sitecore-jss-nextjs/src/services/component-props-service.test.ts index d33323c6fb..376f8399e4 100644 --- a/packages/sitecore-jss-nextjs/src/services/component-props-service.test.ts +++ b/packages/sitecore-jss-nextjs/src/services/component-props-service.test.ts @@ -1,10 +1,10 @@ /* eslint-disable no-unused-expressions */ -import { ComponentRendering, PlaceholdersData } from '@sitecore-jss/sitecore-jss'; +import { ComponentRendering } from '@sitecore-jss/sitecore-jss'; import { expect, use, spy } from 'chai'; import spies from 'chai-spies'; import { IncomingMessage, ServerResponse } from 'http'; import { ParsedUrlQuery } from 'querystring'; -import { ComponentPropsService, ComponentPropsRequest } from './component-props-service'; +import { ComponentPropsService } from './component-props-service'; use(spies); @@ -16,8 +16,6 @@ describe('ComponentPropsService', () => { componentName: componentName || `name${componentUid}`, }); - type CustomContext = { locale: string }; - const placeholders = { x11ph: [ rendering('x11'), @@ -33,6 +31,7 @@ describe('ComponentPropsService', () => { rendering('x16', 'MyCustomComponent'), rendering('x161', 'MyCustomComponent'), rendering('x17'), + rendering(undefined, 'MyCustomComponent'), ], }, }, @@ -67,42 +66,6 @@ describe('ComponentPropsService', () => { const fetchFn = (expectedData: unknown, err?: string | { message: string }) => spy(() => (err ? Promise.reject(err) : Promise.resolve(expectedData))); - const req = ( - expectedData: unknown, - componentUid?: string, - err?: string | { message: string } - ): ComponentPropsRequest => ({ - fetch: fetchFn(expectedData, err), - layoutData, - rendering: rendering(componentUid), - context, - }); - - // In real world: list of imported modules - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const modules: { [componentName: string]: any } = { - namex11: { - fn: fetchFn('x11Data'), - }, - namex14: { - fn: fetchFn('x14Data'), - }, - MyCustomComponent: { - fn: fetchFn('myCustomComponentData'), - }, - namex24: { - fn: fetchFn('x24Data'), - }, - }; - - const componentModule = (componentName: string) => modules[componentName]; - - const fetchFunctionFactory = (componentName: string) => { - const module = componentModule(componentName); - - return module?.fn; - }; - it('fetchServerSideComponentProps', async () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const ssrModules: { [componentName: string]: any } = { @@ -110,7 +73,7 @@ describe('ComponentPropsService', () => { getServerSideProps: fetchFn('x11SSRData'), }, namex14: { - getServerSideProps: fetchFn('x14SSRData'), + getServerSideProps: fetchFn('x14SSRData', 'whoops'), }, MyCustomComponent: { getServerSideProps: fetchFn('myCustomComponentSSRData'), @@ -137,7 +100,9 @@ describe('ComponentPropsService', () => { expect(result).to.deep.equal({ x11: 'x11SSRData', - x14: 'x14SSRData', + x14: { + error: 'Error during preload data for component x14: whoops', + }, x16: 'myCustomComponentSSRData', x161: 'myCustomComponentSSRData', x23: 'myCustomComponentSSRData', @@ -152,7 +117,7 @@ describe('ComponentPropsService', () => { getStaticProps: fetchFn('x11StaticData'), }, namex14: { - getStaticProps: fetchFn('x14StaticData'), + getStaticProps: fetchFn('x14StaticData', 'whoops'), }, MyCustomComponent: { getStaticProps: fetchFn('myCustomComponentStaticData'), @@ -172,279 +137,13 @@ describe('ComponentPropsService', () => { expect(result).to.deep.equal({ x11: 'x11StaticData', - x14: 'x14StaticData', + x14: { + error: 'Error during preload data for component x14: whoops', + }, x16: 'myCustomComponentStaticData', x161: 'myCustomComponentStaticData', x23: 'myCustomComponentStaticData', x24: 'x24StaticData', }); }); - - it('fetchComponentProps', async () => { - const fetchedData = await service.fetchComponentProps( - fetchFunctionFactory, - layoutData, - context - ); - - expect(fetchedData).to.deep.equal({ - x11: 'x11Data', - x14: 'x14Data', - x16: 'myCustomComponentData', - x161: 'myCustomComponentData', - x23: 'myCustomComponentData', - x24: 'x24Data', - }); - }); - - it('collectRequests', () => { - const requests = service.collectRequests({ - context, - layoutData, - placeholders, - fetchFunctionFactory, - }); - - expect(requests).to.deep.equal([ - { - fetch: modules.namex11.fn, - rendering: { uid: 'x11', componentName: 'namex11' }, - layoutData, - context, - }, - { - fetch: modules.namex14.fn, - rendering: { uid: 'x14', componentName: 'namex14' }, - layoutData, - context, - }, - { - fetch: modules.MyCustomComponent.fn, - rendering: { uid: 'x16', componentName: 'MyCustomComponent' }, - layoutData, - context, - }, - { - fetch: modules.MyCustomComponent.fn, - rendering: { uid: 'x161', componentName: 'MyCustomComponent' }, - layoutData, - context, - }, - { - fetch: modules.MyCustomComponent.fn, - rendering: { uid: 'x23', componentName: 'MyCustomComponent' }, - layoutData, - context, - }, - { - fetch: modules.namex24.fn, - rendering: { uid: 'x24', componentName: 'namex24' }, - layoutData, - context, - }, - ]); - }); - - describe('execRequests', () => { - it('success', async () => { - const requests: ComponentPropsRequest[] = [ - req(11, 'x1'), - req(22, 'x2'), - req(33, 'x3'), - ]; - - const result = await service.execRequests(requests); - - expect(result).to.deep.equal({ - x1: 11, - x2: 22, - x3: 33, - }); - - expect(requests[0].fetch).to.be.called.with.exactly( - { - uid: 'x1', - componentName: 'namex1', - }, - layoutData, - context - ); - - expect(requests[1].fetch).to.be.called.with.exactly( - { - uid: 'x2', - componentName: 'namex2', - }, - layoutData, - context - ); - - expect(requests[2].fetch).to.be.called.with.exactly( - { - uid: 'x3', - componentName: 'namex3', - }, - layoutData, - context - ); - }); - - it('one of them rejected', async () => { - const requests: ComponentPropsRequest[] = [ - req(11, 'x1'), - req(null, 'x2', 'You do not have access rights to load data for this component'), - req(33, 'x3'), - ]; - - const result = await service.execRequests(requests); - - expect(result).to.deep.equal({ - x1: 11, - x2: { - error: - 'Error during preload data for component x2: You do not have access rights to load data for this component', - }, - x3: 33, - }); - - expect(requests[0].fetch).to.be.called.with.exactly( - { - uid: 'x1', - componentName: 'namex1', - }, - layoutData, - context - ); - - expect(requests[1].fetch).to.be.called.with.exactly( - { - uid: 'x2', - componentName: 'namex2', - }, - layoutData, - context - ); - - expect(requests[2].fetch).to.be.called.with.exactly( - { - uid: 'x3', - componentName: 'namex3', - }, - layoutData, - context - ); - }); - - it('one of them rejected with full error info', async () => { - const requests: ComponentPropsRequest[] = [ - req(11, 'x1'), - req(null, 'x2', { - message: 'You do not have access rights to load data for this component', - }), - req(33, 'x3'), - ]; - - const result = await service.execRequests(requests); - - expect(result).to.deep.equal({ - x1: 11, - x2: { - error: 'You do not have access rights to load data for this component', - }, - x3: 33, - }); - - expect(requests[0].fetch).to.be.called.with.exactly( - { - uid: 'x1', - componentName: 'namex1', - }, - layoutData, - context - ); - - expect(requests[1].fetch).to.be.called.with.exactly( - { - uid: 'x2', - componentName: 'namex2', - }, - layoutData, - context - ); - - expect(requests[2].fetch).to.be.called.with.exactly( - { - uid: 'x3', - componentName: 'namex3', - }, - layoutData, - context - ); - }); - - it('one of them does not have uid', async () => { - const requests: ComponentPropsRequest[] = [ - req(11, 'x1'), - req(22, undefined), - req(33, 'x3'), - ]; - - const result = await service.execRequests(requests); - - expect(result).to.deep.equal({ - x1: 11, - x3: 33, - }); - - expect(requests[0].fetch).to.be.called.with.exactly( - { - uid: 'x1', - componentName: 'namex1', - }, - layoutData, - context - ); - - expect(requests[1].fetch).not.to.be.called; - - expect(requests[2].fetch).to.be.called.with.exactly( - { - uid: 'x3', - componentName: 'namex3', - }, - layoutData, - context - ); - }); - }); - - describe('flatRenderings', () => { - it('should collect renderings from several placeholders', () => { - const placeholders: PlaceholdersData = { - x1: [rendering('1'), rendering('2')], - x2: [rendering('11'), rendering('22')], - x3: [rendering('111'), rendering('222'), rendering('333')], - }; - - const result = service.flatRenderings(placeholders); - - expect(result).to.deep.equal([ - rendering('1'), - rendering('2'), - rendering('11'), - rendering('22'), - rendering('111'), - rendering('222'), - rendering('333'), - ]); - }); - - it('should handle empty placeholders data', () => { - const placeholders: PlaceholdersData = {}; - - const result = service.flatRenderings(placeholders); - - expect(result).to.deep.equal([]); - }); - }); }); diff --git a/packages/sitecore-jss-nextjs/src/services/component-props-service.ts b/packages/sitecore-jss-nextjs/src/services/component-props-service.ts index 37440154c7..d5a724f8c0 100644 --- a/packages/sitecore-jss-nextjs/src/services/component-props-service.ts +++ b/packages/sitecore-jss-nextjs/src/services/component-props-service.ts @@ -85,14 +85,14 @@ export class ComponentPropsService { * @param {NextContext} context next context * @returns {Promise} component props */ - async fetchComponentProps( + protected async fetchComponentProps( fetchFunctionFactory: FetchFunctionFactory, layoutData: LayoutServiceData, context: NextContext ): Promise { // Array of side effect functions const requests = this.collectRequests({ - placeholders: layoutData.sitecore.route.placeholders, + placeholders: layoutData.sitecore.route?.placeholders, fetchFunctionFactory, layoutData, context, @@ -105,21 +105,21 @@ export class ComponentPropsService { * Go through layout service data, check all renderings using displayName, which should make some side effects. * Write result in requests variable * @param {Object} params params - * @param {PlaceholdersData} params.placeholders + * @param {PlaceholdersData} [params.placeholders] * @param {FetchFunctionFactory} params.fetchFunctionFactory * @param {LayoutServiceData} params.layoutData * @param {NextContext} params.context * @param {ComponentPropsRequest[]} params.requests * @returns {ComponentPropsRequest[]} array of requests */ - collectRequests(params: { - placeholders: PlaceholdersData; + protected collectRequests(params: { + placeholders?: PlaceholdersData; fetchFunctionFactory: FetchFunctionFactory; layoutData: LayoutServiceData; context: NextContext; requests?: ComponentPropsRequest[]; }): ComponentPropsRequest[] { - const { placeholders, fetchFunctionFactory, layoutData, context } = params; + const { placeholders = {}, fetchFunctionFactory, layoutData, context } = params; // Will be called on first round if (!params.requests) { @@ -158,7 +158,7 @@ export class ComponentPropsService { * @param {ComponentPropsRequest[]} requests requests * @returns {Promise} requests result */ - async execRequests( + protected async execRequests( requests: ComponentPropsRequest[] ): Promise { const componentProps: ComponentPropsCollection = {}; @@ -211,7 +211,7 @@ export class ComponentPropsService { * @param {PlaceholdersData} placeholders placeholders * @returns {ComponentRendering[]} renderings */ - flatRenderings(placeholders: PlaceholdersData): ComponentRendering[] { + protected flatRenderings(placeholders: PlaceholdersData): ComponentRendering[] { const allComponentRenderings: ComponentRendering[] = []; const placeholdersArr = Object.values(placeholders); diff --git a/packages/sitecore-jss-nextjs/src/services/disconnected-sitemap-service.ts b/packages/sitecore-jss-nextjs/src/services/disconnected-sitemap-service.ts index 67aa2e9a45..4b38e0c51a 100644 --- a/packages/sitecore-jss-nextjs/src/services/disconnected-sitemap-service.ts +++ b/packages/sitecore-jss-nextjs/src/services/disconnected-sitemap-service.ts @@ -1,5 +1,5 @@ import { ItemDefinition, ManifestInstance } from '@sitecore-jss/sitecore-jss-manifest'; -import { StaticPath } from '../sharedTypes/sitemap'; +import { StaticPath } from './graphql-sitemap-service'; export class DisconnectedSitemapService { /** diff --git a/packages/sitecore-jss-nextjs/src/services/editing-data-service.test.ts b/packages/sitecore-jss-nextjs/src/services/editing-data-service.test.ts index 437d882a5a..099cbe4632 100644 --- a/packages/sitecore-jss-nextjs/src/services/editing-data-service.test.ts +++ b/packages/sitecore-jss-nextjs/src/services/editing-data-service.test.ts @@ -73,6 +73,20 @@ describe('EditingDataService', () => { expect(previewData1.key).to.not.equal(previewData2.key); }); + it('should generate unique key for item when route is null', async () => { + const data = { + layoutData: { sitecore: { route: null } }, + } as EditingData; + const fetcher = mockFetcher(); + const serverUrl = 'https://test.com'; + + const service = new EditingDataService({ dataFetcher: fetcher }); + + const previewData1 = await service.setEditingData(data, serverUrl); + const previewData2 = await service.setEditingData(data, serverUrl); + expect(previewData1.key).to.not.equal(previewData2.key); + }); + it('should use custom apiRoute', async () => { const data = { layoutData: { sitecore: { route: { itemId: 'd6ac9d26-9474-51cf-982d-4f8d44951229' } } }, diff --git a/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts b/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts index e11331dada..c6c9f62efc 100644 --- a/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts +++ b/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts @@ -1,4 +1,4 @@ -import { AxiosDataFetcher } from '@sitecore-jss/sitecore-jss'; +import { AxiosDataFetcher, debug } from '@sitecore-jss/sitecore-jss'; import { EditingData, EditingPreviewData } from '../sharedTypes/editing-data'; import { getJssEditingSecret } from '../utils'; @@ -36,7 +36,8 @@ export class EditingDataService { if (!this.apiRoute.includes('[key]')) { throw new Error(`The specified apiRoute '${this.apiRoute}' is missing '[key]'.`); } - this.dataFetcher = config?.dataFetcher ?? new AxiosDataFetcher(); + this.dataFetcher = + config?.dataFetcher ?? new AxiosDataFetcher({ debugger: debug.experienceEditor }); } /** @@ -49,11 +50,14 @@ export class EditingDataService { const key = this.generateKey(data); const url = this.getUrl(serverUrl, key); + const previewData = { + key, + serverUrl, + } as EditingPreviewData; + + debug.experienceEditor('storing editing data for %o: %o', previewData, data); return this.dataFetcher.put(url, data).then(() => { - return { - key, - serverUrl, - }; + return previewData; }); } @@ -65,6 +69,7 @@ export class EditingDataService { async getEditingData(previewData: EditingPreviewData): Promise { const url = this.getUrl(previewData.serverUrl, previewData.key); + debug.experienceEditor('fetching editing data for %o', previewData); return this.dataFetcher.get(url).then((response: { data: EditingData }) => { return response.data; }); @@ -77,7 +82,7 @@ export class EditingDataService { const suffix = Math.random() .toString(36) .substring(2, 12); - return `${data.layoutData.sitecore.route.itemId}-${suffix}`; + return `${data.layoutData.sitecore.route?.itemId}-${suffix}`; } protected getUrl(serverUrl: string, key: string): string { diff --git a/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.test.ts b/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.test.ts index 5fb59bd5c8..8d6ea080a2 100644 --- a/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.test.ts +++ b/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.test.ts @@ -1,124 +1,176 @@ import { expect } from 'chai'; import nock from 'nock'; -import { GraphQLSitemapService } from './graphql-sitemap-service'; - -describe('GraphQLSitemapService', () => { - const ROOT_ITEM = '/sitecore/next/home'; - const graphQLLayoutService = new GraphQLSitemapService({ - endpoint: 'http://jssnextweb/graphql', - }); - - const mockRootItemIdRequest = () => { - nock('http://jssnextweb') - .post('/graphql') - .reply(200, { - data: { - item: { - id: '4FEFEBB5-49D7-4E8F-89D5-D40BC1F23BAD', +import { + GraphQLSitemapService, + GraphQLSitemapServiceConfig, + languageError, +} from './graphql-sitemap-service'; +import appRootQueryResponse from '../testData/mockAppRootQueryResponse.json'; +import sitemapQueryResult from '../testData/sitemapQueryResult.json'; +import sitemapServiceResult from '../testData/sitemapServiceResult'; +import { GraphQLClient, GraphQLRequestClient } from '@sitecore-jss/sitecore-jss'; + +class TestService extends GraphQLSitemapService { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + public client: any; + constructor(options: GraphQLSitemapServiceConfig) { + super(options); + this.client = this.getGraphQLClient(); + } +} + +// todo: should throw error if no app root found +/* +it('should return null if no app root found', async () => { + nock(endpoint, { + reqheaders: { + sc_apikey: apiKey, + }, + }) + .post('/', /GetSiteRoot/gi) + .reply(200, { + data: { + layout: { + homePage: { + rootItem: [], }, }, - }); - }; + }, + }); - const mockPathsRequest = (results: { url: { path: string } }[]) => { - nock('http://jssnextweb') - .post('/graphql') - .reply(200, { - data: { - search: { - results, - }, - }, - }); - }; + const client = new GraphQLRequestClient({ + endpoint, + apiKey, + }); + + await getAppRootId(client, 'siteName', 'language').catch((error) => { + expect(error.message).to.equal('Error fetching Sitecore site root item'); + }); +}); +*/ +describe('GraphQLSitemapService', () => { + const rootItemId = '{GUID}'; + const endpoint = 'http://site'; + const apiKey = 'some-api-key'; + const siteName = 'site-name'; - beforeEach(() => { + afterEach(() => { nock.cleanAll(); }); - describe('SSG mode', () => { - it('should fetch sitemap', async () => { - mockRootItemIdRequest(); + const mockRootItemIdRequest = (results?: { data: { item: { id: string } | undefined } }) => { + nock(endpoint) + .post('/', /AppRootQuery/gi) + .reply( + 200, + results === undefined + ? appRootQueryResponse + : { + data: { + search: { + results, + }, + }, + } + ); + }; - mockPathsRequest([ - { - url: { path: '/' }, - }, - { - url: { path: '/x1' }, - }, - { - url: { path: '/y1/y2/y3/y4' }, - }, - { - url: { path: '/y1/y2' }, - }, - ]); + const mockPathsRequest = (results?: { url: { path: string } }[]) => { + nock(endpoint) + .post('/', /SitemapQuery/gi) + .reply( + 200, + results === undefined + ? sitemapQueryResult + : { + data: { + search: { + total: results.length, + pageInfo: { + hasNext: false, + }, + results, + }, + }, + } + ); + }; - const sitemap = await graphQLLayoutService.fetchSSGSitemap(['ua'], ROOT_ITEM); + describe('Fetch sitemap in SSG mode', () => { + it('should work when 1 language is requested', async () => { + mockPathsRequest(); - expect(sitemap).to.deep.equal([ - { - params: { - path: [''], - }, - locale: 'ua', - }, - { - params: { - path: ['x1'], - }, - locale: 'ua', - }, - { - params: { - path: ['y1', 'y2', 'y3', 'y4'], - }, - locale: 'ua', - }, - { - params: { - path: ['y1', 'y2'], - }, - locale: 'ua', - }, - ]); + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName, rootItemId }); + const sitemap = await service.fetchSSGSitemap(['ua']); + expect(sitemap).to.deep.equal(sitemapServiceResult); + + return expect(nock.isDone()).to.be.true; }); - it('should fetch sitemap using multiple locales', async () => { - mockRootItemIdRequest(); + it('should work when multiple languages are requested', async () => { + const lang1 = 'ua'; + const lang2 = 'da-DK'; - mockPathsRequest([ - { - url: { path: '/' }, - }, - { - url: { path: '/x1' }, - }, - { - url: { path: '/y1/y2/y3/y4' }, - }, - { - url: { path: '/y1/y2' }, - }, - ]); + nock(endpoint) + .post('/', (body) => { + return body.variables.language === lang1; + }) + .reply(200, { + data: { + search: { + total: 4, + pageInfo: { + hasNext: false, + }, + results: [ + { + url: { path: '/' }, + }, + { + url: { path: '/x1' }, + }, + { + url: { path: '/y1/y2/y3/y4' }, + }, + { + url: { path: '/y1/y2' }, + }, + ], + }, + }, + }); - mockPathsRequest([ - { - url: { path: '/' }, - }, - { - url: { path: '/x1-da-DK' }, - }, - { - url: { path: '/y1/y2/y3/y4-da-DK' }, - }, - { - url: { path: '/y1/y2-da-DK' }, - }, - ]); + nock(endpoint) + .post('/', (body) => { + return body.variables.language === lang2; + }) + .reply(200, { + data: { + search: { + total: 4, + pageInfo: { + hasNext: false, + }, + results: [ + { + url: { path: '/' }, + }, + { + url: { path: '/x1-da-DK' }, + }, + { + url: { path: '/y1/y2/y3/y4-da-DK' }, + }, + { + url: { path: '/y1/y2-da-DK' }, + }, + ], + }, + }, + }); - const sitemap = await graphQLLayoutService.fetchSSGSitemap(['ua', 'da-DK'], ROOT_ITEM); + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName, rootItemId }); + const sitemap = await service.fetchSSGSitemap([lang1, lang2]); expect(sitemap).to.deep.equal([ { @@ -170,152 +222,229 @@ describe('GraphQLSitemapService', () => { locale: 'da-DK', }, ]); + + return expect(nock.isDone()).to.be.true; }); - it('should fetch sitemap when items is empty', async () => { - mockRootItemIdRequest(); + it('should throw error if valid language is not provided', async () => { + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName, rootItemId }); + await service.fetchSSGSitemap([]).catch((error: RangeError) => { + expect(error.message).to.equal(languageError); + }); + }); - mockPathsRequest([]); + it('should use a custom pageSize, if provided', async () => { + const customPageSize = 20; - const sitemap = await graphQLLayoutService.fetchSSGSitemap(['ua'], ROOT_ITEM); + nock(endpoint) + .post('/', (body) => body.variables.pageSize === customPageSize) + .reply(200, sitemapQueryResult); - expect(sitemap).to.deep.equal([]); + const service = new GraphQLSitemapService({ + endpoint, + apiKey, + siteName, + rootItemId, + pageSize: customPageSize, + }); + const sitemap = await service.fetchSSGSitemap(['ua']); + + expect(sitemap).to.deep.equal(sitemapServiceResult); + return expect(nock.isDone()).to.be.true; }); - it('should fetch sitemap if locales are not provided', async () => { - mockRootItemIdRequest(); + it('should use default value if pageSize is not specified', async () => { + nock(endpoint) + .post( + '/', + (body) => + body.query.indexOf('$pageSize: Int = 10') > 0 && body.variables.pageSize === undefined + ) + .reply(200, sitemapQueryResult); + + const service = new GraphQLSitemapService({ + endpoint, + apiKey, + siteName, + rootItemId, + pageSize: undefined, + }); + const sitemap = await service.fetchSSGSitemap(['ua']); - const sitemap = await graphQLLayoutService.fetchSSGSitemap([], ROOT_ITEM); + expect(sitemap).to.deep.equal(sitemapServiceResult); + return expect(nock.isDone()).to.be.true; + }); + + it('should work if sitemap has 0 pages', async () => { + mockPathsRequest([]); + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName, rootItemId }); + const sitemap = await service.fetchSSGSitemap(['ua']); expect(sitemap).to.deep.equal([]); + return expect(nock.isDone()).to.be.true; }); - it('should not fetch sitemap if rootItemId is not provided', async () => { - nock('http://jssnextweb') - .post('/graphql') - .reply(200, { - data: null, - }); + it('should attempt to fetch the rootItemId, if rootItemId not provided', async () => { + mockRootItemIdRequest(); - const sitemap = await graphQLLayoutService.fetchSSGSitemap([], ROOT_ITEM); + nock(endpoint) + .post('/', (body) => body.variables.rootItemId === 'GUIDGUIDGUID') + .reply(200, sitemapQueryResult); - expect(sitemap).to.deep.equal([]); + const service = new GraphQLSitemapService({ + endpoint, + apiKey, + siteName, + }); + + const sitemap = await service.fetchSSGSitemap(['ua']); + expect(sitemap).to.deep.equal(sitemapServiceResult); }); - it('should handle error when request root item id', async () => { - nock('http://jssnextweb') - .post('/graphql') - .reply(401, { - error: 'whoops', - }); + it('should use a custom rootItemId, if provided', async () => { + const customRootId = 'cats'; - const sitemap = await graphQLLayoutService.fetchSSGSitemap(['ua'], ROOT_ITEM); + nock(endpoint) + .post('/', (body) => body.variables.rootItemId === customRootId) + .reply(200, sitemapQueryResult); - expect(sitemap).to.deep.equal([]); + const service = new GraphQLSitemapService({ + endpoint, + apiKey, + siteName, + rootItemId: customRootId, + }); + + const sitemap = await service.fetchSSGSitemap(['ua']); + expect(sitemap).to.deep.equal(sitemapServiceResult); }); - it('should handle error when request paths', async () => { + it('should throw error if SitemapQuery fails', async () => { mockRootItemIdRequest(); + nock(endpoint) + .post('/', /SitemapQuery/gi) + .reply(500, 'Error 😥'); + + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName }); + await service.fetchSSGSitemap(['ua']).catch((error: RangeError) => { + expect(error.message).to.contain('SitemapQuery'); + expect(error.message).to.contain('Error 😥'); + }); + return expect(nock.isDone()).to.be.true; + }); - nock('http://jssnextweb') - .post('/graphql') - .reply(401, 'whoops'); - - const sitemap = await graphQLLayoutService.fetchSSGSitemap(['ua'], ROOT_ITEM); + it('should throw error if AppRootQuery fails', async () => { + nock(endpoint) + .post('/', /AppRootQuery/gi) + .reply(500, 'Error 😥'); - expect(sitemap).to.deep.equal([]); + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName }); + await service.fetchSSGSitemap(['ua']).catch((error: RangeError) => { + expect(error.message).to.contain('AppRootQuery'); + expect(error.message).to.contain('Error 😥'); + }); + return expect(nock.isDone()).to.be.true; }); }); - describe('Export mode', () => { + const expectedExportSitemap = [ + { + params: { + path: [''], + }, + }, + { + params: { + path: ['x1'], + }, + }, + { + params: { + path: ['y1', 'y2', 'y3', 'y4'], + }, + }, + { + params: { + path: ['y1', 'y2'], + }, + }, + ]; + + describe('Fetch sitemap in export mode', () => { it('should fetch sitemap', async () => { mockRootItemIdRequest(); + mockPathsRequest(); - mockPathsRequest([ - { - url: { path: '/' }, - }, - { - url: { path: '/x1' }, - }, - { - url: { path: '/y1/y2/y3/y4' }, - }, - { - url: { path: '/y1/y2' }, - }, - ]); - - const sitemap = await graphQLLayoutService.fetchExportSitemap('ua', ROOT_ITEM); + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName }); + const sitemap = await service.fetchExportSitemap('ua'); - expect(sitemap).to.deep.equal([ - { - params: { - path: [''], - }, - }, - { - params: { - path: ['x1'], - }, - }, - { - params: { - path: ['y1', 'y2', 'y3', 'y4'], - }, - }, - { - params: { - path: ['y1', 'y2'], - }, - }, - ]); + expect(sitemap).to.deep.equal(expectedExportSitemap); + return expect(nock.isDone()).to.be.true; }); - it('should fetch sitemap when items is empty', async () => { + it('should work if endpoint returns 0 pages', async () => { mockRootItemIdRequest(); - mockPathsRequest([]); - const sitemap = await graphQLLayoutService.fetchExportSitemap('ua', ROOT_ITEM); + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName }); + const sitemap = await service.fetchExportSitemap('ua'); expect(sitemap).to.deep.equal([]); + return expect(nock.isDone()).to.be.true; }); - it('should not fetch sitemap if rootItemId is not provided', async () => { - nock('http://jssnextweb') - .post('/graphql') - .reply(200, { - data: null, - }); - - const sitemap = await graphQLLayoutService.fetchSSGSitemap([], ROOT_ITEM); - - expect(sitemap).to.deep.equal([]); + it('should throw error if SitemapQuery fails', async () => { + mockRootItemIdRequest(); + nock(endpoint) + .post('/', /SitemapQuery/gi) + .reply(500, 'Error 😥'); + + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName }); + await service.fetchExportSitemap('ua').catch((error: RangeError) => { + expect(error.message).to.contain('SitemapQuery'); + expect(error.message).to.contain('Error 😥'); + }); + return expect(nock.isDone()).to.be.true; }); - it('should handle error when request root item id', async () => { - nock('http://jssnextweb') - .post('/graphql') - .reply(401, { - error: 'whoops', - }); - - const sitemap = await graphQLLayoutService.fetchSSGSitemap(['ua'], ROOT_ITEM); + it('should throw error if AppRootQuery fails', async () => { + nock(endpoint) + .post('/', /AppRootQuery/gi) + .reply(500, 'Error 😥'); - expect(sitemap).to.deep.equal([]); + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName }); + await service.fetchExportSitemap('ua').catch((error: RangeError) => { + expect(error.message).to.contain('AppRootQuery'); + expect(error.message).to.contain('Error 😥'); + }); + return expect(nock.isDone()).to.be.true; }); - it('should handle error when request paths', async () => { + it('should throw error if language is not provided', async () => { mockRootItemIdRequest(); + mockPathsRequest(); - nock('http://jssnextweb') - .post('/graphql') - .reply(401, 'whoops'); + const service = new GraphQLSitemapService({ endpoint, apiKey, siteName }); + await service.fetchExportSitemap('').catch((error: RangeError) => { + expect(error.message).to.equal('The language must be a non-empty string'); + }); - const sitemap = await graphQLLayoutService.fetchSSGSitemap(['ua'], ROOT_ITEM); + return expect(nock.isDone()).to.be.false; + }); + }); - expect(sitemap).to.deep.equal([]); + it('should provide a default GraphQL client', () => { + const service = new TestService({ + endpoint, + apiKey, + siteName, }); + + const graphQLClient = service.client as GraphQLClient; + const graphQLRequestClient = service.client as GraphQLRequestClient; + // eslint-disable-next-line no-unused-expressions + expect(graphQLClient).to.exist; + // eslint-disable-next-line no-unused-expressions + expect(graphQLRequestClient).to.exist; }); }); diff --git a/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts b/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts index 6946252e64..0e9e8e5e02 100644 --- a/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts +++ b/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts @@ -1,103 +1,131 @@ -import chalk from 'chalk'; -import { GraphQLRequestClient } from '@sitecore-jss/sitecore-jss'; -import { StaticPath } from '../sharedTypes/sitemap'; +import { + GraphQLClient, + GraphQLRequestClient, + debug, + getAppRootId, + SearchServiceConfig, + SearchQueryService, +} from '@sitecore-jss/sitecore-jss'; + +/** @private */ +export const queryError = + 'Valid value for rootItemId not provided and failed to auto-resolve app root item.'; + +/** @private */ +export const languageError = 'The list of languages cannot be empty'; + +// Even though _hasLayout should always be "true" in this query, using a variable is necessary for compatibility with Edge +const defaultQuery = /* GraphQL */ ` + query SitemapQuery( + $rootItemId: String! + $language: String! + $pageSize: Int = 10 + $hasLayout: String = "true" + $after: String + ) { + search( + where: { + AND: [ + { name: "_path", value: $rootItemId, operator: CONTAINS } + { name: "_language", value: $language } + { name: "_hasLayout", value: $hasLayout } + ] + } + first: $pageSize + after: $after + ) { + total + pageInfo { + endCursor + hasNext + } + results { + url { + path + } + } + } + } +`; + +/** + * The schema of data returned in response to a page list query request + */ +export type PageListQueryResult = { url: { path: string } }; + +/** + * Object model of a site page item. + */ +export type StaticPath = { + params: { + path: string[]; + }; + locale?: string; +}; -export type GraphQLSitemapServiceConfig = { +/** + * Configuration options for @see GraphQLSitemapService instances + */ +export interface GraphQLSitemapServiceConfig extends SearchServiceConfig { /** * Your Graphql endpoint */ endpoint: string; -}; -type SearchResult = { - search: { - results: { url: { path: string } }[]; - }; -}; + /** + * The API key to use for authentication. + */ + apiKey: string; +} +/** + * Service that fetches the list of site pages using Sitecore's GraphQL API. + * This list is used for SSG and Export functionality. + * @mixes SearchQueryService + */ export class GraphQLSitemapService { + private graphQLClient: GraphQLClient; + private searchService: SearchQueryService; + /** - * Provides ability to fetch sitemap from graphql endpoint. - * Sitemap can be used for SSG/Export - * @param {GraphQLSitemapServiceConfig} config graphql sitemap service config + * Gets the default query used for fetching the list of site pages */ - constructor(private config: GraphQLSitemapServiceConfig) {} + protected get query(): string { + return defaultQuery; + } + + /** + * Creates an instance of graphQL sitemap service with the provided options + * @param {GraphQLSitemapServiceConfig} options instance + */ + constructor(public options: GraphQLSitemapServiceConfig) { + this.graphQLClient = this.getGraphQLClient(); + this.searchService = new SearchQueryService(this.graphQLClient); + } /** * Fetch sitemap which could be used for generation of static pages during `next export`. * The `locale` parameter will be used in the item query, but since i18n is not supported, - * the output paths will not include a `locale` property. - * @param {string} locale locale which application supports - * @param {string} rootItemPath root item path - * @param {Function} [formatSearchQuery] override default search query - * - * @default - * Search query - * search( - * where: { - * AND:[ - * { - * name:"_path", - * value:"${rootItemId.toLowerCase()}" - * }, - * { - * name:"_language", - * value:"${locale}" - * }, - * { - * name:"_hasLayout", - * value :"true" - * } - * ] - * } - * ) + * the output paths will not include a `language` property. + * @param {string} locale which application supports + * @returns an array of @see StaticPath objects */ - async fetchExportSitemap( - locale: string, - rootItemPath: string, - formatSearchQuery?: (rootItemId: string, locale: string) => string - ): Promise { + async fetchExportSitemap(locale: string): Promise { const formatPath = (path: string[]) => ({ params: { path, }, }); - return this.fetch([locale], rootItemPath, formatPath, formatSearchQuery); + return this.fetchSitemap([locale], formatPath); } /** * Fetch sitemap which could be used for generation of static pages using SSG mode * @param {string[]} locales locales which application supports - * @param {string} rootItemPath root item path - * @param {Function} [formatSearchQuery] override default search query - * - * @default - * Search query - * search( - * where: { - * AND:[ - * { - * name:"_path", - * value:"${rootItemId.toLowerCase()}" - * }, - * { - * name:"_language", - * value:"${locale}" - * }, - * { - * name:"_hasLayout", - * value :"true" - * } - * ] - * } - * ) + * @returns an array of @see StaticPath objects */ - async fetchSSGSitemap( - locales: string[], - rootItemPath: string, - formatSearchQuery?: (rootItemId: string, locale: string) => string - ): Promise { + async fetchSSGSitemap(locales: string[]): Promise { const formatPath = (path: string[], locale: string) => ({ params: { path, @@ -105,153 +133,75 @@ export class GraphQLSitemapService { locale, }); - return this.fetch(locales, rootItemPath, formatPath, formatSearchQuery); + return this.fetchSitemap(locales, formatPath); } /** - * Internal fetch - * @param {string[]} locales - * @param {string} rootItemPath - * @param {Function} formatStaticPath - * @param {Function} [formatSearchQuery] + * Fetch a flat list of all pages that are descendants of the specified root item and have a + * version in the specified language(s). + * @param {string[]} languages Fetch pages that have versions in this language(s). + * @param {Function} formatStaticPath Function for transforming the raw search results into (@see StaticPath) types. + * @returns list of pages + * @throws {RangeError} if the list of languages is empty. + * @throws {Error} if the app root was not found for the specified site and language. */ - private async fetch( - locales: string[], - rootItemPath: string, - formatStaticPath: (path: string[], locale: string) => StaticPath, - formatSearchQuery?: (rootItemId: string, locale: string) => string + protected async fetchSitemap( + languages: string[], + formatStaticPath: (path: string[], language: string) => StaticPath ): Promise { - if (!locales.length) { - return []; + if (!languages.length) { + throw new RangeError(languageError); } - const rootItemId = await this.getRootItemId(rootItemPath); + // If the caller does not specify a root item ID, then we try to figure it out + const rootItemId = + this.options.rootItemId || + (await getAppRootId(this.graphQLClient, this.options.siteName, languages[0])); if (!rootItemId) { - console.error( - chalk.red( - `Error occurred while fetching sitemap: root item id could not be found for provided rootItemPath '${rootItemPath}'` - ) - ); - return []; + throw new Error(queryError); } - const getStaticPaths = async (locale: string): Promise => { - const query = this.getSitemapQuery(rootItemId, locale, formatSearchQuery); - - const data = await this.createClient() - .request(query) - .catch((error) => { - console.error( - chalk.red('Error occurred while fetching sitemap:'), - error.response || error - ); - - return null; - }); - - const items = data?.search.results ? data.search.results : []; - - const staticPaths = items.reduce((list: StaticPath[], item: { url: { path: string } }) => { - // replace first and last / - // transform to array of paths - const path = item.url.path.replace(/^\/|\/$/g, '').split('/'); - - return list.concat(formatStaticPath(path, locale)); - }, []); - - return staticPaths; - }; - // Fetch paths using all locales - const paths = await Promise.all(locales.map(getStaticPaths)); - - // merge promises result + const paths = await Promise.all( + languages.map((language) => { + debug.sitemap('fetching sitemap data for %s', language); + return this.searchService + .fetch(this.query, { + rootItemId, + language, + pageSize: this.options.pageSize, + }) + .then((results) => { + return results.map((item) => + formatStaticPath(item.url.path.replace(/^\/|\/$/g, '').split('/'), language) + ); + }); + }) + ); + + // merge promises results into single result return ([] as StaticPath[]).concat(...paths); } /** - * Returns new graphql client instance - */ - private createClient(): GraphQLRequestClient { - const { endpoint } = this.config; - - return new GraphQLRequestClient(endpoint); - } - - /** - * Returns query to request root item id - * @param {string} rootItemPath root item path - */ - private getRootItemIdQuery(rootItemPath: string): string { - return `query { - item(path:"${rootItemPath}") { - id - } - }`; - } - - /** - * Request root item id using path - * @param {string} rootItemPath root item path + * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default + * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you + * want to use something else. + * @returns {GraphQLClient} implementation */ - private async getRootItemId(rootItemPath: string): Promise { - const query = this.getRootItemIdQuery(rootItemPath); - - const data = await this.createClient() - .request<{ item: { id: string } }>(query) - .catch((error) => { - console.error( - chalk.red('Error occurred while fetching root item id:'), - error.response || error - ); - - return null; - }); - - return data?.item?.id; + protected getGraphQLClient(): GraphQLClient { + return new GraphQLRequestClient(this.options.endpoint, { + apiKey: this.options.apiKey, + debugger: debug.sitemap, + }); } /** - * Graphql query in order to fetch sitemap - * @param {string} rootItemId - * @param {string} locale - * @param {Function} [formatSearchQuery] generate custom search query + * Gets a service that can perform GraphQL "search" queries to fetch @see PageListQueryResult + * @returns {SearchQueryService} the search query service */ - private getSitemapQuery( - rootItemId: string, - locale: string, - formatSearchQuery?: (rootItemId: string, locale: string) => string - ): string { - const searchQuery = formatSearchQuery - ? formatSearchQuery(rootItemId, locale) - : `search( - where: { - AND:[ - { - name:"_path", - value:"${rootItemId.toLowerCase()}" - }, - { - name:"_language", - value:"${locale}" - }, - { - name:"_hasLayout", - value :"true" - } - ] - } - )`; - - return `query { - ${searchQuery}{ - results { - url { - path - } - } - } - }`; + protected getSearchService(): SearchQueryService { + return new SearchQueryService(this.graphQLClient); } } diff --git a/packages/sitecore-jss-nextjs/src/sharedTypes/sitemap.ts b/packages/sitecore-jss-nextjs/src/sharedTypes/sitemap.ts deleted file mode 100644 index a384d857ac..0000000000 --- a/packages/sitecore-jss-nextjs/src/sharedTypes/sitemap.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type StaticPath = { - params: { - path: string[]; - }; - locale?: string; -}; diff --git a/packages/sitecore-jss-nextjs/src/testData/editing-data.ts b/packages/sitecore-jss-nextjs/src/testData/editing-data.ts index c4098250fb..dd63a89c38 100644 --- a/packages/sitecore-jss-nextjs/src/testData/editing-data.ts +++ b/packages/sitecore-jss-nextjs/src/testData/editing-data.ts @@ -74,9 +74,9 @@ export const data = { fields: { content: { value: - '

This is a live set of examples of how to use JSS. For more information on using JSS, please see the documentation.

\r\n

The content and layout of this page is defined in /data/routes/styleguide/en.yml

\r\n', + '

This is a live set of examples of how to use JSS. For more information on using JSS, please see the documentation.

\r\n

The content and layout of this page is defined in /data/routes/styleguide/en.yml

\r\n', 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:insertexternallink","header":"","icon":"/temp/iconcache/office/16x16/earth_link.png","disabledIcon":"/temp/earth_link_disabled16x16.png","isDivider":false,"tooltip":"Insert an external link into the text field.","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:removelink","header":"","icon":"/temp/iconcache/office/16x16/link_broken.png","disabledIcon":"/temp/link_broken_disabled16x16.png","isDivider":false,"tooltip":"Remove link.","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/{FC218D50-FC56-5B2B-99BA-38D570A83386}?lang=en&ver=1","custom":{},"displayName":"content","expandedDisplayName":null}

This is a live set of examples of how to use JSS. For more information on using JSS, please see the documentation.

\r\n

The content and layout of this page is defined in /data/routes/styleguide/en.yml

\r\n
', + '{"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:insertexternallink","header":"","icon":"/temp/iconcache/office/16x16/earth_link.png","disabledIcon":"/temp/earth_link_disabled16x16.png","isDivider":false,"tooltip":"Insert an external link into the text field.","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:removelink","header":"","icon":"/temp/iconcache/office/16x16/link_broken.png","disabledIcon":"/temp/link_broken_disabled16x16.png","isDivider":false,"tooltip":"Remove link.","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/{FC218D50-FC56-5B2B-99BA-38D570A83386}?lang=en&ver=1","custom":{},"displayName":"content","expandedDisplayName":null}

This is a live set of examples of how to use JSS. For more information on using JSS, please see the documentation.

\r\n

The content and layout of this page is defined in /data/routes/styleguide/en.yml

\r\n
', }, heading: { value: 'JSS Styleguide', diff --git a/packages/sitecore-jss-nextjs/src/testData/mockAppRootQueryResponse.json b/packages/sitecore-jss-nextjs/src/testData/mockAppRootQueryResponse.json new file mode 100644 index 0000000000..5b18fe94ec --- /dev/null +++ b/packages/sitecore-jss-nextjs/src/testData/mockAppRootQueryResponse.json @@ -0,0 +1,13 @@ +{ + "data": { + "layout": { + "homePage": { + "rootItem": [ + { + "id": "GUIDGUIDGUID" + } + ] + } + } + } +} diff --git a/packages/sitecore-jss-nextjs/src/testData/sitemapQueryResult.json b/packages/sitecore-jss-nextjs/src/testData/sitemapQueryResult.json new file mode 100644 index 0000000000..a0aeb0c458 --- /dev/null +++ b/packages/sitecore-jss-nextjs/src/testData/sitemapQueryResult.json @@ -0,0 +1,33 @@ +{ + "data": { + "search": { + "total": 6, + "pageInfo": { + "endCursor": "Ng==", + "hasNext": false + }, + "results": [ + { + "url": { + "path": "/" + } + }, + { + "url": { + "path": "/x1" + } + }, + { + "url": { + "path": "/y1/y2/y3/y4" + } + }, + { + "url": { + "path": "/y1/y2" + } + } + ] + } + } +} \ No newline at end of file diff --git a/packages/sitecore-jss-nextjs/src/testData/sitemapServiceResult.ts b/packages/sitecore-jss-nextjs/src/testData/sitemapServiceResult.ts new file mode 100644 index 0000000000..7d7ede00cd --- /dev/null +++ b/packages/sitecore-jss-nextjs/src/testData/sitemapServiceResult.ts @@ -0,0 +1,26 @@ +export default [ + { + params: { + path: [''], + }, + locale: 'ua', + }, + { + params: { + path: ['x1'], + }, + locale: 'ua', + }, + { + params: { + path: ['y1', 'y2', 'y3', 'y4'], + }, + locale: 'ua', + }, + { + params: { + path: ['y1', 'y2'], + }, + locale: 'ua', + }, +]; diff --git a/packages/sitecore-jss-nextjs/tsconfig.json b/packages/sitecore-jss-nextjs/tsconfig.json index f64435dd3b..ff1ee1e773 100644 --- a/packages/sitecore-jss-nextjs/tsconfig.json +++ b/packages/sitecore-jss-nextjs/tsconfig.json @@ -12,7 +12,7 @@ "skipLibCheck": true, "noFallthroughCasesInSwitch": true, "noImplicitReturns": true, - "noUnusedLocals": false, + "noUnusedLocals": true, "noUnusedParameters": true, "strict": true, "typeRoots": ["node_modules/@types"], @@ -20,7 +20,8 @@ "declaration": true, "declarationDir": "./types", "allowSyntheticDefaultImports": true, - "esModuleInterop": true + "esModuleInterop": true, + "resolveJsonModule": true, }, "exclude": [ "node_modules", diff --git a/packages/sitecore-jss-proxy/README.md b/packages/sitecore-jss-proxy/README.md index af4b8c05f1..105d123f59 100644 --- a/packages/sitecore-jss-proxy/README.md +++ b/packages/sitecore-jss-proxy/README.md @@ -2,5 +2,5 @@ This module is provided as a part of Sitecore JavaScript Services. It contains the headless-mode SSR proxy implementation. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-proxy/package-lock.json b/packages/sitecore-jss-proxy/package-lock.json index cc6ba2f918..4af27e57a6 100644 --- a/packages/sitecore-jss-proxy/package-lock.json +++ b/packages/sitecore-jss-proxy/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-proxy", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -381,6 +381,15 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -696,6 +705,7 @@ "has": "^1.0.3", "has-symbols": "^1.0.1", "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", "is-regex": "^1.1.1", "object-inspect": "^1.8.0", "object-keys": "^1.1.1", @@ -710,8 +720,100 @@ "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", "requires": { "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", "has-symbols": "^1.0.1", "object-keys": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + } + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } } } } @@ -1141,6 +1243,16 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1223,6 +1335,11 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1241,9 +1358,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "http-proxy": { @@ -1328,6 +1445,11 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1337,6 +1459,14 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "requires": { + "call-bind": "^1.0.0" + } + }, "is-buffer": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", @@ -1378,11 +1508,21 @@ "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", "dev": true }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -1418,8 +1558,7 @@ "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 + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" }, "is-symbol": { "version": "1.0.3", @@ -1529,9 +1668,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "log-symbols": { "version": "4.0.0", @@ -2498,6 +2637,24 @@ "integrity": "sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw==", "dev": true }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + } + } + }, "uri-js": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", @@ -2532,6 +2689,18 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -2605,9 +2774,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss-proxy/package.json b/packages/sitecore-jss-proxy/package.json index a8948cf159..7090fd5426 100644 --- a/packages/sitecore-jss-proxy/package.json +++ b/packages/sitecore-jss-proxy/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-proxy", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "Proxy middleware for express.js server.", "main": "dist/index.js", "scripts": { @@ -16,10 +16,10 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, diff --git a/packages/sitecore-jss-react-forms/README.md b/packages/sitecore-jss-react-forms/README.md index 11e771714e..129c1c7a32 100644 --- a/packages/sitecore-jss-react-forms/README.md +++ b/packages/sitecore-jss-react-forms/README.md @@ -4,5 +4,5 @@ This module is provided as a part of Sitecore JavaScript Services. It contains R > NOTE: This module is intended to be copied from and extended as needed - it is not meant to be a heavyweight forms implementation. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-react-forms/package-lock.json b/packages/sitecore-jss-react-forms/package-lock.json index 65c1f1b10a..1a22e1b192 100644 --- a/packages/sitecore-jss-react-forms/package-lock.json +++ b/packages/sitecore-jss-react-forms/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-react-forms", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1970,9 +1970,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "html-element-map": { @@ -2420,9 +2420,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.escape": { @@ -4131,9 +4131,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss-react-forms/package.json b/packages/sitecore-jss-react-forms/package.json index 3bc57cf42a..99284f8935 100644 --- a/packages/sitecore-jss-react-forms/package.json +++ b/packages/sitecore-jss-react-forms/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-react-forms", - "version": "16.0.0", + "version": "18.0.0-canary.7", "main": "dist/index.js", "scripts": { "build": "npm run clean && tsc", @@ -14,10 +14,10 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, @@ -49,7 +49,7 @@ "react-dom": "^17.0.1" }, "dependencies": { - "@sitecore-jss/sitecore-jss-forms": "^16.0.0", + "@sitecore-jss/sitecore-jss-forms": "^18.0.0-canary.7", "prop-types": "^15.7.2" }, "description": "", diff --git a/packages/sitecore-jss-react-native/README.md b/packages/sitecore-jss-react-native/README.md index 12f7b4a279..9fe560db71 100644 --- a/packages/sitecore-jss-react-native/README.md +++ b/packages/sitecore-jss-react-native/README.md @@ -2,5 +2,5 @@ This module is provided as a part of Sitecore JavaScript Services. It contains the integration for React Native (services & components). -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-react-native/package-lock.json b/packages/sitecore-jss-react-native/package-lock.json index d2283b139b..a32599b9ac 100644 --- a/packages/sitecore-jss-react-native/package-lock.json +++ b/packages/sitecore-jss-react-native/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-react-native", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -3991,18 +3991,18 @@ } }, "css-tree": { - "version": "1.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", - "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", "requires": { - "mdn-data": "2.0.6", + "mdn-data": "2.0.14", "source-map": "^0.6.1" } }, "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==" + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" }, "cssom": { "version": "0.3.8", @@ -7516,9 +7516,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.memoize": { @@ -7779,9 +7779,9 @@ } }, "mdn-data": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", - "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" }, "meow": { "version": "6.1.1", @@ -9752,12 +9752,12 @@ } }, "react-native-svg": { - "version": "9.13.6", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-9.13.6.tgz", - "integrity": "sha512-vjjuJhEhQCwWjqsgWyGy6/C/LIBM2REDxB40FU1PMhi8T3zQUwUHnA6M15pJKlQG8vaZyA+QnLyIVhjtujRgig==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-12.1.0.tgz", + "integrity": "sha512-1g9qBRci7man8QsHoXn6tP3DhCDiypGgc6+AOWq+Sy+PmP6yiyf8VmvKuoqrPam/tf5x+ZaBT2KI0gl7bptZ7w==", "requires": { - "css-select": "^2.0.2", - "css-tree": "^1.0.0-alpha.37" + "css-select": "^2.1.0", + "css-tree": "^1.0.0-alpha.39" } }, "react-native-svg-uri": { @@ -11554,9 +11554,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss-react-native/package.json b/packages/sitecore-jss-react-native/package.json index 2be22abbae..ce267ed431 100644 --- a/packages/sitecore-jss-react-native/package.json +++ b/packages/sitecore-jss-react-native/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-react-native", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "", "main": "dist/index.js", "scripts": { @@ -18,18 +18,18 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, "dependencies": { - "@sitecore-jss/sitecore-jss": "^16.0.0", + "@sitecore-jss/sitecore-jss": "^18.0.0-canary.7", "prop-types": "^15.7.2", "react-native-htmlview": "^0.15.0", - "react-native-svg": "^9.13.2", + "react-native-svg": "^12.1.0", "react-native-svg-uri": "^1.2.3" }, "peerDependencies": { diff --git a/packages/sitecore-jss-react-native/src/components/Date.tsx b/packages/sitecore-jss-react-native/src/components/Date.tsx index 891e2f9b74..3c058ffb17 100644 --- a/packages/sitecore-jss-react-native/src/components/Date.tsx +++ b/packages/sitecore-jss-react-native/src/components/Date.tsx @@ -29,6 +29,10 @@ export const DateField: React.FunctionComponent = ({ return null; } + if (field.editable && editable) { + return ; + } + let children; if (render) { @@ -37,9 +41,6 @@ export const DateField: React.FunctionComponent = ({ children = field.value as string; } - if (field.editable && editable) { - return ; - } return render ? <>{children} : {children}; }; diff --git a/packages/sitecore-jss-react-native/src/components/Image.tsx b/packages/sitecore-jss-react-native/src/components/Image.tsx index 6e9ead595a..7cdeb4d96b 100644 --- a/packages/sitecore-jss-react-native/src/components/Image.tsx +++ b/packages/sitecore-jss-react-native/src/components/Image.tsx @@ -10,7 +10,7 @@ export interface ImageFieldValue { src?: string | number; width?: number; height?: number; - style?: unknown; + style?: { [key: string]: unknown }; } export interface ImageField { @@ -46,7 +46,7 @@ const getImageAttrs = ( src?: string | number; width?: number | undefined; height?: number | undefined; - style?: unknown; + style?: { [key: string]: unknown }; }, imageUrlParams?: { [paramName: string]: string } | null ) => { @@ -67,9 +67,6 @@ const getImageAttrs = ( imgStyles.height = typeof height !== 'number' ? Number(height) : height; } - // react native styles/StyleSheets can be merged by passing them as an array to the native Image component - newAttrs.style = style ? [imgStyles, style] : imgStyles; - // in react-native, you need to "import" static assets via `require` statements // when the packager builds your app, it (presumably) statically analyzes your code, extracts // the assets that are `require`d into an array/map, then assigns them a numerical value. @@ -83,6 +80,17 @@ const getImageAttrs = ( newAttrs.source = { uri }; } + if (isSvgImage(newAttrs.source as ImageSourcePropType)) { + // svg image accepts object + newAttrs.style = { + ...(style || {}), + ...imgStyles, + }; + } else { + // react native styles/StyleSheets can be merged by passing them as an array to the native Image component + newAttrs.style = style ? [imgStyles, style] : imgStyles; + } + return newAttrs; }; diff --git a/packages/sitecore-jss-react-native/src/components/Text.test.tsx b/packages/sitecore-jss-react-native/src/components/Text.test.tsx index 4a820a0126..25a4478e44 100644 --- a/packages/sitecore-jss-react-native/src/components/Text.test.tsx +++ b/packages/sitecore-jss-react-native/src/components/Text.test.tsx @@ -17,6 +17,16 @@ describe('', () => { expect(rendered).toMatchSnapshot(); }); + it('should render nothing with empty value', () => { + const props = { + field: { + value: '', + }, + }; + const rendered = renderer.create(); + expect(rendered).toMatchSnapshot(); + }); + test('should render editable value if present', () => { const props = { field: { @@ -29,6 +39,28 @@ describe('', () => { expect(rendered).toMatchSnapshot(); }); + test('should render number value', () => { + const props = { + field: { + value: 1.23, + }, + }; + const rendered = renderer.create(); + + expect(rendered).toMatchSnapshot(); + }); + + test('should render zero number value', () => { + const props = { + field: { + value: 0, + }, + }; + const rendered = renderer.create(); + + expect(rendered).toMatchSnapshot(); + }); + test('should render value if editable is undefined', () => { const props = { field: { diff --git a/packages/sitecore-jss-react-native/src/components/Text.tsx b/packages/sitecore-jss-react-native/src/components/Text.tsx index 716217a402..ab4a7d7353 100644 --- a/packages/sitecore-jss-react-native/src/components/Text.tsx +++ b/packages/sitecore-jss-react-native/src/components/Text.tsx @@ -6,13 +6,13 @@ export interface TextProps { [nativeTextProps: string]: unknown; /** The text field data. */ field: { - value?: string; + value?: string | number; editable?: string; } | null; } export const Text: React.SFC = ({ field, ...otherProps }) => { - if (!field || (!field.editable && !field.value)) { + if (!field || (!field.editable && (field.value === undefined || field.value === ''))) { return null; } diff --git a/packages/sitecore-jss-react-native/src/components/__snapshots__/Image.test.tsx.snap b/packages/sitecore-jss-react-native/src/components/__snapshots__/Image.test.tsx.snap index 78618f1a84..0b26eb2bc6 100644 --- a/packages/sitecore-jss-react-native/src/components/__snapshots__/Image.test.tsx.snap +++ b/packages/sitecore-jss-react-native/src/components/__snapshots__/Image.test.tsx.snap @@ -6,7 +6,7 @@ exports[` with network images with direct image object, no value/editab resizeMode="cover" source={ Object { - "uri": "https://jssapp/-/jssmedia/myfile.ashx&w=180&h=360", + "uri": "https://jssapp/-/media/myfile.ashx&w=180&h=360", } } style={ @@ -24,7 +24,7 @@ exports[` with network images with style prop with width or height spec resizeMode="cover" source={ Object { - "uri": "https://jssapp/-/jssmedia/myfile.ashx&w=180&h=360", + "uri": "https://jssapp/-/media/myfile.ashx&w=180&h=360", } } style={ @@ -47,7 +47,7 @@ exports[` with network images with value/editable image object should r resizeMode="cover" source={ Object { - "uri": "https://jssapp/-/jssmedia/myfile.ashx&w=180&h=360", + "uri": "https://jssapp/-/media/myfile.ashx&w=180&h=360", } } style={ diff --git a/packages/sitecore-jss-react-native/src/components/__snapshots__/Text.test.tsx.snap b/packages/sitecore-jss-react-native/src/components/__snapshots__/Text.test.tsx.snap index e635946440..73e8588bdd 100644 --- a/packages/sitecore-jss-react-native/src/components/__snapshots__/Text.test.tsx.snap +++ b/packages/sitecore-jss-react-native/src/components/__snapshots__/Text.test.tsx.snap @@ -6,10 +6,18 @@ exports[` should render editable value if present 1`] = ` `; +exports[` should render nothing with empty value 1`] = `null`; + exports[` should render nothing with missing editable and value 1`] = `null`; exports[` should render nothing with missing field 1`] = `null`; +exports[` should render number value 1`] = ` + + 1.23 + +`; + exports[` should render other attributes with other props provided 1`] = ` should render value if editable is undefined 1`] = ` this value should be rendered `; + +exports[` should render zero number value 1`] = ` + + 0 + +`; diff --git a/packages/sitecore-jss-react-native/src/dataConversion.test.ts b/packages/sitecore-jss-react-native/src/dataConversion.test.ts deleted file mode 100644 index 13103bb75a..0000000000 --- a/packages/sitecore-jss-react-native/src/dataConversion.test.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { - convertPropDataToLayoutServiceFormat, - convertRouteToLayoutServiceFormat, -} from './dataConversion'; -import { RouteData } from '@sitecore-jss/sitecore-jss'; -import { convertedDevRouteData, devRouteData } from '../testData/dataConversionTestData/dev-data'; - -describe('data conversion', () => { - describe('convertRouteToLayoutServiceFormat', () => { - it('should assign "editable" keys to fields and nested component fields and rendering params', () => { - const expected = convertedDevRouteData; - const actual = convertRouteToLayoutServiceFormat(devRouteData as unknown as RouteData); - - expect(actual).toMatchObject(expected); - }); - }); - - describe('convertPropDataToLayoutServiceFormat', () => { - describe('when prop value is a primitive type', () => { - it('should assign prop value object with "editable" keys', () => { - const propData = { - prop0: { value: 'string value' }, - prop1: { value: true }, - prop2: { value: 42 }, - }; - - const expected = { - prop0: { value: 'string value', editable: 'string value' }, - prop1: { value: true, editable: true }, - prop2: { value: 42, editable: 42 }, - }; - - const actual = convertPropDataToLayoutServiceFormat(propData); - expect(actual).toMatchObject(expected); - }); - }); - - describe('when prop value is an array', () => { - it('should recursively assign prop value object with "editable" keys to each property in each item of array', () => { - const propData = { - items: [ - { - name: '', - fields: { - prop0: { value: 'string value' }, - prop1: { value: true }, - prop2: { value: 42 }, - }, - }, - { - name: '', - fields: { - prop0: { value: 'string value' }, - prop1: { value: true }, - prop2: { value: 42 }, - }, - }, - { - name: '', - fields: { - prop0: [ - { - name: 'ds', - fields: { - prop0: { value: 'string value' }, - prop1: { value: true }, - prop2: { value: 42 }, - }, - }, - ], - }, - }, - ], - }; - - const expected = { - items: [ - { - fields: { - prop0: { value: 'string value', editable: 'string value' }, - prop1: { value: true, editable: true }, - prop2: { value: 42, editable: 42 }, - }, - }, - { - fields: { - prop0: { value: 'string value', editable: 'string value' }, - prop1: { value: true, editable: true }, - prop2: { value: 42, editable: 42 }, - }, - }, - { - fields: { - prop0: [ - { - name: 'ds', - fields: { - prop0: { value: 'string value', editable: 'string value' }, - prop1: { value: true, editable: true }, - prop2: { value: 42, editable: 42 }, - }, - }, - ], - }, - }, - ], - }; - - const actual = convertPropDataToLayoutServiceFormat(propData); - expect(actual).toMatchObject(expected); - }); - }); - - describe('when prop value is an object', () => { - describe('and prop value object has a "value" property of type "object"', () => { - it('should add empty "editable" key to prop value object ', () => { - const propData = { - prop0: { - value: { src: '/my img src' }, - }, - }; - - const expected = { - prop0: { - value: { src: '/my img src' }, - editable: '', - }, - }; - - const actual = convertPropDataToLayoutServiceFormat(propData); - expect(actual).toMatchObject(expected); - }); - }); - describe('and prop value object has a non-object "value" property', () => { - it('should add "editable" key to prop value object', () => { - const propData = { - prop0: { - value: 'non-object value', - }, - }; - const expected = { - prop0: { - value: 'non-object value', - editable: 'non-object value', - }, - }; - - const actual = convertPropDataToLayoutServiceFormat(propData); - expect(actual).toMatchObject(expected); - }); - }); - }); - }); -}); diff --git a/packages/sitecore-jss-react-native/src/dataConversion.ts b/packages/sitecore-jss-react-native/src/dataConversion.ts deleted file mode 100644 index 5abde30245..0000000000 --- a/packages/sitecore-jss-react-native/src/dataConversion.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { - ComponentRendering, - Field, - Item, - PlaceholdersData, - RouteData, -} from '@sitecore-jss/sitecore-jss'; - -const isComponentRendering = (element: unknown) => (element as ComponentRendering).componentName; - -/** - * Receives dev prop data and creates or assigns "value/editable" values where needed to match signature of LayoutService data. - * @param {Object | undefined} propData - * @returns {Object} prop data in layout service format - */ -export const convertPropDataToLayoutServiceFormat = ( - propData: { [name: string]: Field | Item | Item[] | undefined } | undefined -): { [name: string]: Field } => { - if (!propData) { - return {}; - } - return Object.keys(propData).reduce((result, propName) => { - const propValue = propData[propName]; - - // if no propValue, then bail - if (!propValue) { - return { ...result, [propName]: propValue }; - } - - const newResult: { [name: string]: unknown } = { ...result }; - - // field value might be an array, in which case we need to iterate the array entries for more prop values - if (Array.isArray(propValue)) { - newResult[propName] = propValue.map((val) => { - return { - ...val, - ...(val.fields && { fields: convertPropDataToLayoutServiceFormat(val.fields) }), - }; - }); - return newResult; - } - - // check if type is not a Field, so it's Item - if (!('value' in propValue) && !('editable' in propValue)) { - return { - ...propValue, - fields: convertPropDataToLayoutServiceFormat(propValue.fields), - }; - } - - // assume propValue _should_ always contain a 'value' key. if it doesn't then bail. - // or if propValue has an 'editable' key, then assume this prop doesn't need additional processing. - if (!propValue.value || propValue.editable) { - return { ...result, [propName]: propValue }; - } - - const propValueType = typeof propValue.value; - - // if propValue is a primitive type, then copy propValue.value to propValue.editable - if (propValueType === 'string' || propValueType === 'boolean' || propValueType === 'number') { - newResult[propName] = { - value: propValue.value, - editable: propValue.value, - }; - - return newResult; - } - - // we already check for Array and primitive types above, - // so we _should_ be able to assume if the type is 'object' that we have an actual {object} - // this assumes we're working with JSON and not complex objects. - if (propValueType === 'object') { - newResult[propName] = { - value: propValue.value, - editable: '', // editable will never* be an object, so inject an empty string. - // any consuming code will likely check for editable first, then fallback to value as needed. - // *for now - }; - return newResult; - } - - // will we ever get here? perhaps if someone tries to use a function or symbol... - return newResult; - }, {}); -}; - -/** - * Receives dev route data and creates or assigns "value/editable" values where needed - * for all fields and rendering props to match signature of LayoutService data. - * @param {RouteData} routeData - * @returns {Object} route data in layout service format - */ -export const convertRouteToLayoutServiceFormat = (routeData: RouteData) => { - const fields = convertPropDataToLayoutServiceFormat(routeData.fields); - - const transformPlaceholders = (placeholders: PlaceholdersData) => { - if (!placeholders) { - return {}; - } - - return Object.keys(placeholders).reduce((result, placeholderName) => { - const placeholder = placeholders[placeholderName]; - const elements = placeholder.map((element) => { - if (isComponentRendering(element)) { - const componentRendering = element as ComponentRendering; - // https://stackoverflow.com/a/40560953/9324 - return { - ...componentRendering, - ...(componentRendering.placeholders && { - placeholders: transformPlaceholders(componentRendering.placeholders), - }), - ...(componentRendering.params && { params: componentRendering.params }), - ...(componentRendering.fields && { - fields: convertPropDataToLayoutServiceFormat(componentRendering.fields), - }), - }; - } - return element; - }); - result[placeholderName] = elements; - return result; - }, {} as PlaceholdersData); - }; - - const transformedPlaceholders = transformPlaceholders(routeData.placeholders); - return { - ...routeData, - fields, - placeholders: transformedPlaceholders, - }; -}; diff --git a/packages/sitecore-jss-react-native/src/index.ts b/packages/sitecore-jss-react-native/src/index.ts index a09c481ab6..e46ff38323 100644 --- a/packages/sitecore-jss-react-native/src/index.ts +++ b/packages/sitecore-jss-react-native/src/index.ts @@ -23,7 +23,3 @@ export { RichText } from './components/RichText'; export { Text } from './components/Text'; export { DateField } from './components/Date'; export { Link } from './components/Link'; -export { - convertPropDataToLayoutServiceFormat, - convertRouteToLayoutServiceFormat, -} from './dataConversion'; diff --git a/packages/sitecore-jss-react-native/testData/dataConversionTestData/dev-data.ts b/packages/sitecore-jss-react-native/testData/dataConversionTestData/dev-data.ts deleted file mode 100644 index d38758a733..0000000000 --- a/packages/sitecore-jss-react-native/testData/dataConversionTestData/dev-data.ts +++ /dev/null @@ -1,201 +0,0 @@ -export const devRouteData = { - name: 'portfolio', - displayName: 'Portfolio', - fields: { - metaTitle: { - value: 'Portfolio', - }, - titleText: { - value: 'Portfolio', - }, - body: { - value: "You'll be amazed by all our good work.", - }, - }, - placeholders: { - main: [ - { - componentName: 'Portfolio', - fields: {}, - params: {}, - dataSource: '', - placeholders: { - 'page-header': [ - { - componentName: 'Jumbotron', - dataSource: '', - params: { - shade: 'light', - titleSize: '2', - }, - }, - ], - 'page-content': [ - { - componentName: 'Carousel', - dataSource: '', - fields: { - items: [ - { - fields: { - image: { - value: { - src: '/assets/img/portfolio/1.jpg', - }, - }, - title: { - value: 'First slide label!', - }, - body: { - value: '

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - }, - }, - }, - { - fields: { - image: { - value: { - src: '/assets/img/portfolio/2.jpg', - }, - }, - title: { - value: 'Second slide label', - }, - body: { - value: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - }, - }, - }, - { - fields: { - image: { - value: { - src: '/assets/img/portfolio/3.jpg', - }, - }, - title: { - value: 'Third slide label', - }, - body: { - value: - '

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - }, - }, - }, - ], - }, - }, - ], - }, - }, - ], - }, -}; - -export const convertedDevRouteData = { - name: 'portfolio', - displayName: 'Portfolio', - fields: { - metaTitle: { - value: 'Portfolio', - editable: 'Portfolio', - }, - body: { - value: "You'll be amazed by all our good work.", - editable: "You'll be amazed by all our good work.", - }, - titleText: { - value: 'Portfolio', - editable: 'Portfolio', - }, - }, - placeholders: { - main: [ - { - componentName: 'Portfolio', - dataSource: '', - fields: {}, - params: {}, - placeholders: { - 'page-header': [ - { - componentName: 'Jumbotron', - dataSource: '', - params: { - shade: 'light', - titleSize: '2', - }, - }, - ], - 'page-content': [ - { - componentName: 'Carousel', - dataSource: '', - fields: { - items: [ - { - fields: { - image: { - value: { - src: '/assets/img/portfolio/1.jpg', - }, - editable: '', - }, - title: { - value: 'First slide label!', - editable: 'First slide label!', - }, - body: { - value: '

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - editable: - '

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - }, - }, - }, - { - fields: { - image: { - value: { - src: '/assets/img/portfolio/2.jpg', - }, - editable: '', - }, - title: { - value: 'Second slide label', - editable: 'Second slide label', - }, - body: { - value: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - editable: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - }, - }, - }, - { - fields: { - image: { - value: { - src: '/assets/img/portfolio/3.jpg', - }, - editable: '', - }, - title: { - value: 'Third slide label', - editable: 'Third slide label', - }, - body: { - value: - '

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - editable: - '

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - }, - }, - }, - ], - }, - }, - ], - }, - }, - ], - }, -}; diff --git a/packages/sitecore-jss-react-native/testData/dataConversionTestData/ee-data.ts b/packages/sitecore-jss-react-native/testData/dataConversionTestData/ee-data.ts deleted file mode 100644 index 81e6789972..0000000000 --- a/packages/sitecore-jss-react-native/testData/dataConversionTestData/ee-data.ts +++ /dev/null @@ -1,698 +0,0 @@ -export const rawData = { - context: { - pageEditing: true, - user: { - domain: 'sitecore', - name: 'Admin', - }, - site: { - name: 'jssadvancedapp', - }, - navigation: [ - { - name: 'Home', - path: '/', - children: [ - { - name: 'About', - path: '/about', - }, - { - name: 'Portfolio', - path: '/portfolio', - }, - { - name: 'Services', - path: '/services', - }, - ], - }, - ], - }, - name: 'portfolio', - displayName: 'Portfolio', - fields: { - metaTitle: { - value: '', - 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/{0C727FB2-9E84-46A3-A46E-1DB91C7B115F}?lang=en&ver=1","custom":{},"displayName":"metaTitle","expandedDisplayName":null}[No text in field]', - }, - }, - placeholders: [ - { - name: 'main', - path: 'main', - elements: [ - { - 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/{0C727FB2-9E84-46A3-A46E-1DB91C7B115F}?lang=en&ver=1","custom":{"allowedRenderings":["95991A47B356449FA4B1D4293771BE5B","0459E414DD26478F87D86756EA3772A2","5478062B9BED43F5967A8C42066B053F","7143F00E934242D1901E2C48A7794796"],"editable":"true"},"displayName":"main","expandedDisplayName":null}', - attributes: { - 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={0A44B6E4-67A9-4E82-8246-A17E048B9EB8},renderingId={5478062B-9BED-43F5-967A-8C42066B053F},id={0C727FB2-9E84-46A3-A46E-1DB91C7B115F})\',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={0A44B6E4-67A9-4E82-8246-A17E048B9EB8},renderingId={5478062B-9BED-43F5-967A-8C42066B053F},id={0C727FB2-9E84-46A3-A46E-1DB91C7B115F})\',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/{0C727FB2-9E84-46A3-A46E-1DB91C7B115F}?lang=en&ver=1","custom":{"renderingID":"5478062B9BED43F5967A8C42066B053F","editable":"true"},"displayName":"Portfolio","expandedDisplayName":null}', - attributes: { - type: 'text/sitecore', - chrometype: 'rendering', - kind: 'open', - hintname: 'Portfolio', - id: 'r_0A44B6E467A94E828246A17E048B9EB8', - class: 'scpm', - 'data-selectable': 'true', - }, - }, - { - componentName: 'Portfolio', - renderingName: 'Portfolio', - renderingParams: {}, - uid: '0a44b6e4-67a9-4e82-8246-a17e048b9eb8', - dataSource: '{F5ECF6C0-2FF2-497A-BB75-96E4B847D9EF}', - placeholders: [ - { - name: 'page-header', - path: '/main/page-header_0A44B6E4-67A9-4E82-8246-A17E048B9EB8', - elements: [ - { - 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/{0C727FB2-9E84-46A3-A46E-1DB91C7B115F}?lang=en&ver=1","custom":{"allowedRenderings":["0458209CE5F14D1E839051ED91CF3122"],"editable":"true"},"displayName":"page-header","expandedDisplayName":null}', - attributes: { - type: 'text/sitecore', - chrometype: 'placeholder', - kind: 'open', - id: '_main_page_header_0A44B6E4_67A9_4E82_8246_A17E048B9EB8', - key: '/main/page-header_0A44B6E4-67A9-4E82-8246-A17E048B9EB8', - 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={8A0D4795-C7D0-4FEC-9369-0B89F3162073},renderingId={0458209C-E5F1-4D1E-8390-51ED91CF3122},id={24E8F2AC-6685-4A64-8601-9F7165F6FE62})\',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={8A0D4795-C7D0-4FEC-9369-0B89F3162073},renderingId={0458209C-E5F1-4D1E-8390-51ED91CF3122},id={24E8F2AC-6685-4A64-8601-9F7165F6FE62})\',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/{24E8F2AC-6685-4A64-8601-9F7165F6FE62}?lang=en&ver=1","custom":{"renderingID":"0458209CE5F14D1E839051ED91CF3122","editable":"true"},"displayName":"Jumbotron","expandedDisplayName":null}', - attributes: { - type: 'text/sitecore', - chrometype: 'rendering', - kind: 'open', - hintname: 'Jumbotron', - id: 'r_8A0D4795C7D04FEC93690B89F3162073', - class: 'scpm', - 'data-selectable': 'true', - }, - }, - { - componentName: 'Jumbotron', - renderingName: 'Jumbotron', - renderingParams: { - shade: 'light', - titleSize: '2', - }, - uid: '8a0d4795-c7d0-4fec-9369-0b89f3162073', - dataSource: '{F5ECF6C0-2FF2-497A-BB75-96E4B847D9EF}', - placeholders: [], - name: 'code', - type: 'data/json', - contents: { - titleText: { - value: 'Portfolio', - 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/{24E8F2AC-6685-4A64-8601-9F7165F6FE62}?lang=en&ver=1","custom":{},"displayName":"Title Text","expandedDisplayName":null}Portfolio', - }, - body: { - value: '', - 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/{24E8F2AC-6685-4A64-8601-9F7165F6FE62}?lang=en&ver=1","custom":{},"displayName":"Body","expandedDisplayName":null}[No text in field]', - }, - }, - attributes: { - type: 'data/json', - }, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_r_', - chrometype: 'rendering', - kind: 'close', - hintkey: 'Jumbotron', - class: 'scpm', - }, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_', - chrometype: 'placeholder', - kind: 'close', - hintname: 'page-header', - class: 'scpm', - }, - }, - ], - }, - { - name: 'page-content', - path: '/main/page-content_0A44B6E4-67A9-4E82-8246-A17E048B9EB8', - elements: [ - { - 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/{0C727FB2-9E84-46A3-A46E-1DB91C7B115F}?lang=en&ver=1","custom":{"allowedRenderings":["2121DEA51D324E22865C6C03EF1B228C","99DEC8C2B93A49328630575F115C87AA","024A959995F34985A3D05EECE09FB8E0","C87E2F6F2F2445BFBBD109F0BE520F4C"],"editable":"true"},"displayName":"page-content","expandedDisplayName":null}', - attributes: { - type: 'text/sitecore', - chrometype: 'placeholder', - kind: 'open', - id: '_main_page_content_0A44B6E4_67A9_4E82_8246_A17E048B9EB8', - key: '/main/page-content_0A44B6E4-67A9-4E82-8246-A17E048B9EB8', - 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={D28A2E1F-866E-475C-9ED6-246EE5CC7AEA},renderingId={C87E2F6F-2F24-45BF-BBD1-09F0BE520F4C},id={D484E0E0-2E81-4326-A560-5F070B98813E})\',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={D28A2E1F-866E-475C-9ED6-246EE5CC7AEA},renderingId={C87E2F6F-2F24-45BF-BBD1-09F0BE520F4C},id={D484E0E0-2E81-4326-A560-5F070B98813E})\',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/{D484E0E0-2E81-4326-A560-5F070B98813E}?lang=en&ver=1","custom":{"renderingID":"C87E2F6F2F2445BFBBD109F0BE520F4C","editable":"true"},"displayName":"Carousel","expandedDisplayName":null}', - attributes: { - type: 'text/sitecore', - chrometype: 'rendering', - kind: 'open', - hintname: 'Carousel', - id: 'r_D28A2E1F866E475C9ED6246EE5CC7AEA', - class: 'scpm', - 'data-selectable': 'true', - }, - }, - { - componentName: 'Carousel', - renderingName: 'Carousel', - renderingParams: {}, - uid: 'd28a2e1f-866e-475c-9ed6-246ee5cc7aea', - dataSource: '{F5ECF6C0-2FF2-497A-BB75-96E4B847D9EF}', - placeholders: [], - name: 'code', - type: 'data/json', - contents: { - items: [ - { - body: { - value: - '

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - 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/{F5201E35-7674-44EB-B903-E52488A0EB5A}?lang=en&ver=1","custom":{},"displayName":"Body","expandedDisplayName":null}

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - }, - title: { - value: 'First slide label!', - 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/{F5201E35-7674-44EB-B903-E52488A0EB5A}?lang=en&ver=1","custom":{},"displayName":"Title","expandedDisplayName":null}First slide label!', - }, - image: { - value: { - src: - 'http://jssadvancedapp/sitecore/shell/-/media/JssAdvancedApp/assets/img/portfolio/1.ashx?h=350&la=en&w=650&hash=B973470AA333773341C62A76511361C88897E2D4', - alt: '', - width: '650', - height: '350', - }, - editable: - '{"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}', - }, - }, - { - body: { - value: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - 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/{FC4163F7-F334-4F9E-8DD8-C718AC76FC48}?lang=en&ver=1","custom":{},"displayName":"Body","expandedDisplayName":null}

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - }, - title: { - value: 'Second slide label', - 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/{FC4163F7-F334-4F9E-8DD8-C718AC76FC48}?lang=en&ver=1","custom":{},"displayName":"Title","expandedDisplayName":null}Second slide label', - }, - image: { - value: { - src: - 'http://jssadvancedapp/sitecore/shell/-/media/JssAdvancedApp/assets/img/portfolio/2.ashx?h=350&la=en&w=650&hash=B39765EEA24364E825C8F2660A2730739B2462BA', - alt: '', - width: '650', - height: '350', - }, - editable: - '{"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/{FC4163F7-F334-4F9E-8DD8-C718AC76FC48}?lang=en&ver=1","custom":{},"displayName":"Image","expandedDisplayName":null}', - }, - }, - { - body: { - value: - '

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - 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/{B7B86C3B-66E3-4BE3-831B-B8B3088EF3DB}?lang=en&ver=1","custom":{},"displayName":"Body","expandedDisplayName":null}

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - }, - title: { - value: 'Third slide label', - 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/{B7B86C3B-66E3-4BE3-831B-B8B3088EF3DB}?lang=en&ver=1","custom":{},"displayName":"Title","expandedDisplayName":null}Third slide label', - }, - image: { - value: { - src: - 'http://jssadvancedapp/sitecore/shell/-/media/JssAdvancedApp/assets/img/portfolio/3.ashx?h=350&la=en&w=650&hash=9B3E9D55580CE7930DB50C0F2378F2025215261F', - alt: '', - width: '650', - height: '350', - }, - editable: - '{"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/{B7B86C3B-66E3-4BE3-831B-B8B3088EF3DB}?lang=en&ver=1","custom":{},"displayName":"Image","expandedDisplayName":null}', - }, - }, - ], - }, - attributes: { - type: 'data/json', - }, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_r_', - chrometype: 'rendering', - kind: 'close', - hintkey: 'Carousel', - class: 'scpm', - }, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_', - chrometype: 'placeholder', - kind: 'close', - hintname: 'page-content', - class: 'scpm', - }, - }, - ], - }, - ], - name: 'code', - type: 'data/json', - contents: null, - attributes: { - type: 'data/json', - }, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_r_', - chrometype: 'rendering', - kind: 'close', - hintkey: 'Portfolio', - class: 'scpm', - }, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_', - chrometype: 'placeholder', - kind: 'close', - hintname: 'main', - class: 'scpm', - }, - }, - ], - }, - ], -}; - -/* ************ - -converted data - -************** */ - -export const convertedData = { - sitecore: { - context: { - pageEditing: true, - user: { - domain: 'sitecore', - name: 'Admin', - }, - site: { - name: 'jssadvancedapp', - }, - navigation: [ - { - name: 'Home', - path: '/', - children: [ - { - name: 'About', - path: '/about', - }, - { - name: 'Portfolio', - path: '/portfolio', - }, - { - name: 'Services', - path: '/services', - }, - ], - }, - ], - }, - route: { - name: 'portfolio', - displayName: 'Portfolio', - fields: { - metaTitle: { - value: '', - 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/{0C727FB2-9E84-46A3-A46E-1DB91C7B115F}?lang=en&ver=1","custom":{},"displayName":"metaTitle","expandedDisplayName":null}[No text in field]', - }, - }, - 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/{0C727FB2-9E84-46A3-A46E-1DB91C7B115F}?lang=en&ver=1","custom":{"allowedRenderings":["95991A47B356449FA4B1D4293771BE5B","0459E414DD26478F87D86756EA3772A2","5478062B9BED43F5967A8C42066B053F","7143F00E934242D1901E2C48A7794796"],"editable":"true"},"displayName":"main","expandedDisplayName":null}', - attributes: { - 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={0A44B6E4-67A9-4E82-8246-A17E048B9EB8},renderingId={5478062B-9BED-43F5-967A-8C42066B053F},id={0C727FB2-9E84-46A3-A46E-1DB91C7B115F})\',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={0A44B6E4-67A9-4E82-8246-A17E048B9EB8},renderingId={5478062B-9BED-43F5-967A-8C42066B053F},id={0C727FB2-9E84-46A3-A46E-1DB91C7B115F})\',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/{0C727FB2-9E84-46A3-A46E-1DB91C7B115F}?lang=en&ver=1","custom":{"renderingID":"5478062B9BED43F5967A8C42066B053F","editable":"true"},"displayName":"Portfolio","expandedDisplayName":null}', - attributes: { - type: 'text/sitecore', - chrometype: 'rendering', - kind: 'open', - hintname: 'Portfolio', - id: 'r_0A44B6E467A94E828246A17E048B9EB8', - class: 'scpm', - 'data-selectable': 'true', - }, - }, - { - uid: '0a44b6e4-67a9-4e82-8246-a17e048b9eb8', - componentName: 'Portfolio', - dataSource: '{F5ECF6C0-2FF2-497A-BB75-96E4B847D9EF}', - placeholders: { - '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/{0C727FB2-9E84-46A3-A46E-1DB91C7B115F}?lang=en&ver=1","custom":{"allowedRenderings":["0458209CE5F14D1E839051ED91CF3122"],"editable":"true"},"displayName":"page-header","expandedDisplayName":null}', - attributes: { - type: 'text/sitecore', - chrometype: 'placeholder', - kind: 'open', - id: '_main_page_header_0A44B6E4_67A9_4E82_8246_A17E048B9EB8', - key: '/main/page-header_0A44B6E4-67A9-4E82-8246-A17E048B9EB8', - 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={8A0D4795-C7D0-4FEC-9369-0B89F3162073},renderingId={0458209C-E5F1-4D1E-8390-51ED91CF3122},id={24E8F2AC-6685-4A64-8601-9F7165F6FE62})\',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={8A0D4795-C7D0-4FEC-9369-0B89F3162073},renderingId={0458209C-E5F1-4D1E-8390-51ED91CF3122},id={24E8F2AC-6685-4A64-8601-9F7165F6FE62})\',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/{24E8F2AC-6685-4A64-8601-9F7165F6FE62}?lang=en&ver=1","custom":{"renderingID":"0458209CE5F14D1E839051ED91CF3122","editable":"true"},"displayName":"Jumbotron","expandedDisplayName":null}', - attributes: { - type: 'text/sitecore', - chrometype: 'rendering', - kind: 'open', - hintname: 'Jumbotron', - id: 'r_8A0D4795C7D04FEC93690B89F3162073', - class: 'scpm', - 'data-selectable': 'true', - }, - }, - { - uid: '8a0d4795-c7d0-4fec-9369-0b89f3162073', - componentName: 'Jumbotron', - fields: { - titleText: { - value: 'Portfolio', - 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/{24E8F2AC-6685-4A64-8601-9F7165F6FE62}?lang=en&ver=1","custom":{},"displayName":"Title Text","expandedDisplayName":null}Portfolio', - }, - body: { - value: '', - 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/{24E8F2AC-6685-4A64-8601-9F7165F6FE62}?lang=en&ver=1","custom":{},"displayName":"Body","expandedDisplayName":null}[No text in field]', - }, - }, - params: { - shade: 'light', - titleSize: '2', - }, - dataSource: '{F5ECF6C0-2FF2-497A-BB75-96E4B847D9EF}', - placeholders: {}, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_r_', - chrometype: 'rendering', - kind: 'close', - hintkey: 'Jumbotron', - class: 'scpm', - }, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_', - chrometype: 'placeholder', - kind: 'close', - hintname: 'page-header', - class: 'scpm', - }, - }, - ], - '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/{0C727FB2-9E84-46A3-A46E-1DB91C7B115F}?lang=en&ver=1","custom":{"allowedRenderings":["2121DEA51D324E22865C6C03EF1B228C","99DEC8C2B93A49328630575F115C87AA","024A959995F34985A3D05EECE09FB8E0","C87E2F6F2F2445BFBBD109F0BE520F4C"],"editable":"true"},"displayName":"page-content","expandedDisplayName":null}', - attributes: { - type: 'text/sitecore', - chrometype: 'placeholder', - kind: 'open', - id: '_main_page_content_0A44B6E4_67A9_4E82_8246_A17E048B9EB8', - key: '/main/page-content_0A44B6E4-67A9-4E82-8246-A17E048B9EB8', - 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={D28A2E1F-866E-475C-9ED6-246EE5CC7AEA},renderingId={C87E2F6F-2F24-45BF-BBD1-09F0BE520F4C},id={D484E0E0-2E81-4326-A560-5F070B98813E})\',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={D28A2E1F-866E-475C-9ED6-246EE5CC7AEA},renderingId={C87E2F6F-2F24-45BF-BBD1-09F0BE520F4C},id={D484E0E0-2E81-4326-A560-5F070B98813E})\',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/{D484E0E0-2E81-4326-A560-5F070B98813E}?lang=en&ver=1","custom":{"renderingID":"C87E2F6F2F2445BFBBD109F0BE520F4C","editable":"true"},"displayName":"Carousel","expandedDisplayName":null}', - attributes: { - type: 'text/sitecore', - chrometype: 'rendering', - kind: 'open', - hintname: 'Carousel', - id: 'r_D28A2E1F866E475C9ED6246EE5CC7AEA', - class: 'scpm', - 'data-selectable': 'true', - }, - }, - { - uid: 'd28a2e1f-866e-475c-9ed6-246ee5cc7aea', - componentName: 'Carousel', - fields: { - items: [ - { - body: { - value: - '

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - 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/{F5201E35-7674-44EB-B903-E52488A0EB5A}?lang=en&ver=1","custom":{},"displayName":"Body","expandedDisplayName":null}

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - }, - title: { - value: 'First slide label!', - 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/{F5201E35-7674-44EB-B903-E52488A0EB5A}?lang=en&ver=1","custom":{},"displayName":"Title","expandedDisplayName":null}First slide label!', - }, - image: { - value: { - src: - 'http://jssadvancedapp/sitecore/shell/-/media/JssAdvancedApp/assets/img/portfolio/1.ashx?h=350&la=en&w=650&hash=B973470AA333773341C62A76511361C88897E2D4', - alt: '', - width: '650', - height: '350', - }, - editable: - '{"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}', - }, - }, - { - body: { - value: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - 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/{FC4163F7-F334-4F9E-8DD8-C718AC76FC48}?lang=en&ver=1","custom":{},"displayName":"Body","expandedDisplayName":null}

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - }, - title: { - value: 'Second slide label', - 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/{FC4163F7-F334-4F9E-8DD8-C718AC76FC48}?lang=en&ver=1","custom":{},"displayName":"Title","expandedDisplayName":null}Second slide label', - }, - image: { - value: { - src: - 'http://jssadvancedapp/sitecore/shell/-/media/JssAdvancedApp/assets/img/portfolio/2.ashx?h=350&la=en&w=650&hash=B39765EEA24364E825C8F2660A2730739B2462BA', - alt: '', - width: '650', - height: '350', - }, - editable: - '{"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/{FC4163F7-F334-4F9E-8DD8-C718AC76FC48}?lang=en&ver=1","custom":{},"displayName":"Image","expandedDisplayName":null}', - }, - }, - { - body: { - value: - '

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - 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/{B7B86C3B-66E3-4BE3-831B-B8B3088EF3DB}?lang=en&ver=1","custom":{},"displayName":"Body","expandedDisplayName":null}

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - }, - title: { - value: 'Third slide label', - 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/{B7B86C3B-66E3-4BE3-831B-B8B3088EF3DB}?lang=en&ver=1","custom":{},"displayName":"Title","expandedDisplayName":null}Third slide label', - }, - image: { - value: { - src: - 'http://jssadvancedapp/sitecore/shell/-/media/JssAdvancedApp/assets/img/portfolio/3.ashx?h=350&la=en&w=650&hash=9B3E9D55580CE7930DB50C0F2378F2025215261F', - alt: '', - width: '650', - height: '350', - }, - editable: - '{"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/{B7B86C3B-66E3-4BE3-831B-B8B3088EF3DB}?lang=en&ver=1","custom":{},"displayName":"Image","expandedDisplayName":null}', - }, - }, - ], - }, - dataSource: '{F5ECF6C0-2FF2-497A-BB75-96E4B847D9EF}', - placeholders: {}, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_r_', - chrometype: 'rendering', - kind: 'close', - hintkey: 'Carousel', - class: 'scpm', - }, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_', - chrometype: 'placeholder', - kind: 'close', - hintname: 'page-content', - class: 'scpm', - }, - }, - ], - }, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_r_', - chrometype: 'rendering', - kind: 'close', - hintkey: 'Portfolio', - class: 'scpm', - }, - }, - { - name: 'code', - type: 'text/sitecore', - contents: '', - attributes: { - type: 'text/sitecore', - id: 'scEnclosingTag_', - chrometype: 'placeholder', - kind: 'close', - hintname: 'main', - class: 'scpm', - }, - }, - ], - }, - }, - }, -}; diff --git a/packages/sitecore-jss-react-native/testData/dataConversionTestData/non-ee-data.js b/packages/sitecore-jss-react-native/testData/dataConversionTestData/non-ee-data.js deleted file mode 100644 index 91202e61cf..0000000000 --- a/packages/sitecore-jss-react-native/testData/dataConversionTestData/non-ee-data.js +++ /dev/null @@ -1,508 +0,0 @@ -export const rawData = { - context: { - pageEditing: false, - site: { - name: 'jssadvancedapp', - }, - navigation: [ - { - name: 'Home', - path: '/', - children: [ - { - name: 'About', - path: '/about', - }, - { - name: 'Portfolio', - path: '/portfolio', - }, - { - name: 'Services', - path: '/services', - }, - ], - }, - ], - }, - name: 'portfolio', - displayName: 'Portfolio', - fields: { - metaTitle: { - value: '', - editable: '', - }, - }, - placeholders: [ - { - name: 'main', - path: 'main', - elements: [ - { - componentName: 'Portfolio', - renderingName: 'Portfolio', - renderingParams: {}, - uid: '0a44b6e4-67a9-4e82-8246-a17e048b9eb8', - placeholders: [ - { - name: 'page-header', - path: '/main/page-header_0A44B6E4-67A9-4E82-8246-A17E048B9EB8', - elements: [ - { - renderingName: 'Jumbotron', - componentName: 'Jumbotron', - renderingParams: { - shade: 'light', - titleSize: '2', - }, - uid: '8a0d4795-c7d0-4fec-9369-0b89f3162073', - placeholders: [], - name: 'code', - type: 'data/json', - contents: { - titleText: { - value: 'Portfolio', - editable: 'Portfolio', - }, - body: { - value: '', - editable: '', - }, - }, - attributes: { - type: 'data/json', - }, - }, - ], - }, - { - name: 'page-content', - path: '/main/page-content_0A44B6E4-67A9-4E82-8246-A17E048B9EB8', - elements: [ - { - componentName: 'Carousel', - renderingName: 'Carousel', - renderingParams: {}, - uid: 'd28a2e1f-866e-475c-9ed6-246ee5cc7aea', - placeholders: [], - name: 'code', - type: 'data/json', - contents: { - items: [ - { - body: { - value: - '

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - editable: - '

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - }, - title: { - value: 'First slide label!', - editable: 'First slide label!', - }, - image: { - value: { - src: - 'http://jssadvancedapp/-/media/JssAdvancedApp/assets/img/portfolio/1.ashx?h=350&la=en&w=650&hash=D9645D0B6D48932543B9C64AA0B07A94ECA7CAFC', - alt: '', - width: '650', - height: '350', - }, - editable: - '', - }, - }, - { - body: { - value: '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - editable: - '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - }, - title: { - value: 'Second slide label', - editable: 'Second slide label', - }, - image: { - value: { - src: - 'http://jssadvancedapp/-/media/JssAdvancedApp/assets/img/portfolio/2.ashx?h=350&la=en&w=650&hash=BB17661D73167EDD997A6996989D97677E7C6062', - alt: '', - width: '650', - height: '350', - }, - editable: - '', - }, - }, - { - body: { - value: - '

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - editable: - '

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - }, - title: { - value: 'Third slide label', - editable: 'Third slide label', - }, - image: { - value: { - src: - 'http://jssadvancedapp/-/media/JssAdvancedApp/assets/img/portfolio/3.ashx?h=350&la=en&w=650&hash=2FEA0ACA02C78CA450F195E520B8C8A38E4F2E93', - alt: '', - width: '650', - height: '350', - }, - editable: - '', - }, - }, - ], - }, - attributes: { - type: 'data/json', - }, - }, - ], - }, - ], - name: 'code', - type: 'data/json', - contents: null, - attributes: { - type: 'data/json', - }, - }, - ], - }, - ], -}; - -/* ************ - -shaped data - -************** */ - -export const shapedData = { - sitecore: { - context: { - pageEditing: false, - site: { - name: 'jssadvancedapp', - }, - navigation: [ - { - name: 'Home', - path: '/', - children: [ - { - name: 'About', - path: '/about', - }, - { - name: 'Portfolio', - path: '/portfolio', - }, - { - name: 'Services', - path: '/services', - }, - ], - }, - ], - }, - route: { - name: 'portfolio', - displayName: 'Portfolio', - fields: { - metaTitle: { - value: '', - editable: '', - }, - }, - placeholders: [ - { - name: 'main', - path: 'main', - elements: [ - { - componentName: 'Portfolio', - renderingName: 'Portfolio', - renderingParams: {}, - uid: '0a44b6e4-67a9-4e82-8246-a17e048b9eb8', - placeholders: [ - { - name: 'page-header', - path: '/main/page-header_0A44B6E4-67A9-4E82-8246-A17E048B9EB8', - elements: [ - { - componentName: 'Jumbotron', - renderingName: 'Jumbotron', - renderingParams: { - shade: 'light', - titleSize: '2', - }, - uid: '8a0d4795-c7d0-4fec-9369-0b89f3162073', - placeholders: [], - name: 'code', - type: 'data/json', - contents: { - titleText: { - value: 'Portfolio', - editable: 'Portfolio', - }, - body: { - value: '', - editable: '', - }, - }, - attributes: { - type: 'data/json', - }, - }, - ], - }, - { - name: 'page-content', - path: '/main/page-content_0A44B6E4-67A9-4E82-8246-A17E048B9EB8', - elements: [ - { - componentName: 'Carousel', - renderingName: 'Carousel', - renderingParams: {}, - uid: 'd28a2e1f-866e-475c-9ed6-246ee5cc7aea', - placeholders: [], - name: 'code', - type: 'data/json', - contents: { - items: [ - { - body: { - value: - '

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - editable: - '

Nulla vitae elit libero, a pharetra augue mollis interdum.

', - }, - title: { - value: 'First slide label!', - editable: 'First slide label!', - }, - image: { - value: { - src: - 'http://jssadvancedapp/-/media/JssAdvancedApp/assets/img/portfolio/1.ashx?h=350&la=en&w=650&hash=D9645D0B6D48932543B9C64AA0B07A94ECA7CAFC', - alt: '', - width: '650', - height: '350', - }, - editable: - '', - }, - }, - { - body: { - value: - '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - editable: - '

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

', - }, - title: { - value: 'Second slide label', - editable: 'Second slide label', - }, - image: { - value: { - src: - 'http://jssadvancedapp/-/media/JssAdvancedApp/assets/img/portfolio/2.ashx?h=350&la=en&w=650&hash=BB17661D73167EDD997A6996989D97677E7C6062', - alt: '', - width: '650', - height: '350', - }, - editable: - '', - }, - }, - { - body: { - value: - '

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - editable: - '

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

', - }, - title: { - value: 'Third slide label', - editable: 'Third slide label', - }, - image: { - value: { - src: - 'http://jssadvancedapp/-/media/JssAdvancedApp/assets/img/portfolio/3.ashx?h=350&la=en&w=650&hash=2FEA0ACA02C78CA450F195E520B8C8A38E4F2E93', - alt: '', - width: '650', - height: '350', - }, - editable: - '', - }, - }, - ], - }, - attributes: { - type: 'data/json', - }, - }, - ], - }, - ], - name: 'code', - type: 'data/json', - contents: null, - attributes: { - type: 'data/json', - }, - }, - ], - }, - ], - }, - }, -}; - -/* ************ - -raw single placeholder data - -************** */ - -export const rawPlaceholderData = { - name: 'main', - path: 'main', - elements: [ - { - componentName: 'Home', - renderingName: 'Home', - renderingParams: {}, - uid: '32d8d116-af4d-493d-be2a-b1c346a517e9', - dataSource: 'test0', - placeholders: [ - { - name: 'page-header', - path: '/main/page-header_32D8D116-AF4D-493D-BE2A-B1C346A517E9', - elements: [ - { - componentName: 'Jumbotron', - renderingName: 'Jumbotron', - renderingParams: { - shade: 'dark', - titleSize: '1', - }, - uid: '197ff505-a489-44d9-9062-616c258f2385', - dataSource: 'test1', - placeholders: [], - name: 'code', - type: 'data/json', - contents: { - titleText: { - 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!

', - }, - }, - attributes: { - type: 'data/json', - }, - }, - ], - }, - { - name: 'page-content', - path: '/main/page-content_32D8D116-AF4D-493D-BE2A-B1C346A517E9', - elements: [ - { - renderingName: 'DownloadCallout', - renderingParams: {}, - uid: '833e8a58-4368-4013-aace-4e79baa56bd9', - dataSource: 'test2', - placeholders: [], - name: 'code', - type: 'data/json', - contents: { - linkText: { - value: 'Download', - editable: 'Download', - }, - }, - attributes: { - type: 'data/json', - }, - }, - ], - }, - ], - name: 'code', - type: 'data/json', - contents: null, - attributes: { - type: 'data/json', - }, - }, - ], -}; - -export const convertedPlaceholderData = { - name: 'main', - path: 'main', - elements: [ - { - uid: '32d8d116-af4d-493d-be2a-b1c346a517e9', - dataSource: 'test0', - componentName: 'Home', - placeholders: { - 'page-header': [ - { - uid: '197ff505-a489-44d9-9062-616c258f2385', - componentName: 'Jumbotron', - dataSource: 'test1', - fields: { - titleText: { - 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!

', - }, - }, - params: { - shade: 'dark', - titleSize: '1', - }, - placeholders: {}, - }, - ], - 'page-content': [ - { - uid: '833e8a58-4368-4013-aace-4e79baa56bd9', - componentName: 'DownloadCallout', - dataSource: 'test2', - fields: { - linkText: { - value: 'Download', - editable: 'Download', - }, - }, - placeholders: {}, - }, - ], - }, - }, - ], -}; diff --git a/packages/sitecore-jss-react/.vscode/launch.json b/packages/sitecore-jss-react/.vscode/launch.json index c05ad3e768..dca814d7e3 100644 --- a/packages/sitecore-jss-react/.vscode/launch.json +++ b/packages/sitecore-jss-react/.vscode/launch.json @@ -3,19 +3,19 @@ "configurations": [ { "name": "Run mocha", - "type": "node2", + "type": "node", "request": "launch", "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha", "stopOnEntry": false, "args": [ - "--compilers", - "js:babel-core/register", "--require", - "./src/tests/jsdom-setup.js", - "./src/tests/enzyme-setup.js", - "./src/**/*.test.js", + "ts-node/register", + "./src/tests/jsdom-setup.ts", + "./src/tests/enzyme-setup.ts", "--no-timeouts", - "./dist/test" + "--colors", + "./src/**/*.test.ts", + "./src/**/*.test.tsx" ], "cwd": "${workspaceRoot}", "runtimeExecutable": null diff --git a/packages/sitecore-jss-react/README.md b/packages/sitecore-jss-react/README.md index aa3966b153..a20a4bfdb2 100644 --- a/packages/sitecore-jss-react/README.md +++ b/packages/sitecore-jss-react/README.md @@ -2,5 +2,5 @@ This module is provided as a part of Sitecore JavaScript Services. It contains React components and integration for JSS. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-react/package-lock.json b/packages/sitecore-jss-react/package-lock.json index 192a5618ce..d7ae31953d 100644 --- a/packages/sitecore-jss-react/package-lock.json +++ b/packages/sitecore-jss-react/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-react", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -484,12 +484,6 @@ "@types/react": "*" } }, - "@types/url-parse": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.4.3.tgz", - "integrity": "sha512-4kHAkbV/OfW2kb5BLVUuUMoumB3CP8rHqlw48aHvFy5tf9ER0AfOonBlX29l/DD68G70DmyhRlSYfQPSYpC5Vw==", - "dev": true - }, "@wojtekmaj/enzyme-adapter-react-17": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.4.1.tgz", @@ -2319,9 +2313,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "html-element-map": { @@ -2929,9 +2923,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.escape": { @@ -3885,12 +3879,6 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -4175,12 +4163,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -4842,16 +4824,6 @@ "punycode": "^2.1.0" } }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -5055,9 +5027,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss-react/package.json b/packages/sitecore-jss-react/package.json index b799a7a3e3..60f67190e8 100644 --- a/packages/sitecore-jss-react/package.json +++ b/packages/sitecore-jss-react/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-react", - "version": "16.0.0", + "version": "18.0.0-canary.7", "main": "dist/index.js", "scripts": { "build": "npm run clean && tsc", @@ -15,10 +15,10 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, @@ -32,7 +32,6 @@ "@types/prop-types": "^15.7.2", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", - "@types/url-parse": "^1.4.3", "@wojtekmaj/enzyme-adapter-react-17": "^0.4.1", "chai": "^4.2.0", "chai-spies": "^1.0.0", @@ -49,15 +48,14 @@ "react-test-renderer": "^16.9.0", "sinon": "^7.4.2", "ts-node": "^8.3.0", - "typescript": "3.7.5", - "url-parse": "^1.4.7" + "typescript": "3.7.5" }, "peerDependencies": { "react": "^17.0.1", "react-dom": "^17.0.1" }, "dependencies": { - "@sitecore-jss/sitecore-jss": "^16.0.0", + "@sitecore-jss/sitecore-jss": "^18.0.0-canary.7", "prop-types": "^15.7.2", "style-attr": "^1.3.0" }, diff --git a/packages/sitecore-jss-react/src/components/Image.test.tsx b/packages/sitecore-jss-react/src/components/Image.test.tsx index c72d517f5d..a7c86fd4a9 100644 --- a/packages/sitecore-jss-react/src/components/Image.test.tsx +++ b/packages/sitecore-jss-react/src/components/Image.test.tsx @@ -4,7 +4,6 @@ import chai from 'chai'; import chaiString from 'chai-string'; import { mount } from 'enzyme'; import React from 'react'; -import URL from 'url-parse'; import { imageField as eeImageData } from '../testData/ee-data'; import { Image } from './Image'; @@ -141,11 +140,11 @@ describe('', () => { }); it('should update image url', () => { - const url = (URL as any)(img.getAttribute('src') as string, true); + const url = new URL(img.getAttribute('src') as string, 'http://test.com'); expect(url.pathname).to.contain('/-/jssmedia/'); - expect(url.query.h).to.equal(props.imageParams.h); - expect(url.query.w).to.equal(props.imageParams.w); - expect(url.query.hash).to.be.undefined; + expect(url.searchParams.get('h')).to.equal(props.imageParams.h); + expect(url.searchParams.get('w')).to.equal(props.imageParams.w); + expect(url.hash).to.be.empty; }); it('should render with style and className props', () => { @@ -182,18 +181,19 @@ describe('', () => { id: 'some-id', style: { width: '100%' }, className: 'the-dude-abides', + imageParams: { foo: 'bar' }, mediaUrlPrefix: /\/([-~]{1})assets\//i, }; const rendered = mount(); - expect(rendered.find('img').prop('src')).to.equal('/~/jssmedia/img/test0.png'); + expect(rendered.find('img').prop('src')).to.equal('/~/jssmedia/img/test0.png?foo=bar'); rendered.setProps({ ...props, media: { value: { src: '/-assets/img/test0.png', alt: 'my image' } }, }); - expect(rendered.find('img').prop('src')).to.equal('/-/jssmedia/img/test0.png'); + expect(rendered.find('img').prop('src')).to.equal('/-/jssmedia/img/test0.png?foo=bar'); }); it('should transform url with direct image object, no value/editable', () => { @@ -208,11 +208,12 @@ describe('', () => { width: '100%', }, className: 'the-dude-abides', + imageParams: { foo: 'bar' }, mediaUrlPrefix: /\/([-~]{1})assets\//i, }; const rendered = mount(); - expect(rendered.find('img').prop('src')).to.equal('/~/jssmedia/img/test0.png'); + expect(rendered.find('img').prop('src')).to.equal('/~/jssmedia/img/test0.png?foo=bar'); rendered.setProps({ ...props, @@ -223,7 +224,7 @@ describe('', () => { }, }); - expect(rendered.find('img').prop('src')).to.equal('/-/jssmedia/img/test0.png'); + expect(rendered.find('img').prop('src')).to.equal('/-/jssmedia/img/test0.png?foo=bar'); }); it('should transform url with responsive image object', () => { @@ -240,7 +241,10 @@ describe('', () => { const rendered = mount(); - expect(rendered.find('img').prop('src')).to.equal('/~/jssmedia/img/test0.png'); + expect(rendered.find('img').prop('src')).to.equal('/~assets/img/test0.png'); + expect(rendered.find('img').prop('srcSet')).to.equal( + '/~/jssmedia/img/test0.png?mw=100 100w, /~/jssmedia/img/test0.png?mw=300 300w' + ); rendered.setProps({ ...props, @@ -249,9 +253,13 @@ describe('', () => { width: 8, height: 10, }, + imageParams: { foo: 'bar' }, }); - expect(rendered.find('img').prop('src')).to.equal('/-/jssmedia/img/test0.png'); + expect(rendered.find('img').prop('src')).to.equal('/-/jssmedia/img/test0.png?foo=bar'); + expect(rendered.find('img').prop('srcSet')).to.equal( + '/-/jssmedia/img/test0.png?foo=bar&mw=100 100w, /-/jssmedia/img/test0.png?foo=bar&mw=300 300w' + ); }); }); diff --git a/packages/sitecore-jss-react/src/components/RichText.test.tsx b/packages/sitecore-jss-react/src/components/RichText.test.tsx index 2811fab72f..cc4b36d18c 100644 --- a/packages/sitecore-jss-react/src/components/RichText.test.tsx +++ b/packages/sitecore-jss-react/src/components/RichText.test.tsx @@ -13,6 +13,14 @@ describe('', () => { expect(rendered).to.have.length(0); }); + it('should render nothing with empty value', () => { + const field = { + value: '', + }; + const rendered = mount().find('div'); + expect(rendered).to.have.length(0); + }); + it('should render nothing with missing editable and value', () => { const field = {}; const rendered = mount().find('div'); diff --git a/packages/sitecore-jss-react/src/components/Text.test.tsx b/packages/sitecore-jss-react/src/components/Text.test.tsx index b2de3175f4..543d1df9e6 100644 --- a/packages/sitecore-jss-react/src/components/Text.test.tsx +++ b/packages/sitecore-jss-react/src/components/Text.test.tsx @@ -1,3 +1,4 @@ +/* eslint-disable no-unused-expressions */ /* eslint-disable @typescript-eslint/no-explicit-any */ import React from 'react'; import { expect } from 'chai'; @@ -9,14 +10,25 @@ import { textField as eeTextData } from '../testData/ee-data'; describe('', () => { it('should render nothing with missing field', () => { const field: any = null; - const rendered = mount().find('span'); - expect(rendered).to.have.length(0); + const rendered = mount(); + expect(rendered).to.have.length(1); + expect(rendered.html()).to.be.null; + }); + + it('should render nothing with empty value', () => { + const field = { + value: '', + }; + const rendered = mount(); + expect(rendered).to.have.length(1); + expect(rendered.html()).to.be.null; }); it('should render nothing with missing editable and value', () => { const field = {}; - const rendered = mount().find('span'); - expect(rendered).to.have.length(0); + const rendered = mount(); + expect(rendered).to.have.length(1); + expect(rendered.html()).to.be.null; }); it('should render editable with editable value', () => { @@ -57,6 +69,51 @@ describe('', () => { expect(rendered.html()).to.contain('value'); }); + it('should render value without tag', () => { + const field = { + value: 'value', + }; + const rendered = mount(); + expect(rendered).to.have.length(1); + expect(rendered.html()).to.equal('value'); + }); + + it('should render number value', () => { + const field = { + value: 1.23, + }; + const rendered = mount(); + expect(rendered).to.have.length(1); + expect(rendered.html()).to.equal('1.23'); + }); + + it('should render zero number value', () => { + const field = { + value: 0, + }; + const rendered = mount(); + expect(rendered).to.have.length(1); + expect(rendered.html()).to.equal('0'); + }); + + it('should render negative number value', () => { + const field = { + value: -1.23, + }; + const rendered = mount(); + expect(rendered).to.have.length(1); + expect(rendered.html()).to.equal('-1.23'); + }); + + it('should render value without tag', () => { + const field = { + value: 'value', + }; + const rendered = mount(); + expect(rendered).to.have.length(1); + expect(rendered.html()).to.contain('value'); + }); + it('should render value with just a value that contains line breaks', () => { const field = { value: 'xxx\n\naa\nbbb\ndd', diff --git a/packages/sitecore-jss-react/src/components/Text.tsx b/packages/sitecore-jss-react/src/components/Text.tsx index 1e3a847afc..be430c743f 100644 --- a/packages/sitecore-jss-react/src/components/Text.tsx +++ b/packages/sitecore-jss-react/src/components/Text.tsx @@ -5,7 +5,7 @@ export interface TextProps { [htmlAttributes: string]: unknown; /** The text field data. */ field?: { - value?: string; + value?: string | number; editable?: string; }; /** @@ -31,7 +31,7 @@ export const Text: FunctionComponent = ({ encode, ...otherProps }) => { - if (!field || (!field.editable && !field.value)) { + if (!field || (!field.editable && (field.value === undefined || field.value === ''))) { return null; } @@ -41,30 +41,36 @@ export const Text: FunctionComponent = ({ editable = false; } - const value = (field.editable && editable ? field.editable : field.value) || ''; + const isEditable = field.editable && editable; - let output: (ReactElement | string)[] = [value]; + let output: string | number | (ReactElement | string)[] = isEditable + ? field.editable || '' + : field.value === undefined + ? '' + : field.value; - // when value isn't formatted, we should format line breaks - if (!field.editable && value) { - const splitted = String(value).split('\n'); + // when string value isn't formatted, we should format line breaks + if (!field.editable && typeof output === 'string') { + const splitted = String(output).split('\n'); if (splitted.length) { - output = []; - } + const formatted: (ReactElement | string)[] = []; + + splitted.forEach((str, i) => { + const isLast = i === splitted.length - 1; - splitted.forEach((str, i) => { - const isLast = i === splitted.length - 1; + formatted.push(str); - output.push(str); + if (!isLast) { + formatted.push(
); + } + }); - if (!isLast) { - output.push(
); - } - }); + output = formatted; + } } - const setDangerously = (field.editable && editable) || !encode; + const setDangerously = isEditable || !encode; let children = null; const htmlProps: { @@ -91,7 +97,7 @@ export const Text: FunctionComponent = ({ Text.propTypes = { field: PropTypes.shape({ - value: PropTypes.string, + value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), editable: PropTypes.string, }), tag: PropTypes.string, diff --git a/packages/sitecore-jss-react/src/index.ts b/packages/sitecore-jss-react/src/index.ts index 623b64aae1..11e0050c0d 100644 --- a/packages/sitecore-jss-react/src/index.ts +++ b/packages/sitecore-jss-react/src/index.ts @@ -4,7 +4,6 @@ export { isExperienceEditorActive, resetExperienceEditorChromes, DictionaryPhrases, - DictionaryServiceData, LayoutServiceData, LayoutServicePageState, LayoutServiceContext, diff --git a/packages/sitecore-jss-rendering-host/README.md b/packages/sitecore-jss-rendering-host/README.md index 536696c714..1df6716fd9 100644 --- a/packages/sitecore-jss-rendering-host/README.md +++ b/packages/sitecore-jss-rendering-host/README.md @@ -2,4 +2,4 @@ This module is provided as a part of Sitecore JavaScript Services. It contains the rendering host implementation. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-rendering-host/package-lock.json b/packages/sitecore-jss-rendering-host/package-lock.json index fbffc88b17..1f50648ae3 100644 --- a/packages/sitecore-jss-rendering-host/package-lock.json +++ b/packages/sitecore-jss-rendering-host/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-rendering-host", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2023,23 +2023,23 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, @@ -3299,9 +3299,9 @@ } }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "hpack.js": { @@ -3996,9 +3996,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "log-symbols": { "version": "4.0.0", @@ -6322,9 +6322,9 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "requires": { "figgy-pudding": "^3.5.1" } @@ -7044,9 +7044,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -8018,9 +8018,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yallist": { "version": "3.1.1", diff --git a/packages/sitecore-jss-rendering-host/package.json b/packages/sitecore-jss-rendering-host/package.json index 980c000a0d..47e68a94c0 100644 --- a/packages/sitecore-jss-rendering-host/package.json +++ b/packages/sitecore-jss-rendering-host/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-rendering-host", - "version": "16.0.0", + "version": "18.0.0-canary.7", "main": "dist/index.js", "scripts": { "build": "npm run clean && tsc", @@ -15,10 +15,10 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, diff --git a/packages/sitecore-jss-tracking/README.md b/packages/sitecore-jss-tracking/README.md index 43b756db6d..fd2885000c 100644 --- a/packages/sitecore-jss-tracking/README.md +++ b/packages/sitecore-jss-tracking/README.md @@ -2,5 +2,5 @@ This module is provided as a part of Sitecore JavaScript Services. It contains APIs to invoke the JSS Tracker to track visitor behaviour. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-tracking/package-lock.json b/packages/sitecore-jss-tracking/package-lock.json index 58f57b052b..e9c9326948 100644 --- a/packages/sitecore-jss-tracking/package-lock.json +++ b/packages/sitecore-jss-tracking/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-tracking", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -209,12 +209,6 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, - "@types/url-parse": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.4.3.tgz", - "integrity": "sha512-4kHAkbV/OfW2kb5BLVUuUMoumB3CP8rHqlw48aHvFy5tf9ER0AfOonBlX29l/DD68G70DmyhRlSYfQPSYpC5Vw==", - "dev": true - }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -1283,9 +1277,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "ignore": { @@ -1519,9 +1513,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "log-symbols": { @@ -2123,12 +2117,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", - "dev": true - }, "quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -2221,12 +2209,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, "resolve": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", @@ -2634,16 +2616,6 @@ "punycode": "^2.1.0" } }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "v8-compile-cache": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", @@ -2742,9 +2714,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss-tracking/package.json b/packages/sitecore-jss-tracking/package.json index 68e3d23187..520833adbb 100644 --- a/packages/sitecore-jss-tracking/package.json +++ b/packages/sitecore-jss-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-tracking", - "version": "16.0.0", + "version": "18.0.0-canary.7", "main": "dist/index.js", "scripts": { "build": "npm run clean && tsc", @@ -15,10 +15,10 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, @@ -28,7 +28,6 @@ "@types/lodash.unescape": "^4.0.6", "@types/mocha": "^5.2.7", "@types/node": "^12.7.11", - "@types/url-parse": "^1.4.3", "axios": "^0.21.1", "axios-mock-adapter": "^1.17.0", "chai": "^4.2.0", @@ -39,14 +38,10 @@ "sinon": "^7.5.0", "ts-node": "^8.4.1", "tslib": "^1.10.0", - "typescript": "^3.6.3", - "url-parse": "^1.4.7" - }, - "peerDependencies": { - "url-parse": "^1.4.7" + "typescript": "^3.6.3" }, "dependencies": { - "@sitecore-jss/sitecore-jss": "^16.0.0" + "@sitecore-jss/sitecore-jss": "^18.0.0-canary.7" }, "description": "", "types": "types/index.d.ts", diff --git a/packages/sitecore-jss-tracking/src/trackingApi.test.ts b/packages/sitecore-jss-tracking/src/trackingApi.test.ts index 4095830f53..1c3500c554 100644 --- a/packages/sitecore-jss-tracking/src/trackingApi.test.ts +++ b/packages/sitecore-jss-tracking/src/trackingApi.test.ts @@ -1,5 +1,5 @@ /* eslint-disable no-unused-expressions */ -import { HttpJsonFetcher } from '@sitecore-jss/sitecore-jss'; +import { HttpDataFetcher } from '@sitecore-jss/sitecore-jss'; import axios from 'axios'; import MockAdapter from 'axios-mock-adapter'; import { expect } from 'chai'; @@ -7,7 +7,7 @@ import { trackEvent } from './trackingApi'; // note: axios needs to use `withCredentials: true` in order for Sitecore cookies to be included in CORS requests // which is necessary for analytics and such -const axiosFetcher: HttpJsonFetcher = (url, data) => +const axiosFetcher: HttpDataFetcher = (url, data) => axios({ url, method: data ? 'POST' : 'GET', @@ -30,7 +30,7 @@ describe('trackEvent', () => { }); it('should fetch with host', () => { - const expectedUrl = 'https://www.myhost.net/sitecore/api/jss/track/event?'; + const expectedUrl = 'https://www.myhost.net/sitecore/api/jss/track/event'; // configure 'POST' requests to return config options mock.onPost().reply((config) => { diff --git a/packages/sitecore-jss-tracking/src/trackingApi.ts b/packages/sitecore-jss-tracking/src/trackingApi.ts index 89f41e3485..651dbb3fd1 100644 --- a/packages/sitecore-jss-tracking/src/trackingApi.ts +++ b/packages/sitecore-jss-tracking/src/trackingApi.ts @@ -1,4 +1,4 @@ -import { HttpJsonFetcher, HttpResponse, isServer } from '@sitecore-jss/sitecore-jss'; +import { HttpDataFetcher, HttpResponse, isServer, resolveUrl } from '@sitecore-jss/sitecore-jss'; import { CampaignInstance, EventInstance, @@ -7,6 +7,7 @@ import { PageViewInstance, } from './dataModels'; import { TrackingRequestOptions } from './trackingRequestOptions'; +import querystring from 'querystring'; class ResponseError extends Error { response: HttpResponse; @@ -22,7 +23,7 @@ class ResponseError extends Error { /** * @param {HttpResponse} response */ -function checkStatus(response: HttpResponse) { +function checkStatus(response: HttpResponse) { if (response.status >= 200 && response.status < 300) { return response; } @@ -31,38 +32,22 @@ function checkStatus(response: HttpResponse) { throw error; } -/** - * note: encodeURIComponent is available via browser (window) or natively in node.js - * if you use another js engine for server-side rendering you may not have native encodeURIComponent - * and would then need to install a package for that functionality - * @param {Object} params - */ -function getQueryString(params: { [key: string]: unknown }) { - return Object.keys(params) - .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(params[k] as string)}`) - .join('&'); -} - /** * Note: axios needs to use `withCredentials: true` in order for Sitecore cookies to be included in CORS requests * which is necessary for analytics and such * @param {string} url * @param {any} data - * @param {HttpJsonFetcher} fetcher + * @param {HttpDataFetcher} fetcher * @param {Object} params */ function fetchData( url: string, // eslint-disable-next-line @typescript-eslint/no-explicit-any data: any, - fetcher: HttpJsonFetcher, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - params: { [key: string]: any } = {} + fetcher: HttpDataFetcher, + params: querystring.ParsedUrlQueryInput = {} ) { - const qs = getQueryString(params); - const fetchUrl = url.indexOf('?') !== -1 ? `${url}&${qs}` : `${url}?${qs}`; - - return fetcher(fetchUrl, data) + return fetcher(resolveUrl(url, params), data) .then(checkStatus) .then((response) => { // axios auto-parses JSON responses, don't need to JSON.parse diff --git a/packages/sitecore-jss-tracking/src/trackingRequestOptions.ts b/packages/sitecore-jss-tracking/src/trackingRequestOptions.ts index c4ae127a7e..8ed6714c6d 100644 --- a/packages/sitecore-jss-tracking/src/trackingRequestOptions.ts +++ b/packages/sitecore-jss-tracking/src/trackingRequestOptions.ts @@ -1,4 +1,5 @@ -import { HttpJsonFetcher } from '@sitecore-jss/sitecore-jss'; +import querystring from 'querystring'; +import { HttpDataFetcher } from '@sitecore-jss/sitecore-jss'; export interface TrackingRequestOptions { /** Hostname of tracking service; e.g. http://my.site.core */ @@ -8,12 +9,12 @@ export interface TrackingRequestOptions { serviceUrl?: string; /** The fetcher that performs the HTTP request and returns a promise to JSON */ - fetcher: HttpJsonFetcher; + fetcher: HttpDataFetcher; /** * An object of key:value pairs to be stringified and used as querystring parameters. */ - querystringParams?: { [key: string]: unknown }; + querystringParams?: querystring.ParsedUrlQueryInput; /** Type of tracking request action. Default: 'event' */ action?: string; diff --git a/packages/sitecore-jss-update-package/README.md b/packages/sitecore-jss-update-package/README.md index 3f84b28eff..26d7a3031f 100644 --- a/packages/sitecore-jss-update-package/README.md +++ b/packages/sitecore-jss-update-package/README.md @@ -2,4 +2,4 @@ This module is provided as a part of Sitecore JavaScript Services. It contains semantics to generate JSS disconnected import packages. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-update-package/package-lock.json b/packages/sitecore-jss-update-package/package-lock.json index 11705d8d63..cd15edbb72 100644 --- a/packages/sitecore-jss-update-package/package-lock.json +++ b/packages/sitecore-jss-update-package/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-update-package", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -367,6 +367,15 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -694,6 +703,7 @@ "has": "^1.0.3", "has-symbols": "^1.0.1", "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", "is-regex": "^1.1.1", "object-inspect": "^1.8.0", "object-keys": "^1.1.1", @@ -708,8 +718,100 @@ "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", "requires": { "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", "has-symbols": "^1.0.1", "object-keys": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + } + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } } } } @@ -1132,6 +1234,16 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1220,6 +1332,11 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1238,9 +1355,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "ignore": { @@ -1303,6 +1420,11 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1312,6 +1434,14 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "requires": { + "call-bind": "^1.0.0" + } + }, "is-buffer": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", @@ -1355,12 +1485,22 @@ "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", "dev": true }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, "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 }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -1396,8 +1536,7 @@ "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 + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" }, "is-symbol": { "version": "1.0.3", @@ -1525,9 +1664,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.isequal": { @@ -2555,6 +2694,24 @@ "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", "dev": true }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + } + } + }, "uri-js": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", @@ -2611,6 +2768,18 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -2684,9 +2853,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss-update-package/package.json b/packages/sitecore-jss-update-package/package.json index 7edc940c67..863521fec6 100644 --- a/packages/sitecore-jss-update-package/package.json +++ b/packages/sitecore-jss-update-package/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-update-package", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "Allows creation of Sitecore Update Packages in JavaScript (currently files only).", "main": "dist/index.js", "scripts": { @@ -16,10 +16,10 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, diff --git a/packages/sitecore-jss-vue/README.md b/packages/sitecore-jss-vue/README.md index 41ef3335e7..4f0097beb6 100644 --- a/packages/sitecore-jss-vue/README.md +++ b/packages/sitecore-jss-vue/README.md @@ -2,4 +2,4 @@ This module is provided as a part of Sitecore JavaScript Services. It contains Vue integration and components for JSS. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-jss-vue/package-lock.json b/packages/sitecore-jss-vue/package-lock.json index 0acf956616..08706a760e 100644 --- a/packages/sitecore-jss-vue/package-lock.json +++ b/packages/sitecore-jss-vue/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-vue", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1580,12 +1580,6 @@ "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", "dev": true }, - "@types/url-parse": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.4.3.tgz", - "integrity": "sha512-4kHAkbV/OfW2kb5BLVUuUMoumB3CP8rHqlw48aHvFy5tf9ER0AfOonBlX29l/DD68G70DmyhRlSYfQPSYpC5Vw==", - "dev": true - }, "@types/yargs": { "version": "13.0.11", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", @@ -4063,9 +4057,9 @@ } }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "html-encoding-sniffer": { @@ -4186,9 +4180,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "invariant": { @@ -7090,9 +7084,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash._reinterpolate": { @@ -7838,12 +7832,6 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -8085,12 +8073,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -9219,16 +9201,6 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -9616,9 +9588,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss-vue/package.json b/packages/sitecore-jss-vue/package.json index dc8d0062d3..209376532a 100644 --- a/packages/sitecore-jss-vue/package.json +++ b/packages/sitecore-jss-vue/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss-vue", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "A library for building Sitecore JSS apps using Vue.js", "main": "dist/index.js", "scripts": { @@ -16,16 +16,15 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, "devDependencies": { "@types/jest": "^24.0.18", - "@types/url-parse": "^1.4.3", "@vue/test-utils": "^1.0.0-beta.29", "babel-core": "^6.26.3", "del-cli": "^3.0.1", @@ -35,7 +34,6 @@ "jest-serializer-html": "^7.0.0", "ts-jest": "24.1.0", "typescript": "~3.6.3", - "url-parse": "^1.4.7", "vue": "^2.6.10", "vue-class-component": "^7.1.0", "vue-jest": "^3.0.5", @@ -47,7 +45,7 @@ "vue": "^2.6.10" }, "dependencies": { - "@sitecore-jss/sitecore-jss": "^16.0.0" + "@sitecore-jss/sitecore-jss": "^18.0.0-canary.7" }, "types": "./types/index.d.ts", "gitHead": "2f4820efddf4454eeee58ed1b2cc251969efdf5b" diff --git a/packages/sitecore-jss-vue/src/components/Image.test.ts b/packages/sitecore-jss-vue/src/components/Image.test.ts index d25a9749b4..29ca20994d 100644 --- a/packages/sitecore-jss-vue/src/components/Image.test.ts +++ b/packages/sitecore-jss-vue/src/components/Image.test.ts @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/no-empty-function */ import { mount } from '@vue/test-utils'; -import URL from 'url-parse'; import { imageField as eeImageData } from '../test/data/field-data-EE-on'; import { Image } from './Image'; @@ -106,10 +105,10 @@ describe('', () => { const rendered = mount(Image, { context: { props, attrs } }).find('img'); const img = rendered.find('img'); - const url = new URL(img.attributes().src, {}, true); + const url = new URL(img.attributes().src, 'http://test.com'); expect(url.pathname).toContain('/-/jssmedia/'); - expect(url.query.h).toBe(props.imageParams.h); - expect(url.query.w).toBe(props.imageParams.w); + expect(url.searchParams.get('h')).toBe(props.imageParams.h); + expect(url.searchParams.get('w')).toBe(props.imageParams.w); }); it('should handle /~/media', () => { @@ -129,10 +128,10 @@ describe('', () => { const rendered = mount(Image, { context: { props, attrs } }).find('img'); const img = rendered.find('img'); - const url = new URL(img.attributes().src, {}, true); + const url = new URL(img.attributes().src, 'http://test.com'); expect(url.pathname).toContain('/~/jssmedia/'); - expect(url.query.h).toBe(props.imageParams.h); - expect(url.query.w).toBe(props.imageParams.w); + expect(url.searchParams.get('h')).toBe(props.imageParams.h); + expect(url.searchParams.get('w')).toBe(props.imageParams.w); }); it('should handle custom mediaUrlPrefix, /-assets', () => { @@ -153,10 +152,10 @@ describe('', () => { const rendered = mount(Image, { context: { props, attrs } }).find('img'); const img = rendered.find('img'); - const url = new URL(img.attributes().src, {}, true); + const url = new URL(img.attributes().src, 'http://test.com'); expect(url.pathname).toContain('/-/jssmedia/'); - expect(url.query.h).toBe(props.imageParams.h); - expect(url.query.w).toBe(props.imageParams.w); + expect(url.searchParams.get('h')).toBe(props.imageParams.h); + expect(url.searchParams.get('w')).toBe(props.imageParams.w); }); it('should handle custom mediaUrlPrefix, /~assets', () => { @@ -177,10 +176,10 @@ describe('', () => { const rendered = mount(Image, { context: { props, attrs } }).find('img'); const img = rendered.find('img'); - const url = new URL(img.attributes().src, {}, true); + const url = new URL(img.attributes().src, 'http://test.com'); expect(url.pathname).toContain('/~/jssmedia/'); - expect(url.query.h).toBe(props.imageParams.h); - expect(url.query.w).toBe(props.imageParams.w); + expect(url.searchParams.get('h')).toBe(props.imageParams.h); + expect(url.searchParams.get('w')).toBe(props.imageParams.w); }); }); diff --git a/packages/sitecore-jss-vue/src/components/Text.test.ts b/packages/sitecore-jss-vue/src/components/Text.test.ts index 6d621984c6..32c0114dd1 100644 --- a/packages/sitecore-jss-vue/src/components/Text.test.ts +++ b/packages/sitecore-jss-vue/src/components/Text.test.ts @@ -27,6 +27,21 @@ describe('', () => { errorSpy.mockRestore(); }); + it('should render nothing with empty value', () => { + const props = { + field: { + value: '', + }, + }; + // Need to mock console.error as Vue will log an error for the null "field" prop + // that is marked as an Object. + const errorSpy = jest.spyOn(console, 'error'); + errorSpy.mockImplementation(() => {}); + const rendered = mount(Text, { context: { props } }); + expect(rendered.isEmpty()).toBe(true); + errorSpy.mockRestore(); + }); + it('should render editable with editable value', () => { const props = { field: { @@ -75,6 +90,28 @@ describe('', () => { expect(rendered.element.innerHTML).toBe(props.field.value); }); + it('should render number value', () => { + const props = { + field: { + value: 1.23, + }, + }; + const rendered = mount(Text, { context: { props } }).find('span'); + expect(rendered.exists()).toBe(true); + expect(rendered.element.innerHTML).toBe(props.field.value.toString()); + }); + + it('should render zero number value', () => { + const props = { + field: { + value: 0, + }, + }; + const rendered = mount(Text, { context: { props } }).find('span'); + expect(rendered.exists()).toBe(true); + expect(rendered.element.innerHTML).toBe(props.field.value.toString()); + }); + it('should render embedded html as-is when encoding is disabled', () => { const props = { field: { diff --git a/packages/sitecore-jss-vue/src/components/Text.ts b/packages/sitecore-jss-vue/src/components/Text.ts index 592c54cd53..fd6931d5c7 100644 --- a/packages/sitecore-jss-vue/src/components/Text.ts +++ b/packages/sitecore-jss-vue/src/components/Text.ts @@ -3,7 +3,7 @@ import { CreateElement, FunctionalComponentOptions, RenderContext } from 'vue'; export interface TextProps { /** The text field data. */ field: { - value?: string; + value?: string | number; editable?: string; }; /** @@ -36,7 +36,7 @@ export const Text: FunctionalComponentOptions = { // However, it is possible to return null | string | VNode[] | VNodeChildrenArrayContents. render(createElement: CreateElement, context: RenderContext): any { const { field, tag, editable, encode } = context.props; - if (!field || (!field.editable && !field.value)) { + if (!field || (!field.editable && (field.value === undefined || field.value === ''))) { return null; } diff --git a/packages/sitecore-jss/README.md b/packages/sitecore-jss/README.md index d7585cec05..efcf97ea85 100644 --- a/packages/sitecore-jss/README.md +++ b/packages/sitecore-jss/README.md @@ -1,6 +1,7 @@ -# Sitecore JavaScript Services +# Sitecore JavaScript Rendering SDK -This module is provided as a part of Sitecore JavaScript Services. It contains the core JSS APIs (layout service) and utilities. +This module is provided as a part of Sitecore JavaScript Rendering SDK. It contains the core JSS APIs (layout service) and utilities. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. +Consult the package [API reference documentation](/ref-docs/sitecore-jss/). \ No newline at end of file diff --git a/packages/sitecore-jss/package-lock.json b/packages/sitecore-jss/package-lock.json index cc62129ecf..9dd0f6bb2c 100644 --- a/packages/sitecore-jss/package-lock.json +++ b/packages/sitecore-jss/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -184,6 +184,28 @@ "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/parser": { @@ -415,6 +437,12 @@ "@types/chai": "*" } }, + "@types/debug": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", + "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==", + "dev": true + }, "@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", @@ -721,24 +749,34 @@ "dev": true }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "has-flag": "^3.0.0" + "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==", + "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==" } } }, @@ -864,6 +902,14 @@ "which": "^2.0.1" } }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -1736,9 +1782,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "html-escaper": { @@ -2130,9 +2176,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lodash.flattendeep": { @@ -2553,6 +2599,11 @@ } } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -3012,9 +3063,9 @@ "dev": true }, "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "quick-lru": { "version": "4.0.1", @@ -3389,7 +3440,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, "requires": { "has-flag": "^4.0.0" }, @@ -3397,8 +3447,7 @@ "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 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" } } }, @@ -3544,9 +3593,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -3668,9 +3717,9 @@ } }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-jss/package.json b/packages/sitecore-jss/package.json index a7ab4093cf..d833d226b7 100644 --- a/packages/sitecore-jss/package.json +++ b/packages/sitecore-jss/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-jss", - "version": "16.0.0", + "version": "18.0.0-canary.7", "main": "dist/index.js", "scripts": { "build": "npm run clean && tsc", @@ -15,10 +15,14 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" + }, + "repository": { + "type": "git", + "url": "https://github.com/Sitecore/jss" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, @@ -26,6 +30,7 @@ "@types/chai": "^4.2.3", "@types/chai-spies": "^1.0.3", "@types/chai-string": "^1.4.2", + "@types/debug": "^4.1.5", "@types/lodash.unescape": "^4.0.6", "@types/memory-cache": "^0.2.1", "@types/mocha": "^5.2.7", @@ -47,11 +52,13 @@ }, "dependencies": { "axios": "^0.21.1", + "chalk": "^4.1.0", + "debug": "^4.3.1", "graphql": "^15.4.0", "graphql-request": "^3.4.0", "lodash.unescape": "^4.0.1", "memory-cache": "^0.2.0", - "url-parse": "^1.4.7" + "url-parse": "^1.5.1" }, "description": "", "types": "types/index.d.ts", diff --git a/packages/sitecore-jss/src/data-fetcher.test.ts b/packages/sitecore-jss/src/axios-fetcher.test.ts similarity index 80% rename from packages/sitecore-jss/src/data-fetcher.test.ts rename to packages/sitecore-jss/src/axios-fetcher.test.ts index d43880589a..dc1bf9c9a8 100644 --- a/packages/sitecore-jss/src/data-fetcher.test.ts +++ b/packages/sitecore-jss/src/axios-fetcher.test.ts @@ -4,23 +4,36 @@ import axios, { AxiosRequestConfig, AxiosResponse } from 'axios'; import MockAdapter from 'axios-mock-adapter'; import { expect, use, spy } from 'chai'; import spies from 'chai-spies'; -import { AxiosDataFetcher, AxiosDataFetcherConfig } from './data-fetcher'; +import { AxiosDataFetcher, AxiosDataFetcherConfig } from './axios-fetcher'; +import debugApi from 'debug'; +import debug from './debug'; use(spies); describe('AxiosDataFetcher', () => { let mock: MockAdapter; + let debugNamespaces: string; before(() => { mock = new MockAdapter(axios); + debugNamespaces = debugApi.disable(); + debugApi.enable(`${debug.http.namespace},${debug.layout.namespace}`); + }); + + beforeEach(() => { + spy.on(debug.http, 'log', () => true); + spy.on(debug.layout, 'log', () => true); }); afterEach(() => { mock.reset(); + spy.restore(debug.http); + spy.restore(debug.layout); }); after(() => { mock.restore(); + debugApi.enable(debugNamespaces); }); describe('fetch', () => { @@ -40,7 +53,7 @@ describe('AxiosDataFetcher', () => { }); }); - it('should execute GET request withouth data', () => { + it('should execute GET request without data', () => { mock.onGet().reply((config) => { // append axios config as response data return [200, { ...config }]; @@ -163,6 +176,43 @@ describe('AxiosDataFetcher', () => { expect(onResSpy).to.be.called.once; }); }); + + it('should debug log request and response', async () => { + mock.onGet().reply((config) => { + // append axios config as response data + return [200, { ...config }]; + }); + + const fetcher = new AxiosDataFetcher(); + + await fetcher.fetch('/home'); + expect(debug.http.log, 'request and response log').to.be.called.twice; + }); + + it('should debug log request and response error', () => { + mock.onPost().reply((config) => { + // append axios config as response data + return [400, { ...config }]; + }); + + const fetcher = new AxiosDataFetcher(); + + return fetcher.fetch('/home').catch(() => { + expect(debug.http.log, 'request and response error log').to.be.called.twice; + }); + }); + + it('should use debugger override', async () => { + mock.onGet().reply((config) => { + // append axios config as response data + return [200, { ...config }]; + }); + + const fetcher = new AxiosDataFetcher({ debugger: debug.layout }); + + await fetcher.fetch('/home'); + expect(debug.layout.log, 'request and response log').to.be.called.twice; + }); }); describe('get', () => { diff --git a/packages/sitecore-jss/src/axios-fetcher.ts b/packages/sitecore-jss/src/axios-fetcher.ts new file mode 100644 index 0000000000..2e5bf1b708 --- /dev/null +++ b/packages/sitecore-jss/src/axios-fetcher.ts @@ -0,0 +1,166 @@ +import axios, { AxiosRequestConfig, AxiosInstance, AxiosResponse, AxiosError } from 'axios'; +import debuggers, { Debugger } from './debug'; + +type AxiosDataFetcherOptions = { + /** + * Callback which executed before request is sent. You can modify axios config. + * {@link https://github.com/axios/axios#interceptors} + * @param {AxiosRequestConfig} config axios config + */ + onReq?: (config: AxiosRequestConfig) => AxiosRequestConfig | Promise; + /** + * Callback which invoked when request error happened. + * {@link https://github.com/axios/axios#interceptors} + * @param {unknown} error + */ + onReqError?: (error: unknown) => unknown; + /** + * Callback which invoked when got response from server. + * {@link https://github.com/axios/axios#interceptors} + * @param {AxiosResponse} serverRes server response + */ + onRes?: (serverRes: AxiosResponse) => AxiosResponse | Promise; + /** + * Callback which invoked when status codes fallen outside the range of 2xx. + * {@link https://github.com/axios/axios#interceptors} + * @param {unknown} error + */ + onResError?: (error: unknown) => unknown; + /** + * Override debugger for logging. Uses 'sitecore-jss:http' by default. + */ + debugger?: Debugger; +}; + +export type AxiosDataFetcherConfig = AxiosRequestConfig & AxiosDataFetcherOptions; + +/** + * Determines whether error is AxiosError + * @param {unknown} error + */ +const isAxiosError = (error: unknown): error is AxiosError => { + return (error as AxiosError).isAxiosError !== undefined; +}; + +export class AxiosDataFetcher { + private instance: AxiosInstance; + + /** + * @param {AxiosDataFetcherConfig} dataFetcherConfig Axios data fetcher configuration. + * Note `withCredentials` is set to `true` by default in order for Sitecore cookies to + * be included in CORS requests (which is necessary for analytics and such). + */ + constructor(dataFetcherConfig: AxiosDataFetcherConfig = {}) { + const { onReq, onRes, onReqError, onResError, ...axiosConfig } = dataFetcherConfig; + if (axiosConfig.withCredentials === undefined) { + axiosConfig.withCredentials = true; + } + this.instance = axios.create(axiosConfig); + + const debug = dataFetcherConfig.debugger || debuggers.http; + + // Note Axios response interceptors are applied in registered order; + // however, request interceptors are REVERSED (https://github.com/axios/axios/issues/1663). + // Hence, we're adding our request debug logging first (since we want that performed after any onReq) + // and our response debug logging second (since we want that performed after any onRes). + if (debug.enabled) { + this.instance.interceptors.request.use( + (config: AxiosRequestConfig) => { + debug('request: %o', config); + return config; + }, + (error: unknown) => { + debug('request error: %o', isAxiosError(error) ? (error as AxiosError).toJSON() : error); + return Promise.reject(error); + } + ); + } + if (onReq) { + this.instance.interceptors.request.use(onReq, onReqError); + } + if (onRes) { + this.instance.interceptors.response.use(onRes, onResError); + } + if (debug.enabled) { + this.instance.interceptors.response.use( + (response: AxiosResponse) => { + // Note we're removing redundant properties (already part of request log above) to trim down log entry + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { request, config, ...rest } = response; + debug('response: %o', rest); + return response; + }, + (error: unknown) => { + debug('response error: %o', isAxiosError(error) ? (error as AxiosError).toJSON() : error); + return Promise.reject(error); + } + ); + } + } + + /** + * Implements a data fetcher. @see HttpDataFetcher type for implementation details/notes. + * @param {string} url The URL to request; may include query string + * @param {any} [data] Optional data to POST with the request. + * @returns {Promise>} response + */ + fetch(url: string, data?: unknown): Promise> { + return this.instance.request({ + url, + method: data ? 'POST' : 'GET', + data, + }); + } + + /** + * Perform a GET request + * @param {string} url The URL to request; may include query string + * @param {AxiosRequestConfig} [config] Axios config + * @returns {Promise>} response + */ + get(url: string, config?: AxiosRequestConfig): Promise> { + return this.instance.get(url, config); + } + + /** + * Perform a HEAD request + * @param {string} url The URL to request; may include query string + * @param {AxiosRequestConfig} [config] Axios config + * @returns {Promise} response + */ + head(url: string, config?: AxiosRequestConfig): Promise { + return this.instance.head(url, config); + } + + /** + * Perform a POST request + * @param {string} url The URL to request; may include query string + * @param {any} [data] Data to POST with the request. + * @param {AxiosRequestConfig} [config] Axios config + * @returns {Promise} response + */ + post(url: string, data?: unknown, config?: AxiosRequestConfig): Promise { + return this.instance.post(url, data, config); + } + + /** + * Perform a PUT request + * @param {string} url The URL to request; may include query string + * @param {any} [data] Data to PUT with the request. + * @param {AxiosRequestConfig} [config] Axios config + * @returns {Promise} response + */ + put(url: string, data?: unknown, config?: AxiosRequestConfig): Promise { + return this.instance.put(url, data, config); + } + + /** + * Perform a DELETE request + * @param {string} url The URL to request; may include query string + * @param {AxiosRequestConfig} [config] Axios config + * @returns {Promise} response + */ + delete(url: string, config?: AxiosRequestConfig): Promise { + return this.instance.delete(url, config); + } +} diff --git a/packages/sitecore-jss/src/cache-client.ts b/packages/sitecore-jss/src/cache-client.ts new file mode 100644 index 0000000000..e482a9ffd5 --- /dev/null +++ b/packages/sitecore-jss/src/cache-client.ts @@ -0,0 +1,93 @@ +import { Cache, CacheClass } from 'memory-cache'; + +/** + * An interface for cache clients. + * @template T The type of data being cached. + */ +export interface CacheClient { + /** + * Adds a value to the cache for the specified cache key. + * @param {string} key The cache key. + * @param {T} value The value to cache. + * @returns The value added to the cache. + */ + setCacheValue(key: string, value: T): T; + + /** + * Retrieves a value from the cache. + * @param {string} key The cache key. + * @returns The cache value as {T}, or null if the specified key was not found in the cache. + */ + getCacheValue(key: string): T | null; +} + +/** + * Default cache configuration + */ +const DEFAULTS = Object.freeze({ + cacheTimeout: 60, + cacheEnabled: true, +}); + +/** + * Minimum configuration options for classes that implement @see CacheClient + */ +export interface CacheOptions { + /** + * Enable/disable caching mechanism + * @default true + */ + cacheEnabled?: boolean; + /** + * Cache timeout (sec) + * @default 60 + */ + cacheTimeout?: number; +} + +/** + * A cache client that uses the 'memory-cache' library (https://github.com/ptarjan/node-cache). + * This class is meant to be extended or used as a mixin; it's not meant to be used directly. + * @template T The type of data being cached. + * @mixin + */ +export class MemoryCacheClient implements CacheClient { + private cache: CacheClass; + + /** + * Initializes a new instance of @see MemoryCacheClient using the provided @see CacheOptions + * @param {CacheOptions} options Configuration options + */ + constructor(public options: CacheOptions) { + this.cache = new Cache(); + + this.options.cacheTimeout = (this.options.cacheTimeout ?? DEFAULTS.cacheTimeout) * 1000; + + if (this.options.cacheEnabled === undefined) { + this.options.cacheEnabled = DEFAULTS.cacheEnabled; + } + } + + /** + * Retrieves a value from the cache. + * @template T The type of data being cached. + * @param {string} key The cache key. + * @returns The cache value as {T}, or null if the specified key is not found in the cache. + */ + getCacheValue(key: string): T | null { + return this.options.cacheEnabled ? this.cache.get(key) : null; + } + + /** + * Adds a value to the cache for the specified cache key. + * @template T The type of data being cached. + * @param {string} key The cache key. + * @param {T} value The value to cache. + * @returns The value added to the cache. + */ + setCacheValue(key: string, value: T): T { + return this.options.cacheEnabled + ? this.cache.put(key, value, this.options.cacheTimeout) + : value; + } +} diff --git a/packages/sitecore-jss/src/constants.ts b/packages/sitecore-jss/src/constants.ts new file mode 100644 index 0000000000..085452cd42 --- /dev/null +++ b/packages/sitecore-jss/src/constants.ts @@ -0,0 +1,7 @@ +export enum SitecoreTemplateId { + // /sitecore/templates/Foundation/JavaScript Services/App + JssApp = '061cba1554744b918a0617903b102b82', + + // /sitecore/templates/System/Dictionary/Dictionary entry + DictionaryEntry = '6d1cd89719364a3aa511289a94c2a7b1', +} diff --git a/packages/sitecore-jss/src/data-fetcher.ts b/packages/sitecore-jss/src/data-fetcher.ts index 64eb273831..fbe814ed14 100644 --- a/packages/sitecore-jss/src/data-fetcher.ts +++ b/packages/sitecore-jss/src/data-fetcher.ts @@ -1,119 +1,71 @@ -import axios, { AxiosRequestConfig, AxiosInstance, AxiosResponse } from 'axios'; +import resolveUrl from './utils/resolve-url'; +import querystring from 'querystring'; -export type AxiosDataFetcherHandlers = { - /** - * Callback which executed before request is sent. You can modify axios config. - * {@link https://github.com/axios/axios#interceptors} - * @param {AxiosRequestConfig} config axios config - */ - onReq?: (config: AxiosRequestConfig) => AxiosRequestConfig | Promise; - /** - * Callback which invoked when request error happened. - * {@link https://github.com/axios/axios#interceptors} - * @param {unknown} error - */ - onReqError?: (error: unknown) => unknown; - /** - * Callback which invoked when got response from server. - * {@link https://github.com/axios/axios#interceptors} - * @param {AxiosResponse} serverRes server response - */ - onRes?: (serverRes: AxiosResponse) => AxiosResponse | Promise; - /** - * Callback which invoked when status codes fallen outside the range of 2xx. - * {@link https://github.com/axios/axios#interceptors} - * @param {unknown} error - */ - onResError?: (error: unknown) => unknown; -}; - -export type AxiosDataFetcherConfig = AxiosRequestConfig & AxiosDataFetcherHandlers; - -export class AxiosDataFetcher { - private instance: AxiosInstance; +/** + * Response data for an HTTP request sent to an API + * @template T the type of data model requested + */ +export interface HttpResponse { + /** HTTP status code of the response (i.e. 200, 404) */ + status: number; + /** HTTP status text of the response (i.e. 'OK', 'Bad Request') */ + statusText: string; + /** Response content */ + data: T; +} - /** - * @param {AxiosDataFetcherConfig} dataFetcherConfig Axios data fetcher configuration. - * Note `withCredentials` is set to `true` by default in order for Sitecore cookies to - * be included in CORS requests (which is necessary for analytics and such). - */ - constructor(dataFetcherConfig: AxiosDataFetcherConfig = {}) { - const { onReq, onRes, onReqError, onResError, ...axiosConfig } = dataFetcherConfig; - if (axiosConfig.withCredentials === undefined) { - axiosConfig.withCredentials = true; - } - this.instance = axios.create(axiosConfig); - if (onReq) { - this.instance.interceptors.request.use(onReq, onReqError); - } - if (onRes) { - this.instance.interceptors.response.use(onRes, onResError); - } - } +/** + * Describes functions that fetch data asynchronously (i.e. from an API endpoint). + * This interface conforms to Axios' public API, but is adaptable to other HTTP libraries and + * fetch polyfills. + * The interface implementation must: + * - Support SSR + * - Comply with the rules of REST by returning appropriate response status codes when there is an error instead of throwing exceptions. + * - Send HTTP POST requests if `data` param is specified; GET is suggested but not required for data-less requests + */ +export type HttpDataFetcher = ( + url: string, + data?: { [key: string]: unknown } +) => Promise>; - /** - * Implements a data fetcher. @see HttpJsonFetcher type for implementation details/notes. - * @param {string} url The URL to request; may include query string - * @param {any} [data] Optional data to POST with the request. - * @returns {Promise>} response - */ - fetch(url: string, data?: unknown): Promise> { - return this.instance.request({ - url, - method: data ? 'POST' : 'GET', - data, - }); - } +class ResponseError extends Error { + response: HttpResponse; - /** - * Perform a GET request - * @param {string} url The URL to request; may include query string - * @param {AxiosRequestConfig} [config] Axios config - * @returns {Promise>} response - */ - get(url: string, config?: AxiosRequestConfig): Promise> { - return this.instance.get(url, config); - } + constructor(message: string, response: HttpResponse) { + super(message); - /** - * Perform a HEAD request - * @param {string} url The URL to request; may include query string - * @param {AxiosRequestConfig} [config] Axios config - * @returns {Promise} response - */ - head(url: string, config?: AxiosRequestConfig): Promise { - return this.instance.head(url, config); + Object.setPrototypeOf(this, ResponseError.prototype); + this.response = response; } +} - /** - * Perform a POST request - * @param {string} url The URL to request; may include query string - * @param {any} [data] Data to POST with the request. - * @param {AxiosRequestConfig} [config] Axios config - * @returns {Promise} response - */ - post(url: string, data?: unknown, config?: AxiosRequestConfig): Promise { - return this.instance.post(url, data, config); +/** + * @param {HttpResponse} response + * @throws {ResponseError} if response code is not ok + */ +function checkStatus(response: HttpResponse) { + if (response.status >= 200 && response.status < 300) { + return response; } - /** - * Perform a PUT request - * @param {string} url The URL to request; may include query string - * @param {any} [data] Data to PUT with the request. - * @param {AxiosRequestConfig} [config] Axios config - * @returns {Promise} response - */ - put(url: string, data?: unknown, config?: AxiosRequestConfig): Promise { - return this.instance.put(url, data, config); - } + const error = new ResponseError(response.statusText, response); + throw error; +} - /** - * Perform a DELETE request - * @param {string} url The URL to request; may include query string - * @param {AxiosRequestConfig} [config] Axios config - * @returns {Promise} response - */ - delete(url: string, config?: AxiosRequestConfig): Promise { - return this.instance.delete(url, config); - } +/** + * @param {string} url + * @param {HttpDataFetcher} fetcher + * @param {Object} params + */ +export function fetchData( + url: string, + fetcher: HttpDataFetcher, + params: querystring.ParsedUrlQueryInput = {} +) { + return fetcher(resolveUrl(url, params)) + .then(checkStatus) + .then((response) => { + // axios auto-parses JSON responses, don't need to JSON.parse + return response.data; + }); } diff --git a/packages/sitecore-jss/src/dataApi.test.ts b/packages/sitecore-jss/src/dataApi.test.ts deleted file mode 100644 index db22fd47c9..0000000000 --- a/packages/sitecore-jss/src/dataApi.test.ts +++ /dev/null @@ -1,133 +0,0 @@ -/* eslint-disable no-unused-expressions */ -/* eslint-disable @typescript-eslint/no-explicit-any */ - -import axios from 'axios'; -import MockAdapter from 'axios-mock-adapter'; -import { expect } from 'chai'; -import { fetchPlaceholderData, fetchRouteData } from './dataApi'; -import { HttpJsonFetcher } from './httpClientInterface'; - -// note: axios needs to use `withCredentials: true` in order for Sitecore cookies to be included in CORS requests -// which is necessary for analytics and such -const axiosFetcher: HttpJsonFetcher = (url, data) => - axios({ - url, - method: data ? 'POST' : 'GET', - data, - withCredentials: true, - }); - -describe('fetchRouteData', () => { - let mock: MockAdapter; - before(() => { - mock = new MockAdapter(axios); - }); - - afterEach(() => { - mock.reset(); - }); - - after(() => { - mock.restore(); - }); - - it('should fetch with host', () => { - const expectedUrl = 'https://www.myhost.net/sitecore/api/layout/render/jss?item=%2Fabout'; - - // configure 'GET' requests to return config options - mock.onGet().reply((config) => { - // config contains axios client config options, e.g. url, withCredentials, etc... - return [200, { ...config }]; - }); - - return fetchRouteData('/about', { - layoutServiceConfig: { host: 'https://www.myhost.net' }, - fetcher: axiosFetcher, - }).then((data) => { - // testData should contain the 'config' object from the mock request - const testData = data as any; - expect(testData.url).to.equal(expectedUrl); - expect(testData.withCredentials, 'with credentials is not true').to.be.true; - }); - }); - - it('should fetch with querystring', () => { - const expectedUrl = - 'https://www.myhost.net/sitecore/api/layout/render/jss?item=%2Fabout&sc_camp=123456'; - - // configure 'GET' requests to return config options - mock.onGet().reply((config) => { - // config contains axios client config options, e.g. url, withCredentials, etc... - return [200, { ...config }]; - }); - - return fetchRouteData('/about', { - fetcher: axiosFetcher, - layoutServiceConfig: { host: 'https://www.myhost.net' }, - querystringParams: { sc_camp: 123456 }, - }).then((data) => { - // testData should contain the 'config' object from the mock request - const testData = data as any; - expect(testData.url).to.equal(expectedUrl); - expect(testData.withCredentials, 'with credentials is not true').to.be.true; - }); - }); -}); - -describe('fetchPlaceholderData', () => { - let mock: MockAdapter; - before(() => { - mock = new MockAdapter(axios); - }); - - afterEach(() => { - mock.reset(); - }); - - after(() => { - mock.restore(); - }); - - it('should fetch with host', () => { - const expectedUrl = - 'https://www.myhost.net/sitecore/api/layout/placeholder/jss?placeholderName=%2F%24root%2Fmain&item=%2Fabout'; - - // configure 'GET' requests to return config options - mock.onGet().reply((config) => { - // config contains axios client config options, e.g. url, withCredentials, etc... - return [200, { elements: [{ ...config }] }]; - }); - - return fetchPlaceholderData('/$root/main', '/about', { - layoutServiceConfig: { host: 'https://www.myhost.net' }, - fetcher: axiosFetcher, - }).then((data) => { - // testData should contain the 'config' object from the mock request - const testData = data as any; - expect(testData.elements[0].url).to.equal(expectedUrl); - expect(testData.elements[0].withCredentials, 'with credentials is not true').to.be.true; - }); - }); - - it('should fetch with querystring', () => { - const expectedUrl = - 'https://www.myhost.net/sitecore/api/layout/placeholder/jss?placeholderName=%2F%24root%2Fmain&item=%2Fabout&sc_camp=123456'; - - // configure 'GET' requests to return config options - mock.onGet().reply((config) => { - // config contains axios client config options, e.g. url, withCredentials, etc... - return [200, { elements: [{ ...config }] }]; - }); - - return fetchPlaceholderData('/$root/main', '/about', { - layoutServiceConfig: { host: 'https://www.myhost.net' }, - querystringParams: { sc_camp: 123456 }, - fetcher: axiosFetcher, - }).then((data) => { - // testData should contain the 'config' object from the mock request - const testData = data as any; - expect(testData.elements[0].url).to.equal(expectedUrl); - expect(testData.elements[0].withCredentials, 'with credentials is not true').to.be.true; - }); - }); -}); diff --git a/packages/sitecore-jss/src/dataApi.ts b/packages/sitecore-jss/src/dataApi.ts deleted file mode 100644 index 23192cc882..0000000000 --- a/packages/sitecore-jss/src/dataApi.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { LayoutServiceData, PlaceholderData } from './dataModels'; -import { HttpJsonFetcher, HttpResponse } from './httpClientInterface'; - -class ResponseError extends Error { - response: HttpResponse; - - constructor(message: string, response: HttpResponse) { - super(message); - - Object.setPrototypeOf(this, ResponseError.prototype); - this.response = response; - } -} - -/** - * @param {HttpResponse} response - */ -function checkStatus(response: HttpResponse) { - if (response.status >= 200 && response.status < 300) { - return response; - } - - const error = new ResponseError(response.statusText, response); - throw error; -} - -// note: encodeURIComponent is available via browser (window) or natively in node.js -// if you use another js engine for server-side rendering you may not have native encodeURIComponent -// and would then need to install a package for that functionality -/** - * @param {Object} params - */ -function getQueryString(params: { [key: string]: string | number | boolean }): string { - return Object.keys(params) - .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`) - .join('&'); -} - -/** - * @param {string} url - * @param {HttpJsonFetcher} fetcher - * @param {Object} params - */ -export function fetchData( - url: string, - fetcher: HttpJsonFetcher, - params: { [key: string]: string | number | boolean } = {} -) { - const qs = getQueryString(params); - - let fetchUrl = url; - - if (Object.keys(params).length) { - fetchUrl = url.indexOf('?') !== -1 ? `${url}&${qs}` : `${url}?${qs}`; - } - - return fetcher(fetchUrl) - .then(checkStatus) - .then((response) => { - // axios auto-parses JSON responses, don't need to JSON.parse - return response.data; - }); -} - -export interface LayoutServiceConfig { - /** - * Host name of the Sitecore instance serving Layout Service requests. - */ - host?: string; - - /** - * Layout Service "named" configuration - */ - configurationName?: string; - - /** - * This value overrides the default layout service URL. - * Note: `host` and `configurationName` options are ignored if `layoutServiceUrl` is set. - */ - serviceUrl?: string; -} - -export interface BaseRequestOptions { - /** - * An object of key:value pairs to be stringified and used as querystring parameters. - */ - querystringParams?: { [key: string]: string | number | boolean }; - - /** The fetcher that performs the HTTP request and returns a promise to JSON */ - fetcher: HttpJsonFetcher; -} - -export interface LayoutServiceRequestOptions extends BaseRequestOptions { - /** - * Configuration options for Layout Service requests. - */ - layoutServiceConfig?: LayoutServiceConfig; -} - -const resolveLayoutServiceUrl = (options: LayoutServiceConfig = {}, verb: string) => { - const { host = '', configurationName = 'jss', serviceUrl } = options; - - if (serviceUrl) { - return serviceUrl; - } - - return `${host}/sitecore/api/layout/${verb}/${configurationName}`; -}; - -/** - * Makes a request to Sitecore Layout Service for the specified route item path. - * @deprecated Will be removed in a future release. Please use LayoutService.fetchLayoutData instead, - * @see {LayoutService} - fetchLayoutData - * @param {string} itemPath - * @param {LayoutServiceRequestOptions} options - * @returns {Promise} layout data - */ -export function fetchRouteData( - itemPath: string, - options: LayoutServiceRequestOptions -): Promise { - const { querystringParams, layoutServiceConfig } = options; - - const fetchUrl = resolveLayoutServiceUrl(layoutServiceConfig, 'render'); - - return fetchData(fetchUrl, options.fetcher, { item: itemPath, ...querystringParams }); -} - -/** - * Makes a request to Sitecore Layout Service for the specified placeholder in - * a specific route item. Allows you to retrieve rendered data for individual placeholders instead of entire routes. - * @deprecated Will be removed in a future release. Please use LayoutService.fetchPlaceholderData instead, - * @see {LayoutService} - fetchPlaceholderData - * @param {string} placeholderName - * @param {string} itemPath - * @param {LayoutServiceRequestOptions} options - * @returns {Promise} placeholder data - */ -export function fetchPlaceholderData( - placeholderName: string, - itemPath: string, - options: LayoutServiceRequestOptions -): Promise { - const { querystringParams, layoutServiceConfig } = options; - - const fetchUrl = resolveLayoutServiceUrl(layoutServiceConfig, 'placeholder'); - - return fetchData(fetchUrl, options.fetcher, { - placeholderName, - item: itemPath, - ...querystringParams, - }); -} diff --git a/packages/sitecore-jss/src/debug.ts b/packages/sitecore-jss/src/debug.ts new file mode 100644 index 0000000000..dd0ce7f23c --- /dev/null +++ b/packages/sitecore-jss/src/debug.ts @@ -0,0 +1,30 @@ +import debug from 'debug'; +import isServer from './utils/is-server'; + +const rootNamespace = 'sitecore-jss'; + +export type Debugger = debug.Debugger; + +// On server/node side, allow switching from the built-in +// `%o` (pretty-print single line) and `%O` (pretty-print multiple line) +// with a `DEBUG_MULTILINE` environment variable. +if ( + isServer() && + process?.env?.DEBUG_MULTILINE === 'true' && + debug.formatters.o && + debug.formatters.O +) { + debug.formatters.o = debug.formatters.O; +} + +/** + * Default Sitecore JSS 'debug' module debuggers. Uses namespace prefix 'sitecore-jss:'. + * See {@link https://www.npmjs.com/package/debug} for details. + */ +export default Object.freeze({ + http: debug(`${rootNamespace}:http`), + layout: debug(`${rootNamespace}:layout`), + dictionary: debug(`${rootNamespace}:dictionary`), + experienceEditor: debug(`${rootNamespace}:editing`), + sitemap: debug(`${rootNamespace}:sitemap`), +}); diff --git a/packages/sitecore-jss/src/dictionary-service.ts b/packages/sitecore-jss/src/dictionary-service.ts deleted file mode 100644 index 81681d978b..0000000000 --- a/packages/sitecore-jss/src/dictionary-service.ts +++ /dev/null @@ -1,110 +0,0 @@ -import mcache from 'memory-cache'; -import { AxiosDataFetcher } from './data-fetcher'; -import { fetchData } from './dataApi'; -import { DictionaryPhrases, DictionaryServiceData } from './dataModels'; -import { HttpJsonFetcher } from './httpClientInterface'; - -export interface DictionaryService { - /** - * Fetch dictionary data for a language. - * @param {string} language - */ - fetchDictionaryData(language: string): Promise; -} - -export type RestDictionaryServiceConfig = { - /** - * Your Sitecore instance hostname that is the backend for JSS - */ - apiHost: string; - /** - * The Sitecore SSC API key your app uses - */ - apiKey: string; - /** - * The JSS application name - */ - siteName: string; - /** - * Custom data fetcher - * @see HttpJsonFetcher - */ - dataFetcher?: HttpJsonFetcher; - /** - * Enable/disable caching mechanism - * @default true - */ - cacheEnabled?: boolean; - /** - * Cache timeout (sec) - * @default 60 - */ - cacheTimeout?: number; -}; - -/** - * Fetch dictionary data using the Sitecore Dictionary Service REST API. - * Uses Axios as the default data fetcher (@see AxiosDataFetcher). - */ -export class RestDictionaryService implements DictionaryService { - STD_TTL = 60; - - constructor(private dictionaryServiceConfig: RestDictionaryServiceConfig) {} - - /** - * Fetch dictionary data for a language. - * @param {string} language - */ - async fetchDictionaryData(language: string): Promise { - const { - dataFetcher, - apiKey, - cacheTimeout = this.STD_TTL, - cacheEnabled = true, - } = this.dictionaryServiceConfig; - - const fetcher = dataFetcher || this.getDefaultFetcher(); - - const dictionaryServiceUrl = this.getUrl(language); - - if (cacheEnabled) { - const cachedBody = mcache.get(dictionaryServiceUrl) as DictionaryPhrases; - - if (cachedBody) { - return cachedBody; - } - } - - const response = await fetchData(dictionaryServiceUrl, fetcher, { - sc_apikey: apiKey, - }); - - if (cacheEnabled) { - mcache.put(dictionaryServiceUrl, response.phrases, cacheTimeout); - } - - return response.phrases; - } - - /** - * Generate dictionary service url - * @param {string} language - */ - private getUrl(language: string) { - const { apiHost, siteName } = this.dictionaryServiceConfig; - - return `${apiHost}/sitecore/api/jss/dictionary/${siteName}/${language}`; - } - - /** - * Provides default @see AxiosDataFetcher data fetcher - * @returns default fetcher - */ - private getDefaultFetcher = () => { - const axiosFetcher = new AxiosDataFetcher(); - - const fetcher = (url: string) => axiosFetcher.fetch(url); - - return fetcher; - }; -} diff --git a/packages/sitecore-jss/src/graphql-request-client.test.ts b/packages/sitecore-jss/src/graphql-request-client.test.ts index 0ae3b02bef..d0a5deaafb 100644 --- a/packages/sitecore-jss/src/graphql-request-client.test.ts +++ b/packages/sitecore-jss/src/graphql-request-client.test.ts @@ -1,13 +1,39 @@ -import { expect } from 'chai'; +/* eslint-disable no-unused-expressions */ + +import { expect, use, spy } from 'chai'; +import spies from 'chai-spies'; import nock from 'nock'; import { GraphQLRequestClient } from './graphql-request-client'; +import debugApi from 'debug'; +import debug from './debug'; + +use(spies); describe('GraphQLRequestClient', () => { - const ENDPOINT = 'http://jssnextweb/graphql'; + const endpoint = 'http://jssnextweb/graphql'; + let debugNamespaces: string; - const graphQLClient = new GraphQLRequestClient(ENDPOINT); + before(() => { + debugNamespaces = debugApi.disable(); + debugApi.enable(`${debug.http.namespace},${debug.layout.namespace}`); + }); - const mockGraphQLRequest = () => { + beforeEach(() => { + spy.on(debug.http, 'log', () => true); + spy.on(debug.layout, 'log', () => true); + }); + + afterEach(() => { + nock.cleanAll(); + spy.restore(debug.http); + spy.restore(debug.layout); + }); + + after(() => { + debugApi.enable(debugNamespaces); + }); + + it('should execute graphql request', async () => { nock('http://jssnextweb') .post('/graphql') .reply(200, { @@ -15,17 +41,69 @@ describe('GraphQLRequestClient', () => { result: 'Hello world...', }, }); - }; - beforeEach(() => { - nock.cleanAll(); + const graphQLClient = new GraphQLRequestClient(endpoint); + const data = await graphQLClient.request('test'); + + expect(data).to.deep.equal({ result: 'Hello world...' }); }); - it('should execute graphql request', async () => { - mockGraphQLRequest(); + it('should send sc_apikey header', async () => { + const apiKey = 'cjhNRWNVOHRFTklwUjhYa0RSTnBhSStIam1mNE1KN1pyeW13c3FnRVExTT18bXRzdC1kLTAxOQ=='; + nock('http://jssnextweb', { + reqheaders: { + sc_apikey: apiKey, + }, + }) + .post('/graphql') + .reply(200, { + data: { + result: 'Hello world...', + }, + }); - const data = await graphQLClient.request('test'); + const graphQLClient = new GraphQLRequestClient(endpoint, { apiKey }); + await graphQLClient.request('test'); + }); - expect(data).to.deep.equal({ result: 'Hello world...' }); + it('should debug log request and response', async () => { + nock('http://jssnextweb') + .post('/graphql') + .reply(200, { + data: { + result: 'Hello world...', + }, + }); + + const graphQLClient = new GraphQLRequestClient(endpoint); + await graphQLClient.request('test'); + + expect(debug.http.log, 'request and response log').to.be.called.twice; + }); + + it('should debug log request and response error', () => { + nock('http://jssnextweb') + .post('/graphql') + .reply(400); + + const graphQLClient = new GraphQLRequestClient(endpoint); + return graphQLClient.request('test').catch(() => { + expect(debug.http.log, 'request and response error log').to.be.called.twice; + }); + }); + + it('should use debugger override', async () => { + nock('http://jssnextweb') + .post('/graphql') + .reply(200, { + data: { + result: 'Hello world...', + }, + }); + + const graphQLClient = new GraphQLRequestClient(endpoint, { debugger: debug.layout }); + await graphQLClient.request('test'); + + expect(debug.layout.log, 'request and response log').to.be.called.twice; }); }); diff --git a/packages/sitecore-jss/src/graphql-request-client.ts b/packages/sitecore-jss/src/graphql-request-client.ts index 1ef836e026..7af586371f 100644 --- a/packages/sitecore-jss/src/graphql-request-client.ts +++ b/packages/sitecore-jss/src/graphql-request-client.ts @@ -1,34 +1,84 @@ -import { GraphQLClient } from 'graphql-request'; +import { GraphQLClient as Client, ClientError } from 'graphql-request'; +import { DocumentNode } from 'graphql'; +import debuggers, { Debugger } from './debug'; -export class GraphQLRequestClient { +/** + * An interface for GraphQL clients for Sitecore APIs + */ +export interface GraphQLClient { /** - * Provides ability to execute graphql query using given `endpoint` - * @param {string} endpoint Your Graphql endpoint + * Execute graphql request + * @param {string | DocumentNode} query graphql query + * @param {Object} variables graphql variables */ - constructor(private endpoint: string) {} + request(query: string | DocumentNode, variables?: { [key: string]: unknown }): Promise; +} +/** + * Minimum configuration options for classes that implement @see GraphQLClient + */ +export type GraphQLRequestClientConfig = { /** - * Execute graphql request - * @param {string} query graphql query - * @param {Object} variables graphql variables + * The API key to use for authentication. This will be added as an 'sc_apikey' header. */ - async request(query: string, variables?: { [key: string]: unknown }): Promise { - const result = await this.requestInternal(query, variables); + apiKey?: string; + /** + * Override debugger for logging. Uses 'sitecore-jss:http' by default. + */ + debugger?: Debugger; +}; + +/** + * A GraphQL client for Sitecore APIs that uses the 'graphql-request' library. + * https://github.com/prisma-labs/graphql-request + */ +export class GraphQLRequestClient implements GraphQLClient { + private client: Client; + private headers: Record = {}; + private debug: Debugger; - return result; + /** + * Provides ability to execute graphql query using given `endpoint` + * @param {string} endpoint The Graphql endpoint + * @param {GraphQLRequestClientConfig} [clientConfig] GraphQL request client configuration. + */ + constructor(private endpoint: string, clientConfig: GraphQLRequestClientConfig = {}) { + if (clientConfig.apiKey) { + this.headers.sc_apikey = clientConfig.apiKey; + } + this.client = new Client(endpoint, { headers: this.headers }); + this.debug = clientConfig.debugger || debuggers.http; } /** - * Create new graphql request client and execute request - * @param {string} query graphql query + * Execute graphql request + * @param {string | DocumentNode} query graphql query * @param {Object} variables graphql variables */ - private requestInternal( - query: string, + async request( + query: string | DocumentNode, variables?: { [key: string]: unknown } ): Promise { - const client = new GraphQLClient(this.endpoint); + return new Promise((resolve, reject) => { + // Note we don't have access to raw request/response with graphql-request + // (or nice hooks like we have with Axios), but we should log whatever we have. + this.debug('request: %o', { + url: this.endpoint, + headers: this.headers, + query, + variables, + }); - return client.request(query, variables); + this.client + .request(query, variables) + .then((data: T) => { + this.debug('response: %o', data); + resolve(data); + }) + .catch((error: ClientError) => { + this.debug('response error: %o', error.response); + return reject(error); + }); + }); } } diff --git a/packages/sitecore-jss/src/graphql/app-root-query.ts b/packages/sitecore-jss/src/graphql/app-root-query.ts new file mode 100644 index 0000000000..d41581d641 --- /dev/null +++ b/packages/sitecore-jss/src/graphql/app-root-query.ts @@ -0,0 +1,79 @@ +import { GraphQLClient } from '../graphql-request-client'; +import { SitecoreTemplateId } from '../constants'; +import debug from '../debug'; + +/** @private */ +export const siteNameError = 'The site name must be a non-empty string'; +/** @private */ +export const languageError = 'The language must be a non-empty string'; + +/* + * GraphQL query that returns the ID of the root item of the specified site and language + */ +const appRootQuery = /* GraphQL */ ` + query AppRootQuery($jssAppTemplateId: String!, $siteName: String!, $language: String!) { + layout(site: $siteName, routePath: "/", language: $language) { + homePage: item { + rootItem: ancestors(includeTemplateIDs: [$jssAppTemplateId]) { + id + } + } + } + } +`; + +/** + * The schema of data returned in response to an app root query request + */ +export type AppRootQueryResult = { + layout: { + homePage: { + rootItem: { + id: string; + }[]; + }; + }; +}; + +/** + * Gets the ID of the JSS App root item for the specified site and language. + * @param {GraphQLClient} client that fetches data from a GraphQL endpoint. + * @param {string} siteName the name of the Sitecore site. + * @param {string} language the item language version. + * @param {string} jssAppTemplateId optional template ID of the app root item. If not + * specified, the ID of the "/sitecore/templates/Foundation/JavaScript Services/App" + * item is used. + * @returns the root item ID of the JSS App in Sitecore. Returns null if the app root item is not found. + * @throws {RangeError} if a valid site name value is not provided. + * @throws {RangeError} if a valid language value is not provided. + * This function intentionally avoids throwing an error if a root item is not found, + * leaving that decision up to implementations. + */ +export async function getAppRootId( + client: GraphQLClient, + siteName: string, + language: string, + jssAppTemplateId?: string +): Promise { + if (!siteName) { + throw new RangeError(siteNameError); + } + + if (!language) { + throw new RangeError(languageError); + } + + debug.dictionary('fetching site root for %s %s', language, siteName); + + const fetchResponse = await client.request(appRootQuery, { + jssAppTemplateId: jssAppTemplateId || SitecoreTemplateId.JssApp, + siteName, + language, + }); + + if (!fetchResponse?.layout?.homePage?.rootItem?.length) { + return null; + } + + return fetchResponse.layout.homePage.rootItem[0].id; +} diff --git a/packages/sitecore-jss/src/graphql/graphql.test.ts b/packages/sitecore-jss/src/graphql/graphql.test.ts new file mode 100644 index 0000000000..fe7ba582ab --- /dev/null +++ b/packages/sitecore-jss/src/graphql/graphql.test.ts @@ -0,0 +1,95 @@ +/* eslint-disable no-unused-expressions */ +import { expect } from 'chai'; +import { getAppRootId, siteNameError, languageError } from './app-root-query'; +import { GraphQLRequestClient } from '../graphql-request-client'; +import appRootQueryResponse from '../testData/mockAppRootQueryResponse.json'; +import nock from 'nock'; +import { SitecoreTemplateId } from '../constants'; + +// Todo: Instead of creating a GraphQLRequestClient instance, we can use the +// GraphQLClient interface. This would be a better mock. Potentially create a +// 'internal/sitecore-test project for such helpers. + +describe('graphql', () => { + describe('getAppRootId', () => { + const endpoint = 'http://site'; + const apiKey = 'api-key'; + const queryNameFilter = new RegExp('AppRootQuery'); + const client = new GraphQLRequestClient(endpoint, { apiKey }); + + afterEach(() => { + nock.cleanAll(); + }); + + describe('should return', () => { + it('valid app root ID', async () => { + nock(endpoint, { reqheaders: { sc_apikey: apiKey } }) + .post('/', queryNameFilter) + .reply(200, appRootQueryResponse); + + const result = await getAppRootId(client, 'siteName', 'language'); + expect(result).to.equal('GUIDGUIDGUID'); + }); + + it('null if no app root found', async () => { + nock(endpoint, { reqheaders: { sc_apikey: apiKey } }) + .post('/', queryNameFilter) + .reply(200, { + data: { + layout: { + homePage: { + rootItem: [], + }, + }, + }, + }); + + const result = await getAppRootId(client, 'siteName', 'language'); + expect(result).to.be.null; + }); + }); + + describe('parameters', () => { + it('should enforce valid "siteName" value', async () => { + nock(endpoint, { reqheaders: { sc_apikey: apiKey } }) + .post('/', queryNameFilter) + .reply(200, appRootQueryResponse); + + await getAppRootId(client, '', 'language').catch((error) => { + expect(error).to.be.instanceOf(RangeError); + expect(error.message).to.equal(siteNameError); + }); + }); + + it('should enforce valid "language" value', async () => { + nock(endpoint, { reqheaders: { sc_apikey: apiKey } }) + .post('/', queryNameFilter) + .reply(200, appRootQueryResponse); + + await getAppRootId(client, 'siteName', '').catch((error) => { + expect(error).to.be.instanceOf(RangeError); + expect(error.message).to.equal(languageError); + }); + }); + + it('should use custom jssAppTemplateId, if provided', async () => { + const customTemplateId = '{custom-id}'; + nock(endpoint, { reqheaders: { sc_apikey: apiKey } }) + .post('/', (body) => body.variables.jssAppTemplateId === customTemplateId) + .reply(200, appRootQueryResponse); + + await getAppRootId(client, 'siteName', 'language', customTemplateId); + expect(nock.isDone()).to.be.true; + }); + + it('should use default value for jssAppTemplateId, if not specified', async () => { + nock(endpoint, { reqheaders: { sc_apikey: apiKey } }) + .post('/', (body) => body.variables.jssAppTemplateId === SitecoreTemplateId.JssApp) + .reply(200, appRootQueryResponse); + + await getAppRootId(client, 'siteName', 'language'); + expect(nock.isDone()).to.be.true; + }); + }); + }); +}); diff --git a/packages/sitecore-jss/src/graphql/index.ts b/packages/sitecore-jss/src/graphql/index.ts new file mode 100644 index 0000000000..35743c84dc --- /dev/null +++ b/packages/sitecore-jss/src/graphql/index.ts @@ -0,0 +1,7 @@ +export { getAppRootId, AppRootQueryResult } from './app-root-query'; +export { + SearchQueryResult, + SearchQueryVariables, + SearchServiceConfig, + SearchQueryService, +} from './search-service'; diff --git a/packages/sitecore-jss/src/graphql/search-service.ts b/packages/sitecore-jss/src/graphql/search-service.ts new file mode 100644 index 0000000000..299f881172 --- /dev/null +++ b/packages/sitecore-jss/src/graphql/search-service.ts @@ -0,0 +1,122 @@ +import { GraphQLClient } from '../graphql-request-client'; +import { DocumentNode } from 'graphql'; + +/** + * Schema of data returned in response to a "search" query request + * @template T The type of objects being requested. + */ +export type SearchQueryResult = { + search: { + /** + * Data needed to paginate the search results + */ + pageInfo: { + /** + * string token that can be used to fetch the next page of results + */ + endCursor: string; + /** + * a value that indicates whether more pages of results are available + */ + hasNext: boolean; + }; + /* + * the type of data querying about items matching the search criteria + */ + results: T[]; + }; +}; + +/** + * Describes the variables used by the 'search' query. Language should always be specified. + * The other predicates are optional. + */ +export type SearchQueryVariables = { + /** + * Required. The language versions to search for. Fetch pages that have versions in this language. + */ + language: string; + + /** + * Optional. The ID of the search root item. Fetch items that have this item as an ancestor. + */ + rootItemId?: string; + + /** + * Optional. How many result items to fetch in each GraphQL call. This is needed for pagination. + * @default 10 + */ + pageSize?: number; + + /** + * Optional. Sitecore template ID(s). Fetch items that inherit from this template(s). + */ + templates?: string; +}; + +/** + * Configuration options for service classes that extend @see SearchQueryService. + * This extends @see SearchQueryVariables because properties that can be passed to the search query + * as predicates should be configurable. 'language' is excluded because, normally, all properties + * except 'language' are consistent across languages so they are passed to constructors, and + * 'language' can vary so it is passed to methods. + */ +export interface SearchServiceConfig extends Omit { + /** + * The name of the current Sitecore site. This is used to to determine the search query root + * in cases where one is not specified by the caller. + */ + siteName: string; +} + +/** + * Provides functionality for performing GraphQL 'search' operations, including handling pagination. + * This class is meant to be extended or used as a mixin; it's not meant to be used directly. + * @template T The type of objects being requested. + * @mixin + */ +export class SearchQueryService { + /** + * Creates an instance of search query service. + * @param {GraphQLClient} client that fetches data from a GraphQL endpoint. + */ + constructor(protected client: GraphQLClient) {} + + /** + * 1. Validates mandatory search query arguments + * 2. Executes search query with pagination + * 3. Aggregates pagination results into a single result-set. + * @template T The type of objects being requested. + * @param {string | DocumentNode} query the search query. + * @param {SearchQueryVariables} args search query arguments. + * @returns {T[]} array of result objects. + * @throws {RangeError} if a valid root item ID is not provided. + * @throws {RangeError} if the provided language(s) is(are) not valid. + */ + async fetch(query: string | DocumentNode, args: SearchQueryVariables): Promise { + if (!args.rootItemId) { + throw new RangeError('"rootItemId" and "language" must be non-empty strings'); + } + + if (!args.language) { + throw new RangeError('"rootItemId" and "language" must be non-empty strings'); + } + + let results: T[] = []; + let hasNext = true; + let after = ''; + + while (hasNext) { + const fetchResponse = await this.client.request>(query, { + ...args, + after, + }); + + results = results.concat(fetchResponse?.search?.results); + hasNext = fetchResponse.search.pageInfo.hasNext; + after = fetchResponse.search.pageInfo.endCursor; + } + + return results; + } +} diff --git a/packages/sitecore-jss/src/httpClientInterface.ts b/packages/sitecore-jss/src/httpClientInterface.ts deleted file mode 100644 index 7d13d27abf..0000000000 --- a/packages/sitecore-jss/src/httpClientInterface.ts +++ /dev/null @@ -1,23 +0,0 @@ -export interface HttpResponse { - /** HTTP status code, i.e. 200, 404 */ - status: number; - /** HTTP status text i.e. 'OK', 'Bad Request' */ - statusText: string; - /** Parsed JSON response data from server */ - data: T; -} - -/** - * Interface to a HTTP fetcher that you want to use. - * This interface conforms to Axios' public API, but should be adaptable - * to other HTTP libraries or fetch polyfills. This HTTP implementation must: - * - Support SSR - * - Return non-HTTP 200 responses as status codes, not thrown exceptions (i.e. be a proper REST client) - * - Parse response values as JSON and return them into - * - Send HTTP POST requests if `data` param is specified; GET is suggested but not required for data-less requests - */ -export type HttpJsonFetcher = ( - url: string, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - data?: { [key: string]: any } -) => Promise>; diff --git a/packages/sitecore-jss/src/i18n/dictionary-service.ts b/packages/sitecore-jss/src/i18n/dictionary-service.ts new file mode 100644 index 0000000000..cf84bb6576 --- /dev/null +++ b/packages/sitecore-jss/src/i18n/dictionary-service.ts @@ -0,0 +1,71 @@ +import { CacheClient, CacheOptions, MemoryCacheClient } from '../cache-client'; + +/** + * Object model for Sitecore dictionary phrases + */ +export interface DictionaryPhrases { + [k: string]: string; +} + +/** + * Service that fetches dictionary data using Sitecore's GraphQL API. + */ +export interface DictionaryService { + /** + * Fetch dictionary data for a language. + * @param {string} language + */ + fetchDictionaryData(language: string): Promise; +} + +/** + * Base implementation of @see DictionaryService that handles caching dictionary values + */ +export abstract class DictionaryServiceBase + implements DictionaryService, CacheClient { + private cache: CacheClient; + + /** + * Initializes a new instance of @see DictionaryService using the provided @see CacheOptions + * @param {CacheOptions} options Configuration options + */ + constructor(public options: CacheOptions) { + this.cache = this.getCacheClient(); + } + + /** + * Caches a @see DictionaryPhrases value for the specified cache key. + * @param {string} key The cache key. + * @param {DictionaryPhrases} value The value to cache. + * @returns The value added to the cache. + * @mixes CacheClient + */ + setCacheValue(key: string, value: DictionaryPhrases): DictionaryPhrases { + return this.cache.setCacheValue(key, value); + } + + /** + * Retrieves a @see DictionaryPhrases value from the cache. + * @param {string} key The cache key. + * @returns The @see DictionaryPhrases value, or null if the specified key is not found in the cache. + */ + getCacheValue(key: string): DictionaryPhrases | null { + return this.cache.getCacheValue(key); + } + + /** + * Gets a cache client that can cache data. Uses memory-cache as the default + * library for caching (@see MemoryCacheClient). Override this method if you + * want to use something else. + * @returns {CacheClient} implementation + */ + protected getCacheClient(): CacheClient { + return new MemoryCacheClient(this.options); + } + + /** + * Fetch dictionary data for a language. + * @param {string} language + */ + abstract fetchDictionaryData(language: string): Promise; +} diff --git a/packages/sitecore-jss/src/i18n/graphql-dictionary-service.test.ts b/packages/sitecore-jss/src/i18n/graphql-dictionary-service.test.ts new file mode 100644 index 0000000000..34f84a89f7 --- /dev/null +++ b/packages/sitecore-jss/src/i18n/graphql-dictionary-service.test.ts @@ -0,0 +1,221 @@ +import { expect } from 'chai'; +import nock from 'nock'; +import { SitecoreTemplateId } from '../constants'; +import { GraphQLClient, GraphQLRequestClient } from '../graphql-request-client'; +import { queryError, GraphQLDictionaryServiceConfig } from './graphql-dictionary-service'; +import { GraphQLDictionaryService } from '.'; +import dictionaryQueryResponse from '../testData/mockDictionaryQueryResponse.json'; +import appRootQueryResponse from '../testData/mockAppRootQueryResponse.json'; + +class TestService extends GraphQLDictionaryService { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + public client: any; + constructor(options: GraphQLDictionaryServiceConfig) { + super(options); + this.client = this.getGraphQLClient(); + } +} + +describe('GraphQLDictionaryService', () => { + const endpoint = 'http://site'; + const siteName = 'site-name'; + const apiKey = 'api-key'; + const rootItemId = '{GUID}'; + + afterEach(() => { + nock.cleanAll(); + }); + + it('should fetch dictionary phrases', async () => { + nock(endpoint, { reqheaders: { sc_apikey: apiKey } }) + .post('/', /DictionarySearch/gi) + .reply(200, dictionaryQueryResponse); + + const service = new GraphQLDictionaryService({ + endpoint, + apiKey, + siteName, + rootItemId, + cacheEnabled: false, + }); + const result = await service.fetchDictionaryData('en'); + expect(result.foo).to.equal('foo'); + expect(result.bar).to.equal('bar'); + }); + + it('should attempt to fetch the rootItemId, if rootItemId not provided', async () => { + nock(endpoint) + .post('/', /AppRootQuery/) + .reply(200, appRootQueryResponse); + + nock(endpoint) + .post('/', (body) => body.variables.rootItemId === 'GUIDGUIDGUID') + .reply(200, dictionaryQueryResponse); + + const service = new GraphQLDictionaryService({ + endpoint, + apiKey, + siteName, + cacheEnabled: false, + }); + const result = await service.fetchDictionaryData('en'); + expect(result).to.have.all.keys('foo', 'bar'); + // eslint-disable-next-line no-unused-expressions + expect(nock.isDone()).to.be.true; + }); + + it('should use a custom rootItemId, if provided', async () => { + const customRootId = 'cats'; + + nock(endpoint) + .post('/', (body) => body.variables.rootItemId === customRootId) + .reply(200, dictionaryQueryResponse); + + const service = new GraphQLDictionaryService({ + endpoint, + apiKey, + siteName, + cacheEnabled: false, + rootItemId: customRootId, + }); + const result = await service.fetchDictionaryData('en'); + expect(result).to.have.all.keys('foo', 'bar'); + }); + + it('should throw error if could not resolve rootItemId', async () => { + nock(endpoint) + .post('/', /AppRootQuery/) + .reply(200, { + data: { + layout: { + homePage: null, + }, + }, + }); + + const service = new GraphQLDictionaryService({ + endpoint, + apiKey, + siteName, + cacheEnabled: false, + }); + + await service.fetchDictionaryData('en').catch((error) => { + expect(error).to.be.instanceOf(Error); + expect(error.message).to.equal(queryError); + }); + }); + + it('should use default pageSize, if pageSize not provided', async () => { + nock(endpoint) + .post( + '/', + (body) => + body.query.indexOf('$pageSize: Int = 10') > 0 && body.variables.pageSize === undefined + ) + .reply(200, dictionaryQueryResponse); + + const service = new GraphQLDictionaryService({ + endpoint, + apiKey, + siteName, + rootItemId, + cacheEnabled: false, + pageSize: undefined, + }); + const result = await service.fetchDictionaryData('en'); + expect(result).to.have.all.keys('foo', 'bar'); + }); + + it('should use a custom pageSize, if provided', async () => { + const customPageSize = 2; + + nock(endpoint) + .post('/', (body) => body.variables.pageSize === customPageSize) + .reply(200, dictionaryQueryResponse); + + const service = new GraphQLDictionaryService({ + endpoint, + apiKey, + siteName, + rootItemId, + cacheEnabled: false, + pageSize: customPageSize, + }); + const result = await service.fetchDictionaryData('en'); + expect(result).to.have.all.keys('foo', 'bar'); + }); + + it('should use custom dictionary entry template ID, if provided', async () => { + const customTemplateId = 'custom-template-id'; + + nock(endpoint) + .post('/', (body) => body.variables.templates === customTemplateId) + .reply(200, dictionaryQueryResponse); + + const service = new GraphQLDictionaryService({ + endpoint, + apiKey, + siteName, + rootItemId, + cacheEnabled: false, + dictionaryEntryTemplateId: customTemplateId, + }); + const result = await service.fetchDictionaryData('en'); + expect(result).to.have.all.keys('foo', 'bar'); + }); + + it('should use default dictionary entry template ID, if template ID not provided', async () => { + nock(endpoint) + .post('/', (body) => body.variables.templates === SitecoreTemplateId.DictionaryEntry) + .reply(200, dictionaryQueryResponse); + + const service = new GraphQLDictionaryService({ + endpoint, + apiKey, + siteName, + rootItemId, + cacheEnabled: false, + }); + const result = await service.fetchDictionaryData('en'); + expect(result).to.have.all.keys('foo', 'bar'); + }); + + it('should use cache', async () => { + nock(endpoint, { reqheaders: { sc_apikey: apiKey } }) + .post('/', /DictionarySearch/gi) + .reply(200, dictionaryQueryResponse); + + const service = new GraphQLDictionaryService({ + endpoint, + apiKey, + siteName, + rootItemId, + cacheEnabled: true, + cacheTimeout: 2, + }); + + const result1 = await service.fetchDictionaryData('en'); + expect(result1).to.have.all.keys('foo', 'bar'); + + const result2 = await service.fetchDictionaryData('en'); + expect(result2).to.have.all.keys('foo', 'bar'); + }); + + it('should provide a default GraphQL client', () => { + const service = new TestService({ + endpoint, + apiKey, + siteName, + rootItemId, + cacheEnabled: false, + }); + + const graphQLClient = service.client as GraphQLClient; + const graphQLRequestClient = service.client as GraphQLRequestClient; + // eslint-disable-next-line no-unused-expressions + expect(graphQLClient).to.exist; + // eslint-disable-next-line no-unused-expressions + expect(graphQLRequestClient).to.exist; + }); +}); diff --git a/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts b/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts new file mode 100644 index 0000000000..545d52efe0 --- /dev/null +++ b/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts @@ -0,0 +1,149 @@ +import { GraphQLClient, GraphQLRequestClient } from '../graphql-request-client'; +import { SitecoreTemplateId } from '../constants'; +import { DictionaryPhrases, DictionaryServiceBase } from './dictionary-service'; +import { CacheOptions } from '../cache-client'; +import { getAppRootId, SearchServiceConfig, SearchQueryService } from '../graphql'; +import debug from '../debug'; + +/** @private */ +export const queryError = + 'Valid value for rootItemId not provided and failed to auto-resolve app root item.'; + +const query = /* GraphQL */ ` + query DictionarySearch( + $rootItemId: String! + $language: String! + $templates: String! + $pageSize: Int = 10 + $after: String + ) { + search( + where: { + AND: [ + { name: "_path", value: $rootItemId, operator: CONTAINS } + { name: "_language", value: $language } + { name: "_templates", value: $templates, operator: CONTAINS } + ] + } + first: $pageSize + after: $after + ) { + total + pageInfo { + endCursor + hasNext + } + results { + key: field(name: "Key") { + value + } + phrase: field(name: "Phrase") { + value + } + } + } + } +`; + +/** + * Configuration options for @see GraphQLDictionaryService instances + */ +export interface GraphQLDictionaryServiceConfig extends SearchServiceConfig, CacheOptions { + /** + * The URL of the graphQL endpoint. + */ + endpoint: string; + + /** + * The API key to use for authentication. + */ + apiKey: string; + + /** + * Optional. The template ID to use when searching for dictionary entries. + * @default '6d1cd89719364a3aa511289a94c2a7b1' (/sitecore/templates/System/Dictionary/Dictionary entry) + */ + dictionaryEntryTemplateId?: string; +} + +/** + * The schema of data returned in response to a dictionary query request. + */ +export type DictionaryQueryResult = { + key: { value: string }; + phrase: { value: string }; +}; + +/** + * Service that fetch dictionary data using Sitecore's GraphQL API. + * @augments DictionaryServiceBase + * @mixes SearchQueryService + */ +export class GraphQLDictionaryService extends DictionaryServiceBase { + private graphQLClient: GraphQLClient; + private searchService: SearchQueryService; + + /** + * Creates an instance of graphQL dictionary service with the provided options + * @param {GraphQLDictionaryService} options instance + */ + constructor(public options: GraphQLDictionaryServiceConfig) { + super(options); + this.graphQLClient = this.getGraphQLClient(); + this.searchService = new SearchQueryService(this.graphQLClient); + } + + /** + * Fetches dictionary data for internalization. + * @param {string} language the language to fetch + * @default query (@see query) + * @returns dictionary phrases + * @throws {Error} if the app root was not found for the specified site and language. + */ + async fetchDictionaryData(language: string): Promise { + const cacheKey = this.options.siteName + language; + const cachedValue = this.getCacheValue(cacheKey); + if (cachedValue) { + debug.dictionary('using cached dictionary data for %s %s', language, this.options.siteName); + return cachedValue; + } + + // If the caller does not specify a root item ID, then we try to figure it out + const rootItemId = + this.options.rootItemId || + (await getAppRootId(this.graphQLClient, this.options.siteName, language)); + + if (!rootItemId) { + throw new Error(queryError); + } + + debug.dictionary('fetching dictionary data for %s %s', language, this.options.siteName); + const phrases: DictionaryPhrases = {}; + await this.searchService + .fetch(query, { + rootItemId, + language, + templates: this.options.dictionaryEntryTemplateId || SitecoreTemplateId.DictionaryEntry, + pageSize: this.options.pageSize, + }) + .then((results) => { + results.forEach((item) => (phrases[item.key.value] = item.phrase.value)); + }); + + this.setCacheValue(cacheKey, phrases); + return phrases; + } + + /** + * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default + * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you + * want to use something else. + * @returns {GraphQLClient} implementation + */ + protected getGraphQLClient(): GraphQLClient { + return new GraphQLRequestClient(this.options.endpoint, { + apiKey: this.options.apiKey, + debugger: debug.dictionary, + }); + } +} diff --git a/packages/sitecore-jss/src/i18n/index.ts b/packages/sitecore-jss/src/i18n/index.ts new file mode 100644 index 0000000000..2d6f9242cf --- /dev/null +++ b/packages/sitecore-jss/src/i18n/index.ts @@ -0,0 +1,10 @@ +export { DictionaryPhrases, DictionaryService, DictionaryServiceBase } from './dictionary-service'; +export { + GraphQLDictionaryServiceConfig, + GraphQLDictionaryService, +} from './graphql-dictionary-service'; +export { + RestDictionaryServiceData, + RestDictionaryServiceConfig, + RestDictionaryService, +} from './rest-dictionary-service'; diff --git a/packages/sitecore-jss/src/dictionary-service.test.ts b/packages/sitecore-jss/src/i18n/rest-dictionary-service.test.ts similarity index 93% rename from packages/sitecore-jss/src/dictionary-service.test.ts rename to packages/sitecore-jss/src/i18n/rest-dictionary-service.test.ts index 8a1f6c610a..52d717de78 100644 --- a/packages/sitecore-jss/src/dictionary-service.test.ts +++ b/packages/sitecore-jss/src/i18n/rest-dictionary-service.test.ts @@ -1,12 +1,9 @@ -/* eslint-disable no-unused-expressions */ import { expect, spy, use } from 'chai'; -import mcache from 'memory-cache'; import spies from 'chai-spies'; -import { RestDictionaryService } from './dictionary-service'; -import { DictionaryServiceData } from './dataModels'; +import { RestDictionaryService, RestDictionaryServiceData } from './rest-dictionary-service'; import axios from 'axios'; import MockAdapter from 'axios-mock-adapter'; -import { AxiosDataFetcher } from './data-fetcher'; +import { AxiosDataFetcher } from '../axios-fetcher'; use(spies); @@ -19,7 +16,6 @@ describe('RestDictionaryService', () => { afterEach(() => { mock.reset(); - mcache.clear(); }); after(() => { @@ -35,6 +31,7 @@ describe('RestDictionaryService', () => { apiHost: 'http://sctest', apiKey: '0FBFF61E-267A-43E3-9252-B77E71CEE4BA', siteName: 'supersite', + cacheEnabled: false, }); return service.fetchDictionaryData('da-DK').then((phrases) => { @@ -62,6 +59,7 @@ describe('RestDictionaryService', () => { apiKey: '0FBFF61E-267A-43E3-9252-B77E71CEE4BA', siteName: 'supersite', cacheEnabled: true, + cacheTimeout: 1, }); const fetchedPhrases = await service.fetchDictionaryData('da-DK'); @@ -144,7 +142,7 @@ describe('RestDictionaryService', () => { it('should fetch dictionary data using custom data fetcher', () => { const fetcherSpy = spy((url: string) => { - return new AxiosDataFetcher().fetch(url); + return new AxiosDataFetcher().fetch(url); }); mock.onGet().reply((config) => { @@ -156,6 +154,7 @@ describe('RestDictionaryService', () => { apiKey: '0FBFF61E-267A-43E3-9252-B77E71CEE4BA', siteName: 'supersite', dataFetcher: fetcherSpy, + cacheEnabled: false, }); return service.fetchDictionaryData('ua').then((phrases) => { @@ -170,6 +169,7 @@ describe('RestDictionaryService', () => { y: 'w2', }); + // eslint-disable-next-line no-unused-expressions expect(fetcherSpy).to.be.called.once; expect(fetcherSpy).to.be.called.with( 'http://sctest/sitecore/api/jss/dictionary/supersite/ua?sc_apikey=0FBFF61E-267A-43E3-9252-B77E71CEE4BA' diff --git a/packages/sitecore-jss/src/i18n/rest-dictionary-service.ts b/packages/sitecore-jss/src/i18n/rest-dictionary-service.ts new file mode 100644 index 0000000000..690cfb41d2 --- /dev/null +++ b/packages/sitecore-jss/src/i18n/rest-dictionary-service.ts @@ -0,0 +1,79 @@ +import { AxiosDataFetcher } from '../axios-fetcher'; +import { HttpDataFetcher, fetchData } from '../data-fetcher'; +import { DictionaryPhrases, DictionaryServiceBase } from './dictionary-service'; +import { CacheOptions } from '../cache-client'; +import debug from '../debug'; + +/** + * A reply from the REST Sitecore Dictionary Service + */ +export type RestDictionaryServiceData = { + phrases: DictionaryPhrases; +}; + +export type RestDictionaryServiceConfig = CacheOptions & { + /** + * Your Sitecore instance hostname that is the backend for JSS + */ + apiHost: string; + /** + * The Sitecore SSC API key your app uses + */ + apiKey: string; + /** + * The JSS application name + */ + siteName: string; + /** + * Custom data fetcher + * @see HttpDataFetcher + */ + dataFetcher?: HttpDataFetcher; +}; + +/** + * Fetch dictionary data using the Sitecore Dictionary Service REST API. + * Uses Axios as the default data fetcher (@see AxiosDataFetcher). + */ +export class RestDictionaryService extends DictionaryServiceBase { + /** + * Provides default @see AxiosDataFetcher data fetcher + */ + get defaultFetcher(): HttpDataFetcher { + const dataFetcher = new AxiosDataFetcher({ debugger: debug.dictionary }); + return (url: string) => dataFetcher.fetch(url); + } + + constructor(public options: RestDictionaryServiceConfig) { + super(options); + } + + /** + * Fetch dictionary data for a language. + * @param {string} language + */ + async fetchDictionaryData(language: string): Promise { + const endpoint = this.getUrl(language); + const cachedValue = this.getCacheValue(endpoint); + if (cachedValue) { + debug.dictionary('using cached dictionary data for %s %s', language, this.options.siteName); + return cachedValue; + } + + debug.dictionary('fetching dictionary data for %s %s', language, this.options.siteName); + const fetcher = this.options.dataFetcher || this.defaultFetcher; + const response = await fetchData(endpoint, fetcher, { + sc_apikey: this.options.apiKey, + }); + + return this.setCacheValue(endpoint, response.phrases); + } + + /** + * Generate dictionary service url + * @param {string} language + */ + protected getUrl(language: string) { + return `${this.options.apiHost}/sitecore/api/jss/dictionary/${this.options.siteName}/${language}`; + } +} diff --git a/packages/sitecore-jss/src/index.ts b/packages/sitecore-jss/src/index.ts index e4c06a5a14..12e20f2fcb 100644 --- a/packages/sitecore-jss/src/index.ts +++ b/packages/sitecore-jss/src/index.ts @@ -1,32 +1,18 @@ -import * as dataApi from './dataApi'; -import * as mediaApi from './mediaApi'; - -export { dataApi, mediaApi }; - -export { GraphQLRequestClient } from './graphql-request-client'; - -export { LayoutServiceRequestOptions } from './dataApi'; - -export { AxiosDataFetcher, AxiosDataFetcherConfig } from './data-fetcher'; - -export { - LayoutService, - RestLayoutService, - RestLayoutServiceConfig, - DataFetcherResolver, -} from './layout-service'; - +import * as mediaApi from './media-api'; +import * as constants from './constants'; + +export { mediaApi, constants }; +export * from './utils'; +export * from './graphql'; +export { default as debug, Debugger } from './debug'; +export { HttpDataFetcher, HttpResponse, fetchData } from './data-fetcher'; +export * from './graphql-request-client'; +export * from './axios-fetcher'; +export * from './cache-client'; +export * from './i18n'; + +// layout export { - DictionaryService, - RestDictionaryService, - RestDictionaryServiceConfig, -} from './dictionary-service'; - -export { isExperienceEditorActive, isServer, resetExperienceEditorChromes } from './util'; - -export { - DictionaryPhrases, - DictionaryServiceData, LayoutServiceData, LayoutServicePageState, LayoutServiceContext, @@ -40,8 +26,23 @@ export { PlaceholdersData, ComponentFields, ComponentParams, -} from './dataModels'; +} from './layout/models'; + +export { getFieldValue, getChildPlaceholder } from './layout/utils'; + +export { LayoutService } from './layout/layout-service'; + +export { + RestLayoutService, + RestLayoutServiceConfig, + DataFetcherResolver, + LayoutServiceConfig, + LayoutServiceRequestOptions, +} from './layout/rest-layout-service'; -export { getFieldValue, getChildPlaceholder } from './layoutDataUtils'; +export { GraphQLLayoutService, GraphQLLayoutServiceConfig } from './layout/graphql-layout-service'; -export { HttpJsonFetcher, HttpResponse } from './httpClientInterface'; +// TODO: these are deprecated and we should stop exporting them +import { fetchRouteData, fetchPlaceholderData } from './layout/rest-layout-service'; +const dataApi = { fetchRouteData, fetchPlaceholderData }; +export { dataApi }; diff --git a/packages/sitecore-jss/src/layout/graphql-layout-service.test.ts b/packages/sitecore-jss/src/layout/graphql-layout-service.test.ts new file mode 100644 index 0000000000..a6a0861fc1 --- /dev/null +++ b/packages/sitecore-jss/src/layout/graphql-layout-service.test.ts @@ -0,0 +1,237 @@ +import { expect, use } from 'chai'; +import spies from 'chai-spies'; +import nock from 'nock'; +import { GraphQLLayoutService } from './graphql-layout-service'; + +use(spies); + +describe('GraphQLLayoutService', () => { + const apiKey = '0FBFF61E-267A-43E3-9252-B77E71CEE4BA'; + + afterEach(() => { + nock.cleanAll(); + }); + + it('should fetch layout data', async () => { + nock('http://sctest', { + reqheaders: { + sc_apikey: apiKey, + }, + }) + .post('/graphql', (body) => { + return ( + body.query.replace(/\n|\s/g, '') === + 'query{layout(site:"supersite",routePath:"/styleguide",language:"da-DK"){item{rendered}}}' + ); + }) + .reply(200, { + data: { + layout: { + item: { + rendered: { + sitecore: { + context: { + pageEditing: false, + site: { name: 'JssNextWeb' }, + }, + route: { + name: 'styleguide', + layoutId: 'xxx', + }, + }, + }, + }, + }, + }, + }); + + const service = new GraphQLLayoutService({ + endpoint: 'http://sctest/graphql', + apiKey: apiKey, + siteName: 'supersite', + }); + + const data = await service.fetchLayoutData('/styleguide', 'da-DK'); + + expect(data).to.deep.equal({ + sitecore: { + context: { + pageEditing: false, + site: { name: 'JssNextWeb' }, + }, + route: { + name: 'styleguide', + layoutId: 'xxx', + }, + }, + }); + }); + + it('should fetch layout data if locale is not provided', async () => { + nock('http://sctest', { + reqheaders: { + sc_apikey: apiKey, + }, + }) + .post('/graphql', (body) => { + return ( + body.query.replace(/\n|\s/g, '') === + 'query{layout(site:"supersite",routePath:"/styleguide"){item{rendered}}}' + ); + }) + .reply(200, { + data: { + layout: { + item: { + rendered: { + sitecore: { + context: { + pageEditing: false, + site: { name: 'JssNextWeb' }, + }, + route: { + name: 'styleguide', + layoutId: 'xxx', + }, + }, + }, + }, + }, + }, + }); + + const service = new GraphQLLayoutService({ + endpoint: 'http://sctest/graphql', + apiKey: apiKey, + siteName: 'supersite', + }); + + const data = await service.fetchLayoutData('/styleguide'); + + expect(data).to.deep.equal({ + sitecore: { + context: { + pageEditing: false, + site: { name: 'JssNextWeb' }, + }, + route: { + name: 'styleguide', + layoutId: 'xxx', + }, + }, + }); + }); + + it('should fetch layout data using custom layout query', async () => { + nock('http://sctest', { + reqheaders: { + sc_apikey: apiKey, + }, + }) + .post('/graphql', (body) => { + return ( + body.query.replace(/\n|\s/g, '') === + 'query{layout111(site:"supersite",route:"/styleguide",language:"en"){item{rendered}}}' + ); + }) + .reply(200, { + data: { + layout: { + item: { + rendered: { + sitecore: { + context: { + pageEditing: false, + site: { name: 'JssNextWeb' }, + }, + route: { + name: 'styleguide', + layoutId: 'xxx', + }, + }, + }, + }, + }, + }, + }); + + const service = new GraphQLLayoutService({ + endpoint: 'http://sctest/graphql', + apiKey: apiKey, + siteName: 'supersite', + formatLayoutQuery: (siteName, itemPath, locale) => + `layout111(site:"${siteName}",route:"${itemPath}",language:"${locale || 'en'}")`, + }); + + const data = await service.fetchLayoutData('/styleguide'); + + expect(data).to.deep.equal({ + sitecore: { + context: { + pageEditing: false, + site: { name: 'JssNextWeb' }, + }, + route: { + name: 'styleguide', + layoutId: 'xxx', + }, + }, + }); + }); + + it('should handle not found', async () => { + nock('http://sctest') + .post('/graphql', (body) => { + return ( + body.query.replace(/\n|\s/g, '') === + 'query{layout(site:"supersite",routePath:"/styleguide",language:"da-DK"){item{rendered}}}' + ); + }) + .reply(200, { + data: { + layout: null, + }, + }); + + const service = new GraphQLLayoutService({ + endpoint: 'http://sctest/graphql', + siteName: 'supersite', + apiKey: apiKey, + }); + + const data = await service.fetchLayoutData('/styleguide', 'da-DK'); + + expect(data).to.deep.equal({ + sitecore: { + context: { + pageEditing: false, + language: 'da-DK', + }, + route: null, + }, + }); + }); + + it('should return error', async () => { + nock('http://sctest', { + reqheaders: { + sc_apikey: apiKey, + }, + }) + .post('/graphql') + .reply(401, { + error: 'whoops', + }); + + const service = new GraphQLLayoutService({ + endpoint: 'http://sctest/graphql', + apiKey: apiKey, + siteName: 'supersite', + }); + + await service.fetchLayoutData('/styleguide', 'da-DK').catch((error) => { + expect(error.response.status).to.equal(401); + expect(error.response.error).to.equal('whoops'); + }); + }); +}); diff --git a/packages/sitecore-jss/src/layout/graphql-layout-service.ts b/packages/sitecore-jss/src/layout/graphql-layout-service.ts new file mode 100644 index 0000000000..4adaeac927 --- /dev/null +++ b/packages/sitecore-jss/src/layout/graphql-layout-service.ts @@ -0,0 +1,105 @@ +import { LayoutServiceBase } from './layout-service'; +import { LayoutServiceData } from './models'; +import { GraphQLClient, GraphQLRequestClient } from '../graphql-request-client'; +import debug from '../debug'; + +export type GraphQLLayoutServiceConfig = { + /** + * Your Graphql endpoint + */ + endpoint: string; + /** + * The JSS application name + */ + siteName: string; + /** + * The API key to use for authentication + */ + apiKey: string; + /** + * Override default layout query + * @param {string} siteName + * @param {string} itemPath + * @param {string} [locale] + * @returns {string} custom layout query + * + * @default + * Layout query + * layout(site:"${siteName}", routePath:"${itemPath}", language:"${language}") + */ + formatLayoutQuery?: (siteName: string, itemPath: string, locale?: string) => string; +}; + +export class GraphQLLayoutService extends LayoutServiceBase { + private graphQLClient: GraphQLClient; + + /** + * Fetch layout data using the Sitecore GraphQL endpoint. + * @param {GraphQLLayoutServiceConfig} serviceConfig + */ + constructor(public serviceConfig: GraphQLLayoutServiceConfig) { + super(); + this.graphQLClient = this.getGraphQLClient(); + } + + /** + * Fetch layout data for an item. + * @param {string} itemPath + * @param {string} [language] + * @returns {Promise} layout service data + */ + async fetchLayoutData(itemPath: string, language?: string): Promise { + const query = this.getLayoutQuery(itemPath, language); + + debug.layout( + 'fetching layout data for %s %s %s', + itemPath, + language, + this.serviceConfig.siteName + ); + const data = await this.graphQLClient.request<{ + layout: { item: { rendered: LayoutServiceData } }; + }>(query); + + // If `rendered` is empty -> not found + return ( + data?.layout?.item.rendered || { + sitecore: { context: { pageEditing: false, language }, route: null }, + } + ); + } + + /** + * Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default + * library for fetching graphql data (@see GraphQLRequestClient). Override this method if you + * want to use something else. + * @returns {GraphQLClient} implementation + */ + protected getGraphQLClient(): GraphQLClient { + return new GraphQLRequestClient(this.serviceConfig.endpoint, { + apiKey: this.serviceConfig.apiKey, + debugger: debug.layout, + }); + } + + /** + * Returns GraphQL Layout query + * @param {string} itemPath page route + * @param {string} [language] language + */ + protected getLayoutQuery(itemPath: string, language?: string) { + const languageVariable = language ? `, language:"${language}"` : ''; + + const layoutQuery = this.serviceConfig.formatLayoutQuery + ? this.serviceConfig.formatLayoutQuery(this.serviceConfig.siteName, itemPath, language) + : `layout(site:"${this.serviceConfig.siteName}", routePath:"${itemPath}"${languageVariable})`; + + return `query { + ${layoutQuery}{ + item { + rendered + } + } + }`; + } +} diff --git a/packages/sitecore-jss/src/layout/layout-service.ts b/packages/sitecore-jss/src/layout/layout-service.ts new file mode 100644 index 0000000000..6ce6d84c55 --- /dev/null +++ b/packages/sitecore-jss/src/layout/layout-service.ts @@ -0,0 +1,28 @@ +import * as models from './models'; +import { IncomingMessage, ServerResponse } from 'http'; + +export interface LayoutService { + /** + * Fetch layout data for an item. + * @param {string} itemPath + * @param {string} [language] + * @param {IncomingMessage} [req] Request instance + * @param {ServerResponse} [res] Response instance + * @returns {Promise} layout data + */ + fetchLayoutData( + itemPath: string, + language?: string, + req?: IncomingMessage, + res?: ServerResponse + ): Promise; +} + +export abstract class LayoutServiceBase implements LayoutService { + abstract fetchLayoutData( + itemPath: string, + language?: string, + req?: IncomingMessage, + res?: ServerResponse + ): Promise; +} diff --git a/packages/sitecore-jss/src/dataModels.ts b/packages/sitecore-jss/src/layout/models.ts similarity index 90% rename from packages/sitecore-jss/src/dataModels.ts rename to packages/sitecore-jss/src/layout/models.ts index 54c1bc23d6..e19309cbef 100644 --- a/packages/sitecore-jss/src/dataModels.ts +++ b/packages/sitecore-jss/src/layout/models.ts @@ -1,25 +1,9 @@ -/** - * Phrases from the Sitecore Dictionary Service - */ -export interface DictionaryPhrases { - [k: string]: string; -} - -/** - * A reply from the Sitecore Dictionary Service - */ -export interface DictionaryServiceData { - lang: string; - app: string; - phrases: DictionaryPhrases; -} - /** * A reply from the Sitecore Layout Service */ export interface LayoutServiceData { sitecore: LayoutServiceContextData & { - route: RouteData; + route: RouteData | null; }; } diff --git a/packages/sitecore-jss/src/layout-service.test.ts b/packages/sitecore-jss/src/layout/rest-layout-service.test.ts similarity index 54% rename from packages/sitecore-jss/src/layout-service.test.ts rename to packages/sitecore-jss/src/layout/rest-layout-service.test.ts index ae223dd5bc..b3d5d5280e 100644 --- a/packages/sitecore-jss/src/layout-service.test.ts +++ b/packages/sitecore-jss/src/layout/rest-layout-service.test.ts @@ -1,14 +1,14 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable no-unused-expressions */ - +/* eslint-disable @typescript-eslint/no-explicit-any */ import { expect, spy, use } from 'chai'; import spies from 'chai-spies'; -import { RestLayoutService } from './layout-service'; +import { IncomingMessage, ServerResponse } from 'http'; import axios from 'axios'; import MockAdapter from 'axios-mock-adapter'; -import { IncomingMessage, ServerResponse } from 'http'; -import { AxiosDataFetcher } from './data-fetcher'; -import { LayoutServiceData, PlaceholderData } from './dataModels'; +import { HttpDataFetcher } from '../data-fetcher'; +import { AxiosDataFetcher } from '../axios-fetcher'; +import { RestLayoutService, fetchPlaceholderData, fetchRouteData } from './rest-layout-service'; +import { LayoutServiceData, PlaceholderData } from './models'; use(spies); @@ -27,7 +27,7 @@ describe('RestLayoutService', () => { mock.restore(); }); - it('should fetch route data', () => { + it('should fetch layout data', () => { mock.onGet().reply((config) => { return [200, { ...config, data: { sitecore: { context: {}, route: { name: 'xxx' } } } }]; }); @@ -165,6 +165,41 @@ describe('RestLayoutService', () => { }); }); + it('should fetch layout data using custom configuration name', () => { + mock.onGet().reply((config) => { + return [ + 200, + { + ...config, + data: { sitecore: { context: {}, route: { name: 'xxx' } } }, + }, + { + 'set-cookie': 'test-set-cookie-value', + }, + ]; + }); + + const service = new RestLayoutService({ + apiHost: 'http://sctest', + apiKey: '0FBFF61E-267A-43E3-9252-B77E71CEE4BA', + siteName: 'supersite', + configurationName: 'listen', + tracking: false, + }); + + return service.fetchLayoutData('/home', 'da-DK').then((layoutServiceData: any) => { + expect(layoutServiceData.url).to.equal( + 'http://sctest/sitecore/api/layout/render/listen?item=%2Fhome&sc_apikey=0FBFF61E-267A-43E3-9252-B77E71CEE4BA&sc_site=supersite&sc_lang=da-DK&tracking=false' + ); + expect(layoutServiceData.data).to.deep.equal({ + sitecore: { + context: {}, + route: { name: 'xxx' }, + }, + }); + }); + }); + it('should fetch layout data using custom fetcher resolver', () => { const fetcherSpy = spy((url: string) => { return new AxiosDataFetcher().fetch(url); @@ -198,6 +233,58 @@ describe('RestLayoutService', () => { }); }); + it('should catch 404 when request layout data', () => { + mock.onGet().reply(() => { + return [ + 404, + { + sitecore: { + context: { + pageEditing: false, + language: 'en', + }, + route: null, + }, + }, + ]; + }); + + const service = new RestLayoutService({ + apiHost: 'http://sctest', + apiKey: '0FBFF61E-267A-43E3-9252-B77E71CEE4BA', + siteName: 'supersite', + }); + + return service.fetchLayoutData('/styleguide', 'en').then((layoutServiceData: any) => { + expect(layoutServiceData).to.deep.equal({ + sitecore: { + context: { + pageEditing: false, + language: 'en', + }, + route: null, + }, + }); + }); + }); + + it('should allow non 404 errors through', () => { + mock.onGet().reply(() => { + return [401, { message: 'whoops' }]; + }); + + const service = new RestLayoutService({ + apiHost: 'http://sctest', + apiKey: '0FBFF61E-267A-43E3-9252-B77E71CEE4BA', + siteName: 'supersite', + }); + + return service.fetchLayoutData('/styleguide', 'en').catch((error) => { + expect(error.response.status).to.equal(401); + expect(error.response.data.message).to.equal('whoops'); + }); + }); + it('should fetch placeholder data', () => { mock.onGet().reply(() => { return [ @@ -288,3 +375,128 @@ describe('RestLayoutService', () => { }); }); }); + +// note: axios needs to use `withCredentials: true` in order for Sitecore cookies to be included in CORS requests +// which is necessary for analytics and such +const axiosFetcher: HttpDataFetcher = (url, data) => + axios({ + url, + method: data ? 'POST' : 'GET', + data, + withCredentials: true, + }); + +describe('fetchRouteData', () => { + let mock: MockAdapter; + before(() => { + mock = new MockAdapter(axios); + }); + + afterEach(() => { + mock.reset(); + }); + + after(() => { + mock.restore(); + }); + + it('should fetch with host', () => { + const expectedUrl = 'https://www.myhost.net/sitecore/api/layout/render/jss?item=%2Fabout'; + + // configure 'GET' requests to return config options + mock.onGet().reply((config) => { + // config contains axios client config options, e.g. url, withCredentials, etc... + return [200, { ...config }]; + }); + + return fetchRouteData('/about', { + layoutServiceConfig: { host: 'https://www.myhost.net' }, + fetcher: axiosFetcher, + }).then((data) => { + // testData should contain the 'config' object from the mock request + const testData = data as any; + expect(testData.url).to.equal(expectedUrl); + expect(testData.withCredentials, 'with credentials is not true').to.be.true; + }); + }); + + it('should fetch with querystring', () => { + const expectedUrl = + 'https://www.myhost.net/sitecore/api/layout/render/jss?item=%2Fabout&sc_camp=123456'; + + // configure 'GET' requests to return config options + mock.onGet().reply((config) => { + // config contains axios client config options, e.g. url, withCredentials, etc... + return [200, { ...config }]; + }); + + return fetchRouteData('/about', { + fetcher: axiosFetcher, + layoutServiceConfig: { host: 'https://www.myhost.net' }, + querystringParams: { sc_camp: 123456 }, + }).then((data) => { + // testData should contain the 'config' object from the mock request + const testData = data as any; + expect(testData.url).to.equal(expectedUrl); + expect(testData.withCredentials, 'with credentials is not true').to.be.true; + }); + }); +}); + +describe('fetchPlaceholderData', () => { + let mock: MockAdapter; + before(() => { + mock = new MockAdapter(axios); + }); + + afterEach(() => { + mock.reset(); + }); + + after(() => { + mock.restore(); + }); + + it('should fetch with host', () => { + const expectedUrl = + 'https://www.myhost.net/sitecore/api/layout/placeholder/jss?placeholderName=%2F%24root%2Fmain&item=%2Fabout'; + + // configure 'GET' requests to return config options + mock.onGet().reply((config) => { + // config contains axios client config options, e.g. url, withCredentials, etc... + return [200, { elements: [{ ...config }] }]; + }); + + return fetchPlaceholderData('/$root/main', '/about', { + layoutServiceConfig: { host: 'https://www.myhost.net' }, + fetcher: axiosFetcher, + }).then((data) => { + // testData should contain the 'config' object from the mock request + const testData = data as any; + expect(testData.elements[0].url).to.equal(expectedUrl); + expect(testData.elements[0].withCredentials, 'with credentials is not true').to.be.true; + }); + }); + + it('should fetch with querystring', () => { + const expectedUrl = + 'https://www.myhost.net/sitecore/api/layout/placeholder/jss?placeholderName=%2F%24root%2Fmain&item=%2Fabout&sc_camp=123456'; + + // configure 'GET' requests to return config options + mock.onGet().reply((config) => { + // config contains axios client config options, e.g. url, withCredentials, etc... + return [200, { elements: [{ ...config }] }]; + }); + + return fetchPlaceholderData('/$root/main', '/about', { + layoutServiceConfig: { host: 'https://www.myhost.net' }, + querystringParams: { sc_camp: 123456 }, + fetcher: axiosFetcher, + }).then((data) => { + // testData should contain the 'config' object from the mock request + const testData = data as any; + expect(testData.elements[0].url).to.equal(expectedUrl); + expect(testData.elements[0].withCredentials, 'with credentials is not true').to.be.true; + }); + }); +}); diff --git a/packages/sitecore-jss/src/layout-service.ts b/packages/sitecore-jss/src/layout/rest-layout-service.ts similarity index 52% rename from packages/sitecore-jss/src/layout-service.ts rename to packages/sitecore-jss/src/layout/rest-layout-service.ts index a98f883aea..cf30862246 100644 --- a/packages/sitecore-jss/src/layout-service.ts +++ b/packages/sitecore-jss/src/layout/rest-layout-service.ts @@ -1,31 +1,119 @@ -import { AxiosDataFetcher, AxiosDataFetcherConfig } from './data-fetcher'; -import { LayoutServiceData, PlaceholderData } from './dataModels'; -import { fetchPlaceholderData, fetchRouteData, LayoutServiceConfig } from './dataApi'; -import { HttpJsonFetcher } from './httpClientInterface'; import { AxiosRequestConfig, AxiosResponse } from 'axios'; import { IncomingMessage, ServerResponse } from 'http'; +import { LayoutServiceBase } from './layout-service'; +import { PlaceholderData, LayoutServiceData } from './models'; +import { AxiosDataFetcher, AxiosDataFetcherConfig } from '../axios-fetcher'; +import { HttpDataFetcher, fetchData } from '../data-fetcher'; +import debug from '../debug'; -export interface LayoutService { +/** + * Resolves layout service url + * @param {LayoutServiceConfig} [options] layout service options + * @param {string} apiType which layout service API to call ('render' or 'placeholder') + * @returns the layout service url + */ +export function resolveLayoutServiceUrl( + options: LayoutServiceConfig = {}, + apiType: 'render' | 'placeholder' +): string { + const { host = '', configurationName = 'jss', serviceUrl } = options; + + if (serviceUrl) { + return serviceUrl; + } + + return `${host}/sitecore/api/layout/${apiType}/${configurationName}`; +} + +/** + * Makes a request to Sitecore Layout Service for the specified route item path. + * @deprecated Will be removed in a future release. Please use LayoutService.fetchLayoutData instead, + * @see {LayoutService} - fetchLayoutData + * @param {string} itemPath + * @param {LayoutServiceRequestOptions} options + * @returns {Promise} layout data + */ +export function fetchRouteData( + itemPath: string, + options: LayoutServiceRequestOptions +): Promise { + const { querystringParams, layoutServiceConfig } = options; + + const fetchUrl = resolveLayoutServiceUrl(layoutServiceConfig, 'render'); + + return fetchData(fetchUrl, options.fetcher, { item: itemPath, ...querystringParams }); +} + +/** + * Makes a request to Sitecore Layout Service for the specified placeholder in + * a specific route item. Allows you to retrieve rendered data for individual placeholders instead of entire routes. + * @deprecated Will be removed in a future release. Please use LayoutService.fetchPlaceholderData instead, + * @see {LayoutService} - fetchPlaceholderData + * @param {string} placeholderName + * @param {string} itemPath + * @param {LayoutServiceRequestOptions} options + * @returns {Promise} placeholder data + */ +export function fetchPlaceholderData( + placeholderName: string, + itemPath: string, + options: LayoutServiceRequestOptions +): Promise { + const { querystringParams, layoutServiceConfig } = options; + + const fetchUrl = resolveLayoutServiceUrl(layoutServiceConfig, 'placeholder'); + + return fetchData(fetchUrl, options.fetcher, { + placeholderName, + item: itemPath, + ...querystringParams, + }); +} + +export interface LayoutServiceConfig { /** - * Fetch layout data for an item. - * @param {string} itemPath - * @param {string} [language] - * @param {IncomingMessage} [req] Request instance - * @param {ServerResponse} [res] Response instance - * @returns {Promise} layout data + * Host name of the Sitecore instance serving Layout Service requests. */ - fetchLayoutData( - itemPath: string, - language?: string, - req?: IncomingMessage, - res?: ServerResponse - ): Promise; + host?: string; + + /** + * Layout Service "named" configuration + */ + configurationName?: string; + + /** + * This value overrides the default layout service URL. + * Note: `host` and `configurationName` options are ignored if `layoutServiceUrl` is set. + */ + serviceUrl?: string; } -export type DataFetcherResolver = ( - req?: IncomingMessage, - res?: ServerResponse -) => HttpJsonFetcher; +export interface LayoutServiceRequestOptions { + /** + * Configuration options for Layout Service requests. + */ + layoutServiceConfig?: LayoutServiceConfig; + /** + * An object of key:value pairs to be stringified and used as querystring parameters. + */ + querystringParams?: { [key: string]: string | number | boolean }; + + /** The fetcher that performs the HTTP request and returns a promise to JSON */ + fetcher: HttpDataFetcher; +} + +interface FetchParams { + [param: string]: string | number | boolean; + sc_apikey: string; + sc_site: string; + sc_lang: string; + tracking: boolean; +} + +interface FetchOptions { + layoutServiceConfig: LayoutServiceConfig; + querystringParams: FetchParams; +} export type RestLayoutServiceConfig = { /** @@ -48,35 +136,34 @@ export type RestLayoutServiceConfig = { */ tracking?: boolean; /** - * Data fetcher resolver in order to provide custom data fetcher - * @see DataFetcherResolver - * @see HttpJsonFetcher - * @see AxiosDataFetcher used by default - * @param {IncomingMessage} [req] Request instance - * @param {ServerResponse} [res] Response instance + * Function that handles fetching API data */ dataFetcherResolver?: DataFetcherResolver; -}; -interface FetchParams { - [param: string]: string | number | boolean; - sc_apikey: string; - sc_site: string; - sc_lang: string; - tracking: boolean; -} + /** + * Layout Service "named" configuration + */ + configurationName?: string; +}; -interface FetchOptions { - layoutServiceConfig: LayoutServiceConfig; - querystringParams: FetchParams; -} +/** + * Data fetcher resolver in order to provide custom data fetcher + * @param {IncomingMessage} [req] Request instance + * @param {ServerResponse} [res] Response instance + */ +export type DataFetcherResolver = ( + req?: IncomingMessage, + res?: ServerResponse +) => HttpDataFetcher; /** * Fetch layout data using the Sitecore Layout Service REST API. * Uses Axios as the default data fetcher (@see AxiosDataFetcher). */ -export class RestLayoutService implements LayoutService { - constructor(private serviceConfig: RestLayoutServiceConfig) {} +export class RestLayoutService extends LayoutServiceBase { + constructor(private serviceConfig: RestLayoutServiceConfig) { + super(); + } /** * Fetch layout data for an item. @@ -94,11 +181,35 @@ export class RestLayoutService implements LayoutService { ): Promise { const fetchOptions = this.getFetchOptions(language); + debug.layout( + 'fetching layout data for %s %s %s', + itemPath, + language, + this.serviceConfig.siteName + ); const fetcher = this.serviceConfig.dataFetcherResolver ? this.serviceConfig.dataFetcherResolver(req, res) : this.getDefaultFetcher(req, res); - return fetchRouteData(itemPath, { fetcher, ...fetchOptions }); + return fetchRouteData(itemPath, { fetcher, ...fetchOptions }).catch((error) => { + if (error.response?.status === 404) { + // Aligned with response of GraphQL Layout Service in case if layout is not found. + // When 404 Rest Layout Service returns + // { + // sitecore: { + // context: { + // pageEditing: false, + // language + // }, + // route: null + // }, + // } + // + return error.response.data; + } + + throw error; + }); } /** @@ -121,6 +232,13 @@ export class RestLayoutService implements LayoutService { ): Promise { const fetchOptions = this.getFetchOptions(language); + debug.layout( + 'fetching placeholder data for %s %s %s %s', + placeholderName, + itemPath, + language, + this.serviceConfig.siteName + ); const fetcher = this.serviceConfig.dataFetcherResolver ? this.serviceConfig.dataFetcherResolver(req, res) : this.getDefaultFetcher(req, res); @@ -144,6 +262,7 @@ export class RestLayoutService implements LayoutService { return { layoutServiceConfig: { host: this.serviceConfig.apiHost, + configurationName: this.serviceConfig.configurationName, }, querystringParams: { ...params }, }; @@ -156,7 +275,9 @@ export class RestLayoutService implements LayoutService { * @returns default fetcher */ private getDefaultFetcher = (req?: IncomingMessage, res?: ServerResponse) => { - const config = {} as AxiosDataFetcherConfig; + const config = { + debugger: debug.layout, + } as AxiosDataFetcherConfig; if (req && res) { config.onReq = this.setupReqHeaders(req); config.onRes = this.setupResHeaders(res); @@ -177,6 +298,7 @@ export class RestLayoutService implements LayoutService { */ private setupReqHeaders(req: IncomingMessage) { return (reqConfig: AxiosRequestConfig) => { + debug.layout('performing request header passing'); reqConfig.headers.common = { ...reqConfig.headers.common, ...(req.headers.cookie && { cookie: req.headers.cookie }), @@ -195,6 +317,7 @@ export class RestLayoutService implements LayoutService { */ private setupResHeaders(res: ServerResponse) { return (serverRes: AxiosResponse) => { + debug.layout('performing response header passing'); serverRes.headers['set-cookie'] && res.setHeader('set-cookie', serverRes.headers['set-cookie']); return serverRes; diff --git a/packages/sitecore-jss/src/layoutDataUtils.ts b/packages/sitecore-jss/src/layout/utils.ts similarity index 98% rename from packages/sitecore-jss/src/layoutDataUtils.ts rename to packages/sitecore-jss/src/layout/utils.ts index 4111422568..fb06b8c494 100644 --- a/packages/sitecore-jss/src/layoutDataUtils.ts +++ b/packages/sitecore-jss/src/layout/utils.ts @@ -1,4 +1,4 @@ -import { ComponentRendering, Field, HtmlElementRendering, Item } from './dataModels'; +import { ComponentRendering, Field, HtmlElementRendering, Item } from './models'; type Fields = { [name: string]: Field | Item[] }; diff --git a/packages/sitecore-jss/src/mediaApi.test.ts b/packages/sitecore-jss/src/media-api.test.ts similarity index 84% rename from packages/sitecore-jss/src/mediaApi.test.ts rename to packages/sitecore-jss/src/media-api.test.ts index c7d25a2318..c9c3ab6eb5 100644 --- a/packages/sitecore-jss/src/mediaApi.test.ts +++ b/packages/sitecore-jss/src/media-api.test.ts @@ -4,7 +4,7 @@ import chai = require('chai'); import chaiString = require('chai-string'); import URL = require('url-parse'); -import { findEditorImageTag, getSrcSet, updateImageUrl, getRequiredParams } from './mediaApi'; +import { findEditorImageTag, getSrcSet, updateImageUrl, getRequiredParams } from './media-api'; // chai.should(); const expect = chai.use(chaiString).expect; @@ -64,26 +64,57 @@ describe('getRequiredParams', () => { }); describe('updateImageUrl', () => { + it('should return original if no params', () => { + const original = + 'http://sitecore/-/media/lorem/ipsum.jpg?h=1&w=2&hash=CC5043DC03C6C27F40EDB08CF84AB8670C05D63D'; + const updated = updateImageUrl(original); + expect(updated).to.equal(original); + }); + it('should override parameters with those provided', () => { + const original = 'http://sitecore/-/media/lorem.png?mh=3&mw=4'; + const updated = updateImageUrl(original, { mh: '5', mw: '6' }); + const url = URL(updated, true); + expect(url.query.mh).to.equal('5'); + expect(url.query.mw).to.equal('6'); + }); + + it('should remove non-required query parameters not provided', () => { const original = - 'http://sitecore/-/media/lorem.png?h=1&w=2&mh=3&mw=4hash=CC5043DC03C6C27F40EDB08CF84AB8670C05D63D'; + 'http://sitecore/-/media/lorem.png?h=1&w=2&mh=3&mw=4&hash=CC5043DC03C6C27F40EDB08CF84AB8670C05D63D'; const updated = updateImageUrl(original, { mh: '5', mw: '6' }); const url = URL(updated, true); expect(url.query.mh).to.equal('5'); expect(url.query.mw).to.equal('6'); - expect(url.query.hash).to.be.undefined; // eslint-disable-line no-unused-expressions + expect(url.query.h).to.be.undefined; + expect(url.query.w).to.be.undefined; + expect(url.query.hash).to.be.undefined; + }); + + it('should preserve required query parameters', () => { + const original = + 'http://sitecore/-/media/lorem.png?rev=100&db=master&la=en&vs=200&ts=foo&mh=3&mw=4'; + const updated = updateImageUrl(original, { mh: '5', mw: '6' }); + const url = URL(updated, true); + expect(url.query.mh).to.equal('5'); + expect(url.query.mw).to.equal('6'); + expect(url.query.rev).to.equal('100'); + expect(url.query.db).to.equal('master'); + expect(url.query.la).to.equal('en'); + expect(url.query.vs).to.equal('200'); + expect(url.query.ts).to.equal('foo'); }); it('should replace /-/media/ with /-/jssmedia/', () => { const original = 'http://sitecore/-/media/lorem/ipsum.jpg'; - const updated = updateImageUrl(original); + const updated = updateImageUrl(original, { foo: 'bar' }); const url = URL(updated); expect(url.pathname).to.startsWith('/-/jssmedia/'); }); it('should replace /~/media/ with /~/jssmedia/', () => { const original = 'http://sitecore/~/media/lorem/ipsum.jpg'; - const updated = updateImageUrl(original); + const updated = updateImageUrl(original, { foo: 'bar' }); const url = URL(updated); expect(url.pathname).to.startsWith('/~/jssmedia/'); }); @@ -92,7 +123,7 @@ describe('updateImageUrl', () => { it('should replace /-assets/ with /-/jssmedia', () => { const original = 'http://sitecore/-assets/lorem/ipsum.jpg'; const mediaUrlPrefix = /\/([-~]{1})assets\//i; - const updated = updateImageUrl(original, undefined, mediaUrlPrefix); + const updated = updateImageUrl(original, { foo: 'bar' }, mediaUrlPrefix); const url = URL(updated); expect(url.pathname).to.startsWith('/-/jssmedia/'); }); @@ -100,7 +131,7 @@ describe('updateImageUrl', () => { it('should replace /~assets/ with /~/jssmedia', () => { const original = 'http://sitecore/~assets/lorem/ipsum.jpg'; const mediaUrlPrefix = /\/([-~]{1})assets\//i; - const updated = updateImageUrl(original, undefined, mediaUrlPrefix); + const updated = updateImageUrl(original, { foo: 'bar' }, mediaUrlPrefix); const url = URL(updated); expect(url.pathname).to.startsWith('/~/jssmedia/'); }); @@ -108,7 +139,7 @@ describe('updateImageUrl', () => { it('should replace /-/assets/ with /-/jssmedia/', () => { const original = 'http://sitecore/-/assets/lorem/ipsum.jpg'; const mediaUrlPrefix = /\/([-~]{1})\/assets\//i; - const updated = updateImageUrl(original, undefined, mediaUrlPrefix); + const updated = updateImageUrl(original, { foo: 'bar' }, mediaUrlPrefix); const url = URL(updated); expect(url.pathname).to.startsWith('/-/jssmedia/'); }); @@ -116,7 +147,7 @@ describe('updateImageUrl', () => { it('should replace /~/assets/ with /~/jssmedia/', () => { const original = 'http://sitecore/~/assets/lorem/ipsum.jpg'; const mediaUrlPrefix = /\/([-~]{1})\/assets\//i; - const updated = updateImageUrl(original, undefined, mediaUrlPrefix); + const updated = updateImageUrl(original, { foo: 'bar' }, mediaUrlPrefix); const url = URL(updated); expect(url.pathname).to.startsWith('/~/jssmedia/'); }); diff --git a/packages/sitecore-jss/src/mediaApi.ts b/packages/sitecore-jss/src/media-api.ts similarity index 83% rename from packages/sitecore-jss/src/mediaApi.ts rename to packages/sitecore-jss/src/media-api.ts index 2fd4d5e27b..314ffd887b 100644 --- a/packages/sitecore-jss/src/mediaApi.ts +++ b/packages/sitecore-jss/src/media-api.ts @@ -49,10 +49,11 @@ export const getRequiredParams = (qs: { [key: string]: string | undefined }) => }; /** - * Receives a Sitecore media URL and replaces `/~/media` or `/-/media` with `/~/jssmedia` or `/-/jssmedia`, respectively. - * Can use `mediaUrlPrefix` in order to use custom checker. - * This replacement allows the JSS media handler to be used for JSS app assets. - * Also, any provided `params` are used as the querystring parameters for the media URL. + * Prepares a Sitecore media URL with `params` for use by the JSS media handler. + * This is done by replacing `/~/media` or `/-/media` with `/~/jssmedia` or `/-/jssmedia`, respectively. + * Provided `params` are used as the querystring parameters for the media URL. + * Can use `mediaUrlPrefix` in order to use a custom prefix. + * If no `params` are sent, the original media URL is returned. * @param {string} url * @param {Object} [params] * @param {RegExp} [mediaUrlPrefix=mediaUrlPrefixRegex] @@ -63,6 +64,10 @@ export const updateImageUrl = ( params?: { [key: string]: string | number | undefined } | null, mediaUrlPrefix: RegExp = mediaUrlPrefixRegex ) => { + if (!params || Object.keys(params).length === 0) { + // if params aren't supplied, no need to run it through JSS media handler + return url; + } // polyfill node `global` in browser to workaround https://github.com/unshiftio/url-parse/issues/150 // eslint-disable-next-line @typescript-eslint/no-explicit-any if (typeof window !== 'undefined' && !(window as any).global) { @@ -71,18 +76,14 @@ export const updateImageUrl = ( } const parsed = URL(url, {}, true); - const query = { ...(params || parsed.query) }; - - // In case if imageParams provided - if (params) { - const requiredParams = getRequiredParams(parsed.query); + const requiredParams = getRequiredParams(parsed.query); - Object.entries(requiredParams).forEach(([key, param]) => { - if (param) { - query[key] = param; - } - }); - } + const query = { ...params }; + Object.entries(requiredParams).forEach(([key, param]) => { + if (param) { + query[key] = param; + } + }); parsed.set('query', query); diff --git a/packages/sitecore-jss/src/testData/mockAppRootQueryResponse.json b/packages/sitecore-jss/src/testData/mockAppRootQueryResponse.json new file mode 100644 index 0000000000..5b18fe94ec --- /dev/null +++ b/packages/sitecore-jss/src/testData/mockAppRootQueryResponse.json @@ -0,0 +1,13 @@ +{ + "data": { + "layout": { + "homePage": { + "rootItem": [ + { + "id": "GUIDGUIDGUID" + } + ] + } + } + } +} diff --git a/packages/sitecore-jss/src/testData/mockDictionaryQueryResponse.json b/packages/sitecore-jss/src/testData/mockDictionaryQueryResponse.json new file mode 100644 index 0000000000..401572eb50 --- /dev/null +++ b/packages/sitecore-jss/src/testData/mockDictionaryQueryResponse.json @@ -0,0 +1,29 @@ +{ + "data": { + "search": { + "total": 5, + "pageInfo": { + "endCursor": "NQ==", + "hasNext": false + }, + "results": [ + { + "key": { + "value": "foo" + }, + "phrase": { + "value": "foo" + } + }, + { + "key": { + "value": "bar" + }, + "phrase": { + "value": "bar" + } + } + ] + } + } +} diff --git a/packages/sitecore-jss/src/util.test.ts b/packages/sitecore-jss/src/util.test.ts deleted file mode 100644 index edaf7c6e6d..0000000000 --- a/packages/sitecore-jss/src/util.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* eslint-disable no-unused-expressions */ - -import { expect } from 'chai'; -import { isExperienceEditorActive, isServer } from './util'; - -// must make TypeScript happy with `global` variable modification - -interface CustomWindow { - [key: string]: unknown; - document: unknown; -} - -interface Global { - window: CustomWindow | undefined; -} - -declare const global: Global; - -describe('index', () => { - describe('isServer', () => { - it('should return true when invoked on server', () => { - expect(isServer()).to.be.true; - }); - - it('should return false when not invoked on server', () => { - global.window = { document: {} }; - - expect(isServer()).to.be.false; - }); - - after(() => { - global.window = undefined; - }); - }); - - describe('isExperienceEditorActive', () => { - it('should return true when EE is active', () => { - global.window = { - document: {}, - Sitecore: { PageModes: { ChromeManager: {} } }, - }; - expect(isExperienceEditorActive()).to.be.true; - }); - - it('should return false when EE is not active', () => { - global.window = { document: {}, Sitecore: null }; - expect(isExperienceEditorActive()).to.be.false; - }); - - after(() => { - global.window = undefined; - }); - }); -}); diff --git a/packages/sitecore-jss/src/util.ts b/packages/sitecore-jss/src/utils/experience-editor.ts similarity index 82% rename from packages/sitecore-jss/src/util.ts rename to packages/sitecore-jss/src/utils/experience-editor.ts index 66618db3c6..69d3bfe913 100644 --- a/packages/sitecore-jss/src/util.ts +++ b/packages/sitecore-jss/src/utils/experience-editor.ts @@ -1,4 +1,4 @@ -export const isServer = (): boolean => !(typeof window !== 'undefined' && window.document); +import isServer from './is-server'; export const isExperienceEditorActive = (): boolean => { if (isServer()) { diff --git a/packages/sitecore-jss/src/utils/index.ts b/packages/sitecore-jss/src/utils/index.ts new file mode 100644 index 0000000000..f157a76c4d --- /dev/null +++ b/packages/sitecore-jss/src/utils/index.ts @@ -0,0 +1,4 @@ +import isServer from './is-server'; +import resolveUrl from './resolve-url'; +export { isServer, resolveUrl }; +export { isExperienceEditorActive, resetExperienceEditorChromes } from './experience-editor'; diff --git a/packages/sitecore-jss/src/utils/is-server.ts b/packages/sitecore-jss/src/utils/is-server.ts new file mode 100644 index 0000000000..d02e191f9b --- /dev/null +++ b/packages/sitecore-jss/src/utils/is-server.ts @@ -0,0 +1,9 @@ +/** + * Determines whether the current execution context is server-side + * @returns true if executing server-side + */ +function isServer(): boolean { + return !(typeof window !== 'undefined' && window.document); +} + +export default isServer; diff --git a/packages/sitecore-jss/src/utils/resolve-url.ts b/packages/sitecore-jss/src/utils/resolve-url.ts new file mode 100644 index 0000000000..b41b971b60 --- /dev/null +++ b/packages/sitecore-jss/src/utils/resolve-url.ts @@ -0,0 +1,49 @@ +import isServer from './is-server'; +import querystring from 'querystring'; + +/** + * note: encodeURIComponent is available via browser (window) or natively in node.js + * if you use another js engine for server-side rendering you may not have native encodeURIComponent + * and would then need to install a package for that functionality + * @param {Object} params + */ +function getQueryString(params: querystring.ParsedUrlQueryInput) { + return Object.keys(params) + .map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(String(params[k]))}`) + .join('&'); +} + +/** + * Resolves a base URL that may contain query string parameters and an additional set of query + * string parameters into a unified string representation. + * @param {string} urlBase the base URL that may contain query string parameters + * @param {Object} params query string parameters + * @returns a URL string + * @throws {RangeError} if the provided url is an empty string + */ +function resolveUrl(urlBase: string, params: querystring.ParsedUrlQueryInput = {}): string { + if (!urlBase) { + throw new RangeError('url must be a non-empty string'); + } + + // This is a better way to work with URLs since it handles different user input + // edge cases. This works in Node and all browser except IE11. + // https://developer.mozilla.org/en-US/docs/Web/API/URL + // TODO: Verify our browser support requirements. + if (isServer()) { + const url = new URL(urlBase); + for (const key in params) { + if ({}.hasOwnProperty.call(params, key)) { + url.searchParams.append(key, String(params[key])); + } + } + const result = url.toString(); + return result; + } + + const qs = getQueryString(params); + const result = urlBase.indexOf('?') !== -1 ? `${urlBase}&${qs}` : `${urlBase}?${qs}`; + return result; +} + +export default resolveUrl; diff --git a/packages/sitecore-jss/src/utils/utils.test.ts b/packages/sitecore-jss/src/utils/utils.test.ts new file mode 100644 index 0000000000..5bf66b7104 --- /dev/null +++ b/packages/sitecore-jss/src/utils/utils.test.ts @@ -0,0 +1,94 @@ +/* eslint-disable no-unused-expressions */ +import { expect } from 'chai'; +import { isExperienceEditorActive, isServer, resolveUrl } from '.'; + +// must make TypeScript happy with `global` variable modification +interface CustomWindow { + [key: string]: unknown; + document: unknown; +} + +interface Global { + window: CustomWindow | undefined; +} + +declare const global: Global; + +describe('utils', () => { + describe('isServer', () => { + it('should return true when invoked on server', () => { + expect(isServer()).to.be.true; + }); + + it('should return false when not invoked on server', () => { + global.window = { document: {} }; + + expect(isServer()).to.be.false; + }); + + after(() => { + global.window = undefined; + }); + }); + + describe('isExperienceEditorActive', () => { + it('should return true when EE is active', () => { + global.window = { + document: {}, + Sitecore: { PageModes: { ChromeManager: {} } }, + }; + expect(isExperienceEditorActive()).to.be.true; + }); + + it('should return false when EE is not active', () => { + global.window = { document: {}, Sitecore: null }; + expect(isExperienceEditorActive()).to.be.false; + }); + + after(() => { + global.window = undefined; + }); + }); + + describe('resolveUrl', () => { + const testData = [ + { + test: 'should support querystring params', + url: 'https://test.io', + params: { foo: 'foo', bar: 1 }, + expected: 'https://test.io/?foo=foo&bar=1', + }, + { + test: 'should support empty querystring params', + url: 'https://test.io', + params: {}, + expected: 'https://test.io/', + }, + { + test: 'should support undefined querystring params', + url: 'https://test.io', + params: undefined, + expected: 'https://test.io/', + }, + { + test: 'should support undefined querystring params', + url: 'https://test.io', + params: undefined, + expected: 'https://test.io/', + }, + { + test: 'should support existing querystring params in url', + url: 'https://test.io?foo=foo', + params: { bar: 1 }, + expected: 'https://test.io/?foo=foo&bar=1', + }, + ]; + + testData.forEach(({ test, url, params, expected }) => { + it(test, () => { + const result = resolveUrl(url, params); + expect(result).to.equal(expected); + }); + }); + }); +}); diff --git a/packages/sitecore-jss/tsconfig.json b/packages/sitecore-jss/tsconfig.json index 487445cf87..4b060f84a8 100644 --- a/packages/sitecore-jss/tsconfig.json +++ b/packages/sitecore-jss/tsconfig.json @@ -23,14 +23,14 @@ "declaration": true, "declarationDir": "./types", "allowSyntheticDefaultImports": true, - "esModuleInterop": true + "esModuleInterop": true, + "resolveJsonModule": true, }, "exclude": [ "node_modules", "types", "dist", - "src/customTypes", "src/**/*.test.ts", - "src/testData/*.ts" + "src/testData/*", ] } diff --git a/packages/sitecore-pipelines/README.md b/packages/sitecore-pipelines/README.md index 16ea02573d..b6c572b5df 100644 --- a/packages/sitecore-pipelines/README.md +++ b/packages/sitecore-pipelines/README.md @@ -2,4 +2,4 @@ This module is provided as a part of Sitecore JavaScript Services. It contains a JavaScript implementation of the Sitecore pipeline pattern that is used to allow customizing the disconnected manifest. -Consult the [Sitecore JSS documentation](https://jss.sitecore.net) for further details. +Consult the [Sitecore JSS documentation](https://jss.sitecore.com) for further details. diff --git a/packages/sitecore-pipelines/package-lock.json b/packages/sitecore-pipelines/package-lock.json index 1008a93574..d562918057 100644 --- a/packages/sitecore-pipelines/package-lock.json +++ b/packages/sitecore-pipelines/package-lock.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-pipelines", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -346,6 +346,15 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -670,6 +679,7 @@ "has": "^1.0.3", "has-symbols": "^1.0.1", "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", "is-regex": "^1.1.1", "object-inspect": "^1.8.0", "object-keys": "^1.1.1", @@ -684,8 +694,100 @@ "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", "requires": { "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", "has-symbols": "^1.0.1", "object-keys": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + } + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + } } } } @@ -1103,6 +1205,16 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -1184,6 +1296,11 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1202,9 +1319,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "ignore": { @@ -1261,6 +1378,11 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1270,6 +1392,14 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "requires": { + "call-bind": "^1.0.0" + } + }, "is-buffer": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", @@ -1313,12 +1443,22 @@ "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", "dev": true }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, "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 }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -1354,8 +1494,7 @@ "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 + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" }, "is-symbol": { "version": "1.0.3", @@ -1465,9 +1604,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "log-symbols": { @@ -2417,6 +2556,24 @@ "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", "dev": true }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + } + } + }, "uri-js": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", @@ -2451,6 +2608,18 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -2523,9 +2692,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { diff --git a/packages/sitecore-pipelines/package.json b/packages/sitecore-pipelines/package.json index edc004b219..5f2bd50716 100644 --- a/packages/sitecore-pipelines/package.json +++ b/packages/sitecore-pipelines/package.json @@ -1,6 +1,6 @@ { "name": "@sitecore-jss/sitecore-pipelines", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "Sitecore Pipelines in JavaScript.", "main": "dist/index.js", "scripts": { @@ -17,10 +17,10 @@ }, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "license": "Apache-2.0", - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "bugs": { "url": "https://github.com/sitecore/jss/issues" }, diff --git a/ref-docs/sitecore-jss-nextjs/README.md b/ref-docs/sitecore-jss-nextjs/README.md new file mode 100644 index 0000000000..92af2d4fab --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/README.md @@ -0,0 +1,25 @@ +Sitecore JavaScript Rendering SDK for Next.js + +# Sitecore JavaScript Rendering SDK for Next.js + +## Table of contents + +### Modules + +- [components/ComponentPropsContext](modules/components_ComponentPropsContext.md) +- [components/Link](modules/components_Link.md) +- [components/RichText](modules/components_RichText.md) +- [constants](modules/constants.md) +- [index](modules/index.md) +- [middleware](modules/middleware.md) +- [middleware/editing-data-cache](modules/middleware_editing_data_cache.md) +- [middleware/editing-data-middleware](modules/middleware_editing_data_middleware.md) +- [middleware/editing-render-middleware](modules/middleware_editing_render_middleware.md) +- [services/component-props-service](modules/services_component_props_service.md) +- [services/disconnected-sitemap-service](modules/services_disconnected_sitemap_service.md) +- [services/editing-data-service](modules/services_editing_data_service.md) +- [services/graphql-sitemap-service](modules/services_graphql_sitemap_service.md) +- [sharedTypes/component-module](modules/sharedTypes_component_module.md) +- [sharedTypes/component-props](modules/sharedTypes_component_props.md) +- [sharedTypes/editing-data](modules/sharedTypes_editing_data.md) +- [utils](modules/utils.md) diff --git a/ref-docs/sitecore-jss-nextjs/classes/index.AxiosDataFetcher.md b/ref-docs/sitecore-jss-nextjs/classes/index.AxiosDataFetcher.md new file mode 100644 index 0000000000..86eb20d9f2 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/index.AxiosDataFetcher.md @@ -0,0 +1,214 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / AxiosDataFetcher + +# Class: AxiosDataFetcher + +[index](../modules/index.md).AxiosDataFetcher + +## Table of contents + +### Constructors + +- [constructor](index.AxiosDataFetcher.md#constructor) + +### Properties + +- [instance](index.AxiosDataFetcher.md#instance) + +### Methods + +- [delete](index.AxiosDataFetcher.md#delete) +- [fetch](index.AxiosDataFetcher.md#fetch) +- [get](index.AxiosDataFetcher.md#get) +- [head](index.AxiosDataFetcher.md#head) +- [post](index.AxiosDataFetcher.md#post) +- [put](index.AxiosDataFetcher.md#put) + +## Constructors + +### constructor + +• **new AxiosDataFetcher**(`dataFetcherConfig?`) + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `dataFetcherConfig?` | [`AxiosDataFetcherConfig`](../modules/index.md#axiosdatafetcherconfig) | Axios data fetcher configuration. Note `withCredentials` is set to `true` by default in order for Sitecore cookies to be included in CORS requests (which is necessary for analytics and such). | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/axios-fetcher.d.ts:41 + +## Properties + +### instance + +• `Private` **instance**: `any` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/axios-fetcher.d.ts:35 + +## Methods + +### delete + +▸ **delete**(`url`, `config?`): `Promise`<`AxiosResponse`<`any`\>\> + +Perform a DELETE request + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `config?` | `AxiosRequestConfig` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`any`\>\> + +response + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/axios-fetcher.d.ts:85 + +___ + +### fetch + +▸ **fetch**<`T`\>(`url`, `data?`): `Promise`<`AxiosResponse`<`T`\>\> + +Implements a data fetcher. @see HttpDataFetcher type for implementation details/notes. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `data?` | `unknown` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`T`\>\> + +response + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/axios-fetcher.d.ts:48 + +___ + +### get + +▸ **get**<`T`\>(`url`, `config?`): `Promise`<`AxiosResponse`<`T`\>\> + +Perform a GET request + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `config?` | `AxiosRequestConfig` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`T`\>\> + +response + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/axios-fetcher.d.ts:55 + +___ + +### head + +▸ **head**(`url`, `config?`): `Promise`<`AxiosResponse`<`any`\>\> + +Perform a HEAD request + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `config?` | `AxiosRequestConfig` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`any`\>\> + +response + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/axios-fetcher.d.ts:62 + +___ + +### post + +▸ **post**(`url`, `data?`, `config?`): `Promise`<`AxiosResponse`<`any`\>\> + +Perform a POST request + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `data?` | `unknown` | - | +| `config?` | `AxiosRequestConfig` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`any`\>\> + +response + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/axios-fetcher.d.ts:70 + +___ + +### put + +▸ **put**(`url`, `data?`, `config?`): `Promise`<`AxiosResponse`<`any`\>\> + +Perform a PUT request + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `data?` | `unknown` | - | +| `config?` | `AxiosRequestConfig` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`any`\>\> + +response + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/axios-fetcher.d.ts:78 diff --git a/ref-docs/sitecore-jss-nextjs/classes/index.GraphQLDictionaryService.md b/ref-docs/sitecore-jss-nextjs/classes/index.GraphQLDictionaryService.md new file mode 100644 index 0000000000..a5a561f18b --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/index.GraphQLDictionaryService.md @@ -0,0 +1,226 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / GraphQLDictionaryService + +# Class: GraphQLDictionaryService + +[index](../modules/index.md).GraphQLDictionaryService + +Service that fetch dictionary data using Sitecore's GraphQL API. + +**`mixes`** SearchQueryService + +## Hierarchy + +- `DictionaryServiceBase` + + ↳ **`GraphQLDictionaryService`** + +## Table of contents + +### Constructors + +- [constructor](index.GraphQLDictionaryService.md#constructor) + +### Properties + +- [graphQLClient](index.GraphQLDictionaryService.md#graphqlclient) +- [options](index.GraphQLDictionaryService.md#options) +- [searchService](index.GraphQLDictionaryService.md#searchservice) + +### Methods + +- [fetchDictionaryData](index.GraphQLDictionaryService.md#fetchdictionarydata) +- [getCacheClient](index.GraphQLDictionaryService.md#getcacheclient) +- [getCacheValue](index.GraphQLDictionaryService.md#getcachevalue) +- [getGraphQLClient](index.GraphQLDictionaryService.md#getgraphqlclient) +- [setCacheValue](index.GraphQLDictionaryService.md#setcachevalue) + +## Constructors + +### constructor + +• **new GraphQLDictionaryService**(`options`) + +Creates an instance of graphQL dictionary service with the provided options + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `options` | [`GraphQLDictionaryServiceConfig`](../interfaces/index.GraphQLDictionaryServiceConfig.md) | instance | + +#### Overrides + +DictionaryServiceBase.constructor + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/graphql-dictionary-service.d.ts:49 + +## Properties + +### graphQLClient + +• `Private` **graphQLClient**: `any` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/graphql-dictionary-service.d.ts:43 + +___ + +### options + +• **options**: [`GraphQLDictionaryServiceConfig`](../interfaces/index.GraphQLDictionaryServiceConfig.md) + +#### Overrides + +DictionaryServiceBase.options + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/graphql-dictionary-service.d.ts:42 + +___ + +### searchService + +• `Private` **searchService**: `any` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/graphql-dictionary-service.d.ts:44 + +## Methods + +### fetchDictionaryData + +▸ **fetchDictionaryData**(`language`): `Promise`<[`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md)\> + +Fetches dictionary data for internalization. + +**`default`** query (@see query) + +**`throws`** {Error} if the app root was not found for the specified site and language. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `language` | `string` | the language to fetch | + +#### Returns + +`Promise`<[`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md)\> + +dictionary phrases + +#### Overrides + +DictionaryServiceBase.fetchDictionaryData + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/graphql-dictionary-service.d.ts:57 + +___ + +### getCacheClient + +▸ `Protected` **getCacheClient**(): `CacheClient`<[`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md)\> + +Gets a cache client that can cache data. Uses memory-cache as the default +library for caching (@see MemoryCacheClient). Override this method if you +want to use something else. + +#### Returns + +`CacheClient`<[`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md)\> + +implementation + +#### Inherited from + +DictionaryServiceBase.getCacheClient + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/dictionary-service.d.ts:49 + +___ + +### getCacheValue + +▸ **getCacheValue**(`key`): ``null`` \| [`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) + +Retrieves a @see DictionaryPhrases value from the cache. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | + +#### Returns + +``null`` \| [`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) + +The @see DictionaryPhrases value, or null if the specified key is not found in the cache. + +#### Inherited from + +DictionaryServiceBase.getCacheValue + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/dictionary-service.d.ts:42 + +___ + +### getGraphQLClient + +▸ `Protected` **getGraphQLClient**(): `GraphQLClient` + +Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default +library for fetching graphql data (@see GraphQLRequestClient). Override this method if you +want to use something else. + +#### Returns + +`GraphQLClient` + +implementation + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/graphql-dictionary-service.d.ts:64 + +___ + +### setCacheValue + +▸ **setCacheValue**(`key`, `value`): [`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) + +Caches a @see DictionaryPhrases value for the specified cache key. + +**`mixes`** CacheClient + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | +| `value` | [`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) | The value to cache. | + +#### Returns + +[`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) + +The value added to the cache. + +#### Inherited from + +DictionaryServiceBase.setCacheValue + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/dictionary-service.d.ts:36 diff --git a/ref-docs/sitecore-jss-nextjs/classes/index.GraphQLLayoutService.md b/ref-docs/sitecore-jss-nextjs/classes/index.GraphQLLayoutService.md new file mode 100644 index 0000000000..2d07a3b8b8 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/index.GraphQLLayoutService.md @@ -0,0 +1,142 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / GraphQLLayoutService + +# Class: GraphQLLayoutService + +[index](../modules/index.md).GraphQLLayoutService + +## Hierarchy + +- `LayoutServiceBase` + + ↳ **`GraphQLLayoutService`** + +## Table of contents + +### Constructors + +- [constructor](index.GraphQLLayoutService.md#constructor) + +### Properties + +- [graphQLClient](index.GraphQLLayoutService.md#graphqlclient) +- [serviceConfig](index.GraphQLLayoutService.md#serviceconfig) + +### Methods + +- [fetchLayoutData](index.GraphQLLayoutService.md#fetchlayoutdata) +- [getGraphQLClient](index.GraphQLLayoutService.md#getgraphqlclient) +- [getLayoutQuery](index.GraphQLLayoutService.md#getlayoutquery) + +## Constructors + +### constructor + +• **new GraphQLLayoutService**(`serviceConfig`) + +Fetch layout data using the Sitecore GraphQL endpoint. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `serviceConfig` | [`GraphQLLayoutServiceConfig`](../modules/index.md#graphqllayoutserviceconfig) | + +#### Overrides + +LayoutServiceBase.constructor + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/graphql-layout-service.d.ts:37 + +## Properties + +### graphQLClient + +• `Private` **graphQLClient**: `any` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/graphql-layout-service.d.ts:32 + +___ + +### serviceConfig + +• **serviceConfig**: [`GraphQLLayoutServiceConfig`](../modules/index.md#graphqllayoutserviceconfig) + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/graphql-layout-service.d.ts:31 + +## Methods + +### fetchLayoutData + +▸ **fetchLayoutData**(`itemPath`, `language?`): `Promise`<[`LayoutServiceData`](../interfaces/index.LayoutServiceData.md)\> + +Fetch layout data for an item. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `itemPath` | `string` | +| `language?` | `string` | + +#### Returns + +`Promise`<[`LayoutServiceData`](../interfaces/index.LayoutServiceData.md)\> + +layout service data + +#### Overrides + +LayoutServiceBase.fetchLayoutData + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/graphql-layout-service.d.ts:44 + +___ + +### getGraphQLClient + +▸ `Protected` **getGraphQLClient**(): `GraphQLClient` + +Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default +library for fetching graphql data (@see GraphQLRequestClient). Override this method if you +want to use something else. + +#### Returns + +`GraphQLClient` + +implementation + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/graphql-layout-service.d.ts:51 + +___ + +### getLayoutQuery + +▸ `Protected` **getLayoutQuery**(`itemPath`, `language?`): `string` + +Returns GraphQL Layout query + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `itemPath` | `string` | page route | +| `language?` | `string` | - | + +#### Returns + +`string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/graphql-layout-service.d.ts:57 diff --git a/ref-docs/sitecore-jss-nextjs/classes/index.GraphQLRequestClient.md b/ref-docs/sitecore-jss-nextjs/classes/index.GraphQLRequestClient.md new file mode 100644 index 0000000000..ef38e8f310 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/index.GraphQLRequestClient.md @@ -0,0 +1,121 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / GraphQLRequestClient + +# Class: GraphQLRequestClient + +[index](../modules/index.md).GraphQLRequestClient + +A GraphQL client for Sitecore APIs that uses the 'graphql-request' library. +https://github.com/prisma-labs/graphql-request + +## Implements + +- `GraphQLClient` + +## Table of contents + +### Constructors + +- [constructor](index.GraphQLRequestClient.md#constructor) + +### Properties + +- [client](index.GraphQLRequestClient.md#client) +- [debug](index.GraphQLRequestClient.md#debug) +- [endpoint](index.GraphQLRequestClient.md#endpoint) +- [headers](index.GraphQLRequestClient.md#headers) + +### Methods + +- [request](index.GraphQLRequestClient.md#request) + +## Constructors + +### constructor + +• **new GraphQLRequestClient**(`endpoint`, `clientConfig?`) + +Provides ability to execute graphql query using given `endpoint` + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `endpoint` | `string` | The Graphql endpoint | +| `clientConfig?` | `GraphQLRequestClientConfig` | - | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql-request-client.d.ts:43 + +## Properties + +### client + +• `Private` **client**: `any` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql-request-client.d.ts:35 + +___ + +### debug + +• `Private` **debug**: `any` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql-request-client.d.ts:37 + +___ + +### endpoint + +• `Private` **endpoint**: `any` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql-request-client.d.ts:34 + +___ + +### headers + +• `Private` **headers**: `any` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql-request-client.d.ts:36 + +## Methods + +### request + +▸ **request**<`T`\>(`query`, `variables?`): `Promise`<`T`\> + +Execute graphql request + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `query` | `string` \| `DocumentNode` | graphql query | +| `variables?` | `Object` | graphql variables | + +#### Returns + +`Promise`<`T`\> + +#### Implementation of + +GraphQLClient.request + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql-request-client.d.ts:49 diff --git a/ref-docs/sitecore-jss-nextjs/classes/index.RestDictionaryService.md b/ref-docs/sitecore-jss-nextjs/classes/index.RestDictionaryService.md new file mode 100644 index 0000000000..135ad43ff1 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/index.RestDictionaryService.md @@ -0,0 +1,217 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / RestDictionaryService + +# Class: RestDictionaryService + +[index](../modules/index.md).RestDictionaryService + +Fetch dictionary data using the Sitecore Dictionary Service REST API. +Uses Axios as the default data fetcher (@see AxiosDataFetcher). + +## Hierarchy + +- `DictionaryServiceBase` + + ↳ **`RestDictionaryService`** + +## Table of contents + +### Constructors + +- [constructor](index.RestDictionaryService.md#constructor) + +### Properties + +- [options](index.RestDictionaryService.md#options) + +### Accessors + +- [defaultFetcher](index.RestDictionaryService.md#defaultfetcher) + +### Methods + +- [fetchDictionaryData](index.RestDictionaryService.md#fetchdictionarydata) +- [getCacheClient](index.RestDictionaryService.md#getcacheclient) +- [getCacheValue](index.RestDictionaryService.md#getcachevalue) +- [getUrl](index.RestDictionaryService.md#geturl) +- [setCacheValue](index.RestDictionaryService.md#setcachevalue) + +## Constructors + +### constructor + +• **new RestDictionaryService**(`options`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `options` | [`RestDictionaryServiceConfig`](../modules/index.md#restdictionaryserviceconfig) | + +#### Overrides + +DictionaryServiceBase.constructor + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/rest-dictionary-service.d.ts:39 + +## Properties + +### options + +• **options**: [`RestDictionaryServiceConfig`](../modules/index.md#restdictionaryserviceconfig) + +#### Overrides + +DictionaryServiceBase.options + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/rest-dictionary-service.d.ts:34 + +## Accessors + +### defaultFetcher + +• `get` **defaultFetcher**(): [`HttpDataFetcher`](../modules/index.md#httpdatafetcher)<`RestDictionaryServiceData`\> + +Provides default @see AxiosDataFetcher data fetcher + +#### Returns + +[`HttpDataFetcher`](../modules/index.md#httpdatafetcher)<`RestDictionaryServiceData`\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/rest-dictionary-service.d.ts:38 + +## Methods + +### fetchDictionaryData + +▸ **fetchDictionaryData**(`language`): `Promise`<[`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md)\> + +Fetch dictionary data for a language. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `language` | `string` | + +#### Returns + +`Promise`<[`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md)\> + +#### Overrides + +DictionaryServiceBase.fetchDictionaryData + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/rest-dictionary-service.d.ts:44 + +___ + +### getCacheClient + +▸ `Protected` **getCacheClient**(): `CacheClient`<[`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md)\> + +Gets a cache client that can cache data. Uses memory-cache as the default +library for caching (@see MemoryCacheClient). Override this method if you +want to use something else. + +#### Returns + +`CacheClient`<[`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md)\> + +implementation + +#### Inherited from + +DictionaryServiceBase.getCacheClient + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/dictionary-service.d.ts:49 + +___ + +### getCacheValue + +▸ **getCacheValue**(`key`): ``null`` \| [`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) + +Retrieves a @see DictionaryPhrases value from the cache. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | + +#### Returns + +``null`` \| [`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) + +The @see DictionaryPhrases value, or null if the specified key is not found in the cache. + +#### Inherited from + +DictionaryServiceBase.getCacheValue + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/dictionary-service.d.ts:42 + +___ + +### getUrl + +▸ `Protected` **getUrl**(`language`): `string` + +Generate dictionary service url + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `language` | `string` | + +#### Returns + +`string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/rest-dictionary-service.d.ts:49 + +___ + +### setCacheValue + +▸ **setCacheValue**(`key`, `value`): [`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) + +Caches a @see DictionaryPhrases value for the specified cache key. + +**`mixes`** CacheClient + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | +| `value` | [`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) | The value to cache. | + +#### Returns + +[`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) + +The value added to the cache. + +#### Inherited from + +DictionaryServiceBase.setCacheValue + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/dictionary-service.d.ts:36 diff --git a/ref-docs/sitecore-jss-nextjs/classes/index.RestLayoutService.md b/ref-docs/sitecore-jss-nextjs/classes/index.RestLayoutService.md new file mode 100644 index 0000000000..7e47c84e59 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/index.RestLayoutService.md @@ -0,0 +1,190 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / RestLayoutService + +# Class: RestLayoutService + +[index](../modules/index.md).RestLayoutService + +Fetch layout data using the Sitecore Layout Service REST API. +Uses Axios as the default data fetcher (@see AxiosDataFetcher). + +## Hierarchy + +- `LayoutServiceBase` + + ↳ **`RestLayoutService`** + +## Table of contents + +### Constructors + +- [constructor](index.RestLayoutService.md#constructor) + +### Properties + +- [getDefaultFetcher](index.RestLayoutService.md#getdefaultfetcher) +- [getFetchOptions](index.RestLayoutService.md#getfetchoptions) +- [serviceConfig](index.RestLayoutService.md#serviceconfig) +- [setupReqHeaders](index.RestLayoutService.md#setupreqheaders) +- [setupResHeaders](index.RestLayoutService.md#setupresheaders) + +### Methods + +- [fetchLayoutData](index.RestLayoutService.md#fetchlayoutdata) +- [fetchPlaceholderData](index.RestLayoutService.md#fetchplaceholderdata) + +## Constructors + +### constructor + +• **new RestLayoutService**(`serviceConfig`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `serviceConfig` | [`RestLayoutServiceConfig`](../modules/index.md#restlayoutserviceconfig) | + +#### Overrides + +LayoutServiceBase.constructor + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:103 + +## Properties + +### getDefaultFetcher + +• `Private` **getDefaultFetcher**: `any` + +Provides default @see AxiosDataFetcher data fetcher + +**`param`** Request instance + +**`param`** Response instance + +**`returns`** default fetcher + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:137 + +___ + +### getFetchOptions + +• `Private` **getFetchOptions**: `any` + +Provides fetch options in order to fetch data + +**`param`** language will be applied to `sc_lang` param + +**`returns`** fetch options + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:130 + +___ + +### serviceConfig + +• `Private` **serviceConfig**: `any` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:102 + +___ + +### setupReqHeaders + +• `Private` **setupReqHeaders**: `any` + +Setup request headers + +**`param`** + +**`returns`** axios request config + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:143 + +___ + +### setupResHeaders + +• `Private` **setupResHeaders**: `any` + +Setup response headers based on response from layout service + +**`param`** + +**`returns`** response + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:149 + +## Methods + +### fetchLayoutData + +▸ **fetchLayoutData**(`itemPath`, `language?`, `req?`, `res?`): `Promise`<[`LayoutServiceData`](../interfaces/index.LayoutServiceData.md)\> + +Fetch layout data for an item. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `itemPath` | `string` | +| `language?` | `string` | +| `req?` | `IncomingMessage` | +| `res?` | `ServerResponse` | + +#### Returns + +`Promise`<[`LayoutServiceData`](../interfaces/index.LayoutServiceData.md)\> + +layout service data + +#### Overrides + +LayoutServiceBase.fetchLayoutData + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:112 + +___ + +### fetchPlaceholderData + +▸ **fetchPlaceholderData**(`placeholderName`, `itemPath`, `language?`, `req?`, `res?`): `Promise`<`PlaceholderData`\> + +Fetch layout data for a particular placeholder. +Makes a request to Sitecore Layout Service for the specified placeholder in +a specific route item. Allows you to retrieve rendered data for individual placeholders instead of entire routes. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `placeholderName` | `string` | +| `itemPath` | `string` | +| `language?` | `string` | +| `req?` | `IncomingMessage` | +| `res?` | `ServerResponse` | + +#### Returns + +`Promise`<`PlaceholderData`\> + +placeholder data + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:124 diff --git a/ref-docs/sitecore-jss-nextjs/classes/index.SitecoreContext.md b/ref-docs/sitecore-jss-nextjs/classes/index.SitecoreContext.md new file mode 100644 index 0000000000..7eb018cdae --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/index.SitecoreContext.md @@ -0,0 +1,703 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / SitecoreContext + +# Class: SitecoreContext + +[index](../modules/index.md).SitecoreContext + +## Type parameters + +| Name | Type | +| :------ | :------ | +| `ContextType` | `any` | + +## Hierarchy + +- `Component`<`SitecoreContextProps`<`ContextType`\>, [`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\>\> + + ↳ **`SitecoreContext`** + +## Table of contents + +### Constructors + +- [constructor](index.SitecoreContext.md#constructor) + +### Properties + +- [context](index.SitecoreContext.md#context) +- [props](index.SitecoreContext.md#props) +- [refs](index.SitecoreContext.md#refs) +- [setContext](index.SitecoreContext.md#setcontext) +- [state](index.SitecoreContext.md#state) +- [contextType](index.SitecoreContext.md#contexttype) +- [displayName](index.SitecoreContext.md#displayname) +- [propTypes](index.SitecoreContext.md#proptypes) + +### Methods + +- [UNSAFE\_componentWillMount](index.SitecoreContext.md#unsafe_componentwillmount) +- [UNSAFE\_componentWillReceiveProps](index.SitecoreContext.md#unsafe_componentwillreceiveprops) +- [UNSAFE\_componentWillUpdate](index.SitecoreContext.md#unsafe_componentwillupdate) +- [componentDidCatch](index.SitecoreContext.md#componentdidcatch) +- [componentDidMount](index.SitecoreContext.md#componentdidmount) +- [componentDidUpdate](index.SitecoreContext.md#componentdidupdate) +- [componentWillMount](index.SitecoreContext.md#componentwillmount) +- [componentWillReceiveProps](index.SitecoreContext.md#componentwillreceiveprops) +- [componentWillUnmount](index.SitecoreContext.md#componentwillunmount) +- [componentWillUpdate](index.SitecoreContext.md#componentwillupdate) +- [forceUpdate](index.SitecoreContext.md#forceupdate) +- [getSnapshotBeforeUpdate](index.SitecoreContext.md#getsnapshotbeforeupdate) +- [render](index.SitecoreContext.md#render) +- [setState](index.SitecoreContext.md#setstate) +- [shouldComponentUpdate](index.SitecoreContext.md#shouldcomponentupdate) + +## Constructors + +### constructor + +• **new SitecoreContext**<`ContextType`\>(`props`) + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `ContextType` | `any` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `props` | `SitecoreContextProps`<`ContextType`\> | + +#### Overrides + +React.Component<SitecoreContextProps<ContextType\>, SitecoreContextState<ContextType\>\>.constructor + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/SitecoreContext.d.ts:21 + +## Properties + +### context + +• **context**: `any` + +If using the new style context, re-declare this in your class to be the +`React.ContextType` of your `static contextType`. +Should be used with type annotation or static contextType. + +```ts +static contextType = MyContext +// For TS pre-3.7: +context!: React.ContextType +// For TS 3.7 and above: +declare context: React.ContextType +``` + +**`see`** https://reactjs.org/docs/context.html + +#### Inherited from + +React.Component.context + +#### Defined in + +node_modules/@types/react/index.d.ts:473 + +___ + +### props + +• `Readonly` **props**: `Readonly`<`SitecoreContextProps`<`ContextType`\>\> & `Readonly`<`Object`\> + +#### Inherited from + +React.Component.props + +#### Defined in + +node_modules/@types/react/index.d.ts:498 + +___ + +### refs + +• **refs**: `Object` + +**`deprecated`** +https://reactjs.org/docs/refs-and-the-dom.html#legacy-api-string-refs + +#### Index signature + +▪ [key: `string`]: `ReactInstance` + +#### Inherited from + +React.Component.refs + +#### Defined in + +node_modules/@types/react/index.d.ts:504 + +___ + +### setContext + +• **setContext**: (`value`: `ContextType`) => `void` + +#### Type declaration + +▸ (`value`): `void` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `ContextType` | + +##### Returns + +`void` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/SitecoreContext.d.ts:22 + +___ + +### state + +• **state**: `Readonly`<[`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\>\> + +#### Inherited from + +React.Component.state + +#### Defined in + +node_modules/@types/react/index.d.ts:499 + +___ + +### contextType + +▪ `Static` `Optional` **contextType**: `Context`<`any`\> + +If set, `this.context` will be set at runtime to the current value of the given Context. + +Usage: + +```ts +type MyContext = number +const Ctx = React.createContext(0) + +class Foo extends React.Component { + static contextType = Ctx + context!: React.ContextType + render () { + return <>My context's value: {this.context}; + } +} +``` + +**`see`** https://reactjs.org/docs/context.html#classcontexttype + +#### Inherited from + +React.Component.contextType + +#### Defined in + +node_modules/@types/react/index.d.ts:455 + +___ + +### displayName + +▪ `Static` **displayName**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/SitecoreContext.d.ts:20 + +___ + +### propTypes + +▪ `Static` **propTypes**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `children` | `Validator`<`any`\> | +| `componentFactory` | `Requireable`<`fn`\> | +| `context` | `Requireable`<`any`\> | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/SitecoreContext.d.ts:15 + +## Methods + +### UNSAFE\_componentWillMount + +▸ `Optional` **UNSAFE_componentWillMount**(): `void` + +Called immediately before mounting occurs, and before `Component#render`. +Avoid introducing any side-effects or subscriptions in this method. + +This method will not stop working in React 17. + +Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps +prevents this from being invoked. + +**`deprecated`** 16.3, use componentDidMount or the constructor instead + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#initializing-state + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path + +#### Returns + +`void` + +#### Inherited from + +React.Component.UNSAFE\_componentWillMount + +#### Defined in + +node_modules/@types/react/index.d.ts:711 + +___ + +### UNSAFE\_componentWillReceiveProps + +▸ `Optional` **UNSAFE_componentWillReceiveProps**(`nextProps`, `nextContext`): `void` + +Called when the component may be receiving new props. +React may call this even if props have not changed, so be sure to compare new and existing +props if you only want to handle changes. + +Calling `Component#setState` generally does not trigger this method. + +This method will not stop working in React 17. + +Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps +prevents this from being invoked. + +**`deprecated`** 16.3, use static getDerivedStateFromProps instead + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#updating-state-based-on-props + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `nextProps` | `Readonly`<`SitecoreContextProps`<`ContextType`\>\> | +| `nextContext` | `any` | + +#### Returns + +`void` + +#### Inherited from + +React.Component.UNSAFE\_componentWillReceiveProps + +#### Defined in + +node_modules/@types/react/index.d.ts:743 + +___ + +### UNSAFE\_componentWillUpdate + +▸ `Optional` **UNSAFE_componentWillUpdate**(`nextProps`, `nextState`, `nextContext`): `void` + +Called immediately before rendering when new props or state is received. Not called for the initial render. + +Note: You cannot call `Component#setState` here. + +This method will not stop working in React 17. + +Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps +prevents this from being invoked. + +**`deprecated`** 16.3, use getSnapshotBeforeUpdate instead + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#reading-dom-properties-before-an-update + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `nextProps` | `Readonly`<`SitecoreContextProps`<`ContextType`\>\> | +| `nextState` | `Readonly`<[`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\>\> | +| `nextContext` | `any` | + +#### Returns + +`void` + +#### Inherited from + +React.Component.UNSAFE\_componentWillUpdate + +#### Defined in + +node_modules/@types/react/index.d.ts:771 + +___ + +### componentDidCatch + +▸ `Optional` **componentDidCatch**(`error`, `errorInfo`): `void` + +Catches exceptions generated in descendant components. Unhandled exceptions will cause +the entire component tree to unmount. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `error` | `Error` | +| `errorInfo` | `ErrorInfo` | + +#### Returns + +`void` + +#### Inherited from + +React.Component.componentDidCatch + +#### Defined in + +node_modules/@types/react/index.d.ts:640 + +___ + +### componentDidMount + +▸ `Optional` **componentDidMount**(): `void` + +Called immediately after a component is mounted. Setting state here will trigger re-rendering. + +#### Returns + +`void` + +#### Inherited from + +React.Component.componentDidMount + +#### Defined in + +node_modules/@types/react/index.d.ts:619 + +___ + +### componentDidUpdate + +▸ `Optional` **componentDidUpdate**(`prevProps`, `prevState`, `snapshot?`): `void` + +Called immediately after updating occurs. Not called for the initial render. + +The snapshot is only present if getSnapshotBeforeUpdate is present and returns non-null. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `prevProps` | `Readonly`<`SitecoreContextProps`<`ContextType`\>\> | +| `prevState` | `Readonly`<[`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\>\> | +| `snapshot?` | `any` | + +#### Returns + +`void` + +#### Inherited from + +React.Component.componentDidUpdate + +#### Defined in + +node_modules/@types/react/index.d.ts:682 + +___ + +### componentWillMount + +▸ `Optional` **componentWillMount**(): `void` + +Called immediately before mounting occurs, and before `Component#render`. +Avoid introducing any side-effects or subscriptions in this method. + +Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps +prevents this from being invoked. + +**`deprecated`** 16.3, use componentDidMount or the constructor instead; will stop working in React 17 + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#initializing-state + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path + +#### Returns + +`void` + +#### Inherited from + +React.Component.componentWillMount + +#### Defined in + +node_modules/@types/react/index.d.ts:697 + +___ + +### componentWillReceiveProps + +▸ `Optional` **componentWillReceiveProps**(`nextProps`, `nextContext`): `void` + +Called when the component may be receiving new props. +React may call this even if props have not changed, so be sure to compare new and existing +props if you only want to handle changes. + +Calling `Component#setState` generally does not trigger this method. + +Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps +prevents this from being invoked. + +**`deprecated`** 16.3, use static getDerivedStateFromProps instead; will stop working in React 17 + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#updating-state-based-on-props + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `nextProps` | `Readonly`<`SitecoreContextProps`<`ContextType`\>\> | +| `nextContext` | `any` | + +#### Returns + +`void` + +#### Inherited from + +React.Component.componentWillReceiveProps + +#### Defined in + +node_modules/@types/react/index.d.ts:726 + +___ + +### componentWillUnmount + +▸ `Optional` **componentWillUnmount**(): `void` + +Called immediately before a component is destroyed. Perform any necessary cleanup in this method, such as +cancelled network requests, or cleaning up any DOM elements created in `componentDidMount`. + +#### Returns + +`void` + +#### Inherited from + +React.Component.componentWillUnmount + +#### Defined in + +node_modules/@types/react/index.d.ts:635 + +___ + +### componentWillUpdate + +▸ `Optional` **componentWillUpdate**(`nextProps`, `nextState`, `nextContext`): `void` + +Called immediately before rendering when new props or state is received. Not called for the initial render. + +Note: You cannot call `Component#setState` here. + +Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps +prevents this from being invoked. + +**`deprecated`** 16.3, use getSnapshotBeforeUpdate instead; will stop working in React 17 + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#reading-dom-properties-before-an-update + +**`see`** https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#gradual-migration-path + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `nextProps` | `Readonly`<`SitecoreContextProps`<`ContextType`\>\> | +| `nextState` | `Readonly`<[`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\>\> | +| `nextContext` | `any` | + +#### Returns + +`void` + +#### Inherited from + +React.Component.componentWillUpdate + +#### Defined in + +node_modules/@types/react/index.d.ts:756 + +___ + +### forceUpdate + +▸ **forceUpdate**(`callback?`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `callback?` | () => `void` | + +#### Returns + +`void` + +#### Inherited from + +React.Component.forceUpdate + +#### Defined in + +node_modules/@types/react/index.d.ts:490 + +___ + +### getSnapshotBeforeUpdate + +▸ `Optional` **getSnapshotBeforeUpdate**(`prevProps`, `prevState`): `any` + +Runs before React applies the result of `render` to the document, and +returns an object to be given to componentDidUpdate. Useful for saving +things such as scroll position before `render` causes changes to it. + +Note: the presence of getSnapshotBeforeUpdate prevents any of the deprecated +lifecycle events from running. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `prevProps` | `Readonly`<`SitecoreContextProps`<`ContextType`\>\> | +| `prevState` | `Readonly`<[`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\>\> | + +#### Returns + +`any` + +#### Inherited from + +React.Component.getSnapshotBeforeUpdate + +#### Defined in + +node_modules/@types/react/index.d.ts:676 + +___ + +### render + +▸ **render**(): `Element` + +#### Returns + +`Element` + +#### Overrides + +React.Component.render + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/SitecoreContext.d.ts:23 + +___ + +### setState + +▸ **setState**<`K`\>(`state`, `callback?`): `void` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `K` | extends ``"setContext"`` \| ``"context"`` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `state` | ``null`` \| [`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\> \| (`prevState`: `Readonly`<[`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\>\>, `props`: `Readonly`<`SitecoreContextProps`<`ContextType`\>\>) => ``null`` \| [`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\> \| `Pick`<[`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\>, `K`\> \| `Pick`<[`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\>, `K`\> | +| `callback?` | () => `void` | + +#### Returns + +`void` + +#### Inherited from + +React.Component.setState + +#### Defined in + +node_modules/@types/react/index.d.ts:485 + +___ + +### shouldComponentUpdate + +▸ `Optional` **shouldComponentUpdate**(`nextProps`, `nextState`, `nextContext`): `boolean` + +Called to determine whether the change in props and state should trigger a re-render. + +`Component` always returns true. +`PureComponent` implements a shallow comparison on props and state and returns true if any +props or states have changed. + +If false is returned, `Component#render`, `componentWillUpdate` +and `componentDidUpdate` will not be called. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `nextProps` | `Readonly`<`SitecoreContextProps`<`ContextType`\>\> | +| `nextState` | `Readonly`<[`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`ContextType`\>\> | +| `nextContext` | `any` | + +#### Returns + +`boolean` + +#### Inherited from + +React.Component.shouldComponentUpdate + +#### Defined in + +node_modules/@types/react/index.d.ts:630 diff --git a/ref-docs/sitecore-jss-nextjs/classes/middleware_editing_data_cache.EditingDataDiskCache.md b/ref-docs/sitecore-jss-nextjs/classes/middleware_editing_data_cache.EditingDataDiskCache.md new file mode 100644 index 0000000000..edb082695d --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/middleware_editing_data_cache.EditingDataDiskCache.md @@ -0,0 +1,97 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [middleware/editing-data-cache](../modules/middleware_editing_data_cache.md) / EditingDataDiskCache + +# Class: EditingDataDiskCache + +[middleware/editing-data-cache](../modules/middleware_editing_data_cache.md).EditingDataDiskCache + +A disk-based editing data cache implementation (required for hosting on Vercel via Serverless Functions) + +**`see`** EditingDataCache + +## Implements + +- [`EditingDataCache`](../interfaces/middleware_editing_data_cache.EditingDataCache.md) + +## Table of contents + +### Constructors + +- [constructor](middleware_editing_data_cache.EditingDataDiskCache.md#constructor) + +### Properties + +- [cache](middleware_editing_data_cache.EditingDataDiskCache.md#cache) + +### Methods + +- [get](middleware_editing_data_cache.EditingDataDiskCache.md#get) +- [set](middleware_editing_data_cache.EditingDataDiskCache.md#set) + +## Constructors + +### constructor + +• **new EditingDataDiskCache**() + +#### Defined in + +[src/middleware/editing-data-cache.ts:22](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-cache.ts#L22) + +## Properties + +### cache + +• `Private` **cache**: `CacheInstance` + +#### Defined in + +[src/middleware/editing-data-cache.ts:20](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-cache.ts#L20) + +## Methods + +### get + +▸ **get**(`key`): `undefined` \| [`EditingData`](../modules/sharedTypes_editing_data.md#editingdata) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `key` | `string` | + +#### Returns + +`undefined` \| [`EditingData`](../modules/sharedTypes_editing_data.md#editingdata) + +#### Implementation of + +[EditingDataCache](../interfaces/middleware_editing_data_cache.EditingDataCache.md).[get](../interfaces/middleware_editing_data_cache.EditingDataCache.md#get) + +#### Defined in + +[src/middleware/editing-data-cache.ts:34](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-cache.ts#L34) + +___ + +### set + +▸ **set**(`key`, `editingData`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `key` | `string` | +| `editingData` | [`EditingData`](../modules/sharedTypes_editing_data.md#editingdata) | + +#### Returns + +`void` + +#### Implementation of + +[EditingDataCache](../interfaces/middleware_editing_data_cache.EditingDataCache.md).[set](../interfaces/middleware_editing_data_cache.EditingDataCache.md#set) + +#### Defined in + +[src/middleware/editing-data-cache.ts:27](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-cache.ts#L27) diff --git a/ref-docs/sitecore-jss-nextjs/classes/middleware_editing_data_middleware.EditingDataMiddleware.md b/ref-docs/sitecore-jss-nextjs/classes/middleware_editing_data_middleware.EditingDataMiddleware.md new file mode 100644 index 0000000000..8cd85af552 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/middleware_editing_data_middleware.EditingDataMiddleware.md @@ -0,0 +1,116 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [middleware/editing-data-middleware](../modules/middleware_editing_data_middleware.md) / EditingDataMiddleware + +# Class: EditingDataMiddleware + +[middleware/editing-data-middleware](../modules/middleware_editing_data_middleware.md).EditingDataMiddleware + +Middleware / handler for use in the editing data Next.js API dynamic route (e.g. '/api/editing/data/[key]') +which is required for Sitecore Experience Editor support. + +## Table of contents + +### Constructors + +- [constructor](middleware_editing_data_middleware.EditingDataMiddleware.md#constructor) + +### Properties + +- [editingDataCache](middleware_editing_data_middleware.EditingDataMiddleware.md#editingdatacache) +- [queryParamKey](middleware_editing_data_middleware.EditingDataMiddleware.md#queryparamkey) + +### Methods + +- [getHandler](middleware_editing_data_middleware.EditingDataMiddleware.md#gethandler) +- [handler](middleware_editing_data_middleware.EditingDataMiddleware.md#handler) + +## Constructors + +### constructor + +• **new EditingDataMiddleware**(`config?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `config?` | [`EditingDataMiddlewareConfig`](../interfaces/middleware_editing_data_middleware.EditingDataMiddlewareConfig.md) | + +#### Defined in + +[src/middleware/editing-data-middleware.ts:36](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-middleware.ts#L36) + +## Properties + +### editingDataCache + +• `Private` **editingDataCache**: [`EditingDataCache`](../interfaces/middleware_editing_data_cache.EditingDataCache.md) + +#### Defined in + +[src/middleware/editing-data-middleware.ts:31](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-middleware.ts#L31) + +___ + +### queryParamKey + +• `Private` **queryParamKey**: `string` + +#### Defined in + +[src/middleware/editing-data-middleware.ts:30](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-middleware.ts#L30) + +## Methods + +### getHandler + +▸ **getHandler**(): (`req`: `NextApiRequest`, `res`: `NextApiResponse`<`any`\>) => `Promise`<`void`\> + +Gets the Next.js API route handler + +#### Returns + +`fn` + +route handler + +▸ (`req`, `res`): `Promise`<`void`\> + +Gets the Next.js API route handler + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `req` | `NextApiRequest` | +| `res` | `NextApiResponse`<`any`\> | + +##### Returns + +`Promise`<`void`\> + +route handler + +#### Defined in + +[src/middleware/editing-data-middleware.ts:45](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-middleware.ts#L45) + +___ + +### handler + +▸ `Private` **handler**(`req`, `res`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `req` | `NextApiRequest` | +| `res` | `NextApiResponse`<`any`\> | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/middleware/editing-data-middleware.ts:49](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-middleware.ts#L49) diff --git a/ref-docs/sitecore-jss-nextjs/classes/middleware_editing_render_middleware.EditingRenderMiddleware.md b/ref-docs/sitecore-jss-nextjs/classes/middleware_editing_render_middleware.EditingRenderMiddleware.md new file mode 100644 index 0000000000..b56229d818 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/middleware_editing_render_middleware.EditingRenderMiddleware.md @@ -0,0 +1,220 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [middleware/editing-render-middleware](../modules/middleware_editing_render_middleware.md) / EditingRenderMiddleware + +# Class: EditingRenderMiddleware + +[middleware/editing-render-middleware](../modules/middleware_editing_render_middleware.md).EditingRenderMiddleware + +Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render') +which is required for Sitecore Experience Editor support. + +## Table of contents + +### Constructors + +- [constructor](middleware_editing_render_middleware.EditingRenderMiddleware.md#constructor) + +### Properties + +- [dataFetcher](middleware_editing_render_middleware.EditingRenderMiddleware.md#datafetcher) +- [editingDataService](middleware_editing_render_middleware.EditingRenderMiddleware.md#editingdataservice) +- [resolvePageUrl](middleware_editing_render_middleware.EditingRenderMiddleware.md#resolvepageurl) +- [resolveServerUrl](middleware_editing_render_middleware.EditingRenderMiddleware.md#resolveserverurl) + +### Methods + +- [defaultResolvePageUrl](middleware_editing_render_middleware.EditingRenderMiddleware.md#defaultresolvepageurl) +- [defaultResolveServerUrl](middleware_editing_render_middleware.EditingRenderMiddleware.md#defaultresolveserverurl) +- [getHandler](middleware_editing_render_middleware.EditingRenderMiddleware.md#gethandler) +- [handler](middleware_editing_render_middleware.EditingRenderMiddleware.md#handler) + +## Constructors + +### constructor + +• **new EditingRenderMiddleware**(`config?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `config?` | [`EditingRenderMiddlewareConfig`](../interfaces/middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md) | + +#### Defined in + +[src/middleware/editing-render-middleware.ts:56](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L56) + +## Properties + +### dataFetcher + +• `Private` **dataFetcher**: [`AxiosDataFetcher`](index.AxiosDataFetcher.md) + +#### Defined in + +[src/middleware/editing-render-middleware.ts:49](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L49) + +___ + +### editingDataService + +• `Private` **editingDataService**: [`EditingDataService`](services_editing_data_service.EditingDataService.md) + +#### Defined in + +[src/middleware/editing-render-middleware.ts:48](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L48) + +___ + +### resolvePageUrl + +• `Private` **resolvePageUrl**: (`serverUrl`: `string`, `itemPath`: `string`) => `string` + +#### Type declaration + +▸ (`serverUrl`, `itemPath`): `string` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `serverUrl` | `string` | +| `itemPath` | `string` | + +##### Returns + +`string` + +#### Defined in + +[src/middleware/editing-render-middleware.ts:50](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L50) + +___ + +### resolveServerUrl + +• `Private` **resolveServerUrl**: (`req`: `NextApiRequest`) => `string` + +#### Type declaration + +▸ (`req`): `string` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `req` | `NextApiRequest` | + +##### Returns + +`string` + +#### Defined in + +[src/middleware/editing-render-middleware.ts:51](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L51) + +## Methods + +### defaultResolvePageUrl + +▸ `Private` **defaultResolvePageUrl**(`serverUrl`, `itemPath`): `string` + +Default page URL resolution. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `serverUrl` | `string` | +| `itemPath` | `string` | + +#### Returns + +`string` + +#### Defined in + +[src/middleware/editing-render-middleware.ts:166](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L166) + +___ + +### defaultResolveServerUrl + +▸ `Private` **defaultResolveServerUrl**(`req`): `string` + +Default server URL resolution. +Note we use https protocol on Vercel due to serverless function architecture. +In all other scenarios, including localhost (with or without a proxy e.g. ngrok) +and within a nodejs container, http protocol should be used. + +For information about the VERCEL environment variable, see +https://vercel.com/docs/environment-variables#system-environment-variables + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `req` | `NextApiRequest` | + +#### Returns + +`string` + +#### Defined in + +[src/middleware/editing-render-middleware.ts:180](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L180) + +___ + +### getHandler + +▸ **getHandler**(): (`req`: `NextApiRequest`, `res`: `NextApiResponse`<`any`\>) => `Promise`<`void`\> + +Gets the Next.js API route handler + +#### Returns + +`fn` + +route handler + +▸ (`req`, `res`): `Promise`<`void`\> + +Gets the Next.js API route handler + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `req` | `NextApiRequest` | +| `res` | `NextApiResponse`<`any`\> | + +##### Returns + +`Promise`<`void`\> + +route handler + +#### Defined in + +[src/middleware/editing-render-middleware.ts:68](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L68) + +___ + +### handler + +▸ `Private` **handler**(`req`, `res`): `Promise`<`void`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `req` | `NextApiRequest` | +| `res` | `NextApiResponse`<`any`\> | + +#### Returns + +`Promise`<`void`\> + +#### Defined in + +[src/middleware/editing-render-middleware.ts:72](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L72) diff --git a/ref-docs/sitecore-jss-nextjs/classes/services_component_props_service.ComponentPropsService.md b/ref-docs/sitecore-jss-nextjs/classes/services_component_props_service.ComponentPropsService.md new file mode 100644 index 0000000000..45905ee676 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/services_component_props_service.ComponentPropsService.md @@ -0,0 +1,209 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [services/component-props-service](../modules/services_component_props_service.md) / ComponentPropsService + +# Class: ComponentPropsService + +[services/component-props-service](../modules/services_component_props_service.md).ComponentPropsService + +## Table of contents + +### Constructors + +- [constructor](services_component_props_service.ComponentPropsService.md#constructor) + +### Methods + +- [collectRequests](services_component_props_service.ComponentPropsService.md#collectrequests) +- [execRequests](services_component_props_service.ComponentPropsService.md#execrequests) +- [fetchComponentProps](services_component_props_service.ComponentPropsService.md#fetchcomponentprops) +- [fetchServerSideComponentProps](services_component_props_service.ComponentPropsService.md#fetchserversidecomponentprops) +- [fetchStaticComponentProps](services_component_props_service.ComponentPropsService.md#fetchstaticcomponentprops) +- [flatRenderings](services_component_props_service.ComponentPropsService.md#flatrenderings) + +## Constructors + +### constructor + +• **new ComponentPropsService**() + +## Methods + +### collectRequests + +▸ `Protected` **collectRequests**<`NextContext`\>(`params`): [`ComponentPropsRequest`](../modules/services_component_props_service.md#componentpropsrequest)<`NextContext`\>[] + +Go through layout service data, check all renderings using displayName, which should make some side effects. +Write result in requests variable + +#### Type parameters + +| Name | +| :------ | +| `NextContext` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | `Object` | params | +| `params.context` | `NextContext` | | +| `params.fetchFunctionFactory` | `FetchFunctionFactory`<`NextContext`\> | | +| `params.layoutData` | [`LayoutServiceData`](../interfaces/index.LayoutServiceData.md) | | +| `params.placeholders?` | [`PlaceholdersData`](../modules/index.md#placeholdersdata)<`string`\> | - | +| `params.requests?` | [`ComponentPropsRequest`](../modules/services_component_props_service.md#componentpropsrequest)<`NextContext`\>[] | | + +#### Returns + +[`ComponentPropsRequest`](../modules/services_component_props_service.md#componentpropsrequest)<`NextContext`\>[] + +array of requests + +#### Defined in + +[src/services/component-props-service.ts:115](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/component-props-service.ts#L115) + +___ + +### execRequests + +▸ `Protected` **execRequests**<`NextContext`\>(`requests`): `Promise`<[`ComponentPropsCollection`](../modules/sharedTypes_component_props.md#componentpropscollection)\> + +Execute request for component props + +#### Type parameters + +| Name | +| :------ | +| `NextContext` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `requests` | [`ComponentPropsRequest`](../modules/services_component_props_service.md#componentpropsrequest)<`NextContext`\>[] | requests | + +#### Returns + +`Promise`<[`ComponentPropsCollection`](../modules/sharedTypes_component_props.md#componentpropscollection)\> + +requests result + +#### Defined in + +[src/services/component-props-service.ts:161](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/component-props-service.ts#L161) + +___ + +### fetchComponentProps + +▸ `Protected` **fetchComponentProps**<`NextContext`\>(`fetchFunctionFactory`, `layoutData`, `context`): `Promise`<[`ComponentPropsCollection`](../modules/sharedTypes_component_props.md#componentpropscollection)\> + +Traverse Layout Service data tree and call side effects on component level. +Side effect function can be: getStaticProps (SSG) or getServerSideProps (SSR) + +#### Type parameters + +| Name | +| :------ | +| `NextContext` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `fetchFunctionFactory` | `FetchFunctionFactory`<`NextContext`\> | fetch function factory | +| `layoutData` | [`LayoutServiceData`](../interfaces/index.LayoutServiceData.md) | layout data | +| `context` | `NextContext` | next context | + +#### Returns + +`Promise`<[`ComponentPropsCollection`](../modules/sharedTypes_component_props.md#componentpropscollection)\> + +component props + +#### Defined in + +[src/services/component-props-service.ts:88](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/component-props-service.ts#L88) + +___ + +### fetchServerSideComponentProps + +▸ **fetchServerSideComponentProps**(`params`): `Promise`<[`ComponentPropsCollection`](../modules/sharedTypes_component_props.md#componentpropscollection)\> + +SSR mode +Fetch component props using getServerSideProps function + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | [`FetchComponentPropsArguments`](../modules/services_component_props_service.md#fetchcomponentpropsarguments)<`GetServerSidePropsContext`<`ParsedUrlQuery`\>\> | fetch params | + +#### Returns + +`Promise`<[`ComponentPropsCollection`](../modules/sharedTypes_component_props.md#componentpropscollection)\> + +props + +#### Defined in + +[src/services/component-props-service.ts:38](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/component-props-service.ts#L38) + +___ + +### fetchStaticComponentProps + +▸ **fetchStaticComponentProps**(`params`): `Promise`<[`ComponentPropsCollection`](../modules/sharedTypes_component_props.md#componentpropscollection)\> + +SSG mode +Fetch component props using getStaticProps function + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | [`FetchComponentPropsArguments`](../modules/services_component_props_service.md#fetchcomponentpropsarguments)<`GetStaticPropsContext`<`ParsedUrlQuery`\>\> | fetch arguments | + +#### Returns + +`Promise`<[`ComponentPropsCollection`](../modules/sharedTypes_component_props.md#componentpropscollection)\> + +props + +#### Defined in + +[src/services/component-props-service.ts:62](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/component-props-service.ts#L62) + +___ + +### flatRenderings + +▸ `Protected` **flatRenderings**(`placeholders`): [`ComponentRendering`](../interfaces/index.ComponentRendering.md)[] + +Take renderings from all placeholders and returns a flat array of renderings. + +**`example`** +const placeholders = { + x1: [{ uid: 1 }, { uid: 2 }], + x2: [{ uid: 11 }, { uid: 22 }] +} + +flatRenderings(placeholders); + +RESULT: [{ uid: 1 }, { uid: 2 }, { uid: 11 }, { uid: 22 }] + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `placeholders` | [`PlaceholdersData`](../modules/index.md#placeholdersdata)<`string`\> | placeholders | + +#### Returns + +[`ComponentRendering`](../interfaces/index.ComponentRendering.md)[] + +renderings + +#### Defined in + +[src/services/component-props-service.ts:214](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/component-props-service.ts#L214) diff --git a/ref-docs/sitecore-jss-nextjs/classes/services_disconnected_sitemap_service.DisconnectedSitemapService.md b/ref-docs/sitecore-jss-nextjs/classes/services_disconnected_sitemap_service.DisconnectedSitemapService.md new file mode 100644 index 0000000000..b4efd3289c --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/services_disconnected_sitemap_service.DisconnectedSitemapService.md @@ -0,0 +1,52 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [services/disconnected-sitemap-service](../modules/services_disconnected_sitemap_service.md) / DisconnectedSitemapService + +# Class: DisconnectedSitemapService + +[services/disconnected-sitemap-service](../modules/services_disconnected_sitemap_service.md).DisconnectedSitemapService + +## Table of contents + +### Constructors + +- [constructor](services_disconnected_sitemap_service.DisconnectedSitemapService.md#constructor) + +### Methods + +- [fetchExportSitemap](services_disconnected_sitemap_service.DisconnectedSitemapService.md#fetchexportsitemap) + +## Constructors + +### constructor + +• **new DisconnectedSitemapService**(`manifest`) + +Provides ability to generate sitemap using manifest. +Sitemap can be used for `next export` +You can use `sitecore/manifest/sitecore-import.json` as manifest + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `manifest` | [`ManifestInstance`](../interfaces/index.ManifestInstance.md) | manifest instance | + +#### Defined in + +[src/services/disconnected-sitemap-service.ts:11](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/disconnected-sitemap-service.ts#L11) + +## Methods + +### fetchExportSitemap + +▸ **fetchExportSitemap**(): [`StaticPath`](../modules/services_graphql_sitemap_service.md#staticpath)[] + +Generates sitemap which could be used for generation of static pages during `next export` in disconnected mode. +Since i18n is not supported, the output paths will not include a `locale` property. + +#### Returns + +[`StaticPath`](../modules/services_graphql_sitemap_service.md#staticpath)[] + +#### Defined in + +[src/services/disconnected-sitemap-service.ts:17](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/disconnected-sitemap-service.ts#L17) diff --git a/ref-docs/sitecore-jss-nextjs/classes/services_editing_data_service.EditingDataService.md b/ref-docs/sitecore-jss-nextjs/classes/services_editing_data_service.EditingDataService.md new file mode 100644 index 0000000000..156b3b86ea --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/services_editing_data_service.EditingDataService.md @@ -0,0 +1,151 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [services/editing-data-service](../modules/services_editing_data_service.md) / EditingDataService + +# Class: EditingDataService + +[services/editing-data-service](../modules/services_editing_data_service.md).EditingDataService + +Service responsible for maintaining Sitecore Experience Editor data between requests + +## Table of contents + +### Constructors + +- [constructor](services_editing_data_service.EditingDataService.md#constructor) + +### Properties + +- [apiRoute](services_editing_data_service.EditingDataService.md#apiroute) +- [dataFetcher](services_editing_data_service.EditingDataService.md#datafetcher) + +### Methods + +- [generateKey](services_editing_data_service.EditingDataService.md#generatekey) +- [getEditingData](services_editing_data_service.EditingDataService.md#geteditingdata) +- [getUrl](services_editing_data_service.EditingDataService.md#geturl) +- [setEditingData](services_editing_data_service.EditingDataService.md#seteditingdata) + +## Constructors + +### constructor + +• **new EditingDataService**(`config?`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `config?` | [`EditingDataServiceConfig`](../interfaces/services_editing_data_service.EditingDataServiceConfig.md) | + +#### Defined in + +[src/services/editing-data-service.ts:34](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L34) + +## Properties + +### apiRoute + +• `Private` **apiRoute**: `string` + +#### Defined in + +[src/services/editing-data-service.ts:28](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L28) + +___ + +### dataFetcher + +• `Private` **dataFetcher**: [`AxiosDataFetcher`](index.AxiosDataFetcher.md) + +#### Defined in + +[src/services/editing-data-service.ts:29](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L29) + +## Methods + +### generateKey + +▸ `Protected` **generateKey**(`data`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `data` | [`EditingData`](../modules/sharedTypes_editing_data.md#editingdata) | + +#### Returns + +`string` + +#### Defined in + +[src/services/editing-data-service.ts:78](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L78) + +___ + +### getEditingData + +▸ **getEditingData**(`previewData`): `Promise`<`undefined` \| [`EditingData`](../modules/sharedTypes_editing_data.md#editingdata)\> + +Retrieves Experience Editor payload data by key + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `previewData` | [`EditingPreviewData`](../interfaces/sharedTypes_editing_data.EditingPreviewData.md) | Editing preview data containing the key and serverUrl to use for retrieval | + +#### Returns + +`Promise`<`undefined` \| [`EditingData`](../modules/sharedTypes_editing_data.md#editingdata)\> + +The [EditingData](../modules/sharedTypes_editing_data.md#editingdata) + +#### Defined in + +[src/services/editing-data-service.ts:69](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L69) + +___ + +### getUrl + +▸ `Protected` **getUrl**(`serverUrl`, `key`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `serverUrl` | `string` | +| `key` | `string` | + +#### Returns + +`string` + +#### Defined in + +[src/services/editing-data-service.ts:88](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L88) + +___ + +### setEditingData + +▸ **setEditingData**(`data`, `serverUrl`): `Promise`<[`EditingPreviewData`](../interfaces/sharedTypes_editing_data.EditingPreviewData.md)\> + +Stores Experience Editor payload data for later retrieval by key + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `data` | [`EditingData`](../modules/sharedTypes_editing_data.md#editingdata) | Editing data | +| `serverUrl` | `string` | The server url to use for subsequent data API requests | + +#### Returns + +`Promise`<[`EditingPreviewData`](../interfaces/sharedTypes_editing_data.EditingPreviewData.md)\> + +The [EditingPreviewData](../interfaces/sharedTypes_editing_data.EditingPreviewData.md) containing the generated key and serverUrl to use for retrieval + +#### Defined in + +[src/services/editing-data-service.ts:49](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L49) diff --git a/ref-docs/sitecore-jss-nextjs/classes/services_graphql_sitemap_service.GraphQLSitemapService.md b/ref-docs/sitecore-jss-nextjs/classes/services_graphql_sitemap_service.GraphQLSitemapService.md new file mode 100644 index 0000000000..05c97dc040 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/classes/services_graphql_sitemap_service.GraphQLSitemapService.md @@ -0,0 +1,212 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [services/graphql-sitemap-service](../modules/services_graphql_sitemap_service.md) / GraphQLSitemapService + +# Class: GraphQLSitemapService + +[services/graphql-sitemap-service](../modules/services_graphql_sitemap_service.md).GraphQLSitemapService + +Service that fetches the list of site pages using Sitecore's GraphQL API. +This list is used for SSG and Export functionality. + +**`mixes`** SearchQueryService + +## Table of contents + +### Constructors + +- [constructor](services_graphql_sitemap_service.GraphQLSitemapService.md#constructor) + +### Properties + +- [graphQLClient](services_graphql_sitemap_service.GraphQLSitemapService.md#graphqlclient) +- [options](services_graphql_sitemap_service.GraphQLSitemapService.md#options) +- [searchService](services_graphql_sitemap_service.GraphQLSitemapService.md#searchservice) + +### Accessors + +- [query](services_graphql_sitemap_service.GraphQLSitemapService.md#query) + +### Methods + +- [fetchExportSitemap](services_graphql_sitemap_service.GraphQLSitemapService.md#fetchexportsitemap) +- [fetchSSGSitemap](services_graphql_sitemap_service.GraphQLSitemapService.md#fetchssgsitemap) +- [fetchSitemap](services_graphql_sitemap_service.GraphQLSitemapService.md#fetchsitemap) +- [getGraphQLClient](services_graphql_sitemap_service.GraphQLSitemapService.md#getgraphqlclient) +- [getSearchService](services_graphql_sitemap_service.GraphQLSitemapService.md#getsearchservice) + +## Constructors + +### constructor + +• **new GraphQLSitemapService**(`options`) + +Creates an instance of graphQL sitemap service with the provided options + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `options` | [`GraphQLSitemapServiceConfig`](../interfaces/services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md) | instance | + +#### Defined in + +[src/services/graphql-sitemap-service.ts:101](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L101) + +## Properties + +### graphQLClient + +• `Private` **graphQLClient**: `GraphQLClient` + +#### Defined in + +[src/services/graphql-sitemap-service.ts:87](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L87) + +___ + +### options + +• **options**: [`GraphQLSitemapServiceConfig`](../interfaces/services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md) + +___ + +### searchService + +• `Private` **searchService**: `SearchQueryService`<[`PageListQueryResult`](../modules/services_graphql_sitemap_service.md#pagelistqueryresult)\> + +#### Defined in + +[src/services/graphql-sitemap-service.ts:88](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L88) + +## Accessors + +### query + +• `Protected` `get` **query**(): `string` + +Gets the default query used for fetching the list of site pages + +#### Returns + +`string` + +#### Defined in + +[src/services/graphql-sitemap-service.ts:93](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L93) + +## Methods + +### fetchExportSitemap + +▸ **fetchExportSitemap**(`locale`): `Promise`<[`StaticPath`](../modules/services_graphql_sitemap_service.md#staticpath)[]\> + +Fetch sitemap which could be used for generation of static pages during `next export`. +The `locale` parameter will be used in the item query, but since i18n is not supported, +the output paths will not include a `language` property. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `locale` | `string` | which application supports | + +#### Returns + +`Promise`<[`StaticPath`](../modules/services_graphql_sitemap_service.md#staticpath)[]\> + +an array of @see StaticPath objects + +#### Defined in + +[src/services/graphql-sitemap-service.ts:113](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L113) + +___ + +### fetchSSGSitemap + +▸ **fetchSSGSitemap**(`locales`): `Promise`<[`StaticPath`](../modules/services_graphql_sitemap_service.md#staticpath)[]\> + +Fetch sitemap which could be used for generation of static pages using SSG mode + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `locales` | `string`[] | locales which application supports | + +#### Returns + +`Promise`<[`StaticPath`](../modules/services_graphql_sitemap_service.md#staticpath)[]\> + +an array of @see StaticPath objects + +#### Defined in + +[src/services/graphql-sitemap-service.ts:128](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L128) + +___ + +### fetchSitemap + +▸ `Protected` **fetchSitemap**(`languages`, `formatStaticPath`): `Promise`<[`StaticPath`](../modules/services_graphql_sitemap_service.md#staticpath)[]\> + +Fetch a flat list of all pages that are descendants of the specified root item and have a +version in the specified language(s). + +**`throws`** {RangeError} if the list of languages is empty. + +**`throws`** {Error} if the app root was not found for the specified site and language. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `languages` | `string`[] | Fetch pages that have versions in this language(s). | +| `formatStaticPath` | (`path`: `string`[], `language`: `string`) => [`StaticPath`](../modules/services_graphql_sitemap_service.md#staticpath) | Function for transforming the raw search results into (@see StaticPath) types. | + +#### Returns + +`Promise`<[`StaticPath`](../modules/services_graphql_sitemap_service.md#staticpath)[]\> + +list of pages + +#### Defined in + +[src/services/graphql-sitemap-service.ts:148](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L148) + +___ + +### getGraphQLClient + +▸ `Protected` **getGraphQLClient**(): `GraphQLClient` + +Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default +library for fetching graphql data (@see GraphQLRequestClient). Override this method if you +want to use something else. + +#### Returns + +`GraphQLClient` + +implementation + +#### Defined in + +[src/services/graphql-sitemap-service.ts:193](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L193) + +___ + +### getSearchService + +▸ `Protected` **getSearchService**(): `SearchQueryService`<[`PageListQueryResult`](../modules/services_graphql_sitemap_service.md#pagelistqueryresult)\> + +Gets a service that can perform GraphQL "search" queries to fetch @see PageListQueryResult + +#### Returns + +`SearchQueryService`<[`PageListQueryResult`](../modules/services_graphql_sitemap_service.md#pagelistqueryresult)\> + +the search query service + +#### Defined in + +[src/services/graphql-sitemap-service.ts:204](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L204) diff --git a/ref-docs/sitecore-jss-nextjs/enums/index.LayoutServicePageState.md b/ref-docs/sitecore-jss-nextjs/enums/index.LayoutServicePageState.md new file mode 100644 index 0000000000..e7f8e32db7 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/enums/index.LayoutServicePageState.md @@ -0,0 +1,45 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / LayoutServicePageState + +# Enumeration: LayoutServicePageState + +[index](../modules/index.md).LayoutServicePageState + +Layout Service page state enum + +## Table of contents + +### Enumeration members + +- [Edit](index.LayoutServicePageState.md#edit) +- [Normal](index.LayoutServicePageState.md#normal) +- [Preview](index.LayoutServicePageState.md#preview) + +## Enumeration members + +### Edit + +• **Edit** = `"edit"` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:14 + +___ + +### Normal + +• **Normal** = `"normal"` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:15 + +___ + +### Preview + +• **Preview** = `"preview"` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:13 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentFields.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentFields.md new file mode 100644 index 0000000000..7c85fc4386 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentFields.md @@ -0,0 +1,11 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / ComponentFields + +# Interface: ComponentFields + +[index](../modules/index.md).ComponentFields + +Content field data passed to a component + +## Indexable + +▪ [name: `string`]: [`Field`](index.Field.md) \| [`Item`](index.Item.md) \| [`Item`](index.Item.md)[] diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentParams.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentParams.md new file mode 100644 index 0000000000..c4a888bde7 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentParams.md @@ -0,0 +1,11 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / ComponentParams + +# Interface: ComponentParams + +[index](../modules/index.md).ComponentParams + +Component params + +## Indexable + +▪ [name: `string`]: `string` diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentRendering.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentRendering.md new file mode 100644 index 0000000000..ae321b938b --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.ComponentRendering.md @@ -0,0 +1,78 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / ComponentRendering + +# Interface: ComponentRendering + +[index](../modules/index.md).ComponentRendering + +Definition of a component instance within a placeholder on a route + +## Table of contents + +### Properties + +- [componentName](index.ComponentRendering.md#componentname) +- [dataSource](index.ComponentRendering.md#datasource) +- [fields](index.ComponentRendering.md#fields) +- [params](index.ComponentRendering.md#params) +- [placeholders](index.ComponentRendering.md#placeholders) +- [uid](index.ComponentRendering.md#uid) + +## Properties + +### componentName + +• **componentName**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:78 + +___ + +### dataSource + +• `Optional` **dataSource**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:79 + +___ + +### fields + +• `Optional` **fields**: [`ComponentFields`](index.ComponentFields.md) + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:82 + +___ + +### params + +• `Optional` **params**: [`ComponentParams`](index.ComponentParams.md) + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:83 + +___ + +### placeholders + +• `Optional` **placeholders**: [`PlaceholdersData`](../modules/index.md#placeholdersdata)<`string`\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:81 + +___ + +### uid + +• `Optional` **uid**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:80 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.DictionaryPhrases.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.DictionaryPhrases.md new file mode 100644 index 0000000000..ee0538392a --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.DictionaryPhrases.md @@ -0,0 +1,11 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / DictionaryPhrases + +# Interface: DictionaryPhrases + +[index](../modules/index.md).DictionaryPhrases + +Object model for Sitecore dictionary phrases + +## Indexable + +▪ [k: `string`]: `string` diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.DictionaryService.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.DictionaryService.md new file mode 100644 index 0000000000..f25ad98442 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.DictionaryService.md @@ -0,0 +1,35 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / DictionaryService + +# Interface: DictionaryService + +[index](../modules/index.md).DictionaryService + +Service that fetches dictionary data using Sitecore's GraphQL API. + +## Table of contents + +### Methods + +- [fetchDictionaryData](index.DictionaryService.md#fetchdictionarydata) + +## Methods + +### fetchDictionaryData + +▸ **fetchDictionaryData**(`language`): `Promise`<[`DictionaryPhrases`](index.DictionaryPhrases.md)\> + +Fetch dictionary data for a language. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `language` | `string` | + +#### Returns + +`Promise`<[`DictionaryPhrases`](index.DictionaryPhrases.md)\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/dictionary-service.d.ts:16 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.Field.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.Field.md new file mode 100644 index 0000000000..03ce9ef920 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.Field.md @@ -0,0 +1,38 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / Field + +# Interface: Field + +[index](../modules/index.md).Field + +## Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `GenericFieldValue` | + +## Table of contents + +### Properties + +- [editable](index.Field.md#editable) +- [value](index.Field.md#value) + +## Properties + +### editable + +• `Optional` **editable**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:106 + +___ + +### value + +• **value**: `T` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:105 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.FileField.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.FileField.md new file mode 100644 index 0000000000..30e68743da --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.FileField.md @@ -0,0 +1,21 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / FileField + +# Interface: FileField + +[index](../modules/index.md).FileField + +## Table of contents + +### Properties + +- [value](index.FileField.md#value) + +## Properties + +### value + +• **value**: `FileFieldValue` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/File.d.ts:9 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.GraphQLDictionaryServiceConfig.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.GraphQLDictionaryServiceConfig.md new file mode 100644 index 0000000000..63f6002f55 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.GraphQLDictionaryServiceConfig.md @@ -0,0 +1,170 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / GraphQLDictionaryServiceConfig + +# Interface: GraphQLDictionaryServiceConfig + +[index](../modules/index.md).GraphQLDictionaryServiceConfig + +Configuration options for @see GraphQLDictionaryService instances + +## Hierarchy + +- `SearchServiceConfig` + +- `CacheOptions` + + ↳ **`GraphQLDictionaryServiceConfig`** + +## Table of contents + +### Properties + +- [apiKey](index.GraphQLDictionaryServiceConfig.md#apikey) +- [cacheEnabled](index.GraphQLDictionaryServiceConfig.md#cacheenabled) +- [cacheTimeout](index.GraphQLDictionaryServiceConfig.md#cachetimeout) +- [dictionaryEntryTemplateId](index.GraphQLDictionaryServiceConfig.md#dictionaryentrytemplateid) +- [endpoint](index.GraphQLDictionaryServiceConfig.md#endpoint) +- [pageSize](index.GraphQLDictionaryServiceConfig.md#pagesize) +- [rootItemId](index.GraphQLDictionaryServiceConfig.md#rootitemid) +- [siteName](index.GraphQLDictionaryServiceConfig.md#sitename) +- [templates](index.GraphQLDictionaryServiceConfig.md#templates) + +## Properties + +### apiKey + +• **apiKey**: `string` + +The API key to use for authentication. + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/graphql-dictionary-service.d.ts:18 + +___ + +### cacheEnabled + +• `Optional` **cacheEnabled**: `boolean` + +Enable/disable caching mechanism + +**`default`** true + +#### Inherited from + +CacheOptions.cacheEnabled + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/cache-client.d.ts:28 + +___ + +### cacheTimeout + +• `Optional` **cacheTimeout**: `number` + +Cache timeout (sec) + +**`default`** 60 + +#### Inherited from + +CacheOptions.cacheTimeout + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/cache-client.d.ts:33 + +___ + +### dictionaryEntryTemplateId + +• `Optional` **dictionaryEntryTemplateId**: `string` + +Optional. The template ID to use when searching for dictionary entries. + +**`default`** '6d1cd89719364a3aa511289a94c2a7b1' (/sitecore/templates/System/Dictionary/Dictionary entry) + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/graphql-dictionary-service.d.ts:23 + +___ + +### endpoint + +• **endpoint**: `string` + +The URL of the graphQL endpoint. + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/graphql-dictionary-service.d.ts:14 + +___ + +### pageSize + +• `Optional` **pageSize**: `number` + +Optional. How many result items to fetch in each GraphQL call. This is needed for pagination. + +**`default`** 10 + +#### Inherited from + +SearchServiceConfig.pageSize + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql/search-service.d.ts:42 + +___ + +### rootItemId + +• `Optional` **rootItemId**: `string` + +Optional. The ID of the search root item. Fetch items that have this item as an ancestor. + +#### Inherited from + +SearchServiceConfig.rootItemId + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql/search-service.d.ts:37 + +___ + +### siteName + +• **siteName**: `string` + +The name of the current Sitecore site. This is used to to determine the search query root +in cases where one is not specified by the caller. + +#### Inherited from + +SearchServiceConfig.siteName + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql/search-service.d.ts:60 + +___ + +### templates + +• `Optional` **templates**: `string` + +Optional. Sitecore template ID(s). Fetch items that inherit from this template(s). + +#### Inherited from + +SearchServiceConfig.templates + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql/search-service.d.ts:46 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.HtmlElementRendering.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.HtmlElementRendering.md new file mode 100644 index 0000000000..fa80246997 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.HtmlElementRendering.md @@ -0,0 +1,60 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / HtmlElementRendering + +# Interface: HtmlElementRendering + +[index](../modules/index.md).HtmlElementRendering + +HTML content used to support Sitecore Experience Editor + +## Table of contents + +### Properties + +- [attributes](index.HtmlElementRendering.md#attributes) +- [contents](index.HtmlElementRendering.md#contents) +- [name](index.HtmlElementRendering.md#name) +- [type](index.HtmlElementRendering.md#type) + +## Properties + +### attributes + +• **attributes**: `Object` + +#### Index signature + +▪ [name: `string`]: `string` \| `undefined` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:92 + +___ + +### contents + +• **contents**: ``null`` \| `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:91 + +___ + +### name + +• **name**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:89 + +___ + +### type + +• `Optional` **type**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:90 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.HttpResponse.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.HttpResponse.md new file mode 100644 index 0000000000..a819693b2d --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.HttpResponse.md @@ -0,0 +1,57 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / HttpResponse + +# Interface: HttpResponse + +[index](../modules/index.md).HttpResponse + +Response data for an HTTP request sent to an API + +## Type parameters + +| Name | Description | +| :------ | :------ | +| `T` | the type of data model requested | + +## Table of contents + +### Properties + +- [data](index.HttpResponse.md#data) +- [status](index.HttpResponse.md#status) +- [statusText](index.HttpResponse.md#statustext) + +## Properties + +### data + +• **data**: `T` + +Response content + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/data-fetcher.d.ts:13 + +___ + +### status + +• **status**: `number` + +HTTP status code of the response (i.e. 200, 404) + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/data-fetcher.d.ts:9 + +___ + +### statusText + +• **statusText**: `string` + +HTTP status text of the response (i.e. 'OK', 'Bad Request') + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/data-fetcher.d.ts:11 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.ImageField.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.ImageField.md new file mode 100644 index 0000000000..6e07b10a39 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.ImageField.md @@ -0,0 +1,32 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / ImageField + +# Interface: ImageField + +[index](../modules/index.md).ImageField + +## Table of contents + +### Properties + +- [editable](index.ImageField.md#editable) +- [value](index.ImageField.md#value) + +## Properties + +### editable + +• `Optional` **editable**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Image.d.ts:8 + +___ + +### value + +• `Optional` **value**: `ImageFieldValue` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Image.d.ts:7 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.Item.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.Item.md new file mode 100644 index 0000000000..3dd6969fcc --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.Item.md @@ -0,0 +1,49 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / Item + +# Interface: Item + +[index](../modules/index.md).Item + +Content data returned from Content Service + +## Table of contents + +### Properties + +- [displayName](index.Item.md#displayname) +- [fields](index.Item.md#fields) +- [name](index.Item.md#name) + +## Properties + +### displayName + +• `Optional` **displayName**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:113 + +___ + +### fields + +• **fields**: `Object` + +#### Index signature + +▪ [name: `string`]: [`Field`](index.Field.md) \| [`Item`](index.Item.md) \| [`Item`](index.Item.md)[] \| `undefined` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:114 + +___ + +### name + +• **name**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:112 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutService.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutService.md new file mode 100644 index 0000000000..107ef642ae --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutService.md @@ -0,0 +1,38 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / LayoutService + +# Interface: LayoutService + +[index](../modules/index.md).LayoutService + +## Table of contents + +### Methods + +- [fetchLayoutData](index.LayoutService.md#fetchlayoutdata) + +## Methods + +### fetchLayoutData + +▸ **fetchLayoutData**(`itemPath`, `language?`, `req?`, `res?`): `Promise`<[`LayoutServiceData`](index.LayoutServiceData.md)\> + +Fetch layout data for an item. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `itemPath` | `string` | +| `language?` | `string` | +| `req?` | `IncomingMessage` | +| `res?` | `ServerResponse` | + +#### Returns + +`Promise`<[`LayoutServiceData`](index.LayoutServiceData.md)\> + +layout data + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/layout-service.d.ts:13 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceContext.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceContext.md new file mode 100644 index 0000000000..23ec746137 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceContext.md @@ -0,0 +1,77 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / LayoutServiceContext + +# Interface: LayoutServiceContext + +[index](../modules/index.md).LayoutServiceContext + +Shape of context data from the Sitecore Layout Service + +## Indexable + +▪ [key: `string`]: `unknown` + +## Table of contents + +### Properties + +- [language](index.LayoutServiceContext.md#language) +- [pageEditing](index.LayoutServiceContext.md#pageediting) +- [pageState](index.LayoutServiceContext.md#pagestate) +- [site](index.LayoutServiceContext.md#site) +- [visitorIdentificationTimestamp](index.LayoutServiceContext.md#visitoridentificationtimestamp) + +## Properties + +### language + +• `Optional` **language**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:23 + +___ + +### pageEditing + +• `Optional` **pageEditing**: `boolean` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:22 + +___ + +### pageState + +• `Optional` **pageState**: [`Preview`](../enums/index.LayoutServicePageState.md#preview) \| [`Edit`](../enums/index.LayoutServicePageState.md#edit) \| [`Normal`](../enums/index.LayoutServicePageState.md#normal) + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:24 + +___ + +### site + +• `Optional` **site**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `name?` | `string` | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:26 + +___ + +### visitorIdentificationTimestamp + +• `Optional` **visitorIdentificationTimestamp**: `number` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:25 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceContextData.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceContextData.md new file mode 100644 index 0000000000..3a2103505d --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceContextData.md @@ -0,0 +1,23 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / LayoutServiceContextData + +# Interface: LayoutServiceContextData + +[index](../modules/index.md).LayoutServiceContextData + +Context information from the Sitecore Layout Service + +## Table of contents + +### Properties + +- [context](index.LayoutServiceContextData.md#context) + +## Properties + +### context + +• **context**: [`LayoutServiceContext`](index.LayoutServiceContext.md) + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:34 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceData.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceData.md new file mode 100644 index 0000000000..b0639d29d4 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceData.md @@ -0,0 +1,23 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / LayoutServiceData + +# Interface: LayoutServiceData + +[index](../modules/index.md).LayoutServiceData + +A reply from the Sitecore Layout Service + +## Table of contents + +### Properties + +- [sitecore](index.LayoutServiceData.md#sitecore) + +## Properties + +### sitecore + +• **sitecore**: [`LayoutServiceContextData`](index.LayoutServiceContextData.md) & { `route`: ``null`` \| [`RouteData`](index.RouteData.md) } + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:5 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceRequestOptions.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceRequestOptions.md new file mode 100644 index 0000000000..d9b2544fd5 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.LayoutServiceRequestOptions.md @@ -0,0 +1,59 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / LayoutServiceRequestOptions + +# Interface: LayoutServiceRequestOptions + +[index](../modules/index.md).LayoutServiceRequestOptions + +## Type parameters + +| Name | +| :------ | +| `T` | + +## Table of contents + +### Properties + +- [fetcher](index.LayoutServiceRequestOptions.md#fetcher) +- [layoutServiceConfig](index.LayoutServiceRequestOptions.md#layoutserviceconfig) +- [querystringParams](index.LayoutServiceRequestOptions.md#querystringparams) + +## Properties + +### fetcher + +• **fetcher**: [`HttpDataFetcher`](../modules/index.md#httpdatafetcher)<`T`\> + +The fetcher that performs the HTTP request and returns a promise to JSON + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:60 + +___ + +### layoutServiceConfig + +• `Optional` **layoutServiceConfig**: `LayoutServiceConfig` + +Configuration options for Layout Service requests. + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:52 + +___ + +### querystringParams + +• `Optional` **querystringParams**: `Object` + +An object of key:value pairs to be stringified and used as querystring parameters. + +#### Index signature + +▪ [key: `string`]: `string` \| `number` \| `boolean` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:56 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.LinkField.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.LinkField.md new file mode 100644 index 0000000000..d31a2bcad6 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.LinkField.md @@ -0,0 +1,43 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / LinkField + +# Interface: LinkField + +[index](../modules/index.md).LinkField + +## Table of contents + +### Properties + +- [editableFirstPart](index.LinkField.md#editablefirstpart) +- [editableLastPart](index.LinkField.md#editablelastpart) +- [value](index.LinkField.md#value) + +## Properties + +### editableFirstPart + +• `Optional` **editableFirstPart**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Link.d.ts:14 + +___ + +### editableLastPart + +• `Optional` **editableLastPart**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Link.d.ts:15 + +___ + +### value + +• **value**: [`LinkFieldValue`](index.LinkFieldValue.md) + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Link.d.ts:13 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.LinkFieldValue.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.LinkFieldValue.md new file mode 100644 index 0000000000..0e1c430b80 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.LinkFieldValue.md @@ -0,0 +1,80 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / LinkFieldValue + +# Interface: LinkFieldValue + +[index](../modules/index.md).LinkFieldValue + +## Indexable + +▪ [attributeName: `string`]: `unknown` + +## Table of contents + +### Properties + +- [class](index.LinkFieldValue.md#class) +- [className](index.LinkFieldValue.md#classname) +- [href](index.LinkFieldValue.md#href) +- [target](index.LinkFieldValue.md#target) +- [text](index.LinkFieldValue.md#text) +- [title](index.LinkFieldValue.md#title) + +## Properties + +### class + +• `Optional` **class**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Link.d.ts:7 + +___ + +### className + +• `Optional` **className**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Link.d.ts:6 + +___ + +### href + +• `Optional` **href**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Link.d.ts:5 + +___ + +### target + +• `Optional` **target**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Link.d.ts:9 + +___ + +### text + +• `Optional` **text**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Link.d.ts:10 + +___ + +### title + +• `Optional` **title**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Link.d.ts:8 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.ManifestInstance.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.ManifestInstance.md new file mode 100644 index 0000000000..31118866af --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.ManifestInstance.md @@ -0,0 +1,116 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / ManifestInstance + +# Interface: ManifestInstance + +[index](../modules/index.md).ManifestInstance + +## Table of contents + +### Properties + +- [appName](index.ManifestInstance.md#appname) +- [dictionary](index.ManifestInstance.md#dictionary) +- [items](index.ManifestInstance.md#items) +- [language](index.ManifestInstance.md#language) +- [media](index.ManifestInstance.md#media) +- [placeholders](index.ManifestInstance.md#placeholders) +- [rootPlaceholders](index.ManifestInstance.md#rootplaceholders) +- [templates](index.ManifestInstance.md#templates) +- [wipeExisting](index.ManifestInstance.md#wipeexisting) + +## Properties + +### appName + +• **appName**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-manifest/types/generator/manifest.types.d.ts:57 + +___ + +### dictionary + +• **dictionary**: `DictionaryDefinition`[] + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-manifest/types/generator/manifest.types.d.ts:65 + +___ + +### items + +• **items**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `nonRoutes` | `ItemDefinition`[] | +| `routes` | `RouteDefinition`[] | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-manifest/types/generator/manifest.types.d.ts:59 + +___ + +### language + +• **language**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-manifest/types/generator/manifest.types.d.ts:66 + +___ + +### media + +• `Optional` **media**: `any`[] + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-manifest/types/generator/manifest.types.d.ts:64 + +___ + +### placeholders + +• **placeholders**: `PlaceholderDefinition`[] + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-manifest/types/generator/manifest.types.d.ts:63 + +___ + +### rootPlaceholders + +• **rootPlaceholders**: `string`[] + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-manifest/types/generator/manifest.types.d.ts:68 + +___ + +### templates + +• **templates**: `TemplateDefinition`[] + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-manifest/types/generator/manifest.types.d.ts:58 + +___ + +### wipeExisting + +• **wipeExisting**: `boolean` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-manifest/types/generator/manifest.types.d.ts:67 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.RouteData.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.RouteData.md new file mode 100644 index 0000000000..35f20599b4 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.RouteData.md @@ -0,0 +1,148 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / RouteData + +# Interface: RouteData + +[index](../modules/index.md).RouteData + +Shape of route data returned from Sitecore Layout Service + +## Table of contents + +### Properties + +- [databaseName](index.RouteData.md#databasename) +- [deviceId](index.RouteData.md#deviceid) +- [displayName](index.RouteData.md#displayname) +- [fields](index.RouteData.md#fields) +- [itemId](index.RouteData.md#itemid) +- [itemLanguage](index.RouteData.md#itemlanguage) +- [itemVersion](index.RouteData.md#itemversion) +- [layoutId](index.RouteData.md#layoutid) +- [name](index.RouteData.md#name) +- [placeholders](index.RouteData.md#placeholders) +- [templateId](index.RouteData.md#templateid) +- [templateName](index.RouteData.md#templatename) + +## Properties + +### databaseName + +• `Optional` **databaseName**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:45 + +___ + +### deviceId + +• `Optional` **deviceId**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:46 + +___ + +### displayName + +• `Optional` **displayName**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:41 + +___ + +### fields + +• `Optional` **fields**: `Object` + +#### Index signature + +▪ [name: `string`]: [`Field`](index.Field.md) + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:42 + +___ + +### itemId + +• `Optional` **itemId**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:53 + +___ + +### itemLanguage + +• `Optional` **itemLanguage**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:47 + +___ + +### itemVersion + +• `Optional` **itemVersion**: `number` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:48 + +___ + +### layoutId + +• `Optional` **layoutId**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:49 + +___ + +### name + +• **name**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:40 + +___ + +### placeholders + +• **placeholders**: [`PlaceholdersData`](../modules/index.md#placeholdersdata)<`string`\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:52 + +___ + +### templateId + +• `Optional` **templateId**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:50 + +___ + +### templateName + +• `Optional` **templateName**: `string` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:51 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/index.SitecoreContextState.md b/ref-docs/sitecore-jss-nextjs/interfaces/index.SitecoreContextState.md new file mode 100644 index 0000000000..3d89b5a227 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/index.SitecoreContextState.md @@ -0,0 +1,51 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](../modules/index.md) / SitecoreContextState + +# Interface: SitecoreContextState + +[index](../modules/index.md).SitecoreContextState + +## Type parameters + +| Name | Type | +| :------ | :------ | +| `ContextType` | `any` | + +## Table of contents + +### Properties + +- [context](index.SitecoreContextState.md#context) + +### Methods + +- [setContext](index.SitecoreContextState.md#setcontext) + +## Properties + +### context + +• **context**: `ContextType` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/SitecoreContext.d.ts:10 + +## Methods + +### setContext + +▸ **setContext**(`value`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `ContextType` | + +#### Returns + +`void` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/SitecoreContext.d.ts:9 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_data_cache.EditingDataCache.md b/ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_data_cache.EditingDataCache.md new file mode 100644 index 0000000000..fb789cd47c --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_data_cache.EditingDataCache.md @@ -0,0 +1,59 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [middleware/editing-data-cache](../modules/middleware_editing_data_cache.md) / EditingDataCache + +# Interface: EditingDataCache + +[middleware/editing-data-cache](../modules/middleware_editing_data_cache.md).EditingDataCache + +Defines an editing data cache implementation + +## Implemented by + +- [`EditingDataDiskCache`](../classes/middleware_editing_data_cache.EditingDataDiskCache.md) + +## Table of contents + +### Methods + +- [get](middleware_editing_data_cache.EditingDataCache.md#get) +- [set](middleware_editing_data_cache.EditingDataCache.md#set) + +## Methods + +### get + +▸ **get**(`key`): `undefined` \| [`EditingData`](../modules/sharedTypes_editing_data.md#editingdata) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `key` | `string` | + +#### Returns + +`undefined` \| [`EditingData`](../modules/sharedTypes_editing_data.md#editingdata) + +#### Defined in + +[src/middleware/editing-data-cache.ts:12](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-cache.ts#L12) + +___ + +### set + +▸ **set**(`key`, `editingData`): `void` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `key` | `string` | +| `editingData` | [`EditingData`](../modules/sharedTypes_editing_data.md#editingdata) | + +#### Returns + +`void` + +#### Defined in + +[src/middleware/editing-data-cache.ts:11](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-cache.ts#L11) diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_data_middleware.EditingDataMiddlewareConfig.md b/ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_data_middleware.EditingDataMiddlewareConfig.md new file mode 100644 index 0000000000..5afe4213c7 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_data_middleware.EditingDataMiddlewareConfig.md @@ -0,0 +1,47 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [middleware/editing-data-middleware](../modules/middleware_editing_data_middleware.md) / EditingDataMiddlewareConfig + +# Interface: EditingDataMiddlewareConfig + +[middleware/editing-data-middleware](../modules/middleware_editing_data_middleware.md).EditingDataMiddlewareConfig + +## Table of contents + +### Properties + +- [dynamicRouteKey](middleware_editing_data_middleware.EditingDataMiddlewareConfig.md#dynamicroutekey) +- [editingDataCache](middleware_editing_data_middleware.EditingDataMiddlewareConfig.md#editingdatacache) + +## Properties + +### dynamicRouteKey + +• `Optional` **dynamicRouteKey**: `string` + +The Next.js dynamic API route key name. This is used in the middleware to extract the data +key from the request query parameters. By default this is 'key' (from '/api/editing/data/[key]'). + +**`default`** 'key' + +#### Defined in + +[src/middleware/editing-data-middleware.ts:13](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-middleware.ts#L13) + +___ + +### editingDataCache + +• `Optional` **editingDataCache**: [`EditingDataCache`](middleware_editing_data_cache.EditingDataCache.md) + +An instance of the `EditingDataCache` implementation to use. +Note for Vercel deployment, which uses Serverless Functions for API routes, a disk cache is required. +By default, this is `editingDataDiskCache` (an `EditingDataDiskCache` singleton). + +**`default`** editingDataDiskCache + +**`see`** EditingDataCache + +**`see`** EditingDataDiskCache + +#### Defined in + +[src/middleware/editing-data-middleware.ts:22](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-middleware.ts#L22) diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md b/ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md new file mode 100644 index 0000000000..a2573665d0 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md @@ -0,0 +1,108 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [middleware/editing-render-middleware](../modules/middleware_editing_render_middleware.md) / EditingRenderMiddlewareConfig + +# Interface: EditingRenderMiddlewareConfig + +[middleware/editing-render-middleware](../modules/middleware_editing_render_middleware.md).EditingRenderMiddlewareConfig + +## Table of contents + +### Properties + +- [dataFetcher](middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md#datafetcher) +- [editingDataService](middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md#editingdataservice) + +### Methods + +- [resolvePageUrl](middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md#resolvepageurl) +- [resolveServerUrl](middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md#resolveserverurl) + +## Properties + +### dataFetcher + +• `Optional` **dataFetcher**: [`AxiosDataFetcher`](../classes/index.AxiosDataFetcher.md) + +The `AxiosDataFetcher` instance to use for API requests. + +**`default`** new AxiosDataFetcher() + +**`see`** AxiosDataFetcher + +#### Defined in + +[src/middleware/editing-render-middleware.ts:14](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L14) + +___ + +### editingDataService + +• `Optional` **editingDataService**: [`EditingDataService`](../classes/services_editing_data_service.EditingDataService.md) + +The `EditingDataService` instance to use. +This would typically only be necessary if you've got a custom `EditingDataService` instance (e.g. using a custom API route). +By default, this is `editingDataService` (an `EditingDataService` singleton). + +**`default`** editingDataService + +**`see`** EditingDataService + +#### Defined in + +[src/middleware/editing-render-middleware.ts:22](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L22) + +## Methods + +### resolvePageUrl + +▸ `Optional` **resolvePageUrl**(`serverUrl`, `itemPath`): `string` + +Function used to determine route/page URL to render. +This may be necessary for certain custom Next.js routing configurations. + +**`default`** `${serverUrl}${itemPath}` + +**`see`** resolveServerUrl + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `serverUrl` | `string` | The root server URL e.g. 'http://localhost:3000' | +| `itemPath` | `string` | The Sitecore relative item path e.g. '/styleguide' | + +#### Returns + +`string` + +The URL to render + +#### Defined in + +[src/middleware/editing-render-middleware.ts:32](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L32) + +___ + +### resolveServerUrl + +▸ `Optional` **resolveServerUrl**(`req`): `string` + +Function used to determine the root server URL. This is used for the route/page and subsequent data API requests. +By default, the host header is used, with https protocol on Vercel (due to serverless function architecture) and http protocol elsewhere. + +**`default`** `${process.env.VERCEL ? 'https' : 'http'}://${req.headers.host}`; + +**`see`** resolvePageUrl + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `req` | `NextApiRequest` | The current request. | + +#### Returns + +`string` + +#### Defined in + +[src/middleware/editing-render-middleware.ts:40](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L40) diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/services_editing_data_service.EditingDataServiceConfig.md b/ref-docs/sitecore-jss-nextjs/interfaces/services_editing_data_service.EditingDataServiceConfig.md new file mode 100644 index 0000000000..4509e5a98e --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/services_editing_data_service.EditingDataServiceConfig.md @@ -0,0 +1,46 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [services/editing-data-service](../modules/services_editing_data_service.md) / EditingDataServiceConfig + +# Interface: EditingDataServiceConfig + +[services/editing-data-service](../modules/services_editing_data_service.md).EditingDataServiceConfig + +## Table of contents + +### Properties + +- [apiRoute](services_editing_data_service.EditingDataServiceConfig.md#apiroute) +- [dataFetcher](services_editing_data_service.EditingDataServiceConfig.md#datafetcher) + +## Properties + +### apiRoute + +• `Optional` **apiRoute**: `string` + +The Next.js API route to invoke. +This should be a URL path and include the '[key]' placeholder, which will be replaced with the actual data key. +This endpoint should run the `EditingDataMiddleware`. + +**`default`** '/api/editing/data/[key]' + +**`see`** EditingDataMiddleware + +#### Defined in + +[src/services/editing-data-service.ts:15](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L15) + +___ + +### dataFetcher + +• `Optional` **dataFetcher**: [`AxiosDataFetcher`](../classes/index.AxiosDataFetcher.md) + +The `AxiosDataFetcher` instance to use for API requests. + +**`default`** new AxiosDataFetcher() + +**`see`** AxiosDataFetcher + +#### Defined in + +[src/services/editing-data-service.ts:21](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L21) diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md b/ref-docs/sitecore-jss-nextjs/interfaces/services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md new file mode 100644 index 0000000000..a9fb29ea8d --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md @@ -0,0 +1,115 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [services/graphql-sitemap-service](../modules/services_graphql_sitemap_service.md) / GraphQLSitemapServiceConfig + +# Interface: GraphQLSitemapServiceConfig + +[services/graphql-sitemap-service](../modules/services_graphql_sitemap_service.md).GraphQLSitemapServiceConfig + +Configuration options for @see GraphQLSitemapService instances + +## Hierarchy + +- `SearchServiceConfig` + + ↳ **`GraphQLSitemapServiceConfig`** + +## Table of contents + +### Properties + +- [apiKey](services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md#apikey) +- [endpoint](services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md#endpoint) +- [pageSize](services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md#pagesize) +- [rootItemId](services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md#rootitemid) +- [siteName](services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md#sitename) +- [templates](services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md#templates) + +## Properties + +### apiKey + +• **apiKey**: `string` + +The API key to use for authentication. + +#### Defined in + +[src/services/graphql-sitemap-service.ts:78](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L78) + +___ + +### endpoint + +• **endpoint**: `string` + +Your Graphql endpoint + +#### Defined in + +[src/services/graphql-sitemap-service.ts:73](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L73) + +___ + +### pageSize + +• `Optional` **pageSize**: `number` + +Optional. How many result items to fetch in each GraphQL call. This is needed for pagination. + +**`default`** 10 + +#### Inherited from + +SearchServiceConfig.pageSize + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql/search-service.d.ts:42 + +___ + +### rootItemId + +• `Optional` **rootItemId**: `string` + +Optional. The ID of the search root item. Fetch items that have this item as an ancestor. + +#### Inherited from + +SearchServiceConfig.rootItemId + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql/search-service.d.ts:37 + +___ + +### siteName + +• **siteName**: `string` + +The name of the current Sitecore site. This is used to to determine the search query root +in cases where one is not specified by the caller. + +#### Inherited from + +SearchServiceConfig.siteName + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql/search-service.d.ts:60 + +___ + +### templates + +• `Optional` **templates**: `string` + +Optional. Sitecore template ID(s). Fetch items that inherit from this template(s). + +#### Inherited from + +SearchServiceConfig.templates + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/graphql/search-service.d.ts:46 diff --git a/ref-docs/sitecore-jss-nextjs/interfaces/sharedTypes_editing_data.EditingPreviewData.md b/ref-docs/sitecore-jss-nextjs/interfaces/sharedTypes_editing_data.EditingPreviewData.md new file mode 100644 index 0000000000..50d104a011 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/interfaces/sharedTypes_editing_data.EditingPreviewData.md @@ -0,0 +1,34 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [sharedTypes/editing-data](../modules/sharedTypes_editing_data.md) / EditingPreviewData + +# Interface: EditingPreviewData + +[sharedTypes/editing-data](../modules/sharedTypes_editing_data.md).EditingPreviewData + +Data for Next.js Preview (Editing) mode + +## Table of contents + +### Properties + +- [key](sharedTypes_editing_data.EditingPreviewData.md#key) +- [serverUrl](sharedTypes_editing_data.EditingPreviewData.md#serverurl) + +## Properties + +### key + +• **key**: `string` + +#### Defined in + +[src/sharedTypes/editing-data.ts:29](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/sharedTypes/editing-data.ts#L29) + +___ + +### serverUrl + +• **serverUrl**: `string` + +#### Defined in + +[src/sharedTypes/editing-data.ts:30](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/sharedTypes/editing-data.ts#L30) diff --git a/ref-docs/sitecore-jss-nextjs/modules/components_ComponentPropsContext.md b/ref-docs/sitecore-jss-nextjs/modules/components_ComponentPropsContext.md new file mode 100644 index 0000000000..0c3268eb1a --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/components_ComponentPropsContext.md @@ -0,0 +1,99 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / components/ComponentPropsContext + +# Module: components/ComponentPropsContext + +## Table of contents + +### Type aliases + +- [ComponentPropsContextProps](components_ComponentPropsContext.md#componentpropscontextprops) + +### Variables + +- [ComponentPropsReactContext](components_ComponentPropsContext.md#componentpropsreactcontext) + +### Functions + +- [ComponentPropsContext](components_ComponentPropsContext.md#componentpropscontext) +- [useComponentProps](components_ComponentPropsContext.md#usecomponentprops) + +## Type aliases + +### ComponentPropsContextProps + +Ƭ **ComponentPropsContextProps**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `children` | `ReactNode` | +| `value` | [`ComponentPropsCollection`](sharedTypes_component_props.md#componentpropscollection) | + +#### Defined in + +[src/components/ComponentPropsContext.tsx:21](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/components/ComponentPropsContext.tsx#L21) + +## Variables + +### ComponentPropsReactContext + +• `Const` **ComponentPropsReactContext**: `Context`<[`ComponentPropsCollection`](sharedTypes_component_props.md#componentpropscollection)\> + +Component props context which we are using in order to store data fetched on components level (getStaticProps/getServerSideProps) + +#### Defined in + +[src/components/ComponentPropsContext.tsx:7](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/components/ComponentPropsContext.tsx#L7) + +## Functions + +### ComponentPropsContext + +▸ `Const` **ComponentPropsContext**(`__namedParameters`): `Element` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `__namedParameters` | [`ComponentPropsContextProps`](components_ComponentPropsContext.md#componentpropscontextprops) | + +#### Returns + +`Element` + +#### Defined in + +[src/components/ComponentPropsContext.tsx:26](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/components/ComponentPropsContext.tsx#L26) + +___ + +### useComponentProps + +▸ **useComponentProps**<`ComponentData`\>(`componentUid`): `ComponentData` + +Hook in order to get access to props related to specific component. Data comes from ComponentPropsContext. + +**`see`** ComponentPropsContext + +#### Type parameters + +| Name | +| :------ | +| `ComponentData` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `componentUid` | `string` | component uId | + +#### Returns + +`ComponentData` + +component props + +#### Defined in + +[src/components/ComponentPropsContext.tsx:15](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/components/ComponentPropsContext.tsx#L15) diff --git a/ref-docs/sitecore-jss-nextjs/modules/components_Link.Link.md b/ref-docs/sitecore-jss-nextjs/modules/components_Link.Link.md new file mode 100644 index 0000000000..9a36d8c625 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/components_Link.Link.md @@ -0,0 +1,47 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [components/Link](components_Link.md) / Link + +# Namespace: Link + +[components/Link](components_Link.md).Link + +## Table of contents + +### Variables + +- [defaultProps](components_Link.Link.md#defaultprops) +- [displayName](components_Link.Link.md#displayname) +- [propTypes](components_Link.Link.md#proptypes) + +## Variables + +### defaultProps + +• **defaultProps**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `editable` | `boolean` | + +___ + +### displayName + +• **displayName**: `string` + +___ + +### propTypes + +• **propTypes**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `children` | `Requireable`<`ReactNodeLike`\> | +| `editable` | `Requireable`<`boolean`\> | +| `field` | `Validator`<`InferProps`<`Object`\> \| `InferProps`<`Object`\>\> | +| `internalLinkMatcher` | `Requireable`<`RegExp`\> | +| `showLinkTextWithChildrenPresent` | `Requireable`<`boolean`\> | diff --git a/ref-docs/sitecore-jss-nextjs/modules/components_Link.md b/ref-docs/sitecore-jss-nextjs/modules/components_Link.md new file mode 100644 index 0000000000..d32995fd74 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/components_Link.md @@ -0,0 +1,65 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / components/Link + +# Module: components/Link + +## Table of contents + +### Namespaces + +- [Link](components_Link.Link.md) + +### Type aliases + +- [LinkProps](components_Link.md#linkprops) + +### Variables + +- [Link](components_Link.md#link) + +## Type aliases + +### LinkProps + +Ƭ **LinkProps**: `ReactLinkProps` & { `internalLinkMatcher?`: `RegExp` } + +#### Defined in + +[src/components/Link.tsx:12](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/components/Link.tsx#L12) + +## Variables + +### Link + +• `Const` **Link**: `Object` + +#### Call signature + +▸ (`props`): `Element` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `props` | [`LinkProps`](components_Link.md#linkprops) | + +##### Returns + +`Element` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `defaultProps` | `Object` | +| `defaultProps.editable` | `boolean` | +| `displayName` | `string` | +| `propTypes` | `Object` | +| `propTypes.children` | `Requireable`<`ReactNodeLike`\> | +| `propTypes.editable` | `Requireable`<`boolean`\> | +| `propTypes.field` | `Validator`<`InferProps`<`Object`\> \| `InferProps`<`Object`\>\> | +| `propTypes.internalLinkMatcher` | `Requireable`<`RegExp`\> | +| `propTypes.showLinkTextWithChildrenPresent` | `Requireable`<`boolean`\> | + +#### Defined in + +[src/components/Link.tsx:20](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/components/Link.tsx#L20) diff --git a/ref-docs/sitecore-jss-nextjs/modules/components_RichText.RichText.md b/ref-docs/sitecore-jss-nextjs/modules/components_RichText.RichText.md new file mode 100644 index 0000000000..77c02aa23e --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/components_RichText.RichText.md @@ -0,0 +1,47 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [components/RichText](components_RichText.md) / RichText + +# Namespace: RichText + +[components/RichText](components_RichText.md).RichText + +## Table of contents + +### Variables + +- [defaultProps](components_RichText.RichText.md#defaultprops) +- [displayName](components_RichText.RichText.md#displayname) +- [propTypes](components_RichText.RichText.md#proptypes) + +## Variables + +### defaultProps + +• **defaultProps**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `editable` | `boolean` | +| `tag` | `string` | + +___ + +### displayName + +• **displayName**: `string` + +___ + +### propTypes + +• **propTypes**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `editable` | `Requireable`<`boolean`\> | +| `field` | `Requireable`<`InferProps`<`Object`\>\> | +| `internalLinksSelector` | `Requireable`<`string`\> | +| `tag` | `Requireable`<`string`\> | diff --git a/ref-docs/sitecore-jss-nextjs/modules/components_RichText.md b/ref-docs/sitecore-jss-nextjs/modules/components_RichText.md new file mode 100644 index 0000000000..28999b057f --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/components_RichText.md @@ -0,0 +1,65 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / components/RichText + +# Module: components/RichText + +## Table of contents + +### Namespaces + +- [RichText](components_RichText.RichText.md) + +### Type aliases + +- [RichTextProps](components_RichText.md#richtextprops) + +### Variables + +- [RichText](components_RichText.md#richtext) + +## Type aliases + +### RichTextProps + +Ƭ **RichTextProps**: `ReactRichTextProps` & { `internalLinksSelector?`: `string` } + +#### Defined in + +[src/components/RichText.tsx:10](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/components/RichText.tsx#L10) + +## Variables + +### RichText + +• `Const` **RichText**: `Object` + +#### Call signature + +▸ (`props`): `Element` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `props` | [`RichTextProps`](components_RichText.md#richtextprops) | + +##### Returns + +`Element` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `defaultProps` | `Object` | +| `defaultProps.editable` | `boolean` | +| `defaultProps.tag` | `string` | +| `displayName` | `string` | +| `propTypes` | `Object` | +| `propTypes.editable` | `Requireable`<`boolean`\> | +| `propTypes.field` | `Requireable`<`InferProps`<`Object`\>\> | +| `propTypes.internalLinksSelector` | `Requireable`<`string`\> | +| `propTypes.tag` | `Requireable`<`string`\> | + +#### Defined in + +[src/components/RichText.tsx:20](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/components/RichText.tsx#L20) diff --git a/ref-docs/sitecore-jss-nextjs/modules/constants.md b/ref-docs/sitecore-jss-nextjs/modules/constants.md new file mode 100644 index 0000000000..48bd3a9c38 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/constants.md @@ -0,0 +1,30 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / constants + +# Module: constants + +## Table of contents + +### Variables + +- [JSS\_MODE\_CONNECTED](constants.md#jss_mode_connected) +- [JSS\_MODE\_DISCONNECTED](constants.md#jss_mode_disconnected) + +## Variables + +### JSS\_MODE\_CONNECTED + +• `Const` **JSS\_MODE\_CONNECTED**: ``"connected"`` + +#### Defined in + +[src/constants.ts:1](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/constants.ts#L1) + +___ + +### JSS\_MODE\_DISCONNECTED + +• `Const` **JSS\_MODE\_DISCONNECTED**: ``"disconnected"`` + +#### Defined in + +[src/constants.ts:2](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/constants.ts#L2) diff --git a/ref-docs/sitecore-jss-nextjs/modules/index.md b/ref-docs/sitecore-jss-nextjs/modules/index.md new file mode 100644 index 0000000000..15a28f0d43 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/index.md @@ -0,0 +1,776 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / index + +# Module: index + +## Table of contents + +### References + +- [ComponentModule](index.md#componentmodule) +- [ComponentPropsCollection](index.md#componentpropscollection) +- [ComponentPropsContext](index.md#componentpropscontext) +- [ComponentPropsContextProps](index.md#componentpropscontextprops) +- [ComponentPropsReactContext](index.md#componentpropsreactcontext) +- [ComponentPropsService](index.md#componentpropsservice) +- [DisconnectedSitemapService](index.md#disconnectedsitemapservice) +- [EditingData](index.md#editingdata) +- [EditingDataService](index.md#editingdataservice) +- [EditingDataServiceConfig](index.md#editingdataserviceconfig) +- [EditingPreviewData](index.md#editingpreviewdata) +- [GetServerSideComponentProps](index.md#getserversidecomponentprops) +- [GetStaticComponentProps](index.md#getstaticcomponentprops) +- [GraphQLSitemapService](index.md#graphqlsitemapservice) +- [GraphQLSitemapServiceConfig](index.md#graphqlsitemapserviceconfig) +- [JSS\_MODE\_CONNECTED](index.md#jss_mode_connected) +- [JSS\_MODE\_DISCONNECTED](index.md#jss_mode_disconnected) +- [Link](index.md#link) +- [RichText](index.md#richtext) +- [StaticPath](index.md#staticpath) +- [editingDataService](index.md#editingdataservice) +- [handleExperienceEditorFastRefresh](index.md#handleexperienceeditorfastrefresh) +- [isEditingData](index.md#iseditingdata) +- [useComponentProps](index.md#usecomponentprops) + +### Namespaces + +- [mediaApi](index.mediaApi.md) + +### Enumerations + +- [LayoutServicePageState](../enums/index.LayoutServicePageState.md) + +### Classes + +- [AxiosDataFetcher](../classes/index.AxiosDataFetcher.md) +- [GraphQLDictionaryService](../classes/index.GraphQLDictionaryService.md) +- [GraphQLLayoutService](../classes/index.GraphQLLayoutService.md) +- [GraphQLRequestClient](../classes/index.GraphQLRequestClient.md) +- [RestDictionaryService](../classes/index.RestDictionaryService.md) +- [RestLayoutService](../classes/index.RestLayoutService.md) +- [SitecoreContext](../classes/index.SitecoreContext.md) + +### Interfaces + +- [ComponentFields](../interfaces/index.ComponentFields.md) +- [ComponentParams](../interfaces/index.ComponentParams.md) +- [ComponentRendering](../interfaces/index.ComponentRendering.md) +- [DictionaryPhrases](../interfaces/index.DictionaryPhrases.md) +- [DictionaryService](../interfaces/index.DictionaryService.md) +- [Field](../interfaces/index.Field.md) +- [FileField](../interfaces/index.FileField.md) +- [GraphQLDictionaryServiceConfig](../interfaces/index.GraphQLDictionaryServiceConfig.md) +- [HtmlElementRendering](../interfaces/index.HtmlElementRendering.md) +- [HttpResponse](../interfaces/index.HttpResponse.md) +- [ImageField](../interfaces/index.ImageField.md) +- [Item](../interfaces/index.Item.md) +- [LayoutService](../interfaces/index.LayoutService.md) +- [LayoutServiceContext](../interfaces/index.LayoutServiceContext.md) +- [LayoutServiceContextData](../interfaces/index.LayoutServiceContextData.md) +- [LayoutServiceData](../interfaces/index.LayoutServiceData.md) +- [LayoutServiceRequestOptions](../interfaces/index.LayoutServiceRequestOptions.md) +- [LinkField](../interfaces/index.LinkField.md) +- [LinkFieldValue](../interfaces/index.LinkFieldValue.md) +- [ManifestInstance](../interfaces/index.ManifestInstance.md) +- [RouteData](../interfaces/index.RouteData.md) +- [SitecoreContextState](../interfaces/index.SitecoreContextState.md) + +### Type aliases + +- [AxiosDataFetcherConfig](index.md#axiosdatafetcherconfig) +- [ComponentFactory](index.md#componentfactory) +- [GraphQLLayoutServiceConfig](index.md#graphqllayoutserviceconfig) +- [HttpDataFetcher](index.md#httpdatafetcher) +- [PlaceholdersData](index.md#placeholdersdata) +- [RestDictionaryServiceConfig](index.md#restdictionaryserviceconfig) +- [RestLayoutServiceConfig](index.md#restlayoutserviceconfig) + +### Variables + +- [DateField](index.md#datefield) +- [File](index.md#file) +- [Image](index.md#image) +- [SitecoreContextReactContext](index.md#sitecorecontextreactcontext) +- [Text](index.md#text) +- [dataApi](index.md#dataapi) + +### Functions + +- [Placeholder](index.md#placeholder) +- [VisitorIdentification](index.md#visitoridentification) +- [getChildPlaceholder](index.md#getchildplaceholder) +- [getFieldValue](index.md#getfieldvalue) +- [isExperienceEditorActive](index.md#isexperienceeditoractive) +- [resetExperienceEditorChromes](index.md#resetexperienceeditorchromes) +- [useSitecoreContext](index.md#usesitecorecontext) +- [withExperienceEditorChromes](index.md#withexperienceeditorchromes) +- [withPlaceholder](index.md#withplaceholder) +- [withSitecoreContext](index.md#withsitecorecontext) + +## References + +### ComponentModule + +Re-exports: [ComponentModule](sharedTypes_component_module.md#componentmodule) + +___ + +### ComponentPropsCollection + +Re-exports: [ComponentPropsCollection](sharedTypes_component_props.md#componentpropscollection) + +___ + +### ComponentPropsContext + +Re-exports: [ComponentPropsContext](components_ComponentPropsContext.md#componentpropscontext) + +___ + +### ComponentPropsContextProps + +Re-exports: [ComponentPropsContextProps](components_ComponentPropsContext.md#componentpropscontextprops) + +___ + +### ComponentPropsReactContext + +Re-exports: [ComponentPropsReactContext](components_ComponentPropsContext.md#componentpropsreactcontext) + +___ + +### ComponentPropsService + +Re-exports: [ComponentPropsService](../classes/services_component_props_service.ComponentPropsService.md) + +___ + +### DisconnectedSitemapService + +Re-exports: [DisconnectedSitemapService](../classes/services_disconnected_sitemap_service.DisconnectedSitemapService.md) + +___ + +### EditingData + +Re-exports: [EditingData](sharedTypes_editing_data.md#editingdata) + +___ + +### EditingDataService + +Re-exports: [EditingDataService](../classes/services_editing_data_service.EditingDataService.md) + +___ + +### EditingDataServiceConfig + +Re-exports: [EditingDataServiceConfig](../interfaces/services_editing_data_service.EditingDataServiceConfig.md) + +___ + +### EditingPreviewData + +Re-exports: [EditingPreviewData](../interfaces/sharedTypes_editing_data.EditingPreviewData.md) + +___ + +### GetServerSideComponentProps + +Re-exports: [GetServerSideComponentProps](sharedTypes_component_props.md#getserversidecomponentprops) + +___ + +### GetStaticComponentProps + +Re-exports: [GetStaticComponentProps](sharedTypes_component_props.md#getstaticcomponentprops) + +___ + +### GraphQLSitemapService + +Re-exports: [GraphQLSitemapService](../classes/services_graphql_sitemap_service.GraphQLSitemapService.md) + +___ + +### GraphQLSitemapServiceConfig + +Re-exports: [GraphQLSitemapServiceConfig](../interfaces/services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md) + +___ + +### JSS\_MODE\_CONNECTED + +Re-exports: [JSS\_MODE\_CONNECTED](constants.md#jss_mode_connected) + +___ + +### JSS\_MODE\_DISCONNECTED + +Re-exports: [JSS\_MODE\_DISCONNECTED](constants.md#jss_mode_disconnected) + +___ + +### Link + +Re-exports: [Link](components_Link.md#link) + +___ + +### RichText + +Re-exports: [RichText](components_RichText.md#richtext) + +___ + +### StaticPath + +Re-exports: [StaticPath](services_graphql_sitemap_service.md#staticpath) + +___ + +### editingDataService + +Re-exports: [editingDataService](services_editing_data_service.md#editingdataservice) + +___ + +### handleExperienceEditorFastRefresh + +Re-exports: [handleExperienceEditorFastRefresh](utils.md#handleexperienceeditorfastrefresh) + +___ + +### isEditingData + +Re-exports: [isEditingData](sharedTypes_editing_data.md#iseditingdata) + +___ + +### useComponentProps + +Re-exports: [useComponentProps](components_ComponentPropsContext.md#usecomponentprops) + +## Type aliases + +### AxiosDataFetcherConfig + +Ƭ **AxiosDataFetcherConfig**: `AxiosRequestConfig` & `AxiosDataFetcherOptions` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/axios-fetcher.d.ts:33 + +___ + +### ComponentFactory + +Ƭ **ComponentFactory**: (`componentName`: `string`) => `ComponentType` \| ``null`` + +#### Type declaration + +▸ (`componentName`): `ComponentType` \| ``null`` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `componentName` | `string` | + +##### Returns + +`ComponentType` \| ``null`` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/sharedTypes.d.ts:2 + +___ + +### GraphQLLayoutServiceConfig + +Ƭ **GraphQLLayoutServiceConfig**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `apiKey` | `string` | The API key to use for authentication | +| `endpoint` | `string` | Your Graphql endpoint | +| `siteName` | `string` | The JSS application name | +| `formatLayoutQuery?` | (`siteName`: `string`, `itemPath`: `string`, `locale?`: `string`) => `string` | - | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/graphql-layout-service.d.ts:4 + +___ + +### HttpDataFetcher + +Ƭ **HttpDataFetcher**<`T`\>: (`url`: `string`, `data?`: { [key: string]: `unknown`; }) => `Promise`<[`HttpResponse`](../interfaces/index.HttpResponse.md)<`T`\>\> + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Type declaration + +▸ (`url`, `data?`): `Promise`<[`HttpResponse`](../interfaces/index.HttpResponse.md)<`T`\>\> + +Describes functions that fetch data asynchronously (i.e. from an API endpoint). +This interface conforms to Axios' public API, but is adaptable to other HTTP libraries and +fetch polyfills. +The interface implementation must: +- Support SSR +- Comply with the rules of REST by returning appropriate response status codes when there is an error instead of throwing exceptions. +- Send HTTP POST requests if `data` param is specified; GET is suggested but not required for data-less requests + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | +| `data?` | `Object` | + +##### Returns + +`Promise`<[`HttpResponse`](../interfaces/index.HttpResponse.md)<`T`\>\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/data-fetcher.d.ts:24 + +___ + +### PlaceholdersData + +Ƭ **PlaceholdersData**<`TYPEDNAME`\>: { [P in TYPEDNAME]: (ComponentRendering \| HtmlElementRendering)[]} + +Placeholder contents data (name: placeholder name, then array of components within that placeholder name) +Note: HtmlElementRendering is used by Sitecore Experience Editor + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `TYPEDNAME` | extends `string``string` | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/models.d.ts:59 + +___ + +### RestDictionaryServiceConfig + +Ƭ **RestDictionaryServiceConfig**: `CacheOptions` & { `apiHost`: `string` ; `apiKey`: `string` ; `dataFetcher?`: [`HttpDataFetcher`](index.md#httpdatafetcher)<`RestDictionaryServiceData`\> ; `siteName`: `string` } + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/i18n/rest-dictionary-service.d.ts:10 + +___ + +### RestLayoutServiceConfig + +Ƭ **RestLayoutServiceConfig**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `apiHost` | `string` | Your Sitecore instance hostname that is the backend for JSS | +| `apiKey` | `string` | The Sitecore SSC API key your app uses | +| `configurationName?` | `string` | Layout Service "named" configuration | +| `dataFetcherResolver?` | `DataFetcherResolver` | Function that handles fetching API data | +| `siteName` | `string` | The JSS application name | +| `tracking?` | `boolean` | Enables/disables analytics tracking for the Layout Service invocation (default is true). More than likely, this would be set to false for SSG/hybrid implementations, and the JSS tracker would instead be used on the client-side: [https://jss.sitecore.com/docs/fundamentals/services/tracking](https://jss.sitecore.com/docs/fundamentals/services/tracking) **`default`** true | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/rest-layout-service.d.ts:62 + +## Variables + +### DateField + +• `Const` **DateField**: `React.SFC`<`DateFieldProps`\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Date.d.ts:21 + +___ + +### File + +• `Const` **File**: `React.SFC`<`FileProps`\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/File.d.ts:18 + +___ + +### Image + +• `Const` **Image**: `React.SFC`<`ImageProps`\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Image.d.ts:58 + +___ + +### SitecoreContextReactContext + +• `Const` **SitecoreContextReactContext**: `React.Context`<[`SitecoreContextState`](../interfaces/index.SitecoreContextState.md)<`any`\>\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/SitecoreContext.d.ts:12 + +___ + +### Text + +• `Const` **Text**: `FunctionComponent`<`TextProps`\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Text.d.ts:24 + +___ + +### dataApi + +• `Const` **dataApi**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `fetchPlaceholderData` | typeof `fetchPlaceholderData` | +| `fetchRouteData` | typeof `fetchRouteData` | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/index.d.ts:18 + +## Functions + +### Placeholder + +▸ `Const` **Placeholder**(`props`): `Element` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `props` | `PlaceholderComponentProps` | + +#### Returns + +`Element` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/Placeholder.d.ts:21 + +___ + +### VisitorIdentification + +▸ `Const` **VisitorIdentification**(`props`): `Element` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `props` | `Pick`<`VIProps`, `never`\> | + +#### Returns + +`Element` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/components/VisitorIdentification.d.ts:7 + +___ + +### getChildPlaceholder + +▸ **getChildPlaceholder**(`rendering`, `placeholderName`): ([`ComponentRendering`](../interfaces/index.ComponentRendering.md) \| [`HtmlElementRendering`](../interfaces/index.HtmlElementRendering.md))[] + +Gets rendering definitions in a given child placeholder under a current rendering. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `rendering` | [`ComponentRendering`](../interfaces/index.ComponentRendering.md) | +| `placeholderName` | `string` | + +#### Returns + +([`ComponentRendering`](../interfaces/index.ComponentRendering.md) \| [`HtmlElementRendering`](../interfaces/index.HtmlElementRendering.md))[] + +child placeholder + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/utils.d.ts:17 + +___ + +### getFieldValue + +▸ **getFieldValue**<`T`\>(`renderingOrFields`, `fieldName`): `T` \| `undefined` + +Safely extracts a field value from a rendering or fields object. +Null will be returned if the field is not defined. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `renderingOrFields` | [`ComponentRendering`](../interfaces/index.ComponentRendering.md) \| `Fields` | +| `fieldName` | `string` | + +#### Returns + +`T` \| `undefined` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/utils.d.ts:9 + +▸ **getFieldValue**<`T`\>(`renderingOrFields`, `fieldName`, `defaultValue`): `T` + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `renderingOrFields` | [`ComponentRendering`](../interfaces/index.ComponentRendering.md) \| `Fields` | +| `fieldName` | `string` | +| `defaultValue` | `T` | + +#### Returns + +`T` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/layout/utils.d.ts:10 + +___ + +### isExperienceEditorActive + +▸ `Const` **isExperienceEditorActive**(): `boolean` + +#### Returns + +`boolean` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/utils/experience-editor.d.ts:1 + +___ + +### resetExperienceEditorChromes + +▸ `Const` **resetExperienceEditorChromes**(): `void` + +#### Returns + +`void` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/utils/experience-editor.d.ts:2 + +___ + +### useSitecoreContext + +▸ **useSitecoreContext**<`Context`\>(`options?`): `Object` + +This hook grants acсess to the current SiteCore page context +by default JSS includes the following properties in this context: +- pageEditing - Provided by Layout Service, a boolean indicating whether the route is being accessed via the Experience Editor. +- pageState - Like pageEditing, but a string: normal, preview or edit. +- site - Provided by Layout Service, an object containing the name of the current Sitecore site context. + +**`see`** https://jss.sitecore.com/docs/techniques/extending-layout-service/layoutservice-extending-context + +**`example`** +const EditMode = () => { + const { sitecoreContext } = useSitecoreContext(); + return Edit Mode is {sitecoreContext.pageEditing ? 'active' : 'inactive'} +} + +**`example`** +const EditMode = () => { + const { sitecoreContext, updateSitecoreContext } = useSitecoreContext({ updatable: true }); + const onClick = () => updateSitecoreContext({ pageEditing: true }); + return Edit Mode is {sitecoreContext.pageEditing ? 'active' : 'inactive'} +} + +#### Type parameters + +| Name | +| :------ | +| `Context` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `options?` | `WithSitecoreContextOptions` | + +#### Returns + +`Object` + +{ sitecoreContext, updateSitecoreContext } + +| Name | Type | +| :------ | :------ | +| `sitecoreContext` | `Context` | +| `updateSitecoreContext` | (`value`: `any`) => `void` \| `undefined` | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/enhancers/withSitecoreContext.d.ts:42 + +___ + +### withExperienceEditorChromes + +▸ `Const` **withExperienceEditorChromes**(`WrappedComponent`): `ComponentClass`<`Object`, `any`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `WrappedComponent` | `ComponentClass`<`unknown`, `any`\> \| `SFC`<`unknown`\> | + +#### Returns + +`ComponentClass`<`Object`, `any`\> + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/enhancers/withExperienceEditorChromes.d.ts:2 + +___ + +### withPlaceholder + +▸ **withPlaceholder**(`placeholders`, `options?`): (`WrappedComponent`: `React.ComponentClass`<`any`, `any`\> \| `React.SFC`<`any`\>) => (`props`: `PlaceholderProps`) => `JSX.Element` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `placeholders` | `WithPlaceholderSpec` | +| `options?` | `WithPlaceholderOptions` | + +#### Returns + +`fn` + +▸ (`WrappedComponent`): (`props`: `PlaceholderProps`) => `JSX.Element` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `WrappedComponent` | `React.ComponentClass`<`any`, `any`\> \| `React.SFC`<`any`\> | + +##### Returns + +`fn` + +▸ (`props`): `JSX.Element` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `props` | `PlaceholderProps` | + +##### Returns + +`JSX.Element` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/enhancers/withPlaceholder.d.ts:34 + +___ + +### withSitecoreContext + +▸ **withSitecoreContext**(`options?`): (`Component`: `React.ComponentType`<`ComponentProps`\>) => (`props`: `Pick`<`ComponentProps`, `Exclude`\>) => `JSX.Element` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `options?` | `WithSitecoreContextOptions` | + +#### Returns + +`fn` + +▸ <`ComponentProps`\>(`Component`): (`props`: `Pick`<`ComponentProps`, `Exclude`\>) => `JSX.Element` + +##### Type parameters + +| Name | Type | +| :------ | :------ | +| `ComponentProps` | extends `ComponentConsumerProps` | + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `Component` | `React.ComponentType`<`ComponentProps`\> | + +##### Returns + +`fn` + +▸ (`props`): `JSX.Element` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `props` | `Pick`<`ComponentProps`, `Exclude`\> | + +##### Returns + +`JSX.Element` + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss-react/types/enhancers/withSitecoreContext.d.ts:16 diff --git a/ref-docs/sitecore-jss-nextjs/modules/index.mediaApi.md b/ref-docs/sitecore-jss-nextjs/modules/index.mediaApi.md new file mode 100644 index 0000000000..34f46dbb6e --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/index.mediaApi.md @@ -0,0 +1,135 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / [index](index.md) / mediaApi + +# Namespace: mediaApi + +[index](index.md).mediaApi + +## Table of contents + +### Functions + +- [findEditorImageTag](index.mediaApi.md#findeditorimagetag) +- [getRequiredParams](index.mediaApi.md#getrequiredparams) +- [getSrcSet](index.mediaApi.md#getsrcset) +- [updateImageUrl](index.mediaApi.md#updateimageurl) + +## Functions + +### findEditorImageTag + +▸ `Const` **findEditorImageTag**(`editorMarkup`): ``null`` \| { `attrs`: { [key: string]: `string`; } ; `imgTag`: `string` } + +Makes a request to Sitecore Content Service for the specified item path. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `editorMarkup` | `string` | + +#### Returns + +``null`` \| { `attrs`: { [key: string]: `string`; } ; `imgTag`: `string` } + +found image tag + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/media-api.d.ts:6 + +___ + +### getRequiredParams + +▸ `Const` **getRequiredParams**(`qs`): `Object` + +Get required query string params which should be merged with user params + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `qs` | `Object` | layout service parsed query string | + +#### Returns + +`Object` + +requiredParams + +| Name | Type | +| :------ | :------ | +| `db` | `undefined` \| `string` | +| `la` | `undefined` \| `string` | +| `rev` | `undefined` \| `string` | +| `ts` | `undefined` \| `string` | +| `vs` | `undefined` \| `string` | + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/media-api.d.ts:17 + +___ + +### getSrcSet + +▸ `Const` **getSrcSet**(`url`, `srcSet`, `imageParams?`, `mediaUrlPrefix?`): `string` + +Receives an array of `srcSet` parameters that are iterated and used as parameters to generate +a corresponding set of updated Sitecore media URLs via @see updateImageUrl. The result is a comma-delimited +list of media URLs with respective dimension parameters. + +**`example`** +// returns '/ipsum.jpg?h=1000&w=1000 1000w, /ipsum.jpg?mh=250&mw=250 250w' +getSrcSet('/ipsum.jpg', [{ h: 1000, w: 1000 }, { mh: 250, mw: 250 } ]) + +More information about `srcSet`: [https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | +| `srcSet` | { [key: string]: `string` \| `number` \| `undefined`; }[] | +| `imageParams?` | `Object` | +| `mediaUrlPrefix?` | `RegExp` | + +#### Returns + +`string` + +src set + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/media-api.d.ts:57 + +___ + +### updateImageUrl + +▸ `Const` **updateImageUrl**(`url`, `params?`, `mediaUrlPrefix?`): `string` + +Prepares a Sitecore media URL with `params` for use by the JSS media handler. +This is done by replacing `/~/media` or `/-/media` with `/~/jssmedia` or `/-/jssmedia`, respectively. +Provided `params` are used as the querystring parameters for the media URL. +Can use `mediaUrlPrefix` in order to use a custom prefix. +If no `params` are sent, the original media URL is returned. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | +| `params?` | ``null`` \| { [key: string]: `string` \| `number` \| `undefined`; } | +| `mediaUrlPrefix?` | `RegExp` | + +#### Returns + +`string` + +url + +#### Defined in + +node_modules/@sitecore-jss/sitecore-jss/types/media-api.d.ts:37 diff --git a/ref-docs/sitecore-jss-nextjs/modules/middleware.md b/ref-docs/sitecore-jss-nextjs/modules/middleware.md new file mode 100644 index 0000000000..7edac9fa70 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/middleware.md @@ -0,0 +1,43 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / middleware + +# Module: middleware + +## Table of contents + +### References + +- [EditingDataCache](middleware.md#editingdatacache) +- [EditingDataMiddleware](middleware.md#editingdatamiddleware) +- [EditingDataMiddlewareConfig](middleware.md#editingdatamiddlewareconfig) +- [EditingRenderMiddleware](middleware.md#editingrendermiddleware) +- [EditingRenderMiddlewareConfig](middleware.md#editingrendermiddlewareconfig) + +## References + +### EditingDataCache + +Re-exports: [EditingDataCache](../interfaces/middleware_editing_data_cache.EditingDataCache.md) + +___ + +### EditingDataMiddleware + +Re-exports: [EditingDataMiddleware](../classes/middleware_editing_data_middleware.EditingDataMiddleware.md) + +___ + +### EditingDataMiddlewareConfig + +Re-exports: [EditingDataMiddlewareConfig](../interfaces/middleware_editing_data_middleware.EditingDataMiddlewareConfig.md) + +___ + +### EditingRenderMiddleware + +Re-exports: [EditingRenderMiddleware](../classes/middleware_editing_render_middleware.EditingRenderMiddleware.md) + +___ + +### EditingRenderMiddlewareConfig + +Re-exports: [EditingRenderMiddlewareConfig](../interfaces/middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md) diff --git a/ref-docs/sitecore-jss-nextjs/modules/middleware_editing_data_cache.md b/ref-docs/sitecore-jss-nextjs/modules/middleware_editing_data_cache.md new file mode 100644 index 0000000000..130d6bf39b --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/middleware_editing_data_cache.md @@ -0,0 +1,29 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / middleware/editing-data-cache + +# Module: middleware/editing-data-cache + +## Table of contents + +### Classes + +- [EditingDataDiskCache](../classes/middleware_editing_data_cache.EditingDataDiskCache.md) + +### Interfaces + +- [EditingDataCache](../interfaces/middleware_editing_data_cache.EditingDataCache.md) + +### Variables + +- [editingDataDiskCache](middleware_editing_data_cache.md#editingdatadiskcache) + +## Variables + +### editingDataDiskCache + +• `Const` **editingDataDiskCache**: [`EditingDataDiskCache`](../classes/middleware_editing_data_cache.EditingDataDiskCache.md) + +EditingDataDiskCache singleton + +#### Defined in + +[src/middleware/editing-data-cache.ts:48](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-data-cache.ts#L48) diff --git a/ref-docs/sitecore-jss-nextjs/modules/middleware_editing_data_middleware.md b/ref-docs/sitecore-jss-nextjs/modules/middleware_editing_data_middleware.md new file mode 100644 index 0000000000..d78bf275bf --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/middleware_editing_data_middleware.md @@ -0,0 +1,13 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / middleware/editing-data-middleware + +# Module: middleware/editing-data-middleware + +## Table of contents + +### Classes + +- [EditingDataMiddleware](../classes/middleware_editing_data_middleware.EditingDataMiddleware.md) + +### Interfaces + +- [EditingDataMiddlewareConfig](../interfaces/middleware_editing_data_middleware.EditingDataMiddlewareConfig.md) diff --git a/ref-docs/sitecore-jss-nextjs/modules/middleware_editing_render_middleware.md b/ref-docs/sitecore-jss-nextjs/modules/middleware_editing_render_middleware.md new file mode 100644 index 0000000000..9026aea9e9 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/middleware_editing_render_middleware.md @@ -0,0 +1,37 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / middleware/editing-render-middleware + +# Module: middleware/editing-render-middleware + +## Table of contents + +### Classes + +- [EditingRenderMiddleware](../classes/middleware_editing_render_middleware.EditingRenderMiddleware.md) + +### Interfaces + +- [EditingRenderMiddlewareConfig](../interfaces/middleware_editing_render_middleware.EditingRenderMiddlewareConfig.md) + +### Functions + +- [extractEditingData](middleware_editing_render_middleware.md#extracteditingdata) + +## Functions + +### extractEditingData + +▸ **extractEditingData**(`req`): [`EditingData`](sharedTypes_editing_data.md#editingdata) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `req` | `NextApiRequest` | + +#### Returns + +[`EditingData`](sharedTypes_editing_data.md#editingdata) + +#### Defined in + +[src/middleware/editing-render-middleware.ts:188](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/middleware/editing-render-middleware.ts#L188) diff --git a/ref-docs/sitecore-jss-nextjs/modules/services_component_props_service.md b/ref-docs/sitecore-jss-nextjs/modules/services_component_props_service.md new file mode 100644 index 0000000000..2998d8ba3a --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/services_component_props_service.md @@ -0,0 +1,63 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / services/component-props-service + +# Module: services/component-props-service + +## Table of contents + +### Classes + +- [ComponentPropsService](../classes/services_component_props_service.ComponentPropsService.md) + +### Type aliases + +- [ComponentPropsRequest](services_component_props_service.md#componentpropsrequest) +- [FetchComponentPropsArguments](services_component_props_service.md#fetchcomponentpropsarguments) + +## Type aliases + +### ComponentPropsRequest + +Ƭ **ComponentPropsRequest**<`NextContext`\>: `Object` + +#### Type parameters + +| Name | +| :------ | +| `NextContext` | + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `context` | `NextContext` | +| `fetch` | [`ComponentPropsFetchFunction`](sharedTypes_component_props.md#componentpropsfetchfunction)<`NextContext`\> | +| `layoutData` | [`LayoutServiceData`](../interfaces/index.LayoutServiceData.md) | +| `rendering` | [`ComponentRendering`](../interfaces/index.ComponentRendering.md) | + +#### Defined in + +[src/services/component-props-service.ts:20](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/component-props-service.ts#L20) + +___ + +### FetchComponentPropsArguments + +Ƭ **FetchComponentPropsArguments**<`NextContext`\>: `Object` + +#### Type parameters + +| Name | +| :------ | +| `NextContext` | + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `componentModule` | [`ComponentModule`](sharedTypes_component_module.md#componentmodule) | +| `context` | `NextContext` | +| `layoutData` | [`LayoutServiceData`](../interfaces/index.LayoutServiceData.md) | + +#### Defined in + +[src/services/component-props-service.ts:14](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/component-props-service.ts#L14) diff --git a/ref-docs/sitecore-jss-nextjs/modules/services_disconnected_sitemap_service.md b/ref-docs/sitecore-jss-nextjs/modules/services_disconnected_sitemap_service.md new file mode 100644 index 0000000000..89daad6cd0 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/services_disconnected_sitemap_service.md @@ -0,0 +1,9 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / services/disconnected-sitemap-service + +# Module: services/disconnected-sitemap-service + +## Table of contents + +### Classes + +- [DisconnectedSitemapService](../classes/services_disconnected_sitemap_service.DisconnectedSitemapService.md) diff --git a/ref-docs/sitecore-jss-nextjs/modules/services_editing_data_service.md b/ref-docs/sitecore-jss-nextjs/modules/services_editing_data_service.md new file mode 100644 index 0000000000..b2adebb532 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/services_editing_data_service.md @@ -0,0 +1,40 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / services/editing-data-service + +# Module: services/editing-data-service + +## Table of contents + +### Classes + +- [EditingDataService](../classes/services_editing_data_service.EditingDataService.md) + +### Interfaces + +- [EditingDataServiceConfig](../interfaces/services_editing_data_service.EditingDataServiceConfig.md) + +### Variables + +- [QUERY\_PARAM\_EDITING\_SECRET](services_editing_data_service.md#query_param_editing_secret) +- [editingDataService](services_editing_data_service.md#editingdataservice) + +## Variables + +### QUERY\_PARAM\_EDITING\_SECRET + +• `Const` **QUERY\_PARAM\_EDITING\_SECRET**: ``"secret"`` + +#### Defined in + +[src/services/editing-data-service.ts:5](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L5) + +___ + +### editingDataService + +• `Const` **editingDataService**: [`EditingDataService`](../classes/services_editing_data_service.EditingDataService.md) + +EditingDataService singleton (with default values) + +#### Defined in + +[src/services/editing-data-service.ts:99](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/editing-data-service.ts#L99) diff --git a/ref-docs/sitecore-jss-nextjs/modules/services_graphql_sitemap_service.md b/ref-docs/sitecore-jss-nextjs/modules/services_graphql_sitemap_service.md new file mode 100644 index 0000000000..0dea93ced0 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/services_graphql_sitemap_service.md @@ -0,0 +1,82 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / services/graphql-sitemap-service + +# Module: services/graphql-sitemap-service + +## Table of contents + +### Classes + +- [GraphQLSitemapService](../classes/services_graphql_sitemap_service.GraphQLSitemapService.md) + +### Interfaces + +- [GraphQLSitemapServiceConfig](../interfaces/services_graphql_sitemap_service.GraphQLSitemapServiceConfig.md) + +### Type aliases + +- [PageListQueryResult](services_graphql_sitemap_service.md#pagelistqueryresult) +- [StaticPath](services_graphql_sitemap_service.md#staticpath) + +### Variables + +- [languageError](services_graphql_sitemap_service.md#languageerror) +- [queryError](services_graphql_sitemap_service.md#queryerror) + +## Type aliases + +### PageListQueryResult + +Ƭ **PageListQueryResult**: `Object` + +The schema of data returned in response to a page list query request + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `url` | `Object` | +| `url.path` | `string` | + +#### Defined in + +[src/services/graphql-sitemap-service.ts:54](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L54) + +___ + +### StaticPath + +Ƭ **StaticPath**: `Object` + +Object model of a site page item. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `locale?` | `string` | +| `params` | `Object` | +| `params.path` | `string`[] | + +#### Defined in + +[src/services/graphql-sitemap-service.ts:59](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L59) + +## Variables + +### languageError + +• `Const` `Private` **languageError**: ``"The list of languages cannot be empty"`` + +#### Defined in + +[src/services/graphql-sitemap-service.ts:15](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L15) + +___ + +### queryError + +• `Const` `Private` **queryError**: ``"Valid value for rootItemId not provided and failed to auto-resolve app root item."`` + +#### Defined in + +[src/services/graphql-sitemap-service.ts:11](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/services/graphql-sitemap-service.ts#L11) diff --git a/ref-docs/sitecore-jss-nextjs/modules/sharedTypes_component_module.md b/ref-docs/sitecore-jss-nextjs/modules/sharedTypes_component_module.md new file mode 100644 index 0000000000..e8ece0b7c7 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/sharedTypes_component_module.md @@ -0,0 +1,33 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / sharedTypes/component-module + +# Module: sharedTypes/component-module + +## Table of contents + +### Type aliases + +- [ComponentModule](sharedTypes_component_module.md#componentmodule) + +## Type aliases + +### ComponentModule + +Ƭ **ComponentModule**: (`componentName`: `string`) => `Module` \| `undefined` + +#### Type declaration + +▸ (`componentName`): `Module` \| `undefined` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `componentName` | `string` | + +##### Returns + +`Module` \| `undefined` + +#### Defined in + +[src/sharedTypes/component-module.ts:9](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/sharedTypes/component-module.ts#L9) diff --git a/ref-docs/sitecore-jss-nextjs/modules/sharedTypes_component_props.md b/ref-docs/sitecore-jss-nextjs/modules/sharedTypes_component_props.md new file mode 100644 index 0000000000..f89dacf62f --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/sharedTypes_component_props.md @@ -0,0 +1,87 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / sharedTypes/component-props + +# Module: sharedTypes/component-props + +## Table of contents + +### Type aliases + +- [ComponentPropsCollection](sharedTypes_component_props.md#componentpropscollection) +- [ComponentPropsFetchFunction](sharedTypes_component_props.md#componentpropsfetchfunction) +- [GetServerSideComponentProps](sharedTypes_component_props.md#getserversidecomponentprops) +- [GetStaticComponentProps](sharedTypes_component_props.md#getstaticcomponentprops) + +## Type aliases + +### ComponentPropsCollection + +Ƭ **ComponentPropsCollection**: `Object` + +Shape of component props storage + +#### Index signature + +▪ [componentUid: `string`]: `unknown` + +#### Defined in + +[src/sharedTypes/component-props.ts:7](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/sharedTypes/component-props.ts#L7) + +___ + +### ComponentPropsFetchFunction + +Ƭ **ComponentPropsFetchFunction**<`NextContext`, `FetchedProps`\>: (`rendering`: [`ComponentRendering`](../interfaces/index.ComponentRendering.md), `layoutData`: [`LayoutServiceData`](../interfaces/index.LayoutServiceData.md), `context`: `NextContext`) => `Promise`<`FetchedProps`\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `NextContext` | `NextContext` | +| `FetchedProps` | `unknown` | + +#### Type declaration + +▸ (`rendering`, `layoutData`, `context`): `Promise`<`FetchedProps`\> + +Type of side effect function which could be invoked on component level (getStaticProps/getServerSideProps) + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `rendering` | [`ComponentRendering`](../interfaces/index.ComponentRendering.md) | +| `layoutData` | [`LayoutServiceData`](../interfaces/index.LayoutServiceData.md) | +| `context` | `NextContext` | + +##### Returns + +`Promise`<`FetchedProps`\> + +#### Defined in + +[src/sharedTypes/component-props.ts:14](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/sharedTypes/component-props.ts#L14) + +___ + +### GetServerSideComponentProps + +Ƭ **GetServerSideComponentProps**: [`ComponentPropsFetchFunction`](sharedTypes_component_props.md#componentpropsfetchfunction)<`GetServerSidePropsContext`\> + +Shape of getServerSideProps function on component level + +#### Defined in + +[src/sharedTypes/component-props.ts:23](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/sharedTypes/component-props.ts#L23) + +___ + +### GetStaticComponentProps + +Ƭ **GetStaticComponentProps**: [`ComponentPropsFetchFunction`](sharedTypes_component_props.md#componentpropsfetchfunction)<`GetStaticPropsContext`\> + +Shape of getStaticProps function on component level + +#### Defined in + +[src/sharedTypes/component-props.ts:28](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/sharedTypes/component-props.ts#L28) diff --git a/ref-docs/sitecore-jss-nextjs/modules/sharedTypes_editing_data.md b/ref-docs/sitecore-jss-nextjs/modules/sharedTypes_editing_data.md new file mode 100644 index 0000000000..7fe4231403 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/sharedTypes_editing_data.md @@ -0,0 +1,58 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / sharedTypes/editing-data + +# Module: sharedTypes/editing-data + +## Table of contents + +### Interfaces + +- [EditingPreviewData](../interfaces/sharedTypes_editing_data.EditingPreviewData.md) + +### Type aliases + +- [EditingData](sharedTypes_editing_data.md#editingdata) + +### Functions + +- [isEditingData](sharedTypes_editing_data.md#iseditingdata) + +## Type aliases + +### EditingData + +Ƭ **EditingData**: `Object` + +Data sent from Experience Editor + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `dictionary` | [`DictionaryPhrases`](../interfaces/index.DictionaryPhrases.md) | +| `language` | `string` | +| `layoutData` | [`LayoutServiceData`](../interfaces/index.LayoutServiceData.md) | +| `path` | `string` | + +#### Defined in + +[src/sharedTypes/editing-data.ts:6](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/sharedTypes/editing-data.ts#L6) + +## Functions + +### isEditingData + +▸ **isEditingData**(`data`): data is EditingData + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `data` | [`EditingData`](sharedTypes_editing_data.md#editingdata) \| `unknown` | + +#### Returns + +data is EditingData + +#### Defined in + +[src/sharedTypes/editing-data.ts:16](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/sharedTypes/editing-data.ts#L16) diff --git a/ref-docs/sitecore-jss-nextjs/modules/utils.md b/ref-docs/sitecore-jss-nextjs/modules/utils.md new file mode 100644 index 0000000000..e417af56a5 --- /dev/null +++ b/ref-docs/sitecore-jss-nextjs/modules/utils.md @@ -0,0 +1,65 @@ +[Sitecore JavaScript Rendering SDK for Next.js](../README.md) / utils + +# Module: utils + +## Table of contents + +### Functions + +- [getJssEditingSecret](utils.md#getjsseditingsecret) +- [getPublicUrl](utils.md#getpublicurl) +- [handleExperienceEditorFastRefresh](utils.md#handleexperienceeditorfastrefresh) + +## Functions + +### getJssEditingSecret + +▸ `Const` **getJssEditingSecret**(): `string` + +#### Returns + +`string` + +#### Defined in + +[src/utils.ts:64](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/utils.ts#L64) + +___ + +### getPublicUrl + +▸ `Const` **getPublicUrl**(): `string` + +#### Returns + +`string` + +#### Defined in + +[src/utils.ts:4](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/utils.ts#L4) + +___ + +### handleExperienceEditorFastRefresh + +▸ `Const` **handleExperienceEditorFastRefresh**(`forceReload?`): `void` + +Since Experience Editor does not support Fast Refresh: +1. Subscribe on events provided by webpack. +2. Reset experience editor chromes when build is finished + +**`default`** forceReload false + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `forceReload` | `boolean` | `false` | + +#### Returns + +`void` + +#### Defined in + +[src/utils.ts:31](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss-nextjs/src/utils.ts#L31) diff --git a/ref-docs/sitecore-jss/README.md b/ref-docs/sitecore-jss/README.md new file mode 100644 index 0000000000..61f4f4e3b7 --- /dev/null +++ b/ref-docs/sitecore-jss/README.md @@ -0,0 +1,32 @@ +Sitecore JavaScript Rendering SDK + +# Sitecore JavaScript Rendering SDK + +## Table of contents + +### Modules + +- [axios-fetcher](modules/axios_fetcher.md) +- [cache-client](modules/cache_client.md) +- [constants](modules/constants.md) +- [data-fetcher](modules/data_fetcher.md) +- [debug](modules/debug.md) +- [graphql](modules/graphql.md) +- [graphql-request-client](modules/graphql_request_client.md) +- [graphql/app-root-query](modules/graphql_app_root_query.md) +- [graphql/search-service](modules/graphql_search_service.md) +- [i18n](modules/i18n.md) +- [i18n/dictionary-service](modules/i18n_dictionary_service.md) +- [i18n/graphql-dictionary-service](modules/i18n_graphql_dictionary_service.md) +- [i18n/rest-dictionary-service](modules/i18n_rest_dictionary_service.md) +- [index](modules/index.md) +- [layout/graphql-layout-service](modules/layout_graphql_layout_service.md) +- [layout/layout-service](modules/layout_layout_service.md) +- [layout/models](modules/layout_models.md) +- [layout/rest-layout-service](modules/layout_rest_layout_service.md) +- [layout/utils](modules/layout_utils.md) +- [media-api](modules/media_api.md) +- [utils](modules/utils.md) +- [utils/experience-editor](modules/utils_experience_editor.md) +- [utils/is-server](modules/utils_is_server.md) +- [utils/resolve-url](modules/utils_resolve_url.md) diff --git a/ref-docs/sitecore-jss/classes/axios_fetcher.AxiosDataFetcher.md b/ref-docs/sitecore-jss/classes/axios_fetcher.AxiosDataFetcher.md new file mode 100644 index 0000000000..decf7e9372 --- /dev/null +++ b/ref-docs/sitecore-jss/classes/axios_fetcher.AxiosDataFetcher.md @@ -0,0 +1,214 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [axios-fetcher](../modules/axios_fetcher.md) / AxiosDataFetcher + +# Class: AxiosDataFetcher + +[axios-fetcher](../modules/axios_fetcher.md).AxiosDataFetcher + +## Table of contents + +### Constructors + +- [constructor](axios_fetcher.AxiosDataFetcher.md#constructor) + +### Properties + +- [instance](axios_fetcher.AxiosDataFetcher.md#instance) + +### Methods + +- [delete](axios_fetcher.AxiosDataFetcher.md#delete) +- [fetch](axios_fetcher.AxiosDataFetcher.md#fetch) +- [get](axios_fetcher.AxiosDataFetcher.md#get) +- [head](axios_fetcher.AxiosDataFetcher.md#head) +- [post](axios_fetcher.AxiosDataFetcher.md#post) +- [put](axios_fetcher.AxiosDataFetcher.md#put) + +## Constructors + +### constructor + +• **new AxiosDataFetcher**(`dataFetcherConfig?`) + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `dataFetcherConfig` | [`AxiosDataFetcherConfig`](../modules/axios_fetcher.md#axiosdatafetcherconfig) | Axios data fetcher configuration. Note `withCredentials` is set to `true` by default in order for Sitecore cookies to be included in CORS requests (which is necessary for analytics and such). | + +#### Defined in + +[axios-fetcher.ts:53](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/axios-fetcher.ts#L53) + +## Properties + +### instance + +• `Private` **instance**: `AxiosInstance` + +#### Defined in + +[axios-fetcher.ts:46](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/axios-fetcher.ts#L46) + +## Methods + +### delete + +▸ **delete**(`url`, `config?`): `Promise`<`AxiosResponse`<`any`\>\> + +Perform a DELETE request + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `config?` | `AxiosRequestConfig` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`any`\>\> + +response + +#### Defined in + +[axios-fetcher.ts:163](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/axios-fetcher.ts#L163) + +___ + +### fetch + +▸ **fetch**<`T`\>(`url`, `data?`): `Promise`<`AxiosResponse`<`T`\>\> + +Implements a data fetcher. @see HttpDataFetcher type for implementation details/notes. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `data?` | `unknown` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`T`\>\> + +response + +#### Defined in + +[axios-fetcher.ts:107](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/axios-fetcher.ts#L107) + +___ + +### get + +▸ **get**<`T`\>(`url`, `config?`): `Promise`<`AxiosResponse`<`T`\>\> + +Perform a GET request + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `config?` | `AxiosRequestConfig` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`T`\>\> + +response + +#### Defined in + +[axios-fetcher.ts:121](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/axios-fetcher.ts#L121) + +___ + +### head + +▸ **head**(`url`, `config?`): `Promise`<`AxiosResponse`<`any`\>\> + +Perform a HEAD request + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `config?` | `AxiosRequestConfig` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`any`\>\> + +response + +#### Defined in + +[axios-fetcher.ts:131](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/axios-fetcher.ts#L131) + +___ + +### post + +▸ **post**(`url`, `data?`, `config?`): `Promise`<`AxiosResponse`<`any`\>\> + +Perform a POST request + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `data?` | `unknown` | - | +| `config?` | `AxiosRequestConfig` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`any`\>\> + +response + +#### Defined in + +[axios-fetcher.ts:142](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/axios-fetcher.ts#L142) + +___ + +### put + +▸ **put**(`url`, `data?`, `config?`): `Promise`<`AxiosResponse`<`any`\>\> + +Perform a PUT request + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `url` | `string` | The URL to request; may include query string | +| `data?` | `unknown` | - | +| `config?` | `AxiosRequestConfig` | - | + +#### Returns + +`Promise`<`AxiosResponse`<`any`\>\> + +response + +#### Defined in + +[axios-fetcher.ts:153](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/axios-fetcher.ts#L153) diff --git a/ref-docs/sitecore-jss/classes/cache_client.MemoryCacheClient.md b/ref-docs/sitecore-jss/classes/cache_client.MemoryCacheClient.md new file mode 100644 index 0000000000..dcdf703551 --- /dev/null +++ b/ref-docs/sitecore-jss/classes/cache_client.MemoryCacheClient.md @@ -0,0 +1,137 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [cache-client](../modules/cache_client.md) / MemoryCacheClient + +# Class: MemoryCacheClient + +[cache-client](../modules/cache_client.md).MemoryCacheClient + +A cache client that uses the 'memory-cache' library (https://github.com/ptarjan/node-cache). +This class is meant to be extended or used as a mixin; it's not meant to be used directly. + +**`mixin`** + +## Type parameters + +| Name | Description | +| :------ | :------ | +| `T` | The type of data being cached. | + +## Implements + +- [`CacheClient`](../interfaces/cache_client.CacheClient.md)<`T`\> + +## Table of contents + +### Constructors + +- [constructor](cache_client.MemoryCacheClient.md#constructor) + +### Properties + +- [cache](cache_client.MemoryCacheClient.md#cache) +- [options](cache_client.MemoryCacheClient.md#options) + +### Methods + +- [getCacheValue](cache_client.MemoryCacheClient.md#getcachevalue) +- [setCacheValue](cache_client.MemoryCacheClient.md#setcachevalue) + +## Constructors + +### constructor + +• **new MemoryCacheClient**<`T`\>(`options`) + +Initializes a new instance of @see MemoryCacheClient using the provided @see CacheOptions + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `options` | [`CacheOptions`](../interfaces/cache_client.CacheOptions.md) | Configuration options | + +#### Defined in + +[cache-client.ts:61](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/cache-client.ts#L61) + +## Properties + +### cache + +• `Private` **cache**: `CacheClass`<`string`, `T`\> + +#### Defined in + +[cache-client.ts:55](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/cache-client.ts#L55) + +___ + +### options + +• **options**: [`CacheOptions`](../interfaces/cache_client.CacheOptions.md) + +## Methods + +### getCacheValue + +▸ **getCacheValue**(`key`): ``null`` \| `T` + +Retrieves a value from the cache. + +**`template`** The type of data being cached. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | + +#### Returns + +``null`` \| `T` + +The cache value as {T}, or null if the specified key is not found in the cache. + +#### Implementation of + +[CacheClient](../interfaces/cache_client.CacheClient.md).[getCacheValue](../interfaces/cache_client.CacheClient.md#getcachevalue) + +#### Defined in + +[cache-client.ts:77](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/cache-client.ts#L77) + +___ + +### setCacheValue + +▸ **setCacheValue**(`key`, `value`): `T` + +Adds a value to the cache for the specified cache key. + +**`template`** The type of data being cached. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | +| `value` | `T` | The value to cache. | + +#### Returns + +`T` + +The value added to the cache. + +#### Implementation of + +[CacheClient](../interfaces/cache_client.CacheClient.md).[setCacheValue](../interfaces/cache_client.CacheClient.md#setcachevalue) + +#### Defined in + +[cache-client.ts:88](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/cache-client.ts#L88) diff --git a/ref-docs/sitecore-jss/classes/graphql_request_client.GraphQLRequestClient.md b/ref-docs/sitecore-jss/classes/graphql_request_client.GraphQLRequestClient.md new file mode 100644 index 0000000000..0039b24d02 --- /dev/null +++ b/ref-docs/sitecore-jss/classes/graphql_request_client.GraphQLRequestClient.md @@ -0,0 +1,110 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [graphql-request-client](../modules/graphql_request_client.md) / GraphQLRequestClient + +# Class: GraphQLRequestClient + +[graphql-request-client](../modules/graphql_request_client.md).GraphQLRequestClient + +A GraphQL client for Sitecore APIs that uses the 'graphql-request' library. +https://github.com/prisma-labs/graphql-request + +## Implements + +- [`GraphQLClient`](../interfaces/graphql_request_client.GraphQLClient.md) + +## Table of contents + +### Constructors + +- [constructor](graphql_request_client.GraphQLRequestClient.md#constructor) + +### Properties + +- [client](graphql_request_client.GraphQLRequestClient.md#client) +- [debug](graphql_request_client.GraphQLRequestClient.md#debug) +- [headers](graphql_request_client.GraphQLRequestClient.md#headers) + +### Methods + +- [request](graphql_request_client.GraphQLRequestClient.md#request) + +## Constructors + +### constructor + +• **new GraphQLRequestClient**(`endpoint`, `clientConfig?`) + +Provides ability to execute graphql query using given `endpoint` + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `endpoint` | `string` | The Graphql endpoint | +| `clientConfig` | [`GraphQLRequestClientConfig`](../modules/graphql_request_client.md#graphqlrequestclientconfig) | - | + +#### Defined in + +[graphql-request-client.ts:45](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql-request-client.ts#L45) + +## Properties + +### client + +• `Private` **client**: `GraphQLClient` + +#### Defined in + +[graphql-request-client.ts:36](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql-request-client.ts#L36) + +___ + +### debug + +• `Private` **debug**: `Debugger` + +#### Defined in + +[graphql-request-client.ts:38](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql-request-client.ts#L38) + +___ + +### headers + +• `Private` **headers**: `Record`<`string`, `string`\> = `{}` + +#### Defined in + +[graphql-request-client.ts:37](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql-request-client.ts#L37) + +## Methods + +### request + +▸ **request**<`T`\>(`query`, `variables?`): `Promise`<`T`\> + +Execute graphql request + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `query` | `string` \| `DocumentNode` | graphql query | +| `variables?` | `Object` | graphql variables | + +#### Returns + +`Promise`<`T`\> + +#### Implementation of + +[GraphQLClient](../interfaces/graphql_request_client.GraphQLClient.md).[request](../interfaces/graphql_request_client.GraphQLClient.md#request) + +#### Defined in + +[graphql-request-client.ts:58](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql-request-client.ts#L58) diff --git a/ref-docs/sitecore-jss/classes/graphql_search_service.SearchQueryService.md b/ref-docs/sitecore-jss/classes/graphql_search_service.SearchQueryService.md new file mode 100644 index 0000000000..fd525118d0 --- /dev/null +++ b/ref-docs/sitecore-jss/classes/graphql_search_service.SearchQueryService.md @@ -0,0 +1,93 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [graphql/search-service](../modules/graphql_search_service.md) / SearchQueryService + +# Class: SearchQueryService + +[graphql/search-service](../modules/graphql_search_service.md).SearchQueryService + +Provides functionality for performing GraphQL 'search' operations, including handling pagination. +This class is meant to be extended or used as a mixin; it's not meant to be used directly. + +**`mixin`** + +## Type parameters + +| Name | Description | +| :------ | :------ | +| `T` | The type of objects being requested. | + +## Table of contents + +### Constructors + +- [constructor](graphql_search_service.SearchQueryService.md#constructor) + +### Properties + +- [client](graphql_search_service.SearchQueryService.md#client) + +### Methods + +- [fetch](graphql_search_service.SearchQueryService.md#fetch) + +## Constructors + +### constructor + +• **new SearchQueryService**<`T`\>(`client`) + +Creates an instance of search query service. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `client` | [`GraphQLClient`](../interfaces/graphql_request_client.GraphQLClient.md) | that fetches data from a GraphQL endpoint. | + +#### Defined in + +[graphql/search-service.ts:83](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L83) + +## Properties + +### client + +• `Protected` **client**: [`GraphQLClient`](../interfaces/graphql_request_client.GraphQLClient.md) + +## Methods + +### fetch + +▸ **fetch**(`query`, `args`): `Promise`<`T`[]\> + +1. Validates mandatory search query arguments +2. Executes search query with pagination +3. Aggregates pagination results into a single result-set. + +**`template`** The type of objects being requested. + +**`throws`** {RangeError} if a valid root item ID is not provided. + +**`throws`** {RangeError} if the provided language(s) is(are) not valid. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `query` | `string` \| `DocumentNode` | the search query. | +| `args` | [`SearchQueryVariables`](../modules/graphql_search_service.md#searchqueryvariables) | search query arguments. | + +#### Returns + +`Promise`<`T`[]\> + +array of result objects. + +#### Defined in + +[graphql/search-service.ts:96](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L96) diff --git a/ref-docs/sitecore-jss/classes/i18n_dictionary_service.DictionaryServiceBase.md b/ref-docs/sitecore-jss/classes/i18n_dictionary_service.DictionaryServiceBase.md new file mode 100644 index 0000000000..8b12b38e45 --- /dev/null +++ b/ref-docs/sitecore-jss/classes/i18n_dictionary_service.DictionaryServiceBase.md @@ -0,0 +1,177 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [i18n/dictionary-service](../modules/i18n_dictionary_service.md) / DictionaryServiceBase + +# Class: DictionaryServiceBase + +[i18n/dictionary-service](../modules/i18n_dictionary_service.md).DictionaryServiceBase + +Base implementation of @see DictionaryService that handles caching dictionary values + +## Hierarchy + +- **`DictionaryServiceBase`** + + ↳ [`GraphQLDictionaryService`](i18n_graphql_dictionary_service.GraphQLDictionaryService.md) + + ↳ [`RestDictionaryService`](i18n_rest_dictionary_service.RestDictionaryService.md) + +## Implements + +- [`DictionaryService`](../interfaces/i18n_dictionary_service.DictionaryService.md) +- [`CacheClient`](../interfaces/cache_client.CacheClient.md)<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +## Table of contents + +### Constructors + +- [constructor](i18n_dictionary_service.DictionaryServiceBase.md#constructor) + +### Properties + +- [cache](i18n_dictionary_service.DictionaryServiceBase.md#cache) +- [options](i18n_dictionary_service.DictionaryServiceBase.md#options) + +### Methods + +- [fetchDictionaryData](i18n_dictionary_service.DictionaryServiceBase.md#fetchdictionarydata) +- [getCacheClient](i18n_dictionary_service.DictionaryServiceBase.md#getcacheclient) +- [getCacheValue](i18n_dictionary_service.DictionaryServiceBase.md#getcachevalue) +- [setCacheValue](i18n_dictionary_service.DictionaryServiceBase.md#setcachevalue) + +## Constructors + +### constructor + +• **new DictionaryServiceBase**(`options`) + +Initializes a new instance of @see DictionaryService using the provided @see CacheOptions + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `options` | [`CacheOptions`](../interfaces/cache_client.CacheOptions.md) | Configuration options | + +#### Defined in + +[i18n/dictionary-service.ts:32](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L32) + +## Properties + +### cache + +• `Private` **cache**: [`CacheClient`](../interfaces/cache_client.CacheClient.md)<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +#### Defined in + +[i18n/dictionary-service.ts:26](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L26) + +___ + +### options + +• **options**: [`CacheOptions`](../interfaces/cache_client.CacheOptions.md) + +## Methods + +### fetchDictionaryData + +▸ `Abstract` **fetchDictionaryData**(`language`): `Promise`<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +Fetch dictionary data for a language. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `language` | `string` | + +#### Returns + +`Promise`<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +#### Implementation of + +[DictionaryService](../interfaces/i18n_dictionary_service.DictionaryService.md).[fetchDictionaryData](../interfaces/i18n_dictionary_service.DictionaryService.md#fetchdictionarydata) + +#### Defined in + +[i18n/dictionary-service.ts:70](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L70) + +___ + +### getCacheClient + +▸ `Protected` **getCacheClient**(): [`CacheClient`](../interfaces/cache_client.CacheClient.md)<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +Gets a cache client that can cache data. Uses memory-cache as the default +library for caching (@see MemoryCacheClient). Override this method if you +want to use something else. + +#### Returns + +[`CacheClient`](../interfaces/cache_client.CacheClient.md)<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +implementation + +#### Defined in + +[i18n/dictionary-service.ts:62](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L62) + +___ + +### getCacheValue + +▸ **getCacheValue**(`key`): ``null`` \| [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +Retrieves a @see DictionaryPhrases value from the cache. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | + +#### Returns + +``null`` \| [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +The @see DictionaryPhrases value, or null if the specified key is not found in the cache. + +#### Implementation of + +[CacheClient](../interfaces/cache_client.CacheClient.md).[getCacheValue](../interfaces/cache_client.CacheClient.md#getcachevalue) + +#### Defined in + +[i18n/dictionary-service.ts:52](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L52) + +___ + +### setCacheValue + +▸ **setCacheValue**(`key`, `value`): [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +Caches a @see DictionaryPhrases value for the specified cache key. + +**`mixes`** CacheClient + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | +| `value` | [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) | The value to cache. | + +#### Returns + +[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +The value added to the cache. + +#### Implementation of + +[CacheClient](../interfaces/cache_client.CacheClient.md).[setCacheValue](../interfaces/cache_client.CacheClient.md#setcachevalue) + +#### Defined in + +[i18n/dictionary-service.ts:43](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L43) diff --git a/ref-docs/sitecore-jss/classes/i18n_graphql_dictionary_service.GraphQLDictionaryService.md b/ref-docs/sitecore-jss/classes/i18n_graphql_dictionary_service.GraphQLDictionaryService.md new file mode 100644 index 0000000000..dd74fc1071 --- /dev/null +++ b/ref-docs/sitecore-jss/classes/i18n_graphql_dictionary_service.GraphQLDictionaryService.md @@ -0,0 +1,222 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [i18n/graphql-dictionary-service](../modules/i18n_graphql_dictionary_service.md) / GraphQLDictionaryService + +# Class: GraphQLDictionaryService + +[i18n/graphql-dictionary-service](../modules/i18n_graphql_dictionary_service.md).GraphQLDictionaryService + +Service that fetch dictionary data using Sitecore's GraphQL API. + +**`mixes`** SearchQueryService + +## Hierarchy + +- [`DictionaryServiceBase`](i18n_dictionary_service.DictionaryServiceBase.md) + + ↳ **`GraphQLDictionaryService`** + +## Table of contents + +### Constructors + +- [constructor](i18n_graphql_dictionary_service.GraphQLDictionaryService.md#constructor) + +### Properties + +- [graphQLClient](i18n_graphql_dictionary_service.GraphQLDictionaryService.md#graphqlclient) +- [options](i18n_graphql_dictionary_service.GraphQLDictionaryService.md#options) +- [searchService](i18n_graphql_dictionary_service.GraphQLDictionaryService.md#searchservice) + +### Methods + +- [fetchDictionaryData](i18n_graphql_dictionary_service.GraphQLDictionaryService.md#fetchdictionarydata) +- [getCacheClient](i18n_graphql_dictionary_service.GraphQLDictionaryService.md#getcacheclient) +- [getCacheValue](i18n_graphql_dictionary_service.GraphQLDictionaryService.md#getcachevalue) +- [getGraphQLClient](i18n_graphql_dictionary_service.GraphQLDictionaryService.md#getgraphqlclient) +- [setCacheValue](i18n_graphql_dictionary_service.GraphQLDictionaryService.md#setcachevalue) + +## Constructors + +### constructor + +• **new GraphQLDictionaryService**(`options`) + +Creates an instance of graphQL dictionary service with the provided options + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `options` | [`GraphQLDictionaryServiceConfig`](../interfaces/i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md) | instance | + +#### Overrides + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[constructor](i18n_dictionary_service.DictionaryServiceBase.md#constructor) + +#### Defined in + +[i18n/graphql-dictionary-service.ts:90](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L90) + +## Properties + +### graphQLClient + +• `Private` **graphQLClient**: [`GraphQLClient`](../interfaces/graphql_request_client.GraphQLClient.md) + +#### Defined in + +[i18n/graphql-dictionary-service.ts:83](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L83) + +___ + +### options + +• **options**: [`GraphQLDictionaryServiceConfig`](../interfaces/i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md) + +#### Inherited from + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[options](i18n_dictionary_service.DictionaryServiceBase.md#options) + +___ + +### searchService + +• `Private` **searchService**: [`SearchQueryService`](graphql_search_service.SearchQueryService.md)<[`DictionaryQueryResult`](../modules/i18n_graphql_dictionary_service.md#dictionaryqueryresult)\> + +#### Defined in + +[i18n/graphql-dictionary-service.ts:84](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L84) + +## Methods + +### fetchDictionaryData + +▸ **fetchDictionaryData**(`language`): `Promise`<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +Fetches dictionary data for internalization. + +**`default`** query (@see query) + +**`throws`** {Error} if the app root was not found for the specified site and language. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `language` | `string` | the language to fetch | + +#### Returns + +`Promise`<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +dictionary phrases + +#### Overrides + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[fetchDictionaryData](i18n_dictionary_service.DictionaryServiceBase.md#fetchdictionarydata) + +#### Defined in + +[i18n/graphql-dictionary-service.ts:103](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L103) + +___ + +### getCacheClient + +▸ `Protected` **getCacheClient**(): [`CacheClient`](../interfaces/cache_client.CacheClient.md)<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +Gets a cache client that can cache data. Uses memory-cache as the default +library for caching (@see MemoryCacheClient). Override this method if you +want to use something else. + +#### Returns + +[`CacheClient`](../interfaces/cache_client.CacheClient.md)<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +implementation + +#### Inherited from + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[getCacheClient](i18n_dictionary_service.DictionaryServiceBase.md#getcacheclient) + +#### Defined in + +[i18n/dictionary-service.ts:62](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L62) + +___ + +### getCacheValue + +▸ **getCacheValue**(`key`): ``null`` \| [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +Retrieves a @see DictionaryPhrases value from the cache. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | + +#### Returns + +``null`` \| [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +The @see DictionaryPhrases value, or null if the specified key is not found in the cache. + +#### Inherited from + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[getCacheValue](i18n_dictionary_service.DictionaryServiceBase.md#getcachevalue) + +#### Defined in + +[i18n/dictionary-service.ts:52](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L52) + +___ + +### getGraphQLClient + +▸ `Protected` **getGraphQLClient**(): [`GraphQLClient`](../interfaces/graphql_request_client.GraphQLClient.md) + +Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default +library for fetching graphql data (@see GraphQLRequestClient). Override this method if you +want to use something else. + +#### Returns + +[`GraphQLClient`](../interfaces/graphql_request_client.GraphQLClient.md) + +implementation + +#### Defined in + +[i18n/graphql-dictionary-service.ts:143](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L143) + +___ + +### setCacheValue + +▸ **setCacheValue**(`key`, `value`): [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +Caches a @see DictionaryPhrases value for the specified cache key. + +**`mixes`** CacheClient + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | +| `value` | [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) | The value to cache. | + +#### Returns + +[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +The value added to the cache. + +#### Inherited from + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[setCacheValue](i18n_dictionary_service.DictionaryServiceBase.md#setcachevalue) + +#### Defined in + +[i18n/dictionary-service.ts:43](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L43) diff --git a/ref-docs/sitecore-jss/classes/i18n_rest_dictionary_service.RestDictionaryService.md b/ref-docs/sitecore-jss/classes/i18n_rest_dictionary_service.RestDictionaryService.md new file mode 100644 index 0000000000..10ba6b7612 --- /dev/null +++ b/ref-docs/sitecore-jss/classes/i18n_rest_dictionary_service.RestDictionaryService.md @@ -0,0 +1,215 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [i18n/rest-dictionary-service](../modules/i18n_rest_dictionary_service.md) / RestDictionaryService + +# Class: RestDictionaryService + +[i18n/rest-dictionary-service](../modules/i18n_rest_dictionary_service.md).RestDictionaryService + +Fetch dictionary data using the Sitecore Dictionary Service REST API. +Uses Axios as the default data fetcher (@see AxiosDataFetcher). + +## Hierarchy + +- [`DictionaryServiceBase`](i18n_dictionary_service.DictionaryServiceBase.md) + + ↳ **`RestDictionaryService`** + +## Table of contents + +### Constructors + +- [constructor](i18n_rest_dictionary_service.RestDictionaryService.md#constructor) + +### Properties + +- [options](i18n_rest_dictionary_service.RestDictionaryService.md#options) + +### Accessors + +- [defaultFetcher](i18n_rest_dictionary_service.RestDictionaryService.md#defaultfetcher) + +### Methods + +- [fetchDictionaryData](i18n_rest_dictionary_service.RestDictionaryService.md#fetchdictionarydata) +- [getCacheClient](i18n_rest_dictionary_service.RestDictionaryService.md#getcacheclient) +- [getCacheValue](i18n_rest_dictionary_service.RestDictionaryService.md#getcachevalue) +- [getUrl](i18n_rest_dictionary_service.RestDictionaryService.md#geturl) +- [setCacheValue](i18n_rest_dictionary_service.RestDictionaryService.md#setcachevalue) + +## Constructors + +### constructor + +• **new RestDictionaryService**(`options`) + +Initializes a new instance of @see DictionaryService using the provided @see CacheOptions + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `options` | [`RestDictionaryServiceConfig`](../modules/i18n_rest_dictionary_service.md#restdictionaryserviceconfig) | + +#### Overrides + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[constructor](i18n_dictionary_service.DictionaryServiceBase.md#constructor) + +#### Defined in + +[i18n/rest-dictionary-service.ts:47](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/rest-dictionary-service.ts#L47) + +## Properties + +### options + +• **options**: [`RestDictionaryServiceConfig`](../modules/i18n_rest_dictionary_service.md#restdictionaryserviceconfig) + +#### Inherited from + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[options](i18n_dictionary_service.DictionaryServiceBase.md#options) + +## Accessors + +### defaultFetcher + +• `get` **defaultFetcher**(): [`HttpDataFetcher`](../modules/data_fetcher.md#httpdatafetcher)<[`RestDictionaryServiceData`](../modules/i18n_rest_dictionary_service.md#restdictionaryservicedata)\> + +Provides default @see AxiosDataFetcher data fetcher + +#### Returns + +[`HttpDataFetcher`](../modules/data_fetcher.md#httpdatafetcher)<[`RestDictionaryServiceData`](../modules/i18n_rest_dictionary_service.md#restdictionaryservicedata)\> + +#### Defined in + +[i18n/rest-dictionary-service.ts:42](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/rest-dictionary-service.ts#L42) + +## Methods + +### fetchDictionaryData + +▸ **fetchDictionaryData**(`language`): `Promise`<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +Fetch dictionary data for a language. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `language` | `string` | + +#### Returns + +`Promise`<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +#### Overrides + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[fetchDictionaryData](i18n_dictionary_service.DictionaryServiceBase.md#fetchdictionarydata) + +#### Defined in + +[i18n/rest-dictionary-service.ts:55](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/rest-dictionary-service.ts#L55) + +___ + +### getCacheClient + +▸ `Protected` **getCacheClient**(): [`CacheClient`](../interfaces/cache_client.CacheClient.md)<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +Gets a cache client that can cache data. Uses memory-cache as the default +library for caching (@see MemoryCacheClient). Override this method if you +want to use something else. + +#### Returns + +[`CacheClient`](../interfaces/cache_client.CacheClient.md)<[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md)\> + +implementation + +#### Inherited from + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[getCacheClient](i18n_dictionary_service.DictionaryServiceBase.md#getcacheclient) + +#### Defined in + +[i18n/dictionary-service.ts:62](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L62) + +___ + +### getCacheValue + +▸ **getCacheValue**(`key`): ``null`` \| [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +Retrieves a @see DictionaryPhrases value from the cache. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | + +#### Returns + +``null`` \| [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +The @see DictionaryPhrases value, or null if the specified key is not found in the cache. + +#### Inherited from + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[getCacheValue](i18n_dictionary_service.DictionaryServiceBase.md#getcachevalue) + +#### Defined in + +[i18n/dictionary-service.ts:52](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L52) + +___ + +### getUrl + +▸ `Protected` **getUrl**(`language`): `string` + +Generate dictionary service url + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `language` | `string` | + +#### Returns + +`string` + +#### Defined in + +[i18n/rest-dictionary-service.ts:76](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/rest-dictionary-service.ts#L76) + +___ + +### setCacheValue + +▸ **setCacheValue**(`key`, `value`): [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +Caches a @see DictionaryPhrases value for the specified cache key. + +**`mixes`** CacheClient + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | +| `value` | [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) | The value to cache. | + +#### Returns + +[`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +The value added to the cache. + +#### Inherited from + +[DictionaryServiceBase](i18n_dictionary_service.DictionaryServiceBase.md).[setCacheValue](i18n_dictionary_service.DictionaryServiceBase.md#setcachevalue) + +#### Defined in + +[i18n/dictionary-service.ts:43](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L43) diff --git a/ref-docs/sitecore-jss/classes/layout_graphql_layout_service.GraphQLLayoutService.md b/ref-docs/sitecore-jss/classes/layout_graphql_layout_service.GraphQLLayoutService.md new file mode 100644 index 0000000000..66472ae63b --- /dev/null +++ b/ref-docs/sitecore-jss/classes/layout_graphql_layout_service.GraphQLLayoutService.md @@ -0,0 +1,138 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/graphql-layout-service](../modules/layout_graphql_layout_service.md) / GraphQLLayoutService + +# Class: GraphQLLayoutService + +[layout/graphql-layout-service](../modules/layout_graphql_layout_service.md).GraphQLLayoutService + +## Hierarchy + +- [`LayoutServiceBase`](layout_layout_service.LayoutServiceBase.md) + + ↳ **`GraphQLLayoutService`** + +## Table of contents + +### Constructors + +- [constructor](layout_graphql_layout_service.GraphQLLayoutService.md#constructor) + +### Properties + +- [graphQLClient](layout_graphql_layout_service.GraphQLLayoutService.md#graphqlclient) +- [serviceConfig](layout_graphql_layout_service.GraphQLLayoutService.md#serviceconfig) + +### Methods + +- [fetchLayoutData](layout_graphql_layout_service.GraphQLLayoutService.md#fetchlayoutdata) +- [getGraphQLClient](layout_graphql_layout_service.GraphQLLayoutService.md#getgraphqlclient) +- [getLayoutQuery](layout_graphql_layout_service.GraphQLLayoutService.md#getlayoutquery) + +## Constructors + +### constructor + +• **new GraphQLLayoutService**(`serviceConfig`) + +Fetch layout data using the Sitecore GraphQL endpoint. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `serviceConfig` | [`GraphQLLayoutServiceConfig`](../modules/layout_graphql_layout_service.md#graphqllayoutserviceconfig) | + +#### Overrides + +[LayoutServiceBase](layout_layout_service.LayoutServiceBase.md).[constructor](layout_layout_service.LayoutServiceBase.md#constructor) + +#### Defined in + +[layout/graphql-layout-service.ts:40](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/graphql-layout-service.ts#L40) + +## Properties + +### graphQLClient + +• `Private` **graphQLClient**: [`GraphQLClient`](../interfaces/graphql_request_client.GraphQLClient.md) + +#### Defined in + +[layout/graphql-layout-service.ts:34](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/graphql-layout-service.ts#L34) + +___ + +### serviceConfig + +• **serviceConfig**: [`GraphQLLayoutServiceConfig`](../modules/layout_graphql_layout_service.md#graphqllayoutserviceconfig) + +## Methods + +### fetchLayoutData + +▸ **fetchLayoutData**(`itemPath`, `language?`): `Promise`<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\> + +Fetch layout data for an item. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `itemPath` | `string` | +| `language?` | `string` | + +#### Returns + +`Promise`<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\> + +layout service data + +#### Overrides + +[LayoutServiceBase](layout_layout_service.LayoutServiceBase.md).[fetchLayoutData](layout_layout_service.LayoutServiceBase.md#fetchlayoutdata) + +#### Defined in + +[layout/graphql-layout-service.ts:51](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/graphql-layout-service.ts#L51) + +___ + +### getGraphQLClient + +▸ `Protected` **getGraphQLClient**(): [`GraphQLClient`](../interfaces/graphql_request_client.GraphQLClient.md) + +Gets a GraphQL client that can make requests to the API. Uses graphql-request as the default +library for fetching graphql data (@see GraphQLRequestClient). Override this method if you +want to use something else. + +#### Returns + +[`GraphQLClient`](../interfaces/graphql_request_client.GraphQLClient.md) + +implementation + +#### Defined in + +[layout/graphql-layout-service.ts:78](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/graphql-layout-service.ts#L78) + +___ + +### getLayoutQuery + +▸ `Protected` **getLayoutQuery**(`itemPath`, `language?`): `string` + +Returns GraphQL Layout query + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `itemPath` | `string` | page route | +| `language?` | `string` | - | + +#### Returns + +`string` + +#### Defined in + +[layout/graphql-layout-service.ts:90](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/graphql-layout-service.ts#L90) diff --git a/ref-docs/sitecore-jss/classes/layout_layout_service.LayoutServiceBase.md b/ref-docs/sitecore-jss/classes/layout_layout_service.LayoutServiceBase.md new file mode 100644 index 0000000000..cc71732436 --- /dev/null +++ b/ref-docs/sitecore-jss/classes/layout_layout_service.LayoutServiceBase.md @@ -0,0 +1,64 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/layout-service](../modules/layout_layout_service.md) / LayoutServiceBase + +# Class: LayoutServiceBase + +[layout/layout-service](../modules/layout_layout_service.md).LayoutServiceBase + +## Hierarchy + +- **`LayoutServiceBase`** + + ↳ [`GraphQLLayoutService`](layout_graphql_layout_service.GraphQLLayoutService.md) + + ↳ [`RestLayoutService`](layout_rest_layout_service.RestLayoutService.md) + +## Implements + +- [`LayoutService`](../interfaces/layout_layout_service.LayoutService.md) + +## Table of contents + +### Constructors + +- [constructor](layout_layout_service.LayoutServiceBase.md#constructor) + +### Methods + +- [fetchLayoutData](layout_layout_service.LayoutServiceBase.md#fetchlayoutdata) + +## Constructors + +### constructor + +• **new LayoutServiceBase**() + +## Methods + +### fetchLayoutData + +▸ `Abstract` **fetchLayoutData**(`itemPath`, `language?`, `req?`, `res?`): `Promise`<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\> + +Fetch layout data for an item. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `itemPath` | `string` | +| `language?` | `string` | +| `req?` | `IncomingMessage` | +| `res?` | `ServerResponse` | + +#### Returns + +`Promise`<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\> + +layout data + +#### Implementation of + +[LayoutService](../interfaces/layout_layout_service.LayoutService.md).[fetchLayoutData](../interfaces/layout_layout_service.LayoutService.md#fetchlayoutdata) + +#### Defined in + +[layout/layout-service.ts:22](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/layout-service.ts#L22) diff --git a/ref-docs/sitecore-jss/classes/layout_rest_layout_service.RestLayoutService.md b/ref-docs/sitecore-jss/classes/layout_rest_layout_service.RestLayoutService.md new file mode 100644 index 0000000000..4c0c5c3057 --- /dev/null +++ b/ref-docs/sitecore-jss/classes/layout_rest_layout_service.RestLayoutService.md @@ -0,0 +1,250 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/rest-layout-service](../modules/layout_rest_layout_service.md) / RestLayoutService + +# Class: RestLayoutService + +[layout/rest-layout-service](../modules/layout_rest_layout_service.md).RestLayoutService + +Fetch layout data using the Sitecore Layout Service REST API. +Uses Axios as the default data fetcher (@see AxiosDataFetcher). + +## Hierarchy + +- [`LayoutServiceBase`](layout_layout_service.LayoutServiceBase.md) + + ↳ **`RestLayoutService`** + +## Table of contents + +### Constructors + +- [constructor](layout_rest_layout_service.RestLayoutService.md#constructor) + +### Methods + +- [fetchLayoutData](layout_rest_layout_service.RestLayoutService.md#fetchlayoutdata) +- [fetchPlaceholderData](layout_rest_layout_service.RestLayoutService.md#fetchplaceholderdata) +- [getDefaultFetcher](layout_rest_layout_service.RestLayoutService.md#getdefaultfetcher) +- [getFetchOptions](layout_rest_layout_service.RestLayoutService.md#getfetchoptions) +- [setupReqHeaders](layout_rest_layout_service.RestLayoutService.md#setupreqheaders) +- [setupResHeaders](layout_rest_layout_service.RestLayoutService.md#setupresheaders) + +## Constructors + +### constructor + +• **new RestLayoutService**(`serviceConfig`) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `serviceConfig` | [`RestLayoutServiceConfig`](../modules/layout_rest_layout_service.md#restlayoutserviceconfig) | + +#### Overrides + +[LayoutServiceBase](layout_layout_service.LayoutServiceBase.md).[constructor](layout_layout_service.LayoutServiceBase.md#constructor) + +#### Defined in + +[layout/rest-layout-service.ts:164](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L164) + +## Methods + +### fetchLayoutData + +▸ **fetchLayoutData**(`itemPath`, `language?`, `req?`, `res?`): `Promise`<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\> + +Fetch layout data for an item. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `itemPath` | `string` | +| `language?` | `string` | +| `req?` | `IncomingMessage` | +| `res?` | `ServerResponse` | + +#### Returns + +`Promise`<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\> + +layout service data + +#### Overrides + +[LayoutServiceBase](layout_layout_service.LayoutServiceBase.md).[fetchLayoutData](layout_layout_service.LayoutServiceBase.md#fetchlayoutdata) + +#### Defined in + +[layout/rest-layout-service.ts:176](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L176) + +___ + +### fetchPlaceholderData + +▸ **fetchPlaceholderData**(`placeholderName`, `itemPath`, `language?`, `req?`, `res?`): `Promise`<[`PlaceholderData`](../interfaces/layout_models.PlaceholderData.md)\> + +Fetch layout data for a particular placeholder. +Makes a request to Sitecore Layout Service for the specified placeholder in +a specific route item. Allows you to retrieve rendered data for individual placeholders instead of entire routes. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `placeholderName` | `string` | +| `itemPath` | `string` | +| `language?` | `string` | +| `req?` | `IncomingMessage` | +| `res?` | `ServerResponse` | + +#### Returns + +`Promise`<[`PlaceholderData`](../interfaces/layout_models.PlaceholderData.md)\> + +placeholder data + +#### Defined in + +[layout/rest-layout-service.ts:226](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L226) + +___ + +### getDefaultFetcher + +▸ `Private` **getDefaultFetcher**<`T`\>(`req?`, `res?`): (`url`: `string`, `data?`: `unknown`) => `Promise`<`AxiosResponse`<`T`\>\> + +Provides default @see AxiosDataFetcher data fetcher + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `req?` | `IncomingMessage` | +| `res?` | `ServerResponse` | + +#### Returns + +`fn` + +default fetcher + +▸ (`url`, `data?`): `Promise`<`AxiosResponse`<`T`\>\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | +| `data?` | `unknown` | + +##### Returns + +`Promise`<`AxiosResponse`<`T`\>\> + +#### Defined in + +[layout/rest-layout-service.ts:277](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L277) + +___ + +### getFetchOptions + +▸ `Private` **getFetchOptions**(`language?`): `FetchOptions` + +Provides fetch options in order to fetch data + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `language?` | `string` | + +#### Returns + +`FetchOptions` + +fetch options + +#### Defined in + +[layout/rest-layout-service.ts:254](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L254) + +___ + +### setupReqHeaders + +▸ `Private` **setupReqHeaders**(`req`): (`reqConfig`: `AxiosRequestConfig`) => `AxiosRequestConfig` + +Setup request headers + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `req` | `IncomingMessage` | + +#### Returns + +`fn` + +axios request config + +▸ (`reqConfig`): `AxiosRequestConfig` + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `reqConfig` | `AxiosRequestConfig` | + +##### Returns + +`AxiosRequestConfig` + +#### Defined in + +[layout/rest-layout-service.ts:299](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L299) + +___ + +### setupResHeaders + +▸ `Private` **setupResHeaders**(`res`): (`serverRes`: `AxiosResponse`<`any`\>) => `AxiosResponse`<`any`\> + +Setup response headers based on response from layout service + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `res` | `ServerResponse` | + +#### Returns + +`fn` + +response + +▸ (`serverRes`): `AxiosResponse`<`any`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `serverRes` | `AxiosResponse`<`any`\> | + +##### Returns + +`AxiosResponse`<`any`\> + +#### Defined in + +[layout/rest-layout-service.ts:318](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L318) diff --git a/ref-docs/sitecore-jss/enums/constants.SitecoreTemplateId.md b/ref-docs/sitecore-jss/enums/constants.SitecoreTemplateId.md new file mode 100644 index 0000000000..f847797703 --- /dev/null +++ b/ref-docs/sitecore-jss/enums/constants.SitecoreTemplateId.md @@ -0,0 +1,32 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [constants](../modules/constants.md) / SitecoreTemplateId + +# Enumeration: SitecoreTemplateId + +[constants](../modules/constants.md).SitecoreTemplateId + +## Table of contents + +### Enumeration members + +- [DictionaryEntry](constants.SitecoreTemplateId.md#dictionaryentry) +- [JssApp](constants.SitecoreTemplateId.md#jssapp) + +## Enumeration members + +### DictionaryEntry + +• **DictionaryEntry** = `"6d1cd89719364a3aa511289a94c2a7b1"` + +#### Defined in + +[constants.ts:6](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/constants.ts#L6) + +___ + +### JssApp + +• **JssApp** = `"061cba1554744b918a0617903b102b82"` + +#### Defined in + +[constants.ts:3](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/constants.ts#L3) diff --git a/ref-docs/sitecore-jss/enums/layout_models.LayoutServicePageState.md b/ref-docs/sitecore-jss/enums/layout_models.LayoutServicePageState.md new file mode 100644 index 0000000000..9e4bb941b2 --- /dev/null +++ b/ref-docs/sitecore-jss/enums/layout_models.LayoutServicePageState.md @@ -0,0 +1,45 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / LayoutServicePageState + +# Enumeration: LayoutServicePageState + +[layout/models](../modules/layout_models.md).LayoutServicePageState + +Layout Service page state enum + +## Table of contents + +### Enumeration members + +- [Edit](layout_models.LayoutServicePageState.md#edit) +- [Normal](layout_models.LayoutServicePageState.md#normal) +- [Preview](layout_models.LayoutServicePageState.md#preview) + +## Enumeration members + +### Edit + +• **Edit** = `"edit"` + +#### Defined in + +[layout/models.ts:15](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L15) + +___ + +### Normal + +• **Normal** = `"normal"` + +#### Defined in + +[layout/models.ts:16](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L16) + +___ + +### Preview + +• **Preview** = `"preview"` + +#### Defined in + +[layout/models.ts:14](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L14) diff --git a/ref-docs/sitecore-jss/interfaces/cache_client.CacheClient.md b/ref-docs/sitecore-jss/interfaces/cache_client.CacheClient.md new file mode 100644 index 0000000000..bb69250018 --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/cache_client.CacheClient.md @@ -0,0 +1,74 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [cache-client](../modules/cache_client.md) / CacheClient + +# Interface: CacheClient + +[cache-client](../modules/cache_client.md).CacheClient + +An interface for cache clients. + +## Type parameters + +| Name | Description | +| :------ | :------ | +| `T` | The type of data being cached. | + +## Implemented by + +- [`DictionaryServiceBase`](../classes/i18n_dictionary_service.DictionaryServiceBase.md) +- [`MemoryCacheClient`](../classes/cache_client.MemoryCacheClient.md) + +## Table of contents + +### Methods + +- [getCacheValue](cache_client.CacheClient.md#getcachevalue) +- [setCacheValue](cache_client.CacheClient.md#setcachevalue) + +## Methods + +### getCacheValue + +▸ **getCacheValue**(`key`): ``null`` \| `T` + +Retrieves a value from the cache. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | + +#### Returns + +``null`` \| `T` + +The cache value as {T}, or null if the specified key was not found in the cache. + +#### Defined in + +[cache-client.ts:21](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/cache-client.ts#L21) + +___ + +### setCacheValue + +▸ **setCacheValue**(`key`, `value`): `T` + +Adds a value to the cache for the specified cache key. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `key` | `string` | The cache key. | +| `value` | `T` | The value to cache. | + +#### Returns + +`T` + +The value added to the cache. + +#### Defined in + +[cache-client.ts:14](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/cache-client.ts#L14) diff --git a/ref-docs/sitecore-jss/interfaces/cache_client.CacheOptions.md b/ref-docs/sitecore-jss/interfaces/cache_client.CacheOptions.md new file mode 100644 index 0000000000..6ec15e3d81 --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/cache_client.CacheOptions.md @@ -0,0 +1,48 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [cache-client](../modules/cache_client.md) / CacheOptions + +# Interface: CacheOptions + +[cache-client](../modules/cache_client.md).CacheOptions + +Minimum configuration options for classes that implement @see CacheClient + +## Hierarchy + +- **`CacheOptions`** + + ↳ [`GraphQLDictionaryServiceConfig`](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md) + +## Table of contents + +### Properties + +- [cacheEnabled](cache_client.CacheOptions.md#cacheenabled) +- [cacheTimeout](cache_client.CacheOptions.md#cachetimeout) + +## Properties + +### cacheEnabled + +• `Optional` **cacheEnabled**: `boolean` + +Enable/disable caching mechanism + +**`default`** true + +#### Defined in + +[cache-client.ts:40](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/cache-client.ts#L40) + +___ + +### cacheTimeout + +• `Optional` **cacheTimeout**: `number` + +Cache timeout (sec) + +**`default`** 60 + +#### Defined in + +[cache-client.ts:45](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/cache-client.ts#L45) diff --git a/ref-docs/sitecore-jss/interfaces/data_fetcher.HttpResponse.md b/ref-docs/sitecore-jss/interfaces/data_fetcher.HttpResponse.md new file mode 100644 index 0000000000..ec06d80f20 --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/data_fetcher.HttpResponse.md @@ -0,0 +1,57 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [data-fetcher](../modules/data_fetcher.md) / HttpResponse + +# Interface: HttpResponse + +[data-fetcher](../modules/data_fetcher.md).HttpResponse + +Response data for an HTTP request sent to an API + +## Type parameters + +| Name | Description | +| :------ | :------ | +| `T` | the type of data model requested | + +## Table of contents + +### Properties + +- [data](data_fetcher.HttpResponse.md#data) +- [status](data_fetcher.HttpResponse.md#status) +- [statusText](data_fetcher.HttpResponse.md#statustext) + +## Properties + +### data + +• **data**: `T` + +Response content + +#### Defined in + +[data-fetcher.ts:14](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/data-fetcher.ts#L14) + +___ + +### status + +• **status**: `number` + +HTTP status code of the response (i.e. 200, 404) + +#### Defined in + +[data-fetcher.ts:10](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/data-fetcher.ts#L10) + +___ + +### statusText + +• **statusText**: `string` + +HTTP status text of the response (i.e. 'OK', 'Bad Request') + +#### Defined in + +[data-fetcher.ts:12](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/data-fetcher.ts#L12) diff --git a/ref-docs/sitecore-jss/interfaces/graphql_request_client.GraphQLClient.md b/ref-docs/sitecore-jss/interfaces/graphql_request_client.GraphQLClient.md new file mode 100644 index 0000000000..22d68819ad --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/graphql_request_client.GraphQLClient.md @@ -0,0 +1,46 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [graphql-request-client](../modules/graphql_request_client.md) / GraphQLClient + +# Interface: GraphQLClient + +[graphql-request-client](../modules/graphql_request_client.md).GraphQLClient + +An interface for GraphQL clients for Sitecore APIs + +## Implemented by + +- [`GraphQLRequestClient`](../classes/graphql_request_client.GraphQLRequestClient.md) + +## Table of contents + +### Methods + +- [request](graphql_request_client.GraphQLClient.md#request) + +## Methods + +### request + +▸ **request**<`T`\>(`query`, `variables?`): `Promise`<`T`\> + +Execute graphql request + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `query` | `string` \| `DocumentNode` | graphql query | +| `variables?` | `Object` | graphql variables | + +#### Returns + +`Promise`<`T`\> + +#### Defined in + +[graphql-request-client.ts:14](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql-request-client.ts#L14) diff --git a/ref-docs/sitecore-jss/interfaces/graphql_search_service.SearchServiceConfig.md b/ref-docs/sitecore-jss/interfaces/graphql_search_service.SearchServiceConfig.md new file mode 100644 index 0000000000..38acb33b45 --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/graphql_search_service.SearchServiceConfig.md @@ -0,0 +1,91 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [graphql/search-service](../modules/graphql_search_service.md) / SearchServiceConfig + +# Interface: SearchServiceConfig + +[graphql/search-service](../modules/graphql_search_service.md).SearchServiceConfig + +Configuration options for service classes that extend @see SearchQueryService. +This extends @see SearchQueryVariables because properties that can be passed to the search query +as predicates should be configurable. 'language' is excluded because, normally, all properties +except 'language' are consistent across languages so they are passed to constructors, and +'language' can vary so it is passed to methods. + +## Hierarchy + +- `Omit`<[`SearchQueryVariables`](../modules/graphql_search_service.md#searchqueryvariables), ``"language"``\> + + ↳ **`SearchServiceConfig`** + + ↳↳ [`GraphQLDictionaryServiceConfig`](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md) + +## Table of contents + +### Properties + +- [pageSize](graphql_search_service.SearchServiceConfig.md#pagesize) +- [rootItemId](graphql_search_service.SearchServiceConfig.md#rootitemid) +- [siteName](graphql_search_service.SearchServiceConfig.md#sitename) +- [templates](graphql_search_service.SearchServiceConfig.md#templates) + +## Properties + +### pageSize + +• `Optional` **pageSize**: `number` + +Optional. How many result items to fetch in each GraphQL call. This is needed for pagination. + +**`default`** 10 + +#### Inherited from + +Omit.pageSize + +#### Defined in + +[graphql/search-service.ts:49](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L49) + +___ + +### rootItemId + +• `Optional` **rootItemId**: `string` + +Optional. The ID of the search root item. Fetch items that have this item as an ancestor. + +#### Inherited from + +Omit.rootItemId + +#### Defined in + +[graphql/search-service.ts:43](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L43) + +___ + +### siteName + +• **siteName**: `string` + +The name of the current Sitecore site. This is used to to determine the search query root +in cases where one is not specified by the caller. + +#### Defined in + +[graphql/search-service.ts:69](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L69) + +___ + +### templates + +• `Optional` **templates**: `string` + +Optional. Sitecore template ID(s). Fetch items that inherit from this template(s). + +#### Inherited from + +Omit.templates + +#### Defined in + +[graphql/search-service.ts:54](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L54) diff --git a/ref-docs/sitecore-jss/interfaces/i18n_dictionary_service.DictionaryPhrases.md b/ref-docs/sitecore-jss/interfaces/i18n_dictionary_service.DictionaryPhrases.md new file mode 100644 index 0000000000..3582ed3393 --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/i18n_dictionary_service.DictionaryPhrases.md @@ -0,0 +1,11 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [i18n/dictionary-service](../modules/i18n_dictionary_service.md) / DictionaryPhrases + +# Interface: DictionaryPhrases + +[i18n/dictionary-service](../modules/i18n_dictionary_service.md).DictionaryPhrases + +Object model for Sitecore dictionary phrases + +## Indexable + +▪ [k: `string`]: `string` diff --git a/ref-docs/sitecore-jss/interfaces/i18n_dictionary_service.DictionaryService.md b/ref-docs/sitecore-jss/interfaces/i18n_dictionary_service.DictionaryService.md new file mode 100644 index 0000000000..5a612877fd --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/i18n_dictionary_service.DictionaryService.md @@ -0,0 +1,39 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [i18n/dictionary-service](../modules/i18n_dictionary_service.md) / DictionaryService + +# Interface: DictionaryService + +[i18n/dictionary-service](../modules/i18n_dictionary_service.md).DictionaryService + +Service that fetches dictionary data using Sitecore's GraphQL API. + +## Implemented by + +- [`DictionaryServiceBase`](../classes/i18n_dictionary_service.DictionaryServiceBase.md) + +## Table of contents + +### Methods + +- [fetchDictionaryData](i18n_dictionary_service.DictionaryService.md#fetchdictionarydata) + +## Methods + +### fetchDictionaryData + +▸ **fetchDictionaryData**(`language`): `Promise`<[`DictionaryPhrases`](i18n_dictionary_service.DictionaryPhrases.md)\> + +Fetch dictionary data for a language. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `language` | `string` | + +#### Returns + +`Promise`<[`DictionaryPhrases`](i18n_dictionary_service.DictionaryPhrases.md)\> + +#### Defined in + +[i18n/dictionary-service.ts:18](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/dictionary-service.ts#L18) diff --git a/ref-docs/sitecore-jss/interfaces/i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md b/ref-docs/sitecore-jss/interfaces/i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md new file mode 100644 index 0000000000..28433b9442 --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md @@ -0,0 +1,170 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [i18n/graphql-dictionary-service](../modules/i18n_graphql_dictionary_service.md) / GraphQLDictionaryServiceConfig + +# Interface: GraphQLDictionaryServiceConfig + +[i18n/graphql-dictionary-service](../modules/i18n_graphql_dictionary_service.md).GraphQLDictionaryServiceConfig + +Configuration options for @see GraphQLDictionaryService instances + +## Hierarchy + +- [`SearchServiceConfig`](graphql_search_service.SearchServiceConfig.md) + +- [`CacheOptions`](cache_client.CacheOptions.md) + + ↳ **`GraphQLDictionaryServiceConfig`** + +## Table of contents + +### Properties + +- [apiKey](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md#apikey) +- [cacheEnabled](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md#cacheenabled) +- [cacheTimeout](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md#cachetimeout) +- [dictionaryEntryTemplateId](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md#dictionaryentrytemplateid) +- [endpoint](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md#endpoint) +- [pageSize](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md#pagesize) +- [rootItemId](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md#rootitemid) +- [siteName](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md#sitename) +- [templates](i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md#templates) + +## Properties + +### apiKey + +• **apiKey**: `string` + +The API key to use for authentication. + +#### Defined in + +[i18n/graphql-dictionary-service.ts:60](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L60) + +___ + +### cacheEnabled + +• `Optional` **cacheEnabled**: `boolean` + +Enable/disable caching mechanism + +**`default`** true + +#### Inherited from + +[CacheOptions](cache_client.CacheOptions.md).[cacheEnabled](cache_client.CacheOptions.md#cacheenabled) + +#### Defined in + +[cache-client.ts:40](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/cache-client.ts#L40) + +___ + +### cacheTimeout + +• `Optional` **cacheTimeout**: `number` + +Cache timeout (sec) + +**`default`** 60 + +#### Inherited from + +[CacheOptions](cache_client.CacheOptions.md).[cacheTimeout](cache_client.CacheOptions.md#cachetimeout) + +#### Defined in + +[cache-client.ts:45](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/cache-client.ts#L45) + +___ + +### dictionaryEntryTemplateId + +• `Optional` **dictionaryEntryTemplateId**: `string` + +Optional. The template ID to use when searching for dictionary entries. + +**`default`** '6d1cd89719364a3aa511289a94c2a7b1' (/sitecore/templates/System/Dictionary/Dictionary entry) + +#### Defined in + +[i18n/graphql-dictionary-service.ts:66](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L66) + +___ + +### endpoint + +• **endpoint**: `string` + +The URL of the graphQL endpoint. + +#### Defined in + +[i18n/graphql-dictionary-service.ts:55](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L55) + +___ + +### pageSize + +• `Optional` **pageSize**: `number` + +Optional. How many result items to fetch in each GraphQL call. This is needed for pagination. + +**`default`** 10 + +#### Inherited from + +[SearchServiceConfig](graphql_search_service.SearchServiceConfig.md).[pageSize](graphql_search_service.SearchServiceConfig.md#pagesize) + +#### Defined in + +[graphql/search-service.ts:49](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L49) + +___ + +### rootItemId + +• `Optional` **rootItemId**: `string` + +Optional. The ID of the search root item. Fetch items that have this item as an ancestor. + +#### Inherited from + +[SearchServiceConfig](graphql_search_service.SearchServiceConfig.md).[rootItemId](graphql_search_service.SearchServiceConfig.md#rootitemid) + +#### Defined in + +[graphql/search-service.ts:43](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L43) + +___ + +### siteName + +• **siteName**: `string` + +The name of the current Sitecore site. This is used to to determine the search query root +in cases where one is not specified by the caller. + +#### Inherited from + +[SearchServiceConfig](graphql_search_service.SearchServiceConfig.md).[siteName](graphql_search_service.SearchServiceConfig.md#sitename) + +#### Defined in + +[graphql/search-service.ts:69](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L69) + +___ + +### templates + +• `Optional` **templates**: `string` + +Optional. Sitecore template ID(s). Fetch items that inherit from this template(s). + +#### Inherited from + +[SearchServiceConfig](graphql_search_service.SearchServiceConfig.md).[templates](graphql_search_service.SearchServiceConfig.md#templates) + +#### Defined in + +[graphql/search-service.ts:54](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L54) diff --git a/ref-docs/sitecore-jss/interfaces/layout_layout_service.LayoutService.md b/ref-docs/sitecore-jss/interfaces/layout_layout_service.LayoutService.md new file mode 100644 index 0000000000..c3fd676a04 --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_layout_service.LayoutService.md @@ -0,0 +1,42 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/layout-service](../modules/layout_layout_service.md) / LayoutService + +# Interface: LayoutService + +[layout/layout-service](../modules/layout_layout_service.md).LayoutService + +## Implemented by + +- [`LayoutServiceBase`](../classes/layout_layout_service.LayoutServiceBase.md) + +## Table of contents + +### Methods + +- [fetchLayoutData](layout_layout_service.LayoutService.md#fetchlayoutdata) + +## Methods + +### fetchLayoutData + +▸ **fetchLayoutData**(`itemPath`, `language?`, `req?`, `res?`): `Promise`<[`LayoutServiceData`](layout_models.LayoutServiceData.md)\> + +Fetch layout data for an item. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `itemPath` | `string` | +| `language?` | `string` | +| `req?` | `IncomingMessage` | +| `res?` | `ServerResponse` | + +#### Returns + +`Promise`<[`LayoutServiceData`](layout_models.LayoutServiceData.md)\> + +layout data + +#### Defined in + +[layout/layout-service.ts:13](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/layout-service.ts#L13) diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.ComponentFields.md b/ref-docs/sitecore-jss/interfaces/layout_models.ComponentFields.md new file mode 100644 index 0000000000..d27efc2966 --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.ComponentFields.md @@ -0,0 +1,11 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / ComponentFields + +# Interface: ComponentFields + +[layout/models](../modules/layout_models.md).ComponentFields + +Content field data passed to a component + +## Indexable + +▪ [name: `string`]: [`Field`](layout_models.Field.md) \| [`Item`](layout_models.Item.md) \| [`Item`](layout_models.Item.md)[] diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.ComponentParams.md b/ref-docs/sitecore-jss/interfaces/layout_models.ComponentParams.md new file mode 100644 index 0000000000..55f5cb4f6b --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.ComponentParams.md @@ -0,0 +1,11 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / ComponentParams + +# Interface: ComponentParams + +[layout/models](../modules/layout_models.md).ComponentParams + +Component params + +## Indexable + +▪ [name: `string`]: `string` diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.ComponentRendering.md b/ref-docs/sitecore-jss/interfaces/layout_models.ComponentRendering.md new file mode 100644 index 0000000000..3763f052aa --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.ComponentRendering.md @@ -0,0 +1,78 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / ComponentRendering + +# Interface: ComponentRendering + +[layout/models](../modules/layout_models.md).ComponentRendering + +Definition of a component instance within a placeholder on a route + +## Table of contents + +### Properties + +- [componentName](layout_models.ComponentRendering.md#componentname) +- [dataSource](layout_models.ComponentRendering.md#datasource) +- [fields](layout_models.ComponentRendering.md#fields) +- [params](layout_models.ComponentRendering.md#params) +- [placeholders](layout_models.ComponentRendering.md#placeholders) +- [uid](layout_models.ComponentRendering.md#uid) + +## Properties + +### componentName + +• **componentName**: `string` + +#### Defined in + +[layout/models.ts:86](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L86) + +___ + +### dataSource + +• `Optional` **dataSource**: `string` + +#### Defined in + +[layout/models.ts:87](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L87) + +___ + +### fields + +• `Optional` **fields**: [`ComponentFields`](layout_models.ComponentFields.md) + +#### Defined in + +[layout/models.ts:90](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L90) + +___ + +### params + +• `Optional` **params**: [`ComponentParams`](layout_models.ComponentParams.md) + +#### Defined in + +[layout/models.ts:91](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L91) + +___ + +### placeholders + +• `Optional` **placeholders**: [`PlaceholdersData`](../modules/layout_models.md#placeholdersdata)<`string`\> + +#### Defined in + +[layout/models.ts:89](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L89) + +___ + +### uid + +• `Optional` **uid**: `string` + +#### Defined in + +[layout/models.ts:88](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L88) diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.Field.md b/ref-docs/sitecore-jss/interfaces/layout_models.Field.md new file mode 100644 index 0000000000..e66cfd39dd --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.Field.md @@ -0,0 +1,38 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / Field + +# Interface: Field + +[layout/models](../modules/layout_models.md).Field + +## Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | [`GenericFieldValue`](../modules/layout_models.md#genericfieldvalue) | + +## Table of contents + +### Properties + +- [editable](layout_models.Field.md#editable) +- [value](layout_models.Field.md#value) + +## Properties + +### editable + +• `Optional` **editable**: `string` + +#### Defined in + +[layout/models.ts:118](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L118) + +___ + +### value + +• **value**: `T` + +#### Defined in + +[layout/models.ts:117](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L117) diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.HtmlElementRendering.md b/ref-docs/sitecore-jss/interfaces/layout_models.HtmlElementRendering.md new file mode 100644 index 0000000000..c514c383bc --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.HtmlElementRendering.md @@ -0,0 +1,60 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / HtmlElementRendering + +# Interface: HtmlElementRendering + +[layout/models](../modules/layout_models.md).HtmlElementRendering + +HTML content used to support Sitecore Experience Editor + +## Table of contents + +### Properties + +- [attributes](layout_models.HtmlElementRendering.md#attributes) +- [contents](layout_models.HtmlElementRendering.md#contents) +- [name](layout_models.HtmlElementRendering.md#name) +- [type](layout_models.HtmlElementRendering.md#type) + +## Properties + +### attributes + +• **attributes**: `Object` + +#### Index signature + +▪ [name: `string`]: `string` \| `undefined` + +#### Defined in + +[layout/models.ts:101](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L101) + +___ + +### contents + +• **contents**: ``null`` \| `string` + +#### Defined in + +[layout/models.ts:100](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L100) + +___ + +### name + +• **name**: `string` + +#### Defined in + +[layout/models.ts:98](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L98) + +___ + +### type + +• `Optional` **type**: `string` + +#### Defined in + +[layout/models.ts:99](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L99) diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.Item.md b/ref-docs/sitecore-jss/interfaces/layout_models.Item.md new file mode 100644 index 0000000000..6aa2a10bea --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.Item.md @@ -0,0 +1,49 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / Item + +# Interface: Item + +[layout/models](../modules/layout_models.md).Item + +Content data returned from Content Service + +## Table of contents + +### Properties + +- [displayName](layout_models.Item.md#displayname) +- [fields](layout_models.Item.md#fields) +- [name](layout_models.Item.md#name) + +## Properties + +### displayName + +• `Optional` **displayName**: `string` + +#### Defined in + +[layout/models.ts:126](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L126) + +___ + +### fields + +• **fields**: `Object` + +#### Index signature + +▪ [name: `string`]: [`Field`](layout_models.Field.md) \| [`Item`](layout_models.Item.md) \| [`Item`](layout_models.Item.md)[] \| `undefined` + +#### Defined in + +[layout/models.ts:127](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L127) + +___ + +### name + +• **name**: `string` + +#### Defined in + +[layout/models.ts:125](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L125) diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceContext.md b/ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceContext.md new file mode 100644 index 0000000000..2975da67a9 --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceContext.md @@ -0,0 +1,77 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / LayoutServiceContext + +# Interface: LayoutServiceContext + +[layout/models](../modules/layout_models.md).LayoutServiceContext + +Shape of context data from the Sitecore Layout Service + +## Indexable + +▪ [key: `string`]: `unknown` + +## Table of contents + +### Properties + +- [language](layout_models.LayoutServiceContext.md#language) +- [pageEditing](layout_models.LayoutServiceContext.md#pageediting) +- [pageState](layout_models.LayoutServiceContext.md#pagestate) +- [site](layout_models.LayoutServiceContext.md#site) +- [visitorIdentificationTimestamp](layout_models.LayoutServiceContext.md#visitoridentificationtimestamp) + +## Properties + +### language + +• `Optional` **language**: `string` + +#### Defined in + +[layout/models.ts:25](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L25) + +___ + +### pageEditing + +• `Optional` **pageEditing**: `boolean` + +#### Defined in + +[layout/models.ts:24](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L24) + +___ + +### pageState + +• `Optional` **pageState**: [`LayoutServicePageState`](../enums/layout_models.LayoutServicePageState.md) + +#### Defined in + +[layout/models.ts:26](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L26) + +___ + +### site + +• `Optional` **site**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `name?` | `string` | + +#### Defined in + +[layout/models.ts:28](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L28) + +___ + +### visitorIdentificationTimestamp + +• `Optional` **visitorIdentificationTimestamp**: `number` + +#### Defined in + +[layout/models.ts:27](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L27) diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceContextData.md b/ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceContextData.md new file mode 100644 index 0000000000..19a160a66b --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceContextData.md @@ -0,0 +1,23 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / LayoutServiceContextData + +# Interface: LayoutServiceContextData + +[layout/models](../modules/layout_models.md).LayoutServiceContextData + +Context information from the Sitecore Layout Service + +## Table of contents + +### Properties + +- [context](layout_models.LayoutServiceContextData.md#context) + +## Properties + +### context + +• **context**: [`LayoutServiceContext`](layout_models.LayoutServiceContext.md) + +#### Defined in + +[layout/models.ts:37](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L37) diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceData.md b/ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceData.md new file mode 100644 index 0000000000..b92fcb221f --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.LayoutServiceData.md @@ -0,0 +1,23 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / LayoutServiceData + +# Interface: LayoutServiceData + +[layout/models](../modules/layout_models.md).LayoutServiceData + +A reply from the Sitecore Layout Service + +## Table of contents + +### Properties + +- [sitecore](layout_models.LayoutServiceData.md#sitecore) + +## Properties + +### sitecore + +• **sitecore**: [`LayoutServiceContextData`](layout_models.LayoutServiceContextData.md) & { `route`: ``null`` \| [`RouteData`](layout_models.RouteData.md) } + +#### Defined in + +[layout/models.ts:5](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L5) diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.PlaceholderData.md b/ref-docs/sitecore-jss/interfaces/layout_models.PlaceholderData.md new file mode 100644 index 0000000000..d230835cee --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.PlaceholderData.md @@ -0,0 +1,45 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / PlaceholderData + +# Interface: PlaceholderData + +[layout/models](../modules/layout_models.md).PlaceholderData + +Contents of a single placeholder returned from placeholder service + +## Table of contents + +### Properties + +- [elements](layout_models.PlaceholderData.md#elements) +- [name](layout_models.PlaceholderData.md#name) +- [path](layout_models.PlaceholderData.md#path) + +## Properties + +### elements + +• **elements**: ([`ComponentRendering`](layout_models.ComponentRendering.md) \| [`HtmlElementRendering`](layout_models.HtmlElementRendering.md))[] + +#### Defined in + +[layout/models.ts:138](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L138) + +___ + +### name + +• **name**: `string` + +#### Defined in + +[layout/models.ts:136](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L136) + +___ + +### path + +• **path**: `string` + +#### Defined in + +[layout/models.ts:137](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L137) diff --git a/ref-docs/sitecore-jss/interfaces/layout_models.RouteData.md b/ref-docs/sitecore-jss/interfaces/layout_models.RouteData.md new file mode 100644 index 0000000000..026b60e2af --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_models.RouteData.md @@ -0,0 +1,148 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/models](../modules/layout_models.md) / RouteData + +# Interface: RouteData + +[layout/models](../modules/layout_models.md).RouteData + +Shape of route data returned from Sitecore Layout Service + +## Table of contents + +### Properties + +- [databaseName](layout_models.RouteData.md#databasename) +- [deviceId](layout_models.RouteData.md#deviceid) +- [displayName](layout_models.RouteData.md#displayname) +- [fields](layout_models.RouteData.md#fields) +- [itemId](layout_models.RouteData.md#itemid) +- [itemLanguage](layout_models.RouteData.md#itemlanguage) +- [itemVersion](layout_models.RouteData.md#itemversion) +- [layoutId](layout_models.RouteData.md#layoutid) +- [name](layout_models.RouteData.md#name) +- [placeholders](layout_models.RouteData.md#placeholders) +- [templateId](layout_models.RouteData.md#templateid) +- [templateName](layout_models.RouteData.md#templatename) + +## Properties + +### databaseName + +• `Optional` **databaseName**: `string` + +#### Defined in + +[layout/models.ts:49](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L49) + +___ + +### deviceId + +• `Optional` **deviceId**: `string` + +#### Defined in + +[layout/models.ts:50](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L50) + +___ + +### displayName + +• `Optional` **displayName**: `string` + +#### Defined in + +[layout/models.ts:45](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L45) + +___ + +### fields + +• `Optional` **fields**: `Object` + +#### Index signature + +▪ [name: `string`]: [`Field`](layout_models.Field.md) + +#### Defined in + +[layout/models.ts:46](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L46) + +___ + +### itemId + +• `Optional` **itemId**: `string` + +#### Defined in + +[layout/models.ts:57](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L57) + +___ + +### itemLanguage + +• `Optional` **itemLanguage**: `string` + +#### Defined in + +[layout/models.ts:51](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L51) + +___ + +### itemVersion + +• `Optional` **itemVersion**: `number` + +#### Defined in + +[layout/models.ts:52](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L52) + +___ + +### layoutId + +• `Optional` **layoutId**: `string` + +#### Defined in + +[layout/models.ts:53](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L53) + +___ + +### name + +• **name**: `string` + +#### Defined in + +[layout/models.ts:44](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L44) + +___ + +### placeholders + +• **placeholders**: [`PlaceholdersData`](../modules/layout_models.md#placeholdersdata)<`string`\> + +#### Defined in + +[layout/models.ts:56](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L56) + +___ + +### templateId + +• `Optional` **templateId**: `string` + +#### Defined in + +[layout/models.ts:54](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L54) + +___ + +### templateName + +• `Optional` **templateName**: `string` + +#### Defined in + +[layout/models.ts:55](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L55) diff --git a/ref-docs/sitecore-jss/interfaces/layout_rest_layout_service.LayoutServiceConfig.md b/ref-docs/sitecore-jss/interfaces/layout_rest_layout_service.LayoutServiceConfig.md new file mode 100644 index 0000000000..e378ff459a --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_rest_layout_service.LayoutServiceConfig.md @@ -0,0 +1,50 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/rest-layout-service](../modules/layout_rest_layout_service.md) / LayoutServiceConfig + +# Interface: LayoutServiceConfig + +[layout/rest-layout-service](../modules/layout_rest_layout_service.md).LayoutServiceConfig + +## Table of contents + +### Properties + +- [configurationName](layout_rest_layout_service.LayoutServiceConfig.md#configurationname) +- [host](layout_rest_layout_service.LayoutServiceConfig.md#host) +- [serviceUrl](layout_rest_layout_service.LayoutServiceConfig.md#serviceurl) + +## Properties + +### configurationName + +• `Optional` **configurationName**: `string` + +Layout Service "named" configuration + +#### Defined in + +[layout/rest-layout-service.ts:82](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L82) + +___ + +### host + +• `Optional` **host**: `string` + +Host name of the Sitecore instance serving Layout Service requests. + +#### Defined in + +[layout/rest-layout-service.ts:77](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L77) + +___ + +### serviceUrl + +• `Optional` **serviceUrl**: `string` + +This value overrides the default layout service URL. +Note: `host` and `configurationName` options are ignored if `layoutServiceUrl` is set. + +#### Defined in + +[layout/rest-layout-service.ts:88](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L88) diff --git a/ref-docs/sitecore-jss/interfaces/layout_rest_layout_service.LayoutServiceRequestOptions.md b/ref-docs/sitecore-jss/interfaces/layout_rest_layout_service.LayoutServiceRequestOptions.md new file mode 100644 index 0000000000..42e6022719 --- /dev/null +++ b/ref-docs/sitecore-jss/interfaces/layout_rest_layout_service.LayoutServiceRequestOptions.md @@ -0,0 +1,59 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / [layout/rest-layout-service](../modules/layout_rest_layout_service.md) / LayoutServiceRequestOptions + +# Interface: LayoutServiceRequestOptions + +[layout/rest-layout-service](../modules/layout_rest_layout_service.md).LayoutServiceRequestOptions + +## Type parameters + +| Name | +| :------ | +| `T` | + +## Table of contents + +### Properties + +- [fetcher](layout_rest_layout_service.LayoutServiceRequestOptions.md#fetcher) +- [layoutServiceConfig](layout_rest_layout_service.LayoutServiceRequestOptions.md#layoutserviceconfig) +- [querystringParams](layout_rest_layout_service.LayoutServiceRequestOptions.md#querystringparams) + +## Properties + +### fetcher + +• **fetcher**: [`HttpDataFetcher`](../modules/data_fetcher.md#httpdatafetcher)<`T`\> + +The fetcher that performs the HTTP request and returns a promise to JSON + +#### Defined in + +[layout/rest-layout-service.ts:102](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L102) + +___ + +### layoutServiceConfig + +• `Optional` **layoutServiceConfig**: [`LayoutServiceConfig`](layout_rest_layout_service.LayoutServiceConfig.md) + +Configuration options for Layout Service requests. + +#### Defined in + +[layout/rest-layout-service.ts:95](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L95) + +___ + +### querystringParams + +• `Optional` **querystringParams**: `Object` + +An object of key:value pairs to be stringified and used as querystring parameters. + +#### Index signature + +▪ [key: `string`]: `string` \| `number` \| `boolean` + +#### Defined in + +[layout/rest-layout-service.ts:99](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L99) diff --git a/ref-docs/sitecore-jss/modules/axios_fetcher.md b/ref-docs/sitecore-jss/modules/axios_fetcher.md new file mode 100644 index 0000000000..b8cdc7a2b6 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/axios_fetcher.md @@ -0,0 +1,23 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / axios-fetcher + +# Module: axios-fetcher + +## Table of contents + +### Classes + +- [AxiosDataFetcher](../classes/axios_fetcher.AxiosDataFetcher.md) + +### Type aliases + +- [AxiosDataFetcherConfig](axios_fetcher.md#axiosdatafetcherconfig) + +## Type aliases + +### AxiosDataFetcherConfig + +Ƭ **AxiosDataFetcherConfig**: `AxiosRequestConfig` & `AxiosDataFetcherOptions` + +#### Defined in + +[axios-fetcher.ts:35](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/axios-fetcher.ts#L35) diff --git a/ref-docs/sitecore-jss/modules/cache_client.md b/ref-docs/sitecore-jss/modules/cache_client.md new file mode 100644 index 0000000000..032c58b2c4 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/cache_client.md @@ -0,0 +1,14 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / cache-client + +# Module: cache-client + +## Table of contents + +### Classes + +- [MemoryCacheClient](../classes/cache_client.MemoryCacheClient.md) + +### Interfaces + +- [CacheClient](../interfaces/cache_client.CacheClient.md) +- [CacheOptions](../interfaces/cache_client.CacheOptions.md) diff --git a/ref-docs/sitecore-jss/modules/constants.md b/ref-docs/sitecore-jss/modules/constants.md new file mode 100644 index 0000000000..1daa747ca8 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/constants.md @@ -0,0 +1,9 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / constants + +# Module: constants + +## Table of contents + +### Enumerations + +- [SitecoreTemplateId](../enums/constants.SitecoreTemplateId.md) diff --git a/ref-docs/sitecore-jss/modules/data_fetcher.md b/ref-docs/sitecore-jss/modules/data_fetcher.md new file mode 100644 index 0000000000..3d67b70bfd --- /dev/null +++ b/ref-docs/sitecore-jss/modules/data_fetcher.md @@ -0,0 +1,84 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / data-fetcher + +# Module: data-fetcher + +## Table of contents + +### Interfaces + +- [HttpResponse](../interfaces/data_fetcher.HttpResponse.md) + +### Type aliases + +- [HttpDataFetcher](data_fetcher.md#httpdatafetcher) + +### Functions + +- [fetchData](data_fetcher.md#fetchdata) + +## Type aliases + +### HttpDataFetcher + +Ƭ **HttpDataFetcher**<`T`\>: (`url`: `string`, `data?`: { [key: string]: `unknown`; }) => `Promise`<[`HttpResponse`](../interfaces/data_fetcher.HttpResponse.md)<`T`\>\> + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Type declaration + +▸ (`url`, `data?`): `Promise`<[`HttpResponse`](../interfaces/data_fetcher.HttpResponse.md)<`T`\>\> + +Describes functions that fetch data asynchronously (i.e. from an API endpoint). +This interface conforms to Axios' public API, but is adaptable to other HTTP libraries and +fetch polyfills. +The interface implementation must: +- Support SSR +- Comply with the rules of REST by returning appropriate response status codes when there is an error instead of throwing exceptions. +- Send HTTP POST requests if `data` param is specified; GET is suggested but not required for data-less requests + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | +| `data?` | `Object` | + +##### Returns + +`Promise`<[`HttpResponse`](../interfaces/data_fetcher.HttpResponse.md)<`T`\>\> + +#### Defined in + +[data-fetcher.ts:26](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/data-fetcher.ts#L26) + +## Functions + +### fetchData + +▸ **fetchData**<`T`\>(`url`, `fetcher`, `params?`): `Promise`<`T`\> + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | +| `fetcher` | [`HttpDataFetcher`](data_fetcher.md#httpdatafetcher)<`T`\> | +| `params` | `querystring.ParsedUrlQueryInput` | + +#### Returns + +`Promise`<`T`\> + +#### Defined in + +[data-fetcher.ts:60](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/data-fetcher.ts#L60) diff --git a/ref-docs/sitecore-jss/modules/debug.md b/ref-docs/sitecore-jss/modules/debug.md new file mode 100644 index 0000000000..339bb75434 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/debug.md @@ -0,0 +1,29 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / debug + +# Module: debug + +## Table of contents + +### Type aliases + +- [Debugger](debug.md#debugger) + +### Properties + +- [default](debug.md#default) + +## Type aliases + +### Debugger + +Ƭ **Debugger**: `debug.Debugger` + +#### Defined in + +[debug.ts:6](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/debug.ts#L6) + +## Properties + +### default + +• **default**: `Readonly`<`Object`\> diff --git a/ref-docs/sitecore-jss/modules/graphql.md b/ref-docs/sitecore-jss/modules/graphql.md new file mode 100644 index 0000000000..c9e1e456f1 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/graphql.md @@ -0,0 +1,50 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / graphql + +# Module: graphql + +## Table of contents + +### References + +- [AppRootQueryResult](graphql.md#approotqueryresult) +- [SearchQueryResult](graphql.md#searchqueryresult) +- [SearchQueryService](graphql.md#searchqueryservice) +- [SearchQueryVariables](graphql.md#searchqueryvariables) +- [SearchServiceConfig](graphql.md#searchserviceconfig) +- [getAppRootId](graphql.md#getapprootid) + +## References + +### AppRootQueryResult + +Re-exports: [AppRootQueryResult](graphql_app_root_query.md#approotqueryresult) + +___ + +### SearchQueryResult + +Re-exports: [SearchQueryResult](graphql_search_service.md#searchqueryresult) + +___ + +### SearchQueryService + +Re-exports: [SearchQueryService](../classes/graphql_search_service.SearchQueryService.md) + +___ + +### SearchQueryVariables + +Re-exports: [SearchQueryVariables](graphql_search_service.md#searchqueryvariables) + +___ + +### SearchServiceConfig + +Re-exports: [SearchServiceConfig](../interfaces/graphql_search_service.SearchServiceConfig.md) + +___ + +### getAppRootId + +Re-exports: [getAppRootId](graphql_app_root_query.md#getapprootid) diff --git a/ref-docs/sitecore-jss/modules/graphql_app_root_query.md b/ref-docs/sitecore-jss/modules/graphql_app_root_query.md new file mode 100644 index 0000000000..8b39bce009 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/graphql_app_root_query.md @@ -0,0 +1,91 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / graphql/app-root-query + +# Module: graphql/app-root-query + +## Table of contents + +### Type aliases + +- [AppRootQueryResult](graphql_app_root_query.md#approotqueryresult) + +### Variables + +- [languageError](graphql_app_root_query.md#languageerror) +- [siteNameError](graphql_app_root_query.md#sitenameerror) + +### Functions + +- [getAppRootId](graphql_app_root_query.md#getapprootid) + +## Type aliases + +### AppRootQueryResult + +Ƭ **AppRootQueryResult**: `Object` + +The schema of data returned in response to an app root query request + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `layout` | `Object` | +| `layout.homePage` | `Object` | +| `layout.homePage.rootItem` | { `id`: `string` }[] | + +#### Defined in + +[graphql/app-root-query.ts:28](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/app-root-query.ts#L28) + +## Variables + +### languageError + +• `Const` `Private` **languageError**: ``"The language must be a non-empty string"`` + +#### Defined in + +[graphql/app-root-query.ts:8](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/app-root-query.ts#L8) + +___ + +### siteNameError + +• `Const` `Private` **siteNameError**: ``"The site name must be a non-empty string"`` + +#### Defined in + +[graphql/app-root-query.ts:6](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/app-root-query.ts#L6) + +## Functions + +### getAppRootId + +▸ **getAppRootId**(`client`, `siteName`, `language`, `jssAppTemplateId?`): `Promise`<`string` \| ``null``\> + +Gets the ID of the JSS App root item for the specified site and language. + +**`throws`** {RangeError} if a valid site name value is not provided. + +**`throws`** {RangeError} if a valid language value is not provided. +This function intentionally avoids throwing an error if a root item is not found, +leaving that decision up to implementations. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `client` | [`GraphQLClient`](../interfaces/graphql_request_client.GraphQLClient.md) | that fetches data from a GraphQL endpoint. | +| `siteName` | `string` | the name of the Sitecore site. | +| `language` | `string` | the item language version. | +| `jssAppTemplateId?` | `string` | optional template ID of the app root item. If not specified, the ID of the "/sitecore/templates/Foundation/JavaScript Services/App" item is used. | + +#### Returns + +`Promise`<`string` \| ``null``\> + +the root item ID of the JSS App in Sitecore. Returns null if the app root item is not found. + +#### Defined in + +[graphql/app-root-query.ts:52](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/app-root-query.ts#L52) diff --git a/ref-docs/sitecore-jss/modules/graphql_request_client.md b/ref-docs/sitecore-jss/modules/graphql_request_client.md new file mode 100644 index 0000000000..70f3246223 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/graphql_request_client.md @@ -0,0 +1,36 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / graphql-request-client + +# Module: graphql-request-client + +## Table of contents + +### Classes + +- [GraphQLRequestClient](../classes/graphql_request_client.GraphQLRequestClient.md) + +### Interfaces + +- [GraphQLClient](../interfaces/graphql_request_client.GraphQLClient.md) + +### Type aliases + +- [GraphQLRequestClientConfig](graphql_request_client.md#graphqlrequestclientconfig) + +## Type aliases + +### GraphQLRequestClientConfig + +Ƭ **GraphQLRequestClientConfig**: `Object` + +Minimum configuration options for classes that implement @see GraphQLClient + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `apiKey?` | `string` | The API key to use for authentication. This will be added as an 'sc_apikey' header. | +| `debugger?` | [`Debugger`](debug.md#debugger) | Override debugger for logging. Uses 'sitecore-jss:http' by default. | + +#### Defined in + +[graphql-request-client.ts:20](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql-request-client.ts#L20) diff --git a/ref-docs/sitecore-jss/modules/graphql_search_service.md b/ref-docs/sitecore-jss/modules/graphql_search_service.md new file mode 100644 index 0000000000..95f52b4748 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/graphql_search_service.md @@ -0,0 +1,68 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / graphql/search-service + +# Module: graphql/search-service + +## Table of contents + +### Classes + +- [SearchQueryService](../classes/graphql_search_service.SearchQueryService.md) + +### Interfaces + +- [SearchServiceConfig](../interfaces/graphql_search_service.SearchServiceConfig.md) + +### Type aliases + +- [SearchQueryResult](graphql_search_service.md#searchqueryresult) +- [SearchQueryVariables](graphql_search_service.md#searchqueryvariables) + +## Type aliases + +### SearchQueryResult + +Ƭ **SearchQueryResult**<`T`\>: `Object` + +Schema of data returned in response to a "search" query request + +#### Type parameters + +| Name | Description | +| :------ | :------ | +| `T` | The type of objects being requested. | + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `search` | `Object` | +| `search.pageInfo` | `Object` | +| `search.pageInfo.endCursor` | `string` | +| `search.pageInfo.hasNext` | `boolean` | +| `search.results` | `T`[] | + +#### Defined in + +[graphql/search-service.ts:8](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L8) + +___ + +### SearchQueryVariables + +Ƭ **SearchQueryVariables**: `Object` + +Describes the variables used by the 'search' query. Language should always be specified. +The other predicates are optional. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `language` | `string` | Required. The language versions to search for. Fetch pages that have versions in this language. | +| `pageSize?` | `number` | Optional. How many result items to fetch in each GraphQL call. This is needed for pagination. **`default`** 10 | +| `rootItemId?` | `string` | Optional. The ID of the search root item. Fetch items that have this item as an ancestor. | +| `templates?` | `string` | Optional. Sitecore template ID(s). Fetch items that inherit from this template(s). | + +#### Defined in + +[graphql/search-service.ts:34](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/graphql/search-service.ts#L34) diff --git a/ref-docs/sitecore-jss/modules/i18n.md b/ref-docs/sitecore-jss/modules/i18n.md new file mode 100644 index 0000000000..8f03ef0925 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/i18n.md @@ -0,0 +1,64 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / i18n + +# Module: i18n + +## Table of contents + +### References + +- [DictionaryPhrases](i18n.md#dictionaryphrases) +- [DictionaryService](i18n.md#dictionaryservice) +- [DictionaryServiceBase](i18n.md#dictionaryservicebase) +- [GraphQLDictionaryService](i18n.md#graphqldictionaryservice) +- [GraphQLDictionaryServiceConfig](i18n.md#graphqldictionaryserviceconfig) +- [RestDictionaryService](i18n.md#restdictionaryservice) +- [RestDictionaryServiceConfig](i18n.md#restdictionaryserviceconfig) +- [RestDictionaryServiceData](i18n.md#restdictionaryservicedata) + +## References + +### DictionaryPhrases + +Re-exports: [DictionaryPhrases](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +___ + +### DictionaryService + +Re-exports: [DictionaryService](../interfaces/i18n_dictionary_service.DictionaryService.md) + +___ + +### DictionaryServiceBase + +Re-exports: [DictionaryServiceBase](../classes/i18n_dictionary_service.DictionaryServiceBase.md) + +___ + +### GraphQLDictionaryService + +Re-exports: [GraphQLDictionaryService](../classes/i18n_graphql_dictionary_service.GraphQLDictionaryService.md) + +___ + +### GraphQLDictionaryServiceConfig + +Re-exports: [GraphQLDictionaryServiceConfig](../interfaces/i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md) + +___ + +### RestDictionaryService + +Re-exports: [RestDictionaryService](../classes/i18n_rest_dictionary_service.RestDictionaryService.md) + +___ + +### RestDictionaryServiceConfig + +Re-exports: [RestDictionaryServiceConfig](i18n_rest_dictionary_service.md#restdictionaryserviceconfig) + +___ + +### RestDictionaryServiceData + +Re-exports: [RestDictionaryServiceData](i18n_rest_dictionary_service.md#restdictionaryservicedata) diff --git a/ref-docs/sitecore-jss/modules/i18n_dictionary_service.md b/ref-docs/sitecore-jss/modules/i18n_dictionary_service.md new file mode 100644 index 0000000000..bf414f4ac5 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/i18n_dictionary_service.md @@ -0,0 +1,14 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / i18n/dictionary-service + +# Module: i18n/dictionary-service + +## Table of contents + +### Classes + +- [DictionaryServiceBase](../classes/i18n_dictionary_service.DictionaryServiceBase.md) + +### Interfaces + +- [DictionaryPhrases](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) +- [DictionaryService](../interfaces/i18n_dictionary_service.DictionaryService.md) diff --git a/ref-docs/sitecore-jss/modules/i18n_graphql_dictionary_service.md b/ref-docs/sitecore-jss/modules/i18n_graphql_dictionary_service.md new file mode 100644 index 0000000000..a1da697fab --- /dev/null +++ b/ref-docs/sitecore-jss/modules/i18n_graphql_dictionary_service.md @@ -0,0 +1,52 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / i18n/graphql-dictionary-service + +# Module: i18n/graphql-dictionary-service + +## Table of contents + +### Classes + +- [GraphQLDictionaryService](../classes/i18n_graphql_dictionary_service.GraphQLDictionaryService.md) + +### Interfaces + +- [GraphQLDictionaryServiceConfig](../interfaces/i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md) + +### Type aliases + +- [DictionaryQueryResult](i18n_graphql_dictionary_service.md#dictionaryqueryresult) + +### Variables + +- [queryError](i18n_graphql_dictionary_service.md#queryerror) + +## Type aliases + +### DictionaryQueryResult + +Ƭ **DictionaryQueryResult**: `Object` + +The schema of data returned in response to a dictionary query request. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `key` | `Object` | +| `key.value` | `string` | +| `phrase` | `Object` | +| `phrase.value` | `string` | + +#### Defined in + +[i18n/graphql-dictionary-service.ts:72](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L72) + +## Variables + +### queryError + +• `Const` `Private` **queryError**: ``"Valid value for rootItemId not provided and failed to auto-resolve app root item."`` + +#### Defined in + +[i18n/graphql-dictionary-service.ts:9](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/graphql-dictionary-service.ts#L9) diff --git a/ref-docs/sitecore-jss/modules/i18n_rest_dictionary_service.md b/ref-docs/sitecore-jss/modules/i18n_rest_dictionary_service.md new file mode 100644 index 0000000000..35c682f20d --- /dev/null +++ b/ref-docs/sitecore-jss/modules/i18n_rest_dictionary_service.md @@ -0,0 +1,42 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / i18n/rest-dictionary-service + +# Module: i18n/rest-dictionary-service + +## Table of contents + +### Classes + +- [RestDictionaryService](../classes/i18n_rest_dictionary_service.RestDictionaryService.md) + +### Type aliases + +- [RestDictionaryServiceConfig](i18n_rest_dictionary_service.md#restdictionaryserviceconfig) +- [RestDictionaryServiceData](i18n_rest_dictionary_service.md#restdictionaryservicedata) + +## Type aliases + +### RestDictionaryServiceConfig + +Ƭ **RestDictionaryServiceConfig**: [`CacheOptions`](../interfaces/cache_client.CacheOptions.md) & { `apiHost`: `string` ; `apiKey`: `string` ; `dataFetcher?`: [`HttpDataFetcher`](data_fetcher.md#httpdatafetcher)<[`RestDictionaryServiceData`](i18n_rest_dictionary_service.md#restdictionaryservicedata)\> ; `siteName`: `string` } + +#### Defined in + +[i18n/rest-dictionary-service.ts:14](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/rest-dictionary-service.ts#L14) + +___ + +### RestDictionaryServiceData + +Ƭ **RestDictionaryServiceData**: `Object` + +A reply from the REST Sitecore Dictionary Service + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `phrases` | [`DictionaryPhrases`](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) | + +#### Defined in + +[i18n/rest-dictionary-service.ts:10](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/i18n/rest-dictionary-service.ts#L10) diff --git a/ref-docs/sitecore-jss/modules/index.md b/ref-docs/sitecore-jss/modules/index.md new file mode 100644 index 0000000000..848287f5d3 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/index.md @@ -0,0 +1,421 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / index + +# Module: index + +## Table of contents + +### References + +- [AppRootQueryResult](index.md#approotqueryresult) +- [AxiosDataFetcher](index.md#axiosdatafetcher) +- [AxiosDataFetcherConfig](index.md#axiosdatafetcherconfig) +- [CacheClient](index.md#cacheclient) +- [CacheOptions](index.md#cacheoptions) +- [ComponentFields](index.md#componentfields) +- [ComponentParams](index.md#componentparams) +- [ComponentRendering](index.md#componentrendering) +- [DataFetcherResolver](index.md#datafetcherresolver) +- [Debugger](index.md#debugger) +- [DictionaryPhrases](index.md#dictionaryphrases) +- [DictionaryService](index.md#dictionaryservice) +- [DictionaryServiceBase](index.md#dictionaryservicebase) +- [Field](index.md#field) +- [GraphQLClient](index.md#graphqlclient) +- [GraphQLDictionaryService](index.md#graphqldictionaryservice) +- [GraphQLDictionaryServiceConfig](index.md#graphqldictionaryserviceconfig) +- [GraphQLLayoutService](index.md#graphqllayoutservice) +- [GraphQLLayoutServiceConfig](index.md#graphqllayoutserviceconfig) +- [GraphQLRequestClient](index.md#graphqlrequestclient) +- [GraphQLRequestClientConfig](index.md#graphqlrequestclientconfig) +- [HtmlElementRendering](index.md#htmlelementrendering) +- [HttpDataFetcher](index.md#httpdatafetcher) +- [HttpResponse](index.md#httpresponse) +- [Item](index.md#item) +- [LayoutService](index.md#layoutservice) +- [LayoutServiceConfig](index.md#layoutserviceconfig) +- [LayoutServiceContext](index.md#layoutservicecontext) +- [LayoutServiceContextData](index.md#layoutservicecontextdata) +- [LayoutServiceData](index.md#layoutservicedata) +- [LayoutServicePageState](index.md#layoutservicepagestate) +- [LayoutServiceRequestOptions](index.md#layoutservicerequestoptions) +- [MemoryCacheClient](index.md#memorycacheclient) +- [PlaceholderData](index.md#placeholderdata) +- [PlaceholdersData](index.md#placeholdersdata) +- [RestDictionaryService](index.md#restdictionaryservice) +- [RestDictionaryServiceConfig](index.md#restdictionaryserviceconfig) +- [RestDictionaryServiceData](index.md#restdictionaryservicedata) +- [RestLayoutService](index.md#restlayoutservice) +- [RestLayoutServiceConfig](index.md#restlayoutserviceconfig) +- [RouteData](index.md#routedata) +- [SearchQueryResult](index.md#searchqueryresult) +- [SearchQueryService](index.md#searchqueryservice) +- [SearchQueryVariables](index.md#searchqueryvariables) +- [SearchServiceConfig](index.md#searchserviceconfig) +- [constants](index.md#constants) +- [debug](index.md#debug) +- [fetchData](index.md#fetchdata) +- [getAppRootId](index.md#getapprootid) +- [getChildPlaceholder](index.md#getchildplaceholder) +- [getFieldValue](index.md#getfieldvalue) +- [isExperienceEditorActive](index.md#isexperienceeditoractive) +- [isServer](index.md#isserver) +- [mediaApi](index.md#mediaapi) +- [resetExperienceEditorChromes](index.md#resetexperienceeditorchromes) +- [resolveUrl](index.md#resolveurl) + +### Variables + +- [dataApi](index.md#dataapi) + +## References + +### AppRootQueryResult + +Re-exports: [AppRootQueryResult](graphql_app_root_query.md#approotqueryresult) + +___ + +### AxiosDataFetcher + +Re-exports: [AxiosDataFetcher](../classes/axios_fetcher.AxiosDataFetcher.md) + +___ + +### AxiosDataFetcherConfig + +Re-exports: [AxiosDataFetcherConfig](axios_fetcher.md#axiosdatafetcherconfig) + +___ + +### CacheClient + +Re-exports: [CacheClient](../interfaces/cache_client.CacheClient.md) + +___ + +### CacheOptions + +Re-exports: [CacheOptions](../interfaces/cache_client.CacheOptions.md) + +___ + +### ComponentFields + +Re-exports: [ComponentFields](../interfaces/layout_models.ComponentFields.md) + +___ + +### ComponentParams + +Re-exports: [ComponentParams](../interfaces/layout_models.ComponentParams.md) + +___ + +### ComponentRendering + +Re-exports: [ComponentRendering](../interfaces/layout_models.ComponentRendering.md) + +___ + +### DataFetcherResolver + +Re-exports: [DataFetcherResolver](layout_rest_layout_service.md#datafetcherresolver) + +___ + +### Debugger + +Re-exports: [Debugger](debug.md#debugger) + +___ + +### DictionaryPhrases + +Re-exports: [DictionaryPhrases](../interfaces/i18n_dictionary_service.DictionaryPhrases.md) + +___ + +### DictionaryService + +Re-exports: [DictionaryService](../interfaces/i18n_dictionary_service.DictionaryService.md) + +___ + +### DictionaryServiceBase + +Re-exports: [DictionaryServiceBase](../classes/i18n_dictionary_service.DictionaryServiceBase.md) + +___ + +### Field + +Re-exports: [Field](../interfaces/layout_models.Field.md) + +___ + +### GraphQLClient + +Re-exports: [GraphQLClient](../interfaces/graphql_request_client.GraphQLClient.md) + +___ + +### GraphQLDictionaryService + +Re-exports: [GraphQLDictionaryService](../classes/i18n_graphql_dictionary_service.GraphQLDictionaryService.md) + +___ + +### GraphQLDictionaryServiceConfig + +Re-exports: [GraphQLDictionaryServiceConfig](../interfaces/i18n_graphql_dictionary_service.GraphQLDictionaryServiceConfig.md) + +___ + +### GraphQLLayoutService + +Re-exports: [GraphQLLayoutService](../classes/layout_graphql_layout_service.GraphQLLayoutService.md) + +___ + +### GraphQLLayoutServiceConfig + +Re-exports: [GraphQLLayoutServiceConfig](layout_graphql_layout_service.md#graphqllayoutserviceconfig) + +___ + +### GraphQLRequestClient + +Re-exports: [GraphQLRequestClient](../classes/graphql_request_client.GraphQLRequestClient.md) + +___ + +### GraphQLRequestClientConfig + +Re-exports: [GraphQLRequestClientConfig](graphql_request_client.md#graphqlrequestclientconfig) + +___ + +### HtmlElementRendering + +Re-exports: [HtmlElementRendering](../interfaces/layout_models.HtmlElementRendering.md) + +___ + +### HttpDataFetcher + +Re-exports: [HttpDataFetcher](data_fetcher.md#httpdatafetcher) + +___ + +### HttpResponse + +Re-exports: [HttpResponse](../interfaces/data_fetcher.HttpResponse.md) + +___ + +### Item + +Re-exports: [Item](../interfaces/layout_models.Item.md) + +___ + +### LayoutService + +Re-exports: [LayoutService](../interfaces/layout_layout_service.LayoutService.md) + +___ + +### LayoutServiceConfig + +Re-exports: [LayoutServiceConfig](../interfaces/layout_rest_layout_service.LayoutServiceConfig.md) + +___ + +### LayoutServiceContext + +Re-exports: [LayoutServiceContext](../interfaces/layout_models.LayoutServiceContext.md) + +___ + +### LayoutServiceContextData + +Re-exports: [LayoutServiceContextData](../interfaces/layout_models.LayoutServiceContextData.md) + +___ + +### LayoutServiceData + +Re-exports: [LayoutServiceData](../interfaces/layout_models.LayoutServiceData.md) + +___ + +### LayoutServicePageState + +Re-exports: [LayoutServicePageState](../enums/layout_models.LayoutServicePageState.md) + +___ + +### LayoutServiceRequestOptions + +Re-exports: [LayoutServiceRequestOptions](../interfaces/layout_rest_layout_service.LayoutServiceRequestOptions.md) + +___ + +### MemoryCacheClient + +Re-exports: [MemoryCacheClient](../classes/cache_client.MemoryCacheClient.md) + +___ + +### PlaceholderData + +Re-exports: [PlaceholderData](../interfaces/layout_models.PlaceholderData.md) + +___ + +### PlaceholdersData + +Re-exports: [PlaceholdersData](layout_models.md#placeholdersdata) + +___ + +### RestDictionaryService + +Re-exports: [RestDictionaryService](../classes/i18n_rest_dictionary_service.RestDictionaryService.md) + +___ + +### RestDictionaryServiceConfig + +Re-exports: [RestDictionaryServiceConfig](i18n_rest_dictionary_service.md#restdictionaryserviceconfig) + +___ + +### RestDictionaryServiceData + +Re-exports: [RestDictionaryServiceData](i18n_rest_dictionary_service.md#restdictionaryservicedata) + +___ + +### RestLayoutService + +Re-exports: [RestLayoutService](../classes/layout_rest_layout_service.RestLayoutService.md) + +___ + +### RestLayoutServiceConfig + +Re-exports: [RestLayoutServiceConfig](layout_rest_layout_service.md#restlayoutserviceconfig) + +___ + +### RouteData + +Re-exports: [RouteData](../interfaces/layout_models.RouteData.md) + +___ + +### SearchQueryResult + +Re-exports: [SearchQueryResult](graphql_search_service.md#searchqueryresult) + +___ + +### SearchQueryService + +Re-exports: [SearchQueryService](../classes/graphql_search_service.SearchQueryService.md) + +___ + +### SearchQueryVariables + +Re-exports: [SearchQueryVariables](graphql_search_service.md#searchqueryvariables) + +___ + +### SearchServiceConfig + +Re-exports: [SearchServiceConfig](../interfaces/graphql_search_service.SearchServiceConfig.md) + +___ + +### constants + +Re-exports: [constants](constants.md) + +___ + +### debug + +Renames and exports: [default](debug.md#default) + +___ + +### fetchData + +Re-exports: [fetchData](data_fetcher.md#fetchdata) + +___ + +### getAppRootId + +Re-exports: [getAppRootId](graphql_app_root_query.md#getapprootid) + +___ + +### getChildPlaceholder + +Re-exports: [getChildPlaceholder](layout_utils.md#getchildplaceholder) + +___ + +### getFieldValue + +Re-exports: [getFieldValue](layout_utils.md#getfieldvalue) + +___ + +### isExperienceEditorActive + +Re-exports: [isExperienceEditorActive](utils_experience_editor.md#isexperienceeditoractive) + +___ + +### isServer + +Renames and exports: [default](utils_is_server.md#default) + +___ + +### mediaApi + +Renames and exports: [media-api](media_api.md) + +___ + +### resetExperienceEditorChromes + +Re-exports: [resetExperienceEditorChromes](utils_experience_editor.md#resetexperienceeditorchromes) + +___ + +### resolveUrl + +Renames and exports: [default](utils_resolve_url.md#default) + +## Variables + +### dataApi + +• `Const` **dataApi**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `fetchPlaceholderData` | (`placeholderName`: `string`, `itemPath`: `string`, `options`: [`LayoutServiceRequestOptions`](../interfaces/layout_rest_layout_service.LayoutServiceRequestOptions.md)<[`PlaceholderData`](../interfaces/layout_models.PlaceholderData.md)\>) => `Promise`<[`PlaceholderData`](../interfaces/layout_models.PlaceholderData.md)\> | +| `fetchRouteData` | (`itemPath`: `string`, `options`: [`LayoutServiceRequestOptions`](../interfaces/layout_rest_layout_service.LayoutServiceRequestOptions.md)<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\>) => `Promise`<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\> | + +#### Defined in + +[index.ts:47](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/index.ts#L47) diff --git a/ref-docs/sitecore-jss/modules/layout_graphql_layout_service.md b/ref-docs/sitecore-jss/modules/layout_graphql_layout_service.md new file mode 100644 index 0000000000..f74759f444 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/layout_graphql_layout_service.md @@ -0,0 +1,32 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / layout/graphql-layout-service + +# Module: layout/graphql-layout-service + +## Table of contents + +### Classes + +- [GraphQLLayoutService](../classes/layout_graphql_layout_service.GraphQLLayoutService.md) + +### Type aliases + +- [GraphQLLayoutServiceConfig](layout_graphql_layout_service.md#graphqllayoutserviceconfig) + +## Type aliases + +### GraphQLLayoutServiceConfig + +Ƭ **GraphQLLayoutServiceConfig**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `apiKey` | `string` | The API key to use for authentication | +| `endpoint` | `string` | Your Graphql endpoint | +| `siteName` | `string` | The JSS application name | +| `formatLayoutQuery?` | (`siteName`: `string`, `itemPath`: `string`, `locale?`: `string`) => `string` | - | + +#### Defined in + +[layout/graphql-layout-service.ts:6](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/graphql-layout-service.ts#L6) diff --git a/ref-docs/sitecore-jss/modules/layout_layout_service.md b/ref-docs/sitecore-jss/modules/layout_layout_service.md new file mode 100644 index 0000000000..21b3f7af71 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/layout_layout_service.md @@ -0,0 +1,13 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / layout/layout-service + +# Module: layout/layout-service + +## Table of contents + +### Classes + +- [LayoutServiceBase](../classes/layout_layout_service.LayoutServiceBase.md) + +### Interfaces + +- [LayoutService](../interfaces/layout_layout_service.LayoutService.md) diff --git a/ref-docs/sitecore-jss/modules/layout_models.md b/ref-docs/sitecore-jss/modules/layout_models.md new file mode 100644 index 0000000000..6f400ec830 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/layout_models.md @@ -0,0 +1,59 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / layout/models + +# Module: layout/models + +## Table of contents + +### Enumerations + +- [LayoutServicePageState](../enums/layout_models.LayoutServicePageState.md) + +### Interfaces + +- [ComponentFields](../interfaces/layout_models.ComponentFields.md) +- [ComponentParams](../interfaces/layout_models.ComponentParams.md) +- [ComponentRendering](../interfaces/layout_models.ComponentRendering.md) +- [Field](../interfaces/layout_models.Field.md) +- [HtmlElementRendering](../interfaces/layout_models.HtmlElementRendering.md) +- [Item](../interfaces/layout_models.Item.md) +- [LayoutServiceContext](../interfaces/layout_models.LayoutServiceContext.md) +- [LayoutServiceContextData](../interfaces/layout_models.LayoutServiceContextData.md) +- [LayoutServiceData](../interfaces/layout_models.LayoutServiceData.md) +- [PlaceholderData](../interfaces/layout_models.PlaceholderData.md) +- [RouteData](../interfaces/layout_models.RouteData.md) + +### Type aliases + +- [GenericFieldValue](layout_models.md#genericfieldvalue) +- [PlaceholdersData](layout_models.md#placeholdersdata) + +## Type aliases + +### GenericFieldValue + +Ƭ **GenericFieldValue**: `string` \| `boolean` \| `number` \| { [key: string]: `unknown`; } \| { [key: string]: `unknown`; }[] + +Field value data on a component + +#### Defined in + +[layout/models.ts:109](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L109) + +___ + +### PlaceholdersData + +Ƭ **PlaceholdersData**<`TYPEDNAME`\>: { [P in TYPEDNAME]: (ComponentRendering \| HtmlElementRendering)[]} + +Placeholder contents data (name: placeholder name, then array of components within that placeholder name) +Note: HtmlElementRendering is used by Sitecore Experience Editor + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `TYPEDNAME` | extends `string``string` | + +#### Defined in + +[layout/models.ts:64](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/models.ts#L64) diff --git a/ref-docs/sitecore-jss/modules/layout_rest_layout_service.md b/ref-docs/sitecore-jss/modules/layout_rest_layout_service.md new file mode 100644 index 0000000000..ca2e089d91 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/layout_rest_layout_service.md @@ -0,0 +1,164 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / layout/rest-layout-service + +# Module: layout/rest-layout-service + +## Table of contents + +### Classes + +- [RestLayoutService](../classes/layout_rest_layout_service.RestLayoutService.md) + +### Interfaces + +- [LayoutServiceConfig](../interfaces/layout_rest_layout_service.LayoutServiceConfig.md) +- [LayoutServiceRequestOptions](../interfaces/layout_rest_layout_service.LayoutServiceRequestOptions.md) + +### Type aliases + +- [DataFetcherResolver](layout_rest_layout_service.md#datafetcherresolver) +- [RestLayoutServiceConfig](layout_rest_layout_service.md#restlayoutserviceconfig) + +### Functions + +- [fetchPlaceholderData](layout_rest_layout_service.md#fetchplaceholderdata) +- [fetchRouteData](layout_rest_layout_service.md#fetchroutedata) +- [resolveLayoutServiceUrl](layout_rest_layout_service.md#resolvelayoutserviceurl) + +## Type aliases + +### DataFetcherResolver + +Ƭ **DataFetcherResolver**: (`req?`: `IncomingMessage`, `res?`: `ServerResponse`) => [`HttpDataFetcher`](data_fetcher.md#httpdatafetcher)<`T`\> + +#### Type declaration + +▸ <`T`\>(`req?`, `res?`): [`HttpDataFetcher`](data_fetcher.md#httpdatafetcher)<`T`\> + +Data fetcher resolver in order to provide custom data fetcher + +##### Type parameters + +| Name | +| :------ | +| `T` | + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `req?` | `IncomingMessage` | +| `res?` | `ServerResponse` | + +##### Returns + +[`HttpDataFetcher`](data_fetcher.md#httpdatafetcher)<`T`\> + +#### Defined in + +[layout/rest-layout-service.ts:154](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L154) + +___ + +### RestLayoutServiceConfig + +Ƭ **RestLayoutServiceConfig**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `apiHost` | `string` | Your Sitecore instance hostname that is the backend for JSS | +| `apiKey` | `string` | The Sitecore SSC API key your app uses | +| `configurationName?` | `string` | Layout Service "named" configuration | +| `dataFetcherResolver?` | [`DataFetcherResolver`](layout_rest_layout_service.md#datafetcherresolver) | Function that handles fetching API data | +| `siteName` | `string` | The JSS application name | +| `tracking?` | `boolean` | Enables/disables analytics tracking for the Layout Service invocation (default is true). More than likely, this would be set to false for SSG/hybrid implementations, and the JSS tracker would instead be used on the client-side: [https://jss.sitecore.com/docs/fundamentals/services/tracking](https://jss.sitecore.com/docs/fundamentals/services/tracking) **`default`** true | + +#### Defined in + +[layout/rest-layout-service.ts:118](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L118) + +## Functions + +### fetchPlaceholderData + +▸ **fetchPlaceholderData**(`placeholderName`, `itemPath`, `options`): `Promise`<[`PlaceholderData`](../interfaces/layout_models.PlaceholderData.md)\> + +Makes a request to Sitecore Layout Service for the specified placeholder in +a specific route item. Allows you to retrieve rendered data for individual placeholders instead of entire routes. + +**`deprecated`** Will be removed in a future release. Please use LayoutService.fetchPlaceholderData instead, + +**`see`** {LayoutService} - fetchPlaceholderData + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `placeholderName` | `string` | +| `itemPath` | `string` | +| `options` | [`LayoutServiceRequestOptions`](../interfaces/layout_rest_layout_service.LayoutServiceRequestOptions.md)<[`PlaceholderData`](../interfaces/layout_models.PlaceholderData.md)\> | + +#### Returns + +`Promise`<[`PlaceholderData`](../interfaces/layout_models.PlaceholderData.md)\> + +placeholder data + +#### Defined in + +[layout/rest-layout-service.ts:57](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L57) + +___ + +### fetchRouteData + +▸ **fetchRouteData**(`itemPath`, `options`): `Promise`<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\> + +Makes a request to Sitecore Layout Service for the specified route item path. + +**`deprecated`** Will be removed in a future release. Please use LayoutService.fetchLayoutData instead, + +**`see`** {LayoutService} - fetchLayoutData + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `itemPath` | `string` | +| `options` | [`LayoutServiceRequestOptions`](../interfaces/layout_rest_layout_service.LayoutServiceRequestOptions.md)<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\> | + +#### Returns + +`Promise`<[`LayoutServiceData`](../interfaces/layout_models.LayoutServiceData.md)\> + +layout data + +#### Defined in + +[layout/rest-layout-service.ts:36](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L36) + +___ + +### resolveLayoutServiceUrl + +▸ **resolveLayoutServiceUrl**(`options?`, `apiType`): `string` + +Resolves layout service url + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `options` | [`LayoutServiceConfig`](../interfaces/layout_rest_layout_service.LayoutServiceConfig.md) | - | +| `apiType` | ``"render"`` \| ``"placeholder"`` | which layout service API to call ('render' or 'placeholder') | + +#### Returns + +`string` + +the layout service url + +#### Defined in + +[layout/rest-layout-service.ts:15](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/rest-layout-service.ts#L15) diff --git a/ref-docs/sitecore-jss/modules/layout_utils.md b/ref-docs/sitecore-jss/modules/layout_utils.md new file mode 100644 index 0000000000..bff0412406 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/layout_utils.md @@ -0,0 +1,89 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / layout/utils + +# Module: layout/utils + +## Table of contents + +### Functions + +- [getChildPlaceholder](layout_utils.md#getchildplaceholder) +- [getFieldValue](layout_utils.md#getfieldvalue) + +## Functions + +### getChildPlaceholder + +▸ **getChildPlaceholder**(`rendering`, `placeholderName`): ([`ComponentRendering`](../interfaces/layout_models.ComponentRendering.md) \| [`HtmlElementRendering`](../interfaces/layout_models.HtmlElementRendering.md))[] + +Gets rendering definitions in a given child placeholder under a current rendering. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `rendering` | [`ComponentRendering`](../interfaces/layout_models.ComponentRendering.md) | +| `placeholderName` | `string` | + +#### Returns + +([`ComponentRendering`](../interfaces/layout_models.ComponentRendering.md) \| [`HtmlElementRendering`](../interfaces/layout_models.HtmlElementRendering.md))[] + +child placeholder + +#### Defined in + +[layout/utils.ts:56](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/utils.ts#L56) + +___ + +### getFieldValue + +▸ **getFieldValue**<`T`\>(`renderingOrFields`, `fieldName`): `T` \| `undefined` + +Safely extracts a field value from a rendering or fields object. +Null will be returned if the field is not defined. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `renderingOrFields` | [`ComponentRendering`](../interfaces/layout_models.ComponentRendering.md) \| `Fields` | +| `fieldName` | `string` | + +#### Returns + +`T` \| `undefined` + +#### Defined in + +[layout/utils.ts:9](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/utils.ts#L9) + +▸ **getFieldValue**<`T`\>(`renderingOrFields`, `fieldName`, `defaultValue`): `T` + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `renderingOrFields` | [`ComponentRendering`](../interfaces/layout_models.ComponentRendering.md) \| `Fields` | +| `fieldName` | `string` | +| `defaultValue` | `T` | + +#### Returns + +`T` + +#### Defined in + +[layout/utils.ts:13](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/layout/utils.ts#L13) diff --git a/ref-docs/sitecore-jss/modules/media_api.md b/ref-docs/sitecore-jss/modules/media_api.md new file mode 100644 index 0000000000..e2c3e1dd9b --- /dev/null +++ b/ref-docs/sitecore-jss/modules/media_api.md @@ -0,0 +1,133 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / media-api + +# Module: media-api + +## Table of contents + +### Functions + +- [findEditorImageTag](media_api.md#findeditorimagetag) +- [getRequiredParams](media_api.md#getrequiredparams) +- [getSrcSet](media_api.md#getsrcset) +- [updateImageUrl](media_api.md#updateimageurl) + +## Functions + +### findEditorImageTag + +▸ `Const` **findEditorImageTag**(`editorMarkup`): ``null`` \| { `attrs`: { [key: string]: `string`; } ; `imgTag`: `string` } + +Makes a request to Sitecore Content Service for the specified item path. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `editorMarkup` | `string` | + +#### Returns + +``null`` \| { `attrs`: { [key: string]: `string`; } ; `imgTag`: `string` } + +found image tag + +#### Defined in + +[media-api.ts:19](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/media-api.ts#L19) + +___ + +### getRequiredParams + +▸ `Const` **getRequiredParams**(`qs`): `Object` + +Get required query string params which should be merged with user params + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `qs` | `Object` | layout service parsed query string | + +#### Returns + +`Object` + +requiredParams + +| Name | Type | +| :------ | :------ | +| `db` | `undefined` \| `string` | +| `la` | `undefined` \| `string` | +| `rev` | `undefined` \| `string` | +| `ts` | `undefined` \| `string` | +| `vs` | `undefined` \| `string` | + +#### Defined in + +[media-api.ts:45](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/media-api.ts#L45) + +___ + +### getSrcSet + +▸ `Const` **getSrcSet**(`url`, `srcSet`, `imageParams?`, `mediaUrlPrefix?`): `string` + +Receives an array of `srcSet` parameters that are iterated and used as parameters to generate +a corresponding set of updated Sitecore media URLs via @see updateImageUrl. The result is a comma-delimited +list of media URLs with respective dimension parameters. + +**`example`** +// returns '/ipsum.jpg?h=1000&w=1000 1000w, /ipsum.jpg?mh=250&mw=250 250w' +getSrcSet('/ipsum.jpg', [{ h: 1000, w: 1000 }, { mh: 250, mw: 250 } ]) + +More information about `srcSet`: [https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | +| `srcSet` | { [key: string]: `string` \| `number` \| `undefined`; }[] | +| `imageParams?` | `Object` | +| `mediaUrlPrefix?` | `RegExp` | + +#### Returns + +`string` + +src set + +#### Defined in + +[media-api.ts:116](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/media-api.ts#L116) + +___ + +### updateImageUrl + +▸ `Const` **updateImageUrl**(`url`, `params?`, `mediaUrlPrefix?`): `string` + +Prepares a Sitecore media URL with `params` for use by the JSS media handler. +This is done by replacing `/~/media` or `/-/media` with `/~/jssmedia` or `/-/jssmedia`, respectively. +Provided `params` are used as the querystring parameters for the media URL. +Can use `mediaUrlPrefix` in order to use a custom prefix. +If no `params` are sent, the original media URL is returned. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `url` | `string` | +| `params?` | ``null`` \| { [key: string]: `string` \| `number` \| `undefined`; } | +| `mediaUrlPrefix` | `RegExp` | + +#### Returns + +`string` + +url + +#### Defined in + +[media-api.ts:62](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/media-api.ts#L62) diff --git a/ref-docs/sitecore-jss/modules/utils.md b/ref-docs/sitecore-jss/modules/utils.md new file mode 100644 index 0000000000..ada1cf2a21 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/utils.md @@ -0,0 +1,36 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / utils + +# Module: utils + +## Table of contents + +### References + +- [isExperienceEditorActive](utils.md#isexperienceeditoractive) +- [isServer](utils.md#isserver) +- [resetExperienceEditorChromes](utils.md#resetexperienceeditorchromes) +- [resolveUrl](utils.md#resolveurl) + +## References + +### isExperienceEditorActive + +Re-exports: [isExperienceEditorActive](utils_experience_editor.md#isexperienceeditoractive) + +___ + +### isServer + +Renames and exports: [default](utils_is_server.md#default) + +___ + +### resetExperienceEditorChromes + +Re-exports: [resetExperienceEditorChromes](utils_experience_editor.md#resetexperienceeditorchromes) + +___ + +### resolveUrl + +Renames and exports: [default](utils_resolve_url.md#default) diff --git a/ref-docs/sitecore-jss/modules/utils_experience_editor.md b/ref-docs/sitecore-jss/modules/utils_experience_editor.md new file mode 100644 index 0000000000..9f3d843150 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/utils_experience_editor.md @@ -0,0 +1,38 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / utils/experience-editor + +# Module: utils/experience-editor + +## Table of contents + +### Functions + +- [isExperienceEditorActive](utils_experience_editor.md#isexperienceeditoractive) +- [resetExperienceEditorChromes](utils_experience_editor.md#resetexperienceeditorchromes) + +## Functions + +### isExperienceEditorActive + +▸ `Const` **isExperienceEditorActive**(): `boolean` + +#### Returns + +`boolean` + +#### Defined in + +[utils/experience-editor.ts:3](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/utils/experience-editor.ts#L3) + +___ + +### resetExperienceEditorChromes + +▸ `Const` **resetExperienceEditorChromes**(): `void` + +#### Returns + +`void` + +#### Defined in + +[utils/experience-editor.ts:12](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/utils/experience-editor.ts#L12) diff --git a/ref-docs/sitecore-jss/modules/utils_is_server.md b/ref-docs/sitecore-jss/modules/utils_is_server.md new file mode 100644 index 0000000000..8000169dcb --- /dev/null +++ b/ref-docs/sitecore-jss/modules/utils_is_server.md @@ -0,0 +1,27 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / utils/is-server + +# Module: utils/is-server + +## Table of contents + +### Functions + +- [default](utils_is_server.md#default) + +## Functions + +### default + +▸ **default**(): `boolean` + +Determines whether the current execution context is server-side + +#### Returns + +`boolean` + +true if executing server-side + +#### Defined in + +[utils/is-server.ts:5](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/utils/is-server.ts#L5) diff --git a/ref-docs/sitecore-jss/modules/utils_resolve_url.md b/ref-docs/sitecore-jss/modules/utils_resolve_url.md new file mode 100644 index 0000000000..606117d014 --- /dev/null +++ b/ref-docs/sitecore-jss/modules/utils_resolve_url.md @@ -0,0 +1,37 @@ +[Sitecore JavaScript Rendering SDK](../README.md) / utils/resolve-url + +# Module: utils/resolve-url + +## Table of contents + +### Functions + +- [default](utils_resolve_url.md#default) + +## Functions + +### default + +▸ **default**(`urlBase`, `params?`): `string` + +Resolves a base URL that may contain query string parameters and an additional set of query +string parameters into a unified string representation. + +**`throws`** {RangeError} if the provided url is an empty string + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `urlBase` | `string` | the base URL that may contain query string parameters | +| `params` | `querystring.ParsedUrlQueryInput` | query string parameters | + +#### Returns + +`string` + +a URL string + +#### Defined in + +[utils/resolve-url.ts:24](https://github.com/Sitecore/jss/blob/c1078945/packages/sitecore-jss/src/utils/resolve-url.ts#L24) diff --git a/samples/angular/.eslintrc b/samples/angular/.eslintrc index e4d40e25f2..c3f0f93d8b 100644 --- a/samples/angular/.eslintrc +++ b/samples/angular/.eslintrc @@ -37,6 +37,18 @@ "style": "camelCase" } ], + "@typescript-eslint/naming-convention": [ + "error", + { + "format": ["PascalCase"], + "selector": "typeLike", + "custom": { + "regex": "^I[A-Z]", + "match": false + } + } + ], + "prefer-arrow/prefer-arrow-functions": "off", "@typescript-eslint/consistent-type-definitions": "error", "@typescript-eslint/dot-notation": "off", "@typescript-eslint/explicit-member-accessibility": [ @@ -63,19 +75,5 @@ ], "rules": {} } - ], - "rules": { - "@typescript-eslint/naming-convention": [ - "error", - { - "format": ["PascalCase"], - "selector": "typeLike", - "custom": { - "regex": "^I[A-Z]", - "match": false - } - } - ], - "prefer-arrow/prefer-arrow-functions": "off" - } + ] } diff --git a/samples/angular/README.md b/samples/angular/README.md index 04ae14cf6a..3757a99350 100644 --- a/samples/angular/README.md +++ b/samples/angular/README.md @@ -4,7 +4,7 @@ This project was generated with [Angular CLI](https://github.com/angular/angular ## Sitecore JavaScript Services documentation -Check [JSS documentation](https://jss.sitecore.net/) for how to install JSS Server and configure Sitecore. +Check [JSS documentation](https://jss.sitecore.com/) for how to install JSS Server and configure Sitecore. ## App setup diff --git a/samples/angular/angular.json b/samples/angular/angular.json index 53da965ab2..d9017693d5 100644 --- a/samples/angular/angular.json +++ b/samples/angular/angular.json @@ -27,7 +27,8 @@ "scripts": [], "allowedCommonJsDependencies": [ "@sitecore-jss/sitecore-jss", - "zen-observable" + "zen-observable", + "js-sha256" ] }, "configurations": { @@ -38,11 +39,11 @@ "maximumWarning": "6kb" } ], + "baseHref": "/", "aot": true, "optimization": true, "outputHashing": "all", "sourceMap": false, - "extractCss": true, "namedChunks": false, "extractLicenses": true, "vendorChunk": false, @@ -105,7 +106,7 @@ "builder": "@angular-devkit/build-angular:server", "options": { "outputPath": "dist/server", - "main": "src/main.server.ts", + "main": "server.bundle.ts", "tsConfig": "src/tsconfig.server.json" }, "configurations": { diff --git a/samples/angular/data/routes/en.yml b/samples/angular/data/routes/en.yml index b906d36c82..87e3b92e5f 100644 --- a/samples/angular/data/routes/en.yml +++ b/samples/angular/data/routes/en.yml @@ -29,7 +29,7 @@ placeholders: content: |

Thanks for using JSS. Here are some resources to get you started:

-

Documentation

+

Documentation

The official JSS documentation can help you with any JSS task from getting started to advanced techniques.

Styleguide

diff --git a/samples/angular/data/routes/graphql/en.yml b/samples/angular/data/routes/graphql/en.yml index 3d0ee98447..9d8f4dbcbb 100644 --- a/samples/angular/data/routes/graphql/en.yml +++ b/samples/angular/data/routes/graphql/en.yml @@ -7,7 +7,7 @@ placeholders: heading: Using GraphQL with JSS content: |

This is a live example of using Integrated GraphQL and Connected GraphQL with a JSS app. - For more information on GraphQL use in JSS, please see the documentation.

+ For more information on GraphQL use in JSS, please see the documentation.

- componentName: GraphQLLayout placeholders: jss-graphql-layout: diff --git a/samples/angular/data/routes/styleguide/en.yml b/samples/angular/data/routes/styleguide/en.yml index 1c660737c9..a5d88bc2bc 100644 --- a/samples/angular/data/routes/styleguide/en.yml +++ b/samples/angular/data/routes/styleguide/en.yml @@ -6,7 +6,7 @@ placeholders: fields: heading: JSS Styleguide content: | -

This is a live set of examples of how to use JSS. For more information on using JSS, please see the documentation.

+

This is a live set of examples of how to use JSS. For more information on using JSS, please see the documentation.

The content and layout of this page is defined in /data/routes/styleguide/en.yml

- componentName: StyleguideLayout placeholders: diff --git a/samples/angular/package-lock.json b/samples/angular/package-lock.json index c2036c07d5..886f8aed5b 100644 --- a/samples/angular/package-lock.json +++ b/samples/angular/package-lock.json @@ -1,600 +1,1221 @@ { "name": "jss-sample-angular", - "version": "16.0.0", + "version": "18.0.0-canary.7", "lockfileVersion": 1, "requires": true, "dependencies": { "@angular-devkit/architect": { - "version": "0.1000.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1000.8.tgz", - "integrity": "sha512-2AqPbiEugtPxNz4MGhLh+imUVelhW9h1cdJs2AbxZosIxftPb5DNDQUSAwVmRGp4CtcXVrlvcDwc0f4Fw1aiIA==", + "version": "0.1102.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.6.tgz", + "integrity": "sha512-27+5tjoUOAcm2pzo6EJhQn3lK4s9Gk0RfZFc2ygVu8PHnukXZAd4ntclGi33aPgJmt4zA2qbWq4Ytn2a/G6FMg==", "dev": true, "requires": { - "@angular-devkit/core": "10.0.8", - "rxjs": "6.5.5" + "@angular-devkit/core": "11.2.6", + "rxjs": "6.6.3" + }, + "dependencies": { + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@angular-devkit/build-angular": { - "version": "0.1000.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1000.8.tgz", - "integrity": "sha512-wwDN2oadQvYPL7lDmvGsoWQjW++0ZnxWk1QVlABGhBSIs8Uxs26Hjd5YNUSsvJavBkqb1UZIOilqzb4dig5MIA==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1000.8", - "@angular-devkit/build-optimizer": "0.1000.8", - "@angular-devkit/build-webpack": "0.1000.8", - "@angular-devkit/core": "10.0.8", - "@babel/core": "7.9.6", - "@babel/generator": "7.9.6", - "@babel/plugin-transform-runtime": "7.9.6", - "@babel/preset-env": "7.9.6", - "@babel/runtime": "7.9.6", - "@babel/template": "7.8.6", - "@jsdevtools/coverage-istanbul-loader": "3.0.3", - "@ngtools/webpack": "10.0.8", - "ajv": "6.12.3", - "autoprefixer": "9.8.0", - "babel-loader": "8.1.0", + "version": "0.1102.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1102.6.tgz", + "integrity": "sha512-pTVelpyCg/tT4JHmKglpfBiTm9+CYwW2nwR8ZjgHFxw4+Ut6VkjuQK9tNnScHYXjNMsxc84AuooRSCY+DJfecw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1102.6", + "@angular-devkit/build-optimizer": "0.1102.6", + "@angular-devkit/build-webpack": "0.1102.6", + "@angular-devkit/core": "11.2.6", + "@babel/core": "7.12.10", + "@babel/generator": "7.12.11", + "@babel/plugin-transform-async-to-generator": "7.12.1", + "@babel/plugin-transform-runtime": "7.12.10", + "@babel/preset-env": "7.12.11", + "@babel/runtime": "7.12.5", + "@babel/template": "7.12.7", + "@discoveryjs/json-ext": "0.5.2", + "@jsdevtools/coverage-istanbul-loader": "3.0.5", + "@ngtools/webpack": "11.2.6", + "ansi-colors": "4.1.1", + "autoprefixer": "10.2.4", + "babel-loader": "8.2.2", "browserslist": "^4.9.1", - "cacache": "15.0.3", + "cacache": "15.0.5", "caniuse-lite": "^1.0.30001032", - "circular-dependency-plugin": "5.2.0", - "copy-webpack-plugin": "6.0.3", - "core-js": "3.6.4", - "css-loader": "3.5.3", + "circular-dependency-plugin": "5.2.2", + "copy-webpack-plugin": "6.3.2", + "core-js": "3.8.3", + "critters": "0.0.7", + "css-loader": "5.0.1", "cssnano": "4.1.10", - "file-loader": "6.0.0", + "file-loader": "6.2.0", "find-cache-dir": "3.3.1", "glob": "7.1.6", - "jest-worker": "26.0.0", + "https-proxy-agent": "5.0.0", + "inquirer": "7.3.3", + "jest-worker": "26.6.2", "karma-source-map-support": "1.4.0", - "less-loader": "6.1.0", - "license-webpack-plugin": "2.2.0", + "less": "4.1.1", + "less-loader": "7.3.0", + "license-webpack-plugin": "2.3.11", "loader-utils": "2.0.0", - "mini-css-extract-plugin": "0.9.0", + "mini-css-extract-plugin": "1.3.5", "minimatch": "3.0.4", - "open": "7.0.4", - "parse5": "4.0.0", + "open": "7.4.0", + "ora": "5.3.0", + "parse5-html-rewriting-stream": "6.0.1", "pnp-webpack-plugin": "1.6.4", - "postcss": "7.0.31", - "postcss-import": "12.0.1", - "postcss-loader": "3.0.0", - "raw-loader": "4.0.1", - "regenerator-runtime": "0.13.5", - "resolve-url-loader": "3.1.1", + "postcss": "8.2.4", + "postcss-import": "14.0.0", + "postcss-loader": "4.2.0", + "raw-loader": "4.0.2", + "regenerator-runtime": "0.13.7", + "resolve-url-loader": "3.1.2", "rimraf": "3.0.2", - "rollup": "2.10.9", - "rxjs": "6.5.5", - "sass": "1.26.5", - "sass-loader": "8.0.2", - "semver": "7.3.2", + "rollup": "2.38.4", + "rxjs": "6.6.3", + "sass": "1.32.6", + "sass-loader": "10.1.1", + "semver": "7.3.4", "source-map": "0.7.3", - "source-map-loader": "1.0.0", + "source-map-loader": "1.1.3", "source-map-support": "0.5.19", - "speed-measure-webpack-plugin": "1.3.3", - "style-loader": "1.2.1", - "stylus": "0.54.7", - "stylus-loader": "3.0.2", - "terser": "4.7.0", - "terser-webpack-plugin": "3.0.1", + "speed-measure-webpack-plugin": "1.4.2", + "style-loader": "2.0.0", + "stylus": "0.54.8", + "stylus-loader": "4.3.3", + "terser": "5.5.1", + "terser-webpack-plugin": "4.2.3", + "text-table": "0.2.0", "tree-kill": "1.2.2", - "webpack": "4.43.0", + "webpack": "4.44.2", "webpack-dev-middleware": "3.7.2", - "webpack-dev-server": "3.11.0", - "webpack-merge": "4.2.2", - "webpack-sources": "1.4.3", - "webpack-subresource-integrity": "1.4.1", - "worker-plugin": "4.0.3" - }, - "dependencies": { - "core-js": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", - "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", - "dev": true - } - } - }, - "@angular-devkit/build-optimizer": { - "version": "0.1000.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1000.8.tgz", - "integrity": "sha512-esODHuTGEEMx1SmLUq03VAMly8gZUd1vRuvZeKS5HqKwDg8ZzcI7/25BuuUSlyST+6BEdjo2gnmagQnG0VBdQw==", - "dev": true, - "requires": { - "loader-utils": "2.0.0", - "source-map": "0.7.3", - "tslib": "2.0.0", - "webpack-sources": "1.4.3" - }, - "dependencies": { - "tslib": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", - "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", - "dev": true - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1000.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1000.8.tgz", - "integrity": "sha512-y/U+dV5N8W7KECncGSKQWoUH/DFNZCseczyl6LAd8bc0fMr8Z0TAIe8OXj+5CSRRdejWfRIxGtNWM+L2kTCU8A==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1000.8", - "@angular-devkit/core": "10.0.8", - "rxjs": "6.5.5" - } - }, - "@angular-devkit/core": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.0.8.tgz", - "integrity": "sha512-d9S8VQuqaYg0c/Y2kl/MtICtZ+UKlH5bLm8y2fb2WfSL4A5XIqMGdEVxzFSiR0b1Bnt4NAoQMcBec1blHAqMSQ==", - "dev": true, - "requires": { - "ajv": "6.12.3", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.5.5", - "source-map": "0.7.3" - } - }, - "@angular-devkit/schematics": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.0.8.tgz", - "integrity": "sha512-p2PjvrExuzOe/azyOEcBeIgwZIk4D6VeLkJf/KVjhXOVu13pjIXHX7/qWl+IYnbtj3NZGHqXM5Cr8nxsJNIMpw==", - "dev": true, - "requires": { - "@angular-devkit/core": "10.0.8", - "ora": "4.0.4", - "rxjs": "6.5.5" - } - }, - "@angular-eslint/builder": { - "version": "0.8.0-beta.6", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-0.8.0-beta.6.tgz", - "integrity": "sha512-Dc6UrI140rqSrbkPP928JbYRlSl9PNdEIuIF/Uh982MR20WvwiCXcBJc4xVHv0Oy/s0n9OQSvhfW0eUNaw2qWQ==", - "dev": true - }, - "@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-eslint/eslint-plugin-template": { - "version": "0.8.0-beta.6", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-0.8.0-beta.6.tgz", - "integrity": "sha512-iC9YJSqeokMlFFLP0ZyWalzhVU++2bBdY9vfwrTaNC4JNLszAOOlkFRtPXZZQZpJ/3PM0FlVhD4OSZL36Gw6Iw==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.3.0", - "aria-query": "^4.2.2" + "webpack-dev-server": "3.11.2", + "webpack-merge": "5.7.3", + "webpack-sources": "2.2.0", + "webpack-subresource-integrity": "1.5.2", + "worker-plugin": "5.0.0" }, "dependencies": { - "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "@babel/core": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", + "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, - "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "@babel/generator": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", "dev": true, "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } - } - } - }, - "@angular-eslint/schematics": { - "version": "0.8.0-beta.6", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-0.8.0-beta.6.tgz", - "integrity": "sha512-LKQLQryq3oE/mIZNBqfXjtPEPmAr0+C55cd27tvfkMbDk0mfIfORWG7aSI5oLJYycV/30dqH6w31ClA1+BoEjA==", - "dev": true, - "requires": { - "@angular-eslint/eslint-plugin": "^0.8.0-beta.6", - "@angular-eslint/eslint-plugin-template": "^0.8.0-beta.6", - "strip-json-comments": "3.1.1", - "tslint-to-eslint-config": "2.0.1" - } - }, - "@angular-eslint/template-parser": { - "version": "0.8.0-beta.6", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-0.8.0-beta.6.tgz", - "integrity": "sha512-uyl5PoKDdOrJ9E/rnxqSkFOA8TCzqZpiH5MNnR8TYCrho0fAQkxVVyevgZxV7ocHZAGnl5aZ7tsB/VVX+R2Q2g==", - "dev": true, - "requires": { - "eslint-scope": "^5.1.0" - }, - "dependencies": { - "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==", + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", "dev": true, "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + } } - } - } - }, - "@angular/animations": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-10.0.14.tgz", - "integrity": "sha512-0BOGQOuaudIG0pq6FAnG55teKM7tEQZdIwdoOf0okhh9n0cFWSWRUjvUxWt25bWswlO+HxELyJioiRUvVSES4g==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/cli": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-10.0.8.tgz", - "integrity": "sha512-unTteffLepsFw7qQulHOLLyLqCpQMOaZo0WO4x6cQGcW2mc0WgwnwBW2JDYMx1U2434t/Q13LqYMPNYWyCGsog==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1000.8", - "@angular-devkit/core": "10.0.8", - "@angular-devkit/schematics": "10.0.8", - "@schematics/angular": "10.0.8", - "@schematics/update": "0.1000.8", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.1.1", - "ini": "1.3.5", - "inquirer": "7.1.0", - "npm-package-arg": "8.0.1", - "npm-pick-manifest": "6.1.0", - "open": "7.0.4", - "pacote": "9.5.12", - "read-package-tree": "5.3.1", - "rimraf": "3.0.2", - "semver": "7.3.2", - "symbol-observable": "1.2.0", - "universal-analytics": "0.4.20", - "uuid": "8.1.0" - }, - "dependencies": { - "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 }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", "dev": true, "requires": { - "ms": "^2.1.1" + "@babel/types": "^7.12.13" } }, - "uuid": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.1.0.tgz", - "integrity": "sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg==", - "dev": true - } - } - }, - "@angular/common": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-10.0.14.tgz", - "integrity": "sha512-EOAuaMt2HwJF3DtIJ/ksHtnF8Pqh5K2rWISYLEs9R3WNaSGn74kbCODAT4pNhI8P22Ykl3H4FmQUgnDZ3uDAUg==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/compiler": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-10.0.14.tgz", - "integrity": "sha512-lYNo6/MmnYAVFoDQDBB6HMFd9zHg3RHXc6hn+wchU0XSWiIsg6WYHbKOb/DyqUEyKebzy0gSKZf7gUeZHtj62Q==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/compiler-cli": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-10.0.14.tgz", - "integrity": "sha512-WK+S90sjc+3iMo8/CuuAX0RdGFwyA9esqqC5fYG/MDZjKuPuhogiimmR0rY3P1Th7B9di8x012xiILbf4GsGUQ==", - "dev": true, - "requires": { - "canonical-path": "1.0.0", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.7.2", - "fs-extra": "4.0.2", - "magic-string": "^0.25.0", - "minimist": "^1.2.0", - "reflect-metadata": "^0.1.2", - "semver": "^6.3.0", - "source-map": "^0.6.1", - "sourcemap-codec": "^1.4.8", - "tslib": "^2.0.0", - "yargs": "15.3.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 - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "@babel/types": "^7.13.12" } }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", "dev": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "@babel/types": "^7.13.12" } }, - "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==", + "@babel/helper-module-transforms": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", + "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", "dev": true, "requires": { - "color-name": "~1.1.4" + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + } } }, - "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 - }, - "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 - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@babel/types": "^7.12.13" } }, - "fs-extra": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", - "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" } }, - "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 - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "@babel/types": "^7.13.12" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "@babel/types": "^7.12.13" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "@babel/helpers": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "dev": true, + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + } + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", "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==", + "@babel/runtime": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "regenerator-runtime": "^0.13.4" } }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" } }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, - "yargs": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", - "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.0" + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" } }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "debug": "4" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "core-js": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", + "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==", + "dev": true + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.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" } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true } } }, - "@angular/core": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-10.0.14.tgz", - "integrity": "sha512-m+c9g6fA/gE+6K7It01b6r8TEmbuFjUZajQ9gG/pzist0mTBcqfvn0O4h5X+ebnSgw/bbnnp+4PbaXEi1pOWZQ==", + "@angular-devkit/build-optimizer": { + "version": "0.1102.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1102.6.tgz", + "integrity": "sha512-IFulN/QcuDTQ5U93aopvcjZtHuSHE0flqb42ixuUd6zhy7y8VzBWPDFUNApt/pW7pTcwg8eDqSZkBRywl3BxYw==", + "dev": true, "requires": { - "tslib": "^2.0.0" + "loader-utils": "2.0.0", + "source-map": "0.7.3", + "tslib": "2.1.0", + "typescript": "4.1.5", + "webpack-sources": "2.2.0" } }, - "@angular/forms": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-10.0.14.tgz", - "integrity": "sha512-McKh3rXDlAE7qmCnyWKENb2HhqAT+1dsAfChuqs0w8jhKkoRgA00RDFee6dZ6XQCc907DwuV0K8+wC3CvBp35w==", + "@angular-devkit/build-webpack": { + "version": "0.1102.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1102.6.tgz", + "integrity": "sha512-KjsmjyTy+zXs4u9VhSlJh2Ra9pt2WP4RI4O67+wgNKnZETdwnsbNggCWmpTnquBsb6Pg6ZViUmJQPa33NLMPsg==", + "dev": true, "requires": { - "tslib": "^2.0.0" + "@angular-devkit/architect": "0.1102.6", + "@angular-devkit/core": "11.2.6", + "rxjs": "6.6.3" + }, + "dependencies": { + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@angular/language-service": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-10.0.14.tgz", - "integrity": "sha512-QQLYUjD0T6u2hLNYXUEUbupAGsz5egmhCAckaQojvXCe3SLL/hQsrK4odrNuspy7TvMB0H5ZNEHGlF6m/WLZ3g==", - "dev": true - }, - "@angular/platform-browser": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-10.0.14.tgz", - "integrity": "sha512-DcBZ1wt2TwtXrdcmCTWanAzu2Vxk5Uvioam0UcDxcgXD84T2fHipyfZVn07fMqRvzFQj45tDNAEevFBnGZar4w==", + "@angular-devkit/core": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.6.tgz", + "integrity": "sha512-3dA0Z6sIIxCDjZS/DucgmIKti7EZ/LgHoHgCO72Q50H5ZXbUSNBz5wGl5hVq2+gzrnFgU/0u40MIs6eptk30ZA==", + "dev": true, "requires": { - "tslib": "^2.0.0" + "ajv": "6.12.6", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.3", + "source-map": "0.7.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@angular/platform-browser-dynamic": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.14.tgz", - "integrity": "sha512-PPCAiNh/JSuQNKXOhj3a8CTFdVhTgF/EpGtaotnVr/BfbJMeFImKo7m2QQOTsAFaEP2DurSHnofPnMWAfHS2mg==", + "@angular-devkit/schematics": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.5.tgz", + "integrity": "sha512-7RoWgpMvhljPhW9CMz1EtqkwNnGpnsPyy0N29ClHPUq+o8wLR0hvbLBDz1fKSF7j1AwRccaQSNTj8KWsjzQJLQ==", + "dev": true, "requires": { - "tslib": "^2.0.0" + "@angular-devkit/core": "11.2.5", + "ora": "5.3.0", + "rxjs": "6.6.3" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.5.tgz", + "integrity": "sha512-DRFvEHRKoC+hTwcOAJqLe6UQa+bpXc/1IGCMHWEbuply0KIFIGQOlmaYwFZKixz3HdFZlmoCMcAVkAXvyaWVsQ==", + "dev": true, + "requires": { + "ajv": "6.12.6", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.3", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@angular/platform-server": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-10.0.14.tgz", - "integrity": "sha512-va0FvOHluT3NmGmXpGTM8GPK87tP7cNsT3eHf5v3MDneElNo6bW9WBPVcXUS1fXpPrJ+PhgTMtdxahsSX7tkxw==", + "@angular-eslint/builder": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-2.0.2.tgz", + "integrity": "sha512-bs5ITrQNEaVD+oonrpJN17VSqZ1+094NIsvfkaQ4wQb22sc7BkDAMB2lcfhXgyH1mN+0bw1SP7DYuHSo3+r4Jw==", + "dev": true + }, + "@angular-eslint/eslint-plugin": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-2.0.2.tgz", + "integrity": "sha512-/hJNXUjPEXwsmXeWneAW7X3Jg+JwsMavQ8eQ4UevcaKx4Ozthh09n6oyegqc82Y48Adcce7KyalGCKmWY19piA==", + "dev": true, "requires": { - "domino": "^2.1.2", - "tslib": "^2.0.0", - "xhr2": "^0.2.0" + "@typescript-eslint/experimental-utils": "4.16.1" } }, - "@angular/router": { - "version": "10.0.14", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-10.0.14.tgz", - "integrity": "sha512-VWzaNyPZDY99TMszV1GlXJgVOxXsjhJrsv3mIcjaz1dfdlKOeKTVDLdnyXfP9CkwE3PRmvG7eSXppIj6nn9BpQ==", + "@angular-eslint/eslint-plugin-template": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-2.0.2.tgz", + "integrity": "sha512-STk9bTVSJwX8ctHFNx7G+HanbMfpeX5B3hmaUQ7qloM+JPihk+b7BmXT8BjOnXOT+yN8r3NHF9agekyAiYGRkg==", + "dev": true, "requires": { - "tslib": "^2.0.0" + "@typescript-eslint/experimental-utils": "4.16.1", + "aria-query": "^4.2.2", + "axobject-query": "^2.2.0" } }, - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "@angular-eslint/schematics": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-2.0.2.tgz", + "integrity": "sha512-nYXkkbY/vhwD5jHzd4GpGGpsKh4Llz/iOy62jcNNojfKFX2s0E9AQDGb80vBHZoRBfGiAbM6wve/YiwMHsrWfw==", "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "@angular-eslint/eslint-plugin": "2.0.2", + "@angular-eslint/eslint-plugin-template": "2.0.2", + "strip-json-comments": "3.1.1", + "tslint-to-eslint-config": "2.2.0" } }, - "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", + "@angular-eslint/template-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-2.0.2.tgz", + "integrity": "sha512-oMXNAokWWnJF/Jp4fJwm5F/tv+9sShc5yio5cELHFCsn8l1wetTmHMe9xqbwS7aFosJ7BnGj6aSq3WpckWzXTg==", "dev": true, "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" + "eslint-scope": "^5.1.0" }, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "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" + } } } }, - "@babel/core": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", - "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", + "@angular/animations": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.2.6.tgz", + "integrity": "sha512-fci034QakkoIrFeY/uOmDvf6AupZ7ziU1FlBMs/wn4HOqwsPCofpawvFQnfj5nez1+KM5JOJ1VHmZKJupkWfgw==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/cli": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.2.5.tgz", + "integrity": "sha512-GIwK8l6wtg/++8aDYW++LSf7v1uqDtB6so2rPjNlOm7oYk5iqM73KaorQb/1A52oxWE3IRSJLNQaSyUlWvHvSA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.6", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.6", - "@babel/parser": "^7.9.6", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.6", - "@babel/types": "^7.9.6", + "@angular-devkit/architect": "0.1102.5", + "@angular-devkit/core": "11.2.5", + "@angular-devkit/schematics": "11.2.5", + "@schematics/angular": "11.2.5", + "@schematics/update": "0.1102.5", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.3.1", + "ini": "2.0.0", + "inquirer": "7.3.3", + "jsonc-parser": "3.0.0", + "npm-package-arg": "8.1.0", + "npm-pick-manifest": "6.1.0", + "open": "7.4.0", + "ora": "5.3.0", + "pacote": "11.2.4", + "resolve": "1.19.0", + "rimraf": "3.0.2", + "semver": "7.3.4", + "symbol-observable": "3.0.0", + "universal-analytics": "0.4.23", + "uuid": "8.3.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1102.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.5.tgz", + "integrity": "sha512-lVc6NmEAZZPzvc18GzMFLoxqKKvPlNOg4vEtFsFldZmrydLJJGFi4KAs2WaJd8qVR1XuY4el841cjDQAJSq6sQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "11.2.5", + "rxjs": "6.6.3" + } + }, + "@angular-devkit/core": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.5.tgz", + "integrity": "sha512-DRFvEHRKoC+hTwcOAJqLe6UQa+bpXc/1IGCMHWEbuply0KIFIGQOlmaYwFZKixz3HdFZlmoCMcAVkAXvyaWVsQ==", + "dev": true, + "requires": { + "ajv": "6.12.6", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.3", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "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 + }, + "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" + } + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "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" + } + }, + "open": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", + "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.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" + } + }, + "symbol-observable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-3.0.0.tgz", + "integrity": "sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "@angular/common": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.2.6.tgz", + "integrity": "sha512-q1yR6bktd5p987gLEKiFY4CrHcmBxks9R6GcdgzGneQsucDtGESzEKdcJ0uaMXE+9teS+fQy5GvXel6DlA/J+w==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/compiler": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.2.6.tgz", + "integrity": "sha512-3ijsCxnCLU1V1hy4UMf9qtMz5LR+wCdVFDqktEQccN9YEkN0cNtOc8Nu9EV9/mc2tqd1Q4xSBpb2o2mvpy7AhQ==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/compiler-cli": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.2.6.tgz", + "integrity": "sha512-1OC8UkySaLzaw3aSrm8A6SA88CxQAdA4ffaOhBLE/Ee6CxpneVxn3ORlnccqnS8zWyEpschbootPJV56U3Azeg==", + "dev": true, + "requires": { + "@babel/core": "^7.8.6", + "@babel/types": "^7.8.6", + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "fs-extra": "4.0.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^6.3.0", + "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.0.0", + "yargs": "^16.1.1" + }, + "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" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.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 + }, + "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 + }, + "fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "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" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true + } + } + }, + "@angular/core": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.2.6.tgz", + "integrity": "sha512-lS5JOQ/Y9gbk5WiMnCp5Zyz2pRIoZ+IWLOXHU5rkQeXy0zE3eMJhw0FfpEK+X5CeSNl2EPVSPLT0MtDtbNPodg==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/forms": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.2.6.tgz", + "integrity": "sha512-0xxayXCNc8lPQhDj5q/hAcG55cmDXPSBn2cxX4V+uDSGwKU1+h2CQID6gJdBJBh5wOaeMe6h8dK2s1pRgok66A==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/language-service": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-11.2.6.tgz", + "integrity": "sha512-jzIutEzUbfBZxLWftpi5oXusL3rwbe2P/6HnNd8NUeBos9+G859R7hCsstAQ61XPn41a2/Fbl+YOwYhdjoBQrw==", + "dev": true + }, + "@angular/platform-browser": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.2.6.tgz", + "integrity": "sha512-xnYpfoqWyQOUngfbHefsZMyelCSAaxpopu/WYP0gpbYh9qJiVhsN9s6zRMqOIPueq9lmvlEuGBMgaJjeD6Ei7Q==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.6.tgz", + "integrity": "sha512-B56b8yPW3vAmPe4VONiBYEMZ6B1i5CUkJvit8qWWK3y7t5XrYOihIiGC0UqEDaw/uAg72GXjixspcxZWan5e9w==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/platform-server": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-11.2.6.tgz", + "integrity": "sha512-xf90Wb2QMs+WoRONUakUdhP2pmY6xqaf/9Q+mzDex/gkMAAlIWE3IH4xQKBxMCgW+5F1hqPJHyKjq5zBzRBYhQ==", + "requires": { + "domino": "^2.1.2", + "tslib": "^2.0.0", + "xhr2": "^0.2.0" + } + }, + "@angular/router": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.2.6.tgz", + "integrity": "sha512-n/3Sp36slXzRXUcUO9nVs3CkgFxa6U9A8GENeyxq9XQtcE912jOP4dzjDi3hlaNKbX9ijOyEh505KpqmiSYATg==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@apollo/client": { + "version": "3.3.13", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.3.13.tgz", + "integrity": "sha512-usiVmXiOq0J/GpyIOIhlF8ItHpiPJObC7zoxLYPoOYj3G3OB0hCIcUKs3aTJ3ATW7u8QxvYgRaJg72NN7E1WOg==", + "requires": { + "@graphql-typed-document-node/core": "^3.0.0", + "@types/zen-observable": "^0.8.0", + "@wry/context": "^0.6.0", + "@wry/equality": "^0.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graphql-tag": "^2.12.0", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.15.0", + "prop-types": "^15.7.2", + "symbol-observable": "^2.0.0", + "ts-invariant": "^0.7.0", + "tslib": "^1.10.0", + "zen-observable": "^0.8.14" + }, + "dependencies": { + "@wry/context": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.0.tgz", + "integrity": "sha512-sAgendOXR8dM7stJw3FusRxFHF/ZinU0lffsA2YTyyIOfic86JX02qlPqPVqJNZJPAxFt+2EE8bvq6ZlS0Kf+Q==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "@wry/equality": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.4.0.tgz", + "integrity": "sha512-DxN/uawWfhRbgYE55zVCPOoe+jvsQ4m7PT1Wlxjyb/LCCLuU1UsucV2BbCxFAX8bjcSueFBbB5Qfj1Zfe8e7Fw==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "graphql-tag": { + "version": "2.12.3", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.3.tgz", + "integrity": "sha512-5wJMjSvj30yzdciEuk9dPuUBUR56AqDi3xncoYQl1i42pGdSqOJrJsdb/rz5BDoy+qoGvQwABcBeF0xXY3TrKw==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "optimism": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.15.0.tgz", + "integrity": "sha512-KLKl3Kb7hH++s9ewRcBhmfpXgXF0xQ+JZ3xQFuPjnoT6ib2TDmYyVkKENmGxivsN2G3VRxpXuauCkB4GYOhtPw==", + "requires": { + "@wry/context": "^0.6.0", + "@wry/trie": "^0.3.0" + } + }, + "symbol-observable": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==" + }, + "ts-invariant": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.7.3.tgz", + "integrity": "sha512-UWDDeovyUTIMWj+45g5nhnl+8oo+GhxL5leTaHn5c8FkQWfh8v66gccLd2/YzVmV5hoQUjCEjhrXnQqVDJdvKA==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", + "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "dev": true + }, + "@babel/core": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", + "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.6", + "@babel/parser": "^7.9.6", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -640,74 +1261,291 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.13" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", + "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "@babel/compat-data": "^7.13.8", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "@babel/helper-create-class-features-plugin": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", + "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", - "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.13.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-function-name": { @@ -722,36 +1560,167 @@ }, "dependencies": { "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", + "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "dev": true, + "requires": { + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - } - }, "@babel/helper-member-expression-to-functions": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", @@ -808,41 +1777,37 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", "dev": true }, - "@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, "@babel/helper-remap-async-to-generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", - "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" }, "dependencies": { - "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" } } } @@ -883,12 +1848,31 @@ } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.1" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-split-export-declaration": { @@ -906,28 +1890,151 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true + }, "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" } + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -964,6 +2071,19 @@ "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "@babel/parser": { @@ -973,96 +2093,138 @@ "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", + "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", + "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -1074,6 +2236,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -1083,6 +2254,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", @@ -1092,6 +2272,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -1138,274 +2327,1509 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" + "@babel/helper-remap-async-to-generator": "^7.12.1" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", + "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", + "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", + "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", + "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", + "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/generator": { + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.0", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-runtime": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz", - "integrity": "sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w==", + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz", + "integrity": "sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "resolve": "^1.8.1", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", "semver": "^5.5.1" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -1415,131 +3839,170 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/preset-env": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.6.tgz", - "integrity": "sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.6", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", + "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.7", + "@babel/helper-compilation-targets": "^7.12.5", + "@babel/helper-module-imports": "^7.12.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-option": "^7.12.11", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.5", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.9.5", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.6", - "@babel/plugin-transform-modules-commonjs": "^7.9.6", - "@babel/plugin-transform-modules-systemjs": "^7.9.6", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.9.5", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.11", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.7", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.10", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.6", - "browserslist": "^4.11.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", + "@babel/types": "^7.12.11", + "core-js-compat": "^3.8.0", "semver": "^5.5.0" }, "dependencies": { + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -1562,18 +4025,18 @@ } }, "@babel/runtime": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", - "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", + "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz", - "integrity": "sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz", + "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==", "dev": true, "requires": { "core-js-pure": "^3.0.0", @@ -1638,10 +4101,16 @@ "to-fast-properties": "^2.0.0" } }, + "@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true + }, "@eslint/eslintrc": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", - "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -1651,7 +4120,6 @@ "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" }, @@ -1707,70 +4175,39 @@ } } }, + "@graphql-typed-document-node/core": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.0.tgz", + "integrity": "sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg==" + }, "@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", - "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, "@jsdevtools/coverage-istanbul-loader": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.3.tgz", - "integrity": "sha512-TAdNkeGB5Fe4Og+ZkAr1Kvn9by2sfL44IAHFtxlh1BA1XJ5cLpO9iSNki5opWESv3l3vSHsZ9BNKuqFKbEbFaA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz", + "integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==", "dev": true, "requires": { "convert-source-map": "^1.7.0", - "istanbul-lib-instrument": "^4.0.1", - "loader-utils": "^1.4.0", + "istanbul-lib-instrument": "^4.0.3", + "loader-utils": "^2.0.0", "merge-source-map": "^1.1.0", - "schema-utils": "^2.6.4" - }, - "dependencies": { - "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" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } + "schema-utils": "^2.7.0" } }, "@ngtools/webpack": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.0.8.tgz", - "integrity": "sha512-Qv4v7O4VGeWuXjRThd/mdC2I4cJOgQ7kDrVN7vkDB2EW5xtRB+/4hghvFeO3bD11FLuFvCxBMb0HbwyKoVQgEQ==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.2.6.tgz", + "integrity": "sha512-bT7r+Sjp6C/2iizJKJ8pFMma+OlfY7KZvxlWDZBNQuXRnnCdrkD0P3vXkQCVpM2aLiFueSxwBNjh64cjcnQkHw==", "dev": true, "requires": { - "@angular-devkit/core": "10.0.8", - "enhanced-resolve": "4.1.1", - "rxjs": "6.5.5", - "webpack-sources": "1.4.3" - }, - "dependencies": { - "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - } + "@angular-devkit/core": "11.2.6", + "enhanced-resolve": "5.7.0", + "webpack-sources": "2.2.0" } }, "@ngx-meta/core": { @@ -1779,33 +4216,19 @@ "integrity": "sha512-WL/HyKM+4gJPS3TNTO0M+46LlIvGTSyofL//8hxoozAyRPsiMyR0xrwUvPBJkVqFyD6j0iI5FaNcQ9d0JCVJhg==" }, "@ngx-translate/core": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-11.0.1.tgz", - "integrity": "sha512-nBCa1ZD9fAUY/3eskP3Lql2fNg8OMrYIej1/5GRsfcutx9tG/5fZLCv9m6UCw1aS+u4uK/vXjv1ctG/FdMvaWg==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-13.0.0.tgz", + "integrity": "sha512-+tzEp8wlqEnw0Gc7jtVRAJ6RteUjXw6JJR4O65KlnxOmJrCGPI0xjV/lKRnQeU0w4i96PQs/jtpL921Wrb7PWg==", "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "tslib": "^2.0.0" } }, "@ngx-translate/http-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-4.0.0.tgz", - "integrity": "sha512-x8LumqydWD7eX9yQTAVeoCM9gFUIGVTUjZqbxdAUavAA3qVnk9wCQux7iHLPXpydl8vyQmLoPQR+fFU+DUDOMA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-6.0.0.tgz", + "integrity": "sha512-LCekn6qCbeXWlhESCxU1rAbZz33WzDG0lI7Ig0pYC1o5YxJWrkU9y3Y4tNi+jakQ7R6YhTR2D3ox6APxDtA0wA==", "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "tslib": "^2.0.0" } }, "@nodelib/fs.scandir": { @@ -1834,6 +4257,75 @@ "fastq": "^1.6.0" } }, + "@npmcli/ci-detect": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz", + "integrity": "sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q==", + "dev": true + }, + "@npmcli/git": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.6.tgz", + "integrity": "sha512-a1MnTfeRPBaKbFY07fd+6HugY1WAkKJzdiJvlRub/9o5xz2F/JtPacZZapx5zRJUQFIzSL677vmTSxEcDMrDbg==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.1.0", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.3", + "npm-pick-manifest": "^6.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.2", + "unique-filename": "^1.1.1", + "which": "^2.0.2" + }, + "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" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "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" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, "@npmcli/move-file": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", @@ -1851,33 +4343,205 @@ } } }, + "@npmcli/node-gyp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz", + "integrity": "sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.4.tgz", + "integrity": "sha512-Yd9HXTtF1JGDXZw0+SOn+mWLYS0e7bHBHVC/2C8yqs4wUrs/k8rwBSinD7rfk+3WG/MFGRZKxjyoD34Pch2E/A==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "infer-owner": "^1.0.4", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + }, + "dependencies": { + "read-package-json-fast": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz", + "integrity": "sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + } + } + }, "@schematics/angular": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-10.0.8.tgz", - "integrity": "sha512-KNO61UGtiKMQSG+NbusqLtwLbxId0y+xpXJt9PKFwi+vaViOO+YzOPREfiFCuQ7q6X8SmNlrMj6sZ34E2YN1pQ==", + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.2.5.tgz", + "integrity": "sha512-pjaK0gZyqhzgAVxMKElG6cDpAvNZ3adVCTA8dhEixpH+JaQdoczl59hMn7rH75yQW0PApe+8g7HMwVK6bLRmxQ==", "dev": true, "requires": { - "@angular-devkit/core": "10.0.8", - "@angular-devkit/schematics": "10.0.8" + "@angular-devkit/core": "11.2.5", + "@angular-devkit/schematics": "11.2.5", + "jsonc-parser": "3.0.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.5.tgz", + "integrity": "sha512-DRFvEHRKoC+hTwcOAJqLe6UQa+bpXc/1IGCMHWEbuply0KIFIGQOlmaYwFZKixz3HdFZlmoCMcAVkAXvyaWVsQ==", + "dev": true, + "requires": { + "ajv": "6.12.6", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.3", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@schematics/update": { - "version": "0.1000.8", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1000.8.tgz", - "integrity": "sha512-xHuj6ME3PNTsVUrpftd98LF3WHPM0NU25GcT/n0E/j0/52yDTiaPS3wUnYSK8ZSv4Et4hcyGx7f/LEXAoOKJXw==", + "version": "0.1102.5", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1102.5.tgz", + "integrity": "sha512-iz9pM8mabieqQnPZjrqP5jfRFvPm81/uIg46kY3KjtDtSBi4GAF2dnFyX1dC2mG1rq+e+8zeQLvOvhdLifYlEA==", "dev": true, "requires": { - "@angular-devkit/core": "10.0.8", - "@angular-devkit/schematics": "10.0.8", + "@angular-devkit/core": "11.2.5", + "@angular-devkit/schematics": "11.2.5", "@yarnpkg/lockfile": "1.1.0", - "ini": "1.3.5", + "ini": "2.0.0", "npm-package-arg": "^8.0.0", - "pacote": "9.5.12", - "rxjs": "6.5.5", - "semver": "7.3.2", + "pacote": "11.2.4", + "semver": "7.3.4", "semver-intersect": "1.4.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.5.tgz", + "integrity": "sha512-DRFvEHRKoC+hTwcOAJqLe6UQa+bpXc/1IGCMHWEbuply0KIFIGQOlmaYwFZKixz3HdFZlmoCMcAVkAXvyaWVsQ==", + "dev": true, + "requires": { + "ajv": "6.12.6", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.3", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "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" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.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" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "dev": true + }, + "@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", + "dev": true + }, + "@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", + "dev": true + }, "@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", @@ -1889,9 +4553,9 @@ } }, "@types/jasmine": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.4.6.tgz", - "integrity": "sha512-hpQHs+lmZ0uuCrGyqypdI1Ho7jRFolOBT6OkNdZPFziLSSEKvWu+VxWU6bGdNEA/hoV4jV8pdDeNx8EWlmfNAw==", + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.7.tgz", + "integrity": "sha512-8dtfiykrpe4Ysn6ONj0tOjmpDIh1vWxPk80eutSeWmyaJvAZXZ84219fS4gLrvz05eidhp7BP17WVQBaXHSyXQ==", "dev": true }, "@types/jasminewd2": { @@ -1904,9 +4568,9 @@ } }, "@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==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/json5": { @@ -1921,12 +4585,30 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "dev": true }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, "@types/node": { "version": "12.7.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz", "integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==", "dev": true }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, "@types/q": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", @@ -1970,47 +4652,98 @@ "integrity": "sha512-wmk0xQI6Yy7Fs/il4EpOcflG4uonUpYGqvZARESLc2oy4u69fkatFLbJOeW4Q6awO15P4rduAe6xkwHevpXcUQ==" }, "@typescript-eslint/eslint-plugin": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.3.0.tgz", - "integrity": "sha512-RqEcaHuEKnn3oPFislZ6TNzsBLqpZjN93G69SS+laav/I8w/iGMuMq97P0D2/2/kW4SCebHggqhbcCfbDaaX+g==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.19.0.tgz", + "integrity": "sha512-CRQNQ0mC2Pa7VLwKFbrGVTArfdVDdefS+gTw0oC98vSI98IX5A8EVH4BzJ2FOB0YlCmm8Im36Elad/Jgtvveaw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.3.0", - "@typescript-eslint/scope-manager": "4.3.0", + "@typescript-eslint/experimental-utils": "4.19.0", + "@typescript-eslint/scope-manager": "4.19.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.15", "regexpp": "^3.0.0", "semver": "^7.3.2", "tsutils": "^3.17.1" }, "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "@typescript-eslint/experimental-utils": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.19.0.tgz", + "integrity": "sha512-9/23F1nnyzbHKuoTqFN1iXwN3bvOm/PRIXSBR3qFAYotK/0LveEOHr5JT1WZSzcD6BESl8kPOG3OoDRKO84bHA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.19.0", + "@typescript-eslint/types": "4.19.0", + "@typescript-eslint/typescript-estree": "4.19.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.19.0.tgz", + "integrity": "sha512-GGy4Ba/hLXwJXygkXqMzduqOMc+Na6LrJTZXJWVhRrSuZeXmu8TAnniQVKgj8uTRKe4igO2ysYzH+Np879G75g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.19.0", + "@typescript-eslint/visitor-keys": "4.19.0" + } + }, + "@typescript-eslint/types": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.19.0.tgz", + "integrity": "sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA==", "dev": true }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "@typescript-eslint/typescript-estree": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.19.0.tgz", + "integrity": "sha512-3xqArJ/A62smaQYRv2ZFyTA+XxGGWmlDYrsfZG68zJeNbeqRScnhf81rUVa6QG4UgzHnXw5VnMT5cg75dQGDkA==", "dev": true, "requires": { - "tslib": "^1.8.1" + "@typescript-eslint/types": "4.19.0", + "@typescript-eslint/visitor-keys": "4.19.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.19.0.tgz", + "integrity": "sha512-aGPS6kz//j7XLSlgpzU2SeTqHPsmRYxFztj2vPuMMFJXZudpRSehE3WCV+BaxwZFvfAqMoSd86TEuM0PQ59E/A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.19.0", + "eslint-visitor-keys": "^2.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" } } } }, "@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==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.16.1.tgz", + "integrity": "sha512-0Hm3LSlMYFK17jO4iY3un1Ve9x1zLNn4EM50Lia+0EV99NdbK+cn0er7HC7IvBA23mBg3P+8dUkMXy4leL33UQ==", "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", + "@typescript-eslint/scope-manager": "4.16.1", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/typescript-estree": "4.16.1", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" }, @@ -2028,73 +4761,98 @@ } }, "@typescript-eslint/parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.3.0.tgz", - "integrity": "sha512-JyfRnd72qRuUwItDZ00JNowsSlpQGeKfl9jxwO0FHK1qQ7FbYdoy5S7P+5wh1ISkT2QyAvr2pc9dAemDxzt75g==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.19.0.tgz", + "integrity": "sha512-/uabZjo2ZZhm66rdAu21HA8nQebl3lAIDcybUoOxoI7VbZBYavLIwtOOmykKCJy+Xq6Vw6ugkiwn8Js7D6wieA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.3.0", - "@typescript-eslint/types": "4.3.0", - "@typescript-eslint/typescript-estree": "4.3.0", + "@typescript-eslint/scope-manager": "4.19.0", + "@typescript-eslint/types": "4.19.0", + "@typescript-eslint/typescript-estree": "4.19.0", "debug": "^4.1.1" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.19.0.tgz", + "integrity": "sha512-GGy4Ba/hLXwJXygkXqMzduqOMc+Na6LrJTZXJWVhRrSuZeXmu8TAnniQVKgj8uTRKe4igO2ysYzH+Np879G75g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.19.0", + "@typescript-eslint/visitor-keys": "4.19.0" + } + }, + "@typescript-eslint/types": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.19.0.tgz", + "integrity": "sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.19.0.tgz", + "integrity": "sha512-3xqArJ/A62smaQYRv2ZFyTA+XxGGWmlDYrsfZG68zJeNbeqRScnhf81rUVa6QG4UgzHnXw5VnMT5cg75dQGDkA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.19.0", + "@typescript-eslint/visitor-keys": "4.19.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.19.0.tgz", + "integrity": "sha512-aGPS6kz//j7XLSlgpzU2SeTqHPsmRYxFztj2vPuMMFJXZudpRSehE3WCV+BaxwZFvfAqMoSd86TEuM0PQ59E/A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.19.0", + "eslint-visitor-keys": "^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==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.16.1.tgz", + "integrity": "sha512-6IlZv9JaurqV0jkEg923cV49aAn8V6+1H1DRfhRcvZUrptQ+UtSKHb5kwTayzOYTJJ/RsYZdcvhOEKiBLyc0Cw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.3.0", - "@typescript-eslint/visitor-keys": "4.3.0" + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1" } }, "@typescript-eslint/types": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.3.0.tgz", - "integrity": "sha512-Cx9TpRvlRjOppGsU6Y6KcJnUDOelja2NNCX6AZwtVHRzaJkdytJWMuYiqi8mS35MRNA3cJSwDzXePfmhU6TANw==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.16.1.tgz", + "integrity": "sha512-nnKqBwMgRlhzmJQF8tnFDZWfunXmJyuXj55xc8Kbfup4PbkzdoDXZvzN8//EiKR27J6vUSU8j4t37yUuYPiLqA==", "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==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.16.1.tgz", + "integrity": "sha512-m8I/DKHa8YbeHt31T+UGd/l8Kwr0XCTCZL3H4HMvvLCT7HU9V7yYdinTOv1gf/zfqNeDcCgaFH2BMsS8x6NvJg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.3.0", - "@typescript-eslint/visitor-keys": "4.3.0", + "@typescript-eslint/types": "4.16.1", + "@typescript-eslint/visitor-keys": "4.16.1", "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": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "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" - } - } } }, "@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==", + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.16.1.tgz", + "integrity": "sha512-s/aIP1XcMkEqCNcPQtl60ogUYjSM8FU2mq1O7y5cFf3Xcob1z1iXWNB6cC43Op+NGRTFgGolri6s8z/efA9i1w==", "dev": true, "requires": { - "@typescript-eslint/types": "4.3.0", + "@typescript-eslint/types": "4.16.1", "eslint-visitor-keys": "^2.0.0" } }, @@ -2273,40 +5031,12 @@ "@xtuc/long": "4.2.2" } }, - "@wry/context": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", - "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", - "requires": { - "@types/node": ">=6", - "tslib": "^1.9.3" - }, - "dependencies": { - "@types/node": { - "version": "14.11.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.8.tgz", - "integrity": "sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw==" - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@wry/equality": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", - "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", + "@wry/trie": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.0.tgz", + "integrity": "sha512-Yw1akIogPhAT6XPYsRHlZZIS0tIGmAl9EYXHi2scf7LPKKqdqmow/Hu4kEqP2cJR3EjaU/9L0ZlAjFf3hFxmug==", "requires": { - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "tslib": "^2.1.0" } }, "@xtuc/ieee754": { @@ -2327,22 +5057,18 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -2366,50 +5092,13 @@ "dev": true }, "adjust-sourcemap-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", - "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", + "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", "dev": true, "requires": { - "assert": "1.4.1", - "camelcase": "5.0.0", - "loader-utils": "1.2.3", - "object-path": "0.11.4", - "regex-parser": "2.2.10" - }, - "dependencies": { - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "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" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - } + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" } }, "adm-zip": { @@ -2418,12 +5107,6 @@ "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", "dev": true }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, "agent-base": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", @@ -2434,11 +5117,13 @@ } }, "agentkeepalive": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", - "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", + "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", "dev": true, "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", "humanize-ms": "^1.2.1" } }, @@ -2483,251 +5168,83 @@ "dev": true }, "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "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-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" - } - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "apollo-angular": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/apollo-angular/-/apollo-angular-1.10.0.tgz", - "integrity": "sha512-VPSNk8Li5KRDhZ3GSJPEYg1r57KySND2m1XWgkLNYmQExzNDs/Su9EeWThwOqjZ7x9JbGjpvWiQeUQaCs96PjA==", - "requires": { - "semver": "^7.0.0", - "tslib": "^2.0.0" - } - }, - "apollo-angular-link-http-batch": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/apollo-angular-link-http-batch/-/apollo-angular-link-http-batch-1.9.0.tgz", - "integrity": "sha512-7BvSlIV2qhKf7cSHtnnsaeFBeJpGh0ZqNXmw7dXAnl+Sq8qtf7FF2KiZhhcDCU+kDl8lOue+VSRHn9JRdBsijQ==", - "requires": { - "apollo-angular-link-http-common": "~1.10.0", - "apollo-link": "^1.0.0", - "apollo-link-batch": "^1.1.2", - "tslib": "^2.0.0" - } - }, - "apollo-angular-link-http-common": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/apollo-angular-link-http-common/-/apollo-angular-link-http-common-1.10.0.tgz", - "integrity": "sha512-Oue8b/naWZvG/oQ+3ZAqaBVreBIwqy16yOk5CpoE7+Gjhett9KGVu/OZcpH89/ifwXyWzHpKnCUnB1fxgbnR7Q==", - "requires": { - "tslib": "^2.0.0" - } - }, - "apollo-angular-link-persisted": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/apollo-angular-link-persisted/-/apollo-angular-link-persisted-1.1.0.tgz", - "integrity": "sha512-5QfpftkHjHxwKpTbr9oj5weWdLHoGHa5NXDxP6QCmvXsQ8SekKzqQv6sV7F/Lk9+3lNHAxKMl38cedIl1dzl3A==", - "requires": { - "apollo-link-context": "^1.0.7", - "apollo-link-persisted-queries": "~0.2.0", - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-cache": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", - "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", - "requires": { - "apollo-utilities": "^1.3.4", - "tslib": "^1.10.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-cache-inmemory": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", - "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", - "requires": { - "apollo-cache": "^1.3.5", - "apollo-utilities": "^1.3.4", - "optimism": "^0.10.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-client": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", - "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", - "requires": { - "@types/zen-observable": "^0.8.0", - "apollo-cache": "1.3.5", - "apollo-link": "^1.0.0", - "apollo-utilities": "1.3.4", - "symbol-observable": "^1.0.2", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0", - "zen-observable": "^0.8.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-link": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", - "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", - "requires": { - "apollo-utilities": "^1.3.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3", - "zen-observable-ts": "^0.8.21" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "apollo-link-batch": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/apollo-link-batch/-/apollo-link-batch-1.1.15.tgz", - "integrity": "sha512-XbfQI/FNxJW9RSgJTfAl7RDFxxN77425yDtT7YgsImH4/2NQ+U4SWN6thWE3ZU1Wf7ktXd+XFa3KkenBRTybOQ==", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, "requires": { - "apollo-link": "^1.2.14", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "type-fest": "^0.11.0" } }, - "apollo-link-context": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.20.tgz", - "integrity": "sha512-MLLPYvhzNb8AglNsk2NcL9AvhO/Vc9hn2ZZuegbhRHGet3oGr0YH9s30NS9+ieoM0sGT11p7oZ6oAILM/kiRBA==", + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { - "apollo-link": "^1.2.14", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "color-convert": "^1.9.0" } }, - "apollo-link-persisted-queries": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/apollo-link-persisted-queries/-/apollo-link-persisted-queries-0.2.2.tgz", - "integrity": "sha512-YL7XBu/5QsSbbYaWUXgm87T2Hn/2AQZk5Wr8CLXGDr3Wl3E/TRhBhKgQQTly9xhaTi7jgBO+AeIyTH5wCBHA9w==", + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, "requires": { - "apollo-link": "^1.2.1", - "hash.js": "^1.1.3" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "apollo-utilities": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", - "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", + "apollo-angular": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/apollo-angular/-/apollo-angular-2.4.0.tgz", + "integrity": "sha512-pgxd+3el59T/KAwkNzHTLxlwh+aHBQqtJqnAk91DBiBP6LILlTC1VwOkBhJ4KjYcdsDAgA0Usq4sezyAwxbnLw==", "requires": { - "@wry/equality": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "extract-files": "^9.0.0", + "semver": "^7.0.0", + "tslib": "^2.0.0" } }, "app-root-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", - "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", "dev": true }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", - "dev": true, - "requires": { - "default-require-extensions": "^2.0.0" - } - }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -2744,13 +5261,13 @@ } }, "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", "dev": true, "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" } }, "arity-n": { @@ -2777,6 +5294,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -2825,24 +5348,12 @@ "es-abstract": "^1.18.0-next.1" } }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", - "dev": true - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -2865,20 +5376,38 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } } }, "assert-plus": { @@ -2932,6 +5461,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -2939,17 +5474,16 @@ "dev": true }, "autoprefixer": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", - "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.4.tgz", + "integrity": "sha512-DCCdUQiMD+P/as8m3XkeTUkUKuuRqLGcwD0nll7wevhqoJfMRpJlkFd1+MQh1pvupjiQuip42lc/VFvfUTMSKw==", "dev": true, "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001061", - "chalk": "^2.4.2", + "browserslist": "^4.16.1", + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "fraction.js": "^4.0.13", "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.30", "postcss-value-parser": "^4.1.0" } }, @@ -2972,29 +5506,17 @@ "dev": true }, "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", "dev": true, "requires": { - "find-cache-dir": "^2.1.0", + "find-cache-dir": "^3.3.1", "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", + "make-dir": "^3.1.0", "schema-utils": "^2.6.5" }, "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -3014,6 +5536,21 @@ "emojis-list": "^3.0.0", "json5": "^1.0.1" } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -3026,12 +5563,6 @@ "object.assign": "^4.1.0" } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -3126,15 +5657,6 @@ "tweetnacl": "^0.14.3" } }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -3147,11 +5669,49 @@ "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", - "dev": true + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } }, "blocking-proxy": { "version": "1.0.1", @@ -3169,9 +5729,9 @@ "dev": true }, "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "dev": true }, "body-parser": { @@ -3312,21 +5872,13 @@ } }, "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } } }, "browserify-sign": { @@ -3375,15 +5927,16 @@ } }, "browserslist": { - "version": "4.14.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", - "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001135", - "electron-to-chromium": "^1.3.571", - "escalade": "^3.1.0", - "node-releases": "^1.1.61" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "browserstack": { @@ -3449,22 +6002,22 @@ "dev": true }, "cacache": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.3.tgz", - "integrity": "sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", "dev": true, "requires": { + "@npmcli/move-file": "^1.0.1", "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "glob": "^7.1.4", "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", + "lru-cache": "^6.0.0", "minipass": "^3.1.1", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.2", "mkdirp": "^1.0.3", - "move-file": "^2.0.0", "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", @@ -3526,12 +6079,6 @@ "caller-callsite": "^2.0.0" } }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", @@ -3544,6 +6091,17 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -3557,9 +6115,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001148", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001148.tgz", - "integrity": "sha512-E66qcd0KMKZHNJQt9hiLZGE3J4zuTqE1OnU53miEVtylFbwOEmeA5OsRu90noZful+XGSQOni1aT2tiqu/9yYw==", + "version": "1.0.30001204", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz", + "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==", "dev": true }, "canonical-path": { @@ -3575,14 +6133,54 @@ "dev": true }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.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 + }, + "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 + }, + "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" + } + } } }, "chardet": { @@ -3641,9 +6239,9 @@ } }, "circular-dependency-plugin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", - "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", "dev": true }, "class-utils": { @@ -3691,9 +6289,9 @@ "dev": true }, "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "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": { @@ -3724,12 +6322,6 @@ } } }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -3750,6 +6342,19 @@ "@types/q": "^1.5.1", "chalk": "^2.4.1", "q": "^1.1.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "code-point-at": { @@ -3759,22 +6364,58 @@ "dev": true }, "codelyzer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.1.2.tgz", - "integrity": "sha512-1z7mtpwxcz5uUqq0HLO0ifj/tz2dWEmeaK+8c5TEZXAwwVxrjjg0118ODCOCCOcpfYaaEHxStNCaWVYo9FUPXw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.1.tgz", + "integrity": "sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g==", "dev": true, "requires": { - "app-root-path": "^2.2.1", + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", "aria-query": "^3.0.0", - "axobject-query": "^2.0.2", + "axobject-query": "2.0.2", "css-selector-tokenizer": "^0.7.1", "cssauron": "^1.4.0", "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", "semver-dsl": "^1.0.1", "source-map": "^0.5.7", - "sprintf-js": "^1.1.2" + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" }, "dependencies": { + "@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", + "dev": true + }, + "@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", + "dev": true + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -3786,6 +6427,18 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", + "dev": true } } }, @@ -3831,19 +6484,25 @@ "dev": true }, "color-string": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", - "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", "dev": true, "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, "combined-stream": { @@ -3862,9 +6521,9 @@ "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==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.2.tgz", + "integrity": "sha512-AOdq0i8ghZudnYv8RUnHrhTgafUGs61Rdz9jemU5x2lnZwAWyOq7vySo626K59e1fVKH1xSRorJwPVRLSWOoAQ==", "dev": true }, "commondir": { @@ -3873,30 +6532,12 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, "compose-function": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", @@ -4006,6 +6647,12 @@ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", "dev": true }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -4064,6 +6711,15 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, + "copy-anything": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", + "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", + "dev": true, + "requires": { + "is-what": "^3.12.0" + } + }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -4096,87 +6752,86 @@ "dev": true }, "copy-webpack-plugin": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz", - "integrity": "sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.3.2.tgz", + "integrity": "sha512-MgJ1uouLIbDg4ST1GzqrGQyKoXY5iPqi6fghFqarijam7FQcBa/r6Rg0VkoIuzx75Xq8iAMghyOueMkWUQ5OaA==", "dev": true, "requires": { - "cacache": "^15.0.4", + "cacache": "^15.0.5", "fast-glob": "^3.2.4", "find-cache-dir": "^3.3.1", "glob-parent": "^5.1.1", "globby": "^11.0.1", "loader-utils": "^2.0.0", "normalize-path": "^3.0.0", - "p-limit": "^3.0.1", - "schema-utils": "^2.7.0", - "serialize-javascript": "^4.0.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", "webpack-sources": "^1.4.3" }, "dependencies": { - "cacache": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", - "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.0", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "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==", + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "yallist": "^4.0.0" + "yocto-queue": "^0.1.0" } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "p-limit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", - "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } } } }, "core-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==" + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", + "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==" }, "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", + "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", "dev": true, "requires": { - "browserslist": "^4.8.5", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { @@ -4189,9 +6844,9 @@ } }, "core-js-pure": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.8.1.tgz", - "integrity": "sha512-Se+LaxqXlVXGvmexKGPvnUIYC1jwXu1H6Pkyb3uBM5d8/NELMYCHs/4/roD7721NxrTLyv7e5nXd5/QLBO+10g==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.1.tgz", + "integrity": "sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A==", "dev": true }, "core-util-is": { @@ -4200,6 +6855,16 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -4223,9 +6888,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -4257,13 +6922,32 @@ "sha.js": "^2.4.8" } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "critters": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.7.tgz", + "integrity": "sha512-qUF2SaAWFYjNPdCcPpu68p2DnHiosia84yx5mPTlUMQjkjChR+n6sO1/I7yn2U2qNDgSPTd2SoaTIDQcUL+EwQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css": "^3.0.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "pretty-bytes": "^5.3.0" + } + }, "cross-env": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", - "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "requires": { - "cross-spawn": "^7.0.0" + "cross-spawn": "^7.0.1" }, "dependencies": { "cross-spawn": { @@ -4350,24 +7034,23 @@ } }, "cson-parser": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-4.0.7.tgz", - "integrity": "sha512-BSnAl0gllETWjU9/lb8MmeqhsGaRINPwhoPiBjI/TJBRvKf/24I9EVqnwvmk6R3Gt66cMRSGVktl6QicxIb72g==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-4.0.8.tgz", + "integrity": "sha512-Hdv3N2E5JU4vAp88cxcs/Y+0L0y0HJnpoc067E//qbXNF4/cG713rFLryD0QvKZYK6w3QBA67t7UOfo2ymh8Sg==", "dev": true, "requires": { "coffeescript": "1.12.7" } }, "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", "dev": true, "requires": { - "inherits": "^2.0.3", + "inherits": "^2.0.4", "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" + "source-map-resolve": "^0.6.0" }, "dependencies": { "source-map": { @@ -4392,54 +7075,106 @@ "requires": { "postcss": "^7.0.1", "timsort": "^0.3.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "css-loader": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.3.tgz", - "integrity": "sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz", + "integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==", "dev": true, "requires": { - "camelcase": "^5.3.1", + "camelcase": "^6.2.0", "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.27", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.3", - "schema-utils": "^2.6.6", - "semver": "^6.3.0" + "icss-utils": "^5.0.0", + "loader-utils": "^2.0.0", + "postcss": "^8.1.4", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" }, "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "minimist": "^1.2.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true } } }, @@ -4450,6 +7185,39 @@ "dev": true, "requires": { "css": "^2.0.0" + }, + "dependencies": { + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } } }, "css-select": { @@ -4529,6 +7297,56 @@ "cssnano-preset-default": "^4.0.7", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-preset-default": { @@ -4567,6 +7385,56 @@ "postcss-reduce-transforms": "^4.0.2", "postcss-svgo": "^4.0.2", "postcss-unique-selectors": "^4.0.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-util-get-arguments": { @@ -4588,6 +7456,56 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "cssnano-util-same-parent": { @@ -4597,28 +7515,28 @@ "dev": true }, "csso": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", - "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.39" + "css-tree": "^1.1.2" }, "dependencies": { "css-tree": { - "version": "1.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", - "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", "dev": true, "requires": { - "mdn-data": "2.0.6", + "mdn-data": "2.0.14", "source-map": "^0.6.1" } }, "mdn-data": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", - "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, "source-map": { @@ -4629,6 +7547,15 @@ } } }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -4666,17 +7593,6 @@ "assert-plus": "^1.0.0" } }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, "date-format": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", @@ -4692,18 +7608,30 @@ "ms": "2.1.2" } }, - "debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", - "dev": true - }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -4740,15 +7668,6 @@ "ip-regex": "^2.1.0" } }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", - "dev": true, - "requires": { - "strip-bom": "^3.0.0" - } - }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -4878,12 +7797,77 @@ } } }, + "del-cli": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/del-cli/-/del-cli-3.0.1.tgz", + "integrity": "sha512-BLHItGr82rUbHhjMu41d+vw9Md49i81jmZSV00HdTq4t+RTHywmEht/23mNFpUl2YeLYJZJyGz4rdlMAyOxNeg==", + "dev": true, + "requires": { + "del": "^5.1.0", + "meow": "^6.1.1" + }, + "dependencies": { + "del": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "dev": true, + "requires": { + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" + } + }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -4912,28 +7896,12 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", + "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==", "dev": true }, - "dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, "di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", @@ -4958,9 +7926,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -5031,9 +7999,9 @@ }, "dependencies": { "domelementtype": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", - "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", "dev": true } } @@ -5103,30 +8071,30 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.578", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.578.tgz", - "integrity": "sha512-z4gU6dA1CbBJsAErW5swTGAaU2TBzc2mPAonJb00zqW1rOraDo2zfBMDRvaz9cVic+0JEZiYbHWPw/fTaZlG2Q==", + "version": "1.3.699", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.699.tgz", + "integrity": "sha512-fjt43CPXdPYwD9ybmKbNeLwZBmCVdLY2J5fGZub7/eMPuiqQznOGNXv/wurnpXIlE7ScHnvG9Zi+H4/i6uMKmw==", "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -5154,6 +8122,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, + "optional": true, "requires": { "iconv-lite": "^0.6.2" }, @@ -5163,6 +8132,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", "dev": true, + "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -5179,133 +8149,60 @@ } }, "engine.io": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", - "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "0.3.1", - "debug": "~4.1.0", - "engine.io-parser": "~2.2.0", - "ws": "^7.1.2" + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" }, "dependencies": { "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", - "dev": true - } - } - }, - "engine.io-client": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.4.tgz", - "integrity": "sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ==", - "dev": true, - "requires": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", - "dev": true - }, - "parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", + "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", "dev": true - }, - "ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } } } }, "engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", "dev": true, "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" + "base64-arraybuffer": "0.1.4" } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" } }, "enquirer": { @@ -5315,14 +8212,6 @@ "dev": true, "requires": { "ansi-colors": "^4.1.1" - }, - "dependencies": { - "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 - } } }, "ent": { @@ -5332,21 +8221,27 @@ "dev": true }, "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true }, "err-code": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "requires": { "prr": "~1.0.1" @@ -5458,13 +8353,13 @@ "dev": true }, "eslint": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", - "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.2", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -5475,12 +8370,12 @@ "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", - "esquery": "^1.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -5488,58 +8383,33 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.19", + "lodash": "^4.17.21", "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==", + "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": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { - "color-name": "~1.1.4" + "@babel/highlight": "^7.10.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==", + "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 }, "cross-spawn": { @@ -5564,20 +8434,14 @@ } }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", + "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, - "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", @@ -5630,19 +8494,10 @@ "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" - } - }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "which": { @@ -5657,13 +8512,10 @@ } }, "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": { - "get-stdin": "^6.0.0" - } + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", + "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", + "dev": true }, "eslint-import-resolver-node": { "version": "0.3.4", @@ -5820,24 +8672,44 @@ } }, "eslint-plugin-jsdoc": { - "version": "30.7.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.6.tgz", - "integrity": "sha512-w18IOiS/9ahKgRfQOuHbce+EQYx3fwIkZhUZDEK+augNlhJkzgTSZkrBkzaflSbFNZ9/Tk4xzUABEaTbsBSzew==", + "version": "32.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-32.3.0.tgz", + "integrity": "sha512-zyx7kajDK+tqS1bHuY5sapkad8P8KT0vdd/lE55j47VPG2MeenSYuIY/M/Pvmzq5g0+3JB+P3BJGUXmHxtuKPQ==", "dev": true, "requires": { - "comment-parser": "^0.7.6", - "debug": "^4.2.0", + "comment-parser": "1.1.2", + "debug": "^4.3.1", "jsdoctypeparser": "^9.0.0", "lodash": "^4.17.20", "regextras": "^0.7.1", - "semver": "^7.3.2", + "semver": "^7.3.4", "spdx-expression-parse": "^3.0.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" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "eslint-plugin-prefer-arrow": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.2.tgz", - "integrity": "sha512-C8YMhL+r8RMeMdYAw/rQtE6xNdMulj+zGWud/qIGnlmomiPRaLDGLMeskZ3alN6uMBojmooRimtdrXebLN4svQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", + "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", "dev": true }, "eslint-scope": { @@ -5905,9 +8777,9 @@ "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==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -5963,15 +8835,15 @@ "dev": true }, "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", "dev": true, "requires": { "original": "^1.0.0" @@ -6058,15 +8930,6 @@ } } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -6138,9 +9001,9 @@ }, "dependencies": { "type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", - "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", "dev": true } } @@ -6259,6 +9122,11 @@ } } }, + "extract-files": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -6312,9 +9180,9 @@ } }, "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -6336,33 +9204,55 @@ } }, "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==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" } }, "file-loader": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", - "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, "requires": { "loader-utils": "^2.0.0", - "schema-utils": "^2.6.5" + "schema-utils": "^3.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } + "optional": true }, "fill-range": { "version": "7.0.1", @@ -6391,214 +9281,63 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "ms": "2.0.0" } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "semver": "^6.0.0" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "dependencies": { + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true } } }, @@ -6610,20 +9349,12 @@ "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", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "flush-write-stream": { @@ -6637,9 +9368,9 @@ } }, "follow-redirects": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", - "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", "dev": true }, "for-in": { @@ -6671,6 +9402,12 @@ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", "dev": true }, + "fraction.js": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.13.tgz", + "integrity": "sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA==", + "dev": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -6697,14 +9434,33 @@ } }, "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "dependencies": { + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } } }, "fs-minipass": { @@ -6753,11 +9509,43 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "genfun": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", - "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", - "dev": true + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } }, "gensync": { "version": "1.0.0-beta.1", @@ -6782,12 +9570,6 @@ "has-symbols": "^1.0.1" } }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -6835,41 +9617,6 @@ "is-glob": "^4.0.1" } }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - }, - "dependencies": { - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - } - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -6877,9 +9624,9 @@ "dev": true }, "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", "dev": true, "requires": { "array-union": "^2.1.0", @@ -6897,17 +9644,14 @@ "dev": true }, "graphql": { - "version": "14.5.8", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.5.8.tgz", - "integrity": "sha512-MMwmi0zlVLQKLdGiMfWkgQD7dY/TUKt4L+zgJ/aR0Howebod3aNgP5JkgvAULiR2HPVZaP2VEElqtdidHweLkg==", - "requires": { - "iterall": "^1.2.2" - } + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.0.tgz", + "integrity": "sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA==" }, "graphql-tag": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.10.4.tgz", - "integrity": "sha512-O7vG5BT3w6Sotc26ybcvLKNTdfr4GfsIVMD+LdYqXCeJIYPRyp8BIsDOUtxw7S1PYvRw5vH3278J2EDezR6mfA==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.11.0.tgz", + "integrity": "sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA==" }, "handle-thing": { "version": "2.0.1", @@ -6931,6 +9675,12 @@ "har-schema": "^2.0.0" } }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -6949,27 +9699,10 @@ "ansi-regex": "^2.0.0" } }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dev": true, - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true }, "has-flag": { @@ -6984,6 +9717,12 @@ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -7070,6 +9809,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -7092,19 +9832,18 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "requires": { - "parse-passwd": "^1.0.0" + "react-is": "^16.7.0" } }, "hosted-git-info": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.6.tgz", - "integrity": "sha512-VRvqVD5T6t9HdmNDWTwbi8H/EC722MemAhOSP5QvYAXpDAY0Nhu2I/i+bXsktu4sU5LVHSh/wmXtVU8bDtjedQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -7152,9 +9891,9 @@ "dev": true }, "html-entities": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", - "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", "dev": true }, "html-escaper": { @@ -7164,9 +9903,9 @@ "dev": true }, "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", "dev": true }, "http-deceiver": { @@ -7196,6 +9935,12 @@ } } }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, "http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -7208,29 +9953,24 @@ } }, "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { - "agent-base": "4", - "debug": "3.1.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "debug": "4" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, @@ -7399,22 +10139,20 @@ } }, "iconv-lite": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", - "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true }, "ieee754": { "version": "1.1.13", @@ -7456,15 +10194,6 @@ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", "dev": true }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", @@ -7475,15 +10204,6 @@ "resolve-from": "^3.0.0" } }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, "import-local": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", @@ -7492,6 +10212,45 @@ "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } } }, "imurmurhash": { @@ -7512,12 +10271,6 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -7537,30 +10290,31 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "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": "^3.0.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", + "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mute-stream": "0.0.8", "run-async": "^2.4.0", - "rxjs": "^6.5.3", + "rxjs": "^6.6.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" @@ -7582,9 +10336,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "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", @@ -7624,10 +10378,19 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "rxjs": { + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", + "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "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==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -7652,6 +10415,12 @@ "requires": { "has-flag": "^4.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 } } }, @@ -7665,21 +10434,6 @@ "ipaddr.js": "^1.9.0" } }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -7731,10 +10485,13 @@ } }, "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } }, "is-arrayish": { "version": "0.2.1", @@ -7742,6 +10499,12 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -7751,6 +10514,15 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -7777,6 +10549,15 @@ "rgba-regex": "^1.0.0" } }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -7867,6 +10648,12 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, "is-negative-zero": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", @@ -7879,6 +10666,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -7975,6 +10768,18 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -8030,71 +10835,12 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "istanbul-api": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.7.tgz", - "integrity": "sha512-LYTOa2UrYFyJ/aSczZi/6lBykVMjCCvUmT64gOe+jPZFy4w6FYfPGqFT2IiQ2BxVHHDOvCD7qrIXb0EOh4uGWw==", - "dev": true, - "requires": { - "async": "^2.6.2", - "compare-versions": "^3.4.0", - "fileset": "^2.0.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.5", - "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", - "minimatch": "^3.0.4", - "once": "^1.4.0" - }, - "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "istanbul-lib-coverage": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true }, - "istanbul-lib-hook": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", - "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } - }, "istanbul-lib-instrument": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", @@ -8116,29 +10862,44 @@ } }, "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" }, "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "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 + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "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": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -8180,19 +10941,15 @@ } }, "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", "dev": true, "requires": { - "html-escaper": "^2.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" } }, - "iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" - }, "jasmine": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", @@ -8213,18 +10970,18 @@ } }, "jasmine-core": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", - "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.7.1.tgz", + "integrity": "sha512-DH3oYDS/AUvvr22+xUBW62m1Xoy7tUlY1tsxKEJvl5JeJ7q8zd1K5bUwiOxdH+erj6l2vAMM3hV25Xs9/WrmuQ==", "dev": true }, "jasmine-spec-reporter": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", - "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-6.0.0.tgz", + "integrity": "sha512-MvTOVoMxDZAftQYBApIlSfKnGMzi9cj351nXeqtnZTuXffPlbONN31+Es7F+Ke4okUeQ2xISukt4U1npfzLVrQ==", "dev": true, "requires": { - "colors": "1.1.2" + "colors": "1.4.0" } }, "jasminewd2": { @@ -8234,11 +10991,12 @@ "dev": true }, "jest-worker": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.0.0.tgz", - "integrity": "sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw==", + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { + "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^7.0.0" }, @@ -8260,11 +11018,15 @@ } } }, + "js-sha256": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", + "integrity": "sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.0", @@ -8345,6 +11107,12 @@ "minimist": "^1.2.5" } }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -8385,9 +11153,9 @@ } }, "karma": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/karma/-/karma-5.2.3.tgz", - "integrity": "sha512-tHdyFADhVVPBorIKCX8A37iLHxc6RBRphkSoQ+MLKdAtFn1k97tD8WUGi1KlEtDZKL3hui0qhsY9HXUfSNDYPQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.1.tgz", + "integrity": "sha512-Is71g0f1dIpbLTXA+ULpev1i1soczQ1Dr8oum3zSmBFsDl3IWUlTLytsCb9os4v9xvUVWGDz0sCmLO4veANnSw==", "dev": true, "requires": { "body-parser": "^1.19.0", @@ -8408,11 +11176,11 @@ "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^2.3.0", + "socket.io": "^3.1.0", "source-map": "^0.6.1", "tmp": "0.2.1", - "ua-parser-js": "0.7.22", - "yargs": "^15.3.1" + "ua-parser-js": "^0.7.23", + "yargs": "^16.1.1" }, "dependencies": { "ansi-regex": { @@ -8431,14 +11199,14 @@ } }, "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "wrap-ansi": "^7.0.0" } }, "color-convert": { @@ -8456,62 +11224,22 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "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 }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "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 }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", - "dev": true - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true }, "source-map": { @@ -8521,9 +11249,9 @@ "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==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -8550,9 +11278,9 @@ } }, "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -8560,34 +11288,32 @@ "strip-ansi": "^6.0.0" } }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true + }, "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true } } }, @@ -8610,28 +11336,31 @@ } }, "karma-coverage-istanbul-reporter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.1.tgz", - "integrity": "sha512-CH8lTi8+kKXGvrhy94+EkEMldLCiUA0xMOiL31vvli9qK0T+qcXJAwWBRVJWnVWxYkTmyWar8lPz63dxX6/z1A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", "dev": true, "requires": { - "istanbul-api": "^2.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", "minimatch": "^3.0.4" } }, "karma-jasmine": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", - "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", + "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", "dev": true, "requires": { - "jasmine-core": "^3.3" + "jasmine-core": "^3.6.0" } }, "karma-jasmine-html-reporter": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.4.2.tgz", - "integrity": "sha512-7g0gPj8+9JepCNJR9WjDyQ2RkZ375jpdurYQyAYv8PorUCadepl8vrD6LmMqOGcM17cnrynBawQYZHaumgDjBw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", + "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", "dev": true }, "karma-source-map-support": { @@ -8655,6 +11384,12 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true + }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -8710,17 +11445,19 @@ } }, "less": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/less/-/less-3.12.2.tgz", - "integrity": "sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", + "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==", "dev": true, "requires": { + "copy-anything": "^2.0.1", "errno": "^0.1.1", "graceful-fs": "^4.1.2", "image-size": "~0.5.0", "make-dir": "^2.1.0", "mime": "^1.4.1", - "native-request": "^1.0.5", + "needle": "^2.5.2", + "parse-node-version": "^1.0.1", "source-map": "~0.6.0", "tslib": "^1.10.0" }, @@ -8741,30 +11478,39 @@ } }, "less-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-6.1.0.tgz", - "integrity": "sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", + "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", "dev": true, "requires": { - "clone": "^2.1.2", - "less": "^3.11.1", + "klona": "^2.0.4", "loader-utils": "^2.0.0", - "schema-utils": "^2.6.6" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" + "schema-utils": "^3.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, "levn": { @@ -8778,13 +11524,31 @@ } }, "license-webpack-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.2.0.tgz", - "integrity": "sha512-XPsdL/0brSHf+7dXIlRqotnCQ58RX2au6otkOg4U3dm8uH+Ka/fW4iukEs95uXm+qKe/SBs+s1Ll/aQddKG+tg==", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.11.tgz", + "integrity": "sha512-0iVGoX5vx0WDy8dmwTTpOOMYiGqILyUbDeVMFH52AjgBlS58lHwOlFMSoqg5nY8Kxl6+FRKyUZY/UdlQaOyqDw==", "dev": true, "requires": { "@types/webpack-sources": "^0.1.5", "webpack-sources": "^1.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } } }, "lie": { @@ -8796,6 +11560,12 @@ "immediate": "~3.0.5" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -8834,25 +11604,18 @@ } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.memoize": { "version": "4.1.2", @@ -8872,12 +11635,6 @@ "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -8885,12 +11642,64 @@ "dev": true }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "chalk": "^2.4.2" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.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" + } + }, + "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 + }, + "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" + } + } } }, "log4js": { @@ -8904,38 +11713,47 @@ "flatted": "^2.0.1", "rfdc": "^1.1.4", "streamroller": "^2.2.4" + }, + "dependencies": { + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + } } }, "loglevel": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", - "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", "dev": true }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "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": "^3.0.2" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } + "yallist": "^4.0.0" } }, "magic-string": { @@ -8972,69 +11790,95 @@ "dev": true }, "make-fetch-happen": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", - "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", - "dev": true, - "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^12.0.0", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^4.0.0", - "ssri": "^6.0.0" + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", + "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.0.5", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^5.0.0", + "ssri": "^8.0.0" }, "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "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": { - "glob": "^7.1.3" + "yallist": "^4.0.0" } }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "err-code": "^2.0.2", + "retry": "^0.12.0" } } } @@ -9045,6 +11889,12 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -9078,9 +11928,9 @@ "dev": true }, "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { "errno": "^0.1.3", @@ -9093,6 +11943,128 @@ "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", "dev": true }, + "meow": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", + "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "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 + } + } + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -9155,9 +12127,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -9189,59 +12161,60 @@ "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", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, "mini-css-extract-plugin": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", - "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.5.tgz", + "integrity": "sha512-tvmzcwqJJXau4OQE5vT72pRT18o2zF+tQJp8CWchqvfQnTlflkzS+dANYcRdyPRWUWRkfmeNTKltx0NZI/b5dQ==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", "webpack-sources": "^1.1.0" }, "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "minimist": "^1.2.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } } } @@ -9249,7 +12222,8 @@ "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "minimalistic-crypto-utils": { "version": "1.0.1", @@ -9272,6 +12246,17 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, "minipass": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", @@ -9290,6 +12275,18 @@ "minipass": "^3.0.0" } }, + "minipass-fetch": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz", + "integrity": "sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, "minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -9299,6 +12296,16 @@ "minipass": "^3.0.0" } }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, "minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", @@ -9308,6 +12315,15 @@ "minipass": "^3.0.0" } }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, "minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -9366,6 +12382,164 @@ "minimist": "^1.2.5" } }, + "move-cli": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/move-cli/-/move-cli-1.2.1.tgz", + "integrity": "sha512-tsXvWsP/ZNCP007xO2TjNwH5LtTuRaSNtdznGNHGXqBs8OLzii8yeN06G8PUd9qEumhCOJtb468Rus7KNvNcBg==", + "dev": true, + "requires": { + "meow": "^5.0.0", + "mv": "^2.1.1" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + } + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -9391,23 +12565,6 @@ } } }, - "move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-cdkdhNCgbP5dvS4tlGxZbD+nloio9GIimP57EjqFhwLcMjnU+XJKAZzlmg/TN/AK1LuNAdTSvm3CPPP4Xkv0iQ==", - "dev": true, - "requires": { - "path-exists": "^4.0.0" - }, - "dependencies": { - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -9436,6 +12593,54 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "dev": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "dev": true, + "requires": { + "glob": "^6.0.1" + } + } + } + }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, + "nanoid": { + "version": "3.1.22", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.22.tgz", + "integrity": "sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==", + "dev": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -9455,13 +12660,6 @@ "to-regex": "^3.0.1" } }, - "native-request": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.7.tgz", - "integrity": "sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ==", - "dev": true, - "optional": true - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -9534,9 +12732,9 @@ } }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", "dev": true }, "yargs": { @@ -9556,6 +12754,36 @@ } } }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true + }, + "needle": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -9586,23 +12814,41 @@ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "dev": true }, - "node-fetch-npm": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", - "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", - "dev": true, - "requires": { - "encoding": "^0.1.11", - "json-parse-better-errors": "^1.0.0", - "safe-buffer": "^5.1.1" - } - }, "node-forge": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true }, + "node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "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" + } + } + } + }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -9632,37 +12878,31 @@ "url": "^0.11.0", "util": "^0.11.0", "vm-browserify": "^1.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, + }, + "dependencies": { "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } } } }, "node-releases": { - "version": "1.1.61", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", - "integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g==", + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -9732,24 +12972,25 @@ "dev": true }, "npm-package-arg": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", - "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz", + "integrity": "sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig==", "dev": true, "requires": { - "hosted-git-info": "^3.0.2", + "hosted-git-info": "^3.0.6", "semver": "^7.0.0", "validate-npm-package-name": "^3.0.0" } }, "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.4.tgz", + "integrity": "sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw==", "dev": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" } }, @@ -9765,49 +13006,29 @@ } }, "npm-registry-fetch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", - "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", - "dev": true, - "requires": { - "JSONStream": "^1.3.4", - "bluebird": "^3.5.1", - "figgy-pudding": "^3.4.1", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "npm-package-arg": "^6.1.0", - "safe-buffer": "^5.2.0" + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", + "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", + "dev": true, + "requires": { + "@npmcli/ci-detect": "^1.0.0", + "lru-cache": "^6.0.0", + "make-fetch-happen": "^8.0.9", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" }, "dependencies": { - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "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": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" + "yallist": "^4.0.0" } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true } } }, @@ -9826,6 +13047,19 @@ "read-pkg": "^3.0.0", "shell-quote": "^1.6.1", "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, "npm-run-path": { @@ -9837,6 +13071,18 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -9846,12 +13092,6 @@ "boolbase": "~1.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -9867,14 +13107,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", @@ -9914,13 +13147,25 @@ "dev": true }, "object-is": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", - "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + } } }, "object-keys": { @@ -9929,12 +13174,6 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "object-path": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", - "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=", - "dev": true - }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -9957,32 +13196,127 @@ } }, "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==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "es-abstract": "^1.18.0-next.2" }, "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "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==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^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", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + } + } + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } } } @@ -10069,9 +13403,9 @@ } }, "open": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz", - "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", + "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", "dev": true, "requires": { "is-docker": "^2.0.0", @@ -10095,14 +13429,6 @@ } } }, - "optimism": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", - "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", - "requires": { - "@wry/context": "^0.4.0" - } - }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -10118,17 +13444,17 @@ } }, "ora": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz", - "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, "requires": { - "chalk": "^3.0.0", + "bl": "^4.0.3", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-spinners": "^2.2.0", + "cli-spinners": "^2.5.0", "is-interactive": "^1.0.0", - "log-symbols": "^3.0.0", - "mute-stream": "0.0.8", + "log-symbols": "^4.0.0", "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, @@ -10149,9 +13475,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "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", @@ -10214,12 +13540,6 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", @@ -10235,16 +13555,6 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -10261,12 +13571,12 @@ } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-map": { @@ -10294,173 +13604,85 @@ "dev": true }, "pacote": { - "version": "9.5.12", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", - "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.2.4.tgz", + "integrity": "sha512-GfTeVQGJ6WyBQbQD4t3ocHbyOmTQLmWjkCKSZPmKiGFKYKNUaM5U2gbLzUW8WG1XmS9yQFnsTFA0k3o1+q4klQ==", "dev": true, "requires": { - "bluebird": "^3.5.3", - "cacache": "^12.0.2", - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.1.0", - "glob": "^7.1.3", + "@npmcli/git": "^2.0.1", + "@npmcli/installed-package-contents": "^1.0.5", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.3.0", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "minimatch": "^3.0.4", - "minipass": "^2.3.5", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "normalize-package-data": "^2.4.0", - "npm-normalize-package-bin": "^1.0.0", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^3.0.0", - "npm-registry-fetch": "^4.0.0", - "osenv": "^0.1.5", - "promise-inflight": "^1.0.1", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^9.0.0", "promise-retry": "^1.1.1", - "protoduck": "^5.0.1", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.2", - "semver": "^5.6.0", - "ssri": "^6.0.1", - "tar": "^4.4.10", - "unique-filename": "^1.1.1", - "which": "^1.3.1" + "read-package-json-fast": "^1.1.3", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.1.0" }, "dependencies": { "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", - "dev": true, - "requires": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-pick-manifest": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", - "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" } }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "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": { - "glob": "^7.1.3" + "yallist": "^4.0.0" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", "dev": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true } } }, @@ -10521,34 +13743,44 @@ "json-parse-better-errors": "^1.0.1" } }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true }, "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", + "dev": true, + "requires": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "requires": { - "better-assert": "~1.0.0" + "parse5": "^6.0.1" } }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", "dev": true, "requires": { - "better-assert": "~1.0.0" + "parse5": "^6.0.1" } }, "parseurl": { @@ -10670,12 +13902,12 @@ } }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" } }, "pnp-webpack-plugin": { @@ -10699,9 +13931,9 @@ }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -10716,14 +13948,14 @@ "dev": true }, "postcss": { - "version": "7.0.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.31.tgz", - "integrity": "sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz", + "integrity": "sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "colorette": "^1.2.1", + "nanoid": "^3.1.20", + "source-map": "^0.6.1" }, "dependencies": { "source-map": { @@ -10731,15 +13963,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -10752,6 +13975,56 @@ "postcss": "^7.0.27", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-colormin": { @@ -10767,11 +14040,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -10785,11 +14106,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -10800,6 +14169,56 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-duplicates": { @@ -10809,6 +14228,56 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-empty": { @@ -10818,6 +14287,56 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-discard-overridden": { @@ -10827,79 +14346,153 @@ "dev": true, "requires": { "postcss": "^7.0.0" - } - }, - "postcss-import": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", - "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "postcss-value-parser": "^3.2.3", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" }, "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, - "postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "postcss-import": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.0.tgz", + "integrity": "sha512-gFDDzXhqr9ELmnLHgCC3TbGfA6Dm/YMb/UN8/f7Uuq4fL7VTk2vOIj6hwINEwbokEmp123bLD7a5m+E+KIetRg==", "dev": true, "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" } }, "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.2.0.tgz", + "integrity": "sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" }, "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "minimist": "^1.2.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "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" } }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.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 + }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } } } @@ -10916,11 +14509,59 @@ "stylehacks": "^4.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -10938,6 +14579,39 @@ "vendors": "^1.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -10948,6 +14622,21 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -10961,11 +14650,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -10981,11 +14718,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11003,11 +14788,59 @@ "uniqs": "^2.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11023,40 +14856,28 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - } - }, - "postcss-modules-local-by-default": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", - "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", - "dev": true, - "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "dependencies": { + }, "postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", @@ -11068,6 +14889,17 @@ "supports-color": "^6.1.0" } }, + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11085,24 +14917,39 @@ } } }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" + "postcss-selector-parser": "^6.0.4" } }, "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" + "icss-utils": "^5.0.0" } }, "postcss-normalize-charset": { @@ -11112,6 +14959,56 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-normalize-display-values": { @@ -11125,11 +15022,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11145,11 +15090,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11165,11 +15158,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11184,11 +15225,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11203,11 +15292,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11222,11 +15359,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11242,11 +15427,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11260,11 +15493,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11279,11 +15560,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11297,6 +15626,56 @@ "caniuse-api": "^3.0.0", "has": "^1.0.0", "postcss": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-reduce-transforms": { @@ -11311,11 +15690,59 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11343,11 +15770,59 @@ "svgo": "^1.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -11360,6 +15835,56 @@ "alphanum-sort": "^1.0.0", "postcss": "^7.0.0", "uniqs": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-value-parser": { @@ -11374,10 +15899,10 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true }, "process": { @@ -11414,6 +15939,12 @@ "retry": "^0.10.0" }, "dependencies": { + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "retry": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", @@ -11422,13 +15953,14 @@ } } }, - "protoduck": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", - "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", - "dev": true, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "genfun": "^5.0.0" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" } }, "protractor": { @@ -11818,9 +16350,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -11882,16 +16414,6 @@ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -11910,6 +16432,12 @@ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -11965,15 +16493,45 @@ } }, "raw-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz", - "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", "dev": true, "requires": { "loader-utils": "^2.0.0", - "schema-utils": "^2.6.5" + "schema-utils": "^3.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -11991,27 +16549,14 @@ } } }, - "read-package-json": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", - "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "read-package-json-fast": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.2.2.tgz", + "integrity": "sha512-39DbPJjkltEzfXJXB6D8/Ir3GFOU2YbSKa2HaB/Y3nKrc/zY+0XrALpID6/13ezWyzqvOHrBbR4t4cjQuTdBVQ==", "dev": true, "requires": { - "glob": "^7.1.1", "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "read-package-tree": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", - "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", - "dev": true, - "requires": { - "read-package-json": "^2.0.0", - "readdir-scoped-modules": "^1.0.0", - "util-promisify": "^2.1.0" + "npm-normalize-package-bin": "^1.0.1" } }, "read-pkg": { @@ -12159,18 +16704,6 @@ "util-deprecate": "~1.0.1" } }, - "readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, "readdirp": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", @@ -12180,6 +16713,16 @@ "picomatch": "^2.2.1" } }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, "reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -12187,9 +16730,9 @@ "dev": true }, "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { @@ -12202,9 +16745,9 @@ } }, "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { @@ -12227,38 +16770,29 @@ } }, "regex-parser": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", - "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==", + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", "dev": true }, "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==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.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==", + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "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" + "get-intrinsic": "^1.0.2" } } } @@ -12296,9 +16830,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -12372,6 +16906,12 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -12402,29 +16942,6 @@ "resolve-from": "^3.0.0" } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - } - } - }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -12438,12 +16955,12 @@ "dev": true }, "resolve-url-loader": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", - "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", + "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", "dev": true, "requires": { - "adjust-sourcemap-loader": "2.0.0", + "adjust-sourcemap-loader": "3.0.0", "camelcase": "5.3.1", "compose-function": "3.0.3", "convert-source-map": "1.7.0", @@ -12455,6 +16972,28 @@ "source-map": "0.6.1" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", @@ -12552,6 +17091,37 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", "dev": true + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } } } }, @@ -12562,9 +17132,9 @@ "dev": true }, "rfdc": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", - "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, "rgb-regex": { @@ -12599,12 +17169,21 @@ } }, "rollup": { - "version": "2.10.9", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.10.9.tgz", - "integrity": "sha512-dY/EbjiWC17ZCUSyk14hkxATAMAShkMsD43XmZGWjLrgFj15M3Dw2kEkA9ns64BiLFm9PKN6vTQw8neHwK74eg==", + "version": "2.38.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.38.4.tgz", + "integrity": "sha512-B0LcJhjiwKkTl79aGVF/u5KdzsH8IylVfV56Ut6c9ouWLJcUK17T83aZBetNYSnZtXf2OHD4+2PbmRW+Fp5ulg==", "dev": true, "requires": { - "fsevents": "~2.1.2" + "fsevents": "~2.3.1" + }, + "dependencies": { + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + } } }, "run-async": { @@ -12629,9 +17208,9 @@ } }, "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", + "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", "requires": { "tslib": "^1.9.0" }, @@ -12665,52 +17244,49 @@ "dev": true }, "sass": { - "version": "1.26.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.5.tgz", - "integrity": "sha512-FG2swzaZUiX53YzZSjSakzvGtlds0lcbF+URuU9mxOv7WBh7NhXEVDa4kPKN4hN6fC2TkOTOKqiqp6d53N9X5Q==", + "version": "1.32.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz", + "integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" } }, "sass-loader": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", - "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", + "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", "dev": true, "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.6.1", - "semver": "^6.3.0" + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" }, "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "minimist": "^1.2.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true } } }, @@ -12893,9 +17469,9 @@ } }, "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -13188,6 +17764,19 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } } } }, @@ -13263,240 +17852,129 @@ } }, "socket.io": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", - "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", "dev": true, "requires": { - "debug": "~4.1.0", - "engine.io": "~3.4.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.3.0", - "socket.io-parser": "~3.4.0" + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } } } }, "socket.io-adapter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", - "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", "dev": true }, - "socket.io-client": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", - "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", - "dev": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "engine.io-client": "~3.4.0", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - }, - "socket.io-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.1.tgz", - "integrity": "sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ==", - "dev": true, - "requires": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - } - } - }, "socket.io-parser": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", - "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", "dev": true, "requires": { - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "isarray": "2.0.1" + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" }, "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true } } }, "sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dev": true, "requires": { - "faye-websocket": "^0.10.0", + "faye-websocket": "^0.11.3", "uuid": "^3.4.0", - "websocket-driver": "0.6.5" + "websocket-driver": "^0.7.4" } }, "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", + "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", "dev": true, "requires": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.4.7" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } } } }, "socks": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", - "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.0.tgz", + "integrity": "sha512-mNmr9owlinMplev0Wd7UHFlqI4ofnBnNzFuzrm63PPaHgbkqCFe4T5LzwKmtQ/f2tX0NTpcdVLyD/FHxFBstYw==", "dev": true, "requires": { - "ip": "1.1.5", + "ip": "^1.1.5", "smart-buffer": "^4.1.0" } }, "socks-proxy-agent": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", - "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz", + "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", "dev": true, "requires": { - "agent-base": "~4.2.1", - "socks": "~2.3.2" + "agent-base": "6", + "debug": "4", + "socks": "^2.3.3" }, "dependencies": { "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "debug": "4" } } } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -13510,18 +17988,51 @@ "dev": true }, "source-map-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.0.0.tgz", - "integrity": "sha512-ZayyQCSCrQazN50aCvuS84lJT4xc1ZAcykH5blHaBdVveSwjiFK8UGMPvao0ho54DTb0Jf7m57uRRG/YYUZ2Fg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.3.tgz", + "integrity": "sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==", "dev": true, "requires": { - "data-urls": "^2.0.0", - "iconv-lite": "^0.5.1", + "abab": "^2.0.5", + "iconv-lite": "^0.6.2", "loader-utils": "^2.0.0", - "schema-utils": "^2.6.6", - "source-map": "^0.6.0" + "schema-utils": "^3.0.0", + "source-map": "^0.6.1", + "whatwg-mimetype": "^2.3.0" }, "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -13531,16 +18042,13 @@ } }, "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", "dev": true, "requires": { "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "decode-uri-component": "^0.2.0" } }, "source-map-support": { @@ -13562,9 +18070,9 @@ } }, "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "dev": true }, "sourcemap-codec": { @@ -13646,12 +18154,12 @@ } }, "speed-measure-webpack-plugin": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz", - "integrity": "sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.4.2.tgz", + "integrity": "sha512-AtVzD0bnIy2/B0fWqJpJgmhcrfWFhBlduzSo0uwplr/QvB33ZNZj2NEth3NONgdnZJqicK0W0mSxnLSbsVCDbw==", "dev": true, "requires": { - "chalk": "^2.0.1" + "chalk": "^4.1.0" } }, "split-string": { @@ -13687,9 +18195,9 @@ } }, "ssri": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", - "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "requires": { "minipass": "^3.1.1" @@ -13783,15 +18291,20 @@ "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } } } }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -13943,6 +18456,15 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -13950,13 +18472,38 @@ "dev": true }, "style-loader": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", - "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", "dev": true, "requires": { "loader-utils": "^2.0.0", - "schema-utils": "^2.6.6" + "schema-utils": "^3.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, "stylehacks": { @@ -13970,6 +18517,39 @@ "postcss-selector-parser": "^3.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, "postcss-selector-parser": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", @@ -13980,22 +18560,37 @@ "indexes-of": "^1.0.1", "uniq": "^1.0.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "stylus": { - "version": "0.54.7", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz", - "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==", + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", "dev": true, "requires": { "css-parse": "~2.0.0", "debug": "~3.1.0", - "glob": "^7.1.3", - "mkdirp": "~0.5.x", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", "safer-buffer": "^2.1.2", "sax": "~1.2.4", - "semver": "^6.0.0", + "semver": "^6.3.0", "source-map": "^0.7.3" }, "dependencies": { @@ -14008,6 +18603,12 @@ "ms": "2.0.0" } }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -14023,34 +18624,39 @@ } }, "stylus-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", - "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.3.tgz", + "integrity": "sha512-PpWB5PnCXUzW4WMYhCvNzAHJBjIBPMXwsdfkkKuA9W7k8OQFMl/19/AQvaWsxz2IptxUlCseyJ6TY/eEKJ4+UQ==", "dev": true, "requires": { - "loader-utils": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "when": "~3.6.x" + "fast-glob": "^3.2.4", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "schema-utils": "^3.0.0" }, "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "minimist": "^1.2.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } } } @@ -14083,34 +18689,42 @@ "stable": "^0.1.8", "unquote": "~1.1.1", "util.promisify": "~1.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, "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==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { - "ajv": "^6.12.4", + "ajv": "^7.0.2", "lodash": "^4.17.20", "slice-ansi": "^4.0.0", "string-width": "^4.2.0" }, "dependencies": { "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", + "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", "uri-js": "^4.2.2" } }, @@ -14132,10 +18746,16 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "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==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -14155,9 +18775,9 @@ } }, "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", "dev": true }, "tar": { @@ -14183,48 +18803,63 @@ } }, "terser": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", - "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", + "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" } }, "terser-webpack-plugin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.0.1.tgz", - "integrity": "sha512-eFDtq8qPUEa9hXcUzTwKXTnugIVtlqc1Z/ZVhG8LmRT3lgRY13+pQTnFLY2N7ATB6TKCHuW/IGjoAnZz9wOIqw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", "dev": true, "requires": { - "cacache": "^15.0.3", + "cacache": "^15.0.5", "find-cache-dir": "^3.3.1", - "jest-worker": "^26.0.0", - "p-limit": "^2.3.0", - "schema-utils": "^2.6.6", - "serialize-javascript": "^3.0.0", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", "source-map": "^0.6.1", - "terser": "^4.6.13", + "terser": "^5.3.4", "webpack-sources": "^1.4.3" }, "dependencies": { - "serialize-javascript": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "randombytes": "^2.1.0" + "yocto-queue": "^0.1.0" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } }, "source-map": { @@ -14232,6 +18867,16 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } } } }, @@ -14264,9 +18909,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -14287,12 +18932,6 @@ "os-tmpdir": "~1.0.2" } }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -14362,88 +19001,30 @@ "punycode": "^2.1.1" } }, - "tr46": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", - "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, - "ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "requires": { - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "ts-loader": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.2.tgz", - "integrity": "sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" - }, - "dependencies": { - "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" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true }, "ts-node": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.4.1.tgz", - "integrity": "sha512-5LpRN+mTiCs7lI5EtbXmF/HfMeCjzt7DH9CZwtkr6SywStrNQC723wG+aOWFiLNn7zT3kD/RnFqi3ZUfr4l5Qw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", "dev": true, "requires": { "arg": "^4.1.0", + "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" + "source-map-support": "^0.5.17", + "yn": "3.1.1" } }, "ts-pnp": { @@ -14476,9 +19057,9 @@ } }, "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" }, "tslint": { "version": "6.1.3", @@ -14501,6 +19082,17 @@ "tsutils": "^2.29.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -14512,94 +19104,63 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "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" + } } } }, "tslint-to-eslint-config": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tslint-to-eslint-config/-/tslint-to-eslint-config-2.0.1.tgz", - "integrity": "sha512-RURU/zcBQpW9jKS7H2J6of4+64npTb0nrH7ND8tNhagMwryVjVnUDcucsl8DQuD7tO9RgjFO9bmJfDhyP0yV1w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslint-to-eslint-config/-/tslint-to-eslint-config-2.2.0.tgz", + "integrity": "sha512-ta+V1G8y431CPXuJHbzlYYxuAyvKZM8llLZnFN7jy0C98dMsz0jIQCZW7dH5I6wt10gTyMOw7h5W+JEeQumbfQ==", "dev": true, "requires": { "chalk": "4.1.0", - "commander": "6.2.0", - "cson-parser": "4.0.7", - "eslint-config-prettier": "6.15.0", + "commander": "7.1.0", + "cson-parser": "4.0.8", + "eslint-config-prettier": "8.1.0", "glob": "7.1.6", - "json5": "2.1.3", - "lodash": "4.17.20", + "json5": "2.2.0", + "lodash": "4.17.21", "minimatch": "3.0.4", "tslint": "6.1.3", - "typescript": "4.1.2" + "typescript": "4.2.2" }, "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 - }, "commander": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", - "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "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 - }, - "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==", + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "minimist": "^1.2.5" } }, "typescript": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", - "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.2.tgz", + "integrity": "sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ==", "dev": true } } }, "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -14672,17 +19233,29 @@ "dev": true }, "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", + "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==", "dev": true }, "ua-parser-js": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", - "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==", + "version": "0.7.25", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.25.tgz", + "integrity": "sha512-8NFExdfI24Ny8R3Vc6+uUytP/I7dpqk3JERlvxPWlrtx5YboqCgxAXYKPAifbPLV2zKbgmmPL53ufW7mUC/VOQ==", "dev": true }, + "unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -14754,25 +19327,14 @@ } }, "universal-analytics": { - "version": "0.4.20", - "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", - "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz", + "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==", "dev": true, "requires": { - "debug": "^3.0.0", - "request": "^2.88.0", + "debug": "^4.1.1", + "request": "^2.88.2", "uuid": "^3.0.0" - }, - "dependencies": { - "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" - } - } } }, "universalify": { @@ -14873,9 +19435,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", "dev": true, "requires": { "querystringify": "^2.1.1", @@ -14889,18 +19451,18 @@ "dev": true }, "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dev": true, "requires": { - "inherits": "2.0.1" + "inherits": "2.0.3" }, "dependencies": { "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true } } @@ -14911,15 +19473,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "util-promisify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", - "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3" - } - }, "util.promisify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", @@ -14932,23 +19485,117 @@ "object.getownpropertydescriptors": "^2.1.0" }, "dependencies": { + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "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==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + } + } + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", + "call-bind": "^1.0.0", + "define-properties": "^1.1.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-keys": "^1.1.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } } } @@ -14966,9 +19613,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.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { @@ -15026,21 +19673,21 @@ "dev": true }, "watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "requires": { "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "watchpack-chokidar2": "^2.0.1" } }, "watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, "optional": true, "requires": { @@ -15159,7 +19806,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -15291,16 +19942,10 @@ "selenium-webdriver": "^3.0.1" } }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, "webpack": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", - "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", @@ -15311,7 +19956,7 @@ "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", + "enhanced-resolve": "^4.3.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", @@ -15324,7 +19969,7 @@ "schema-utils": "^1.0.0", "tapable": "^1.1.3", "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.1", + "watchpack": "^1.7.4", "webpack-sources": "^1.4.1" }, "dependencies": { @@ -15386,6 +20031,29 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -15420,6 +20088,15 @@ "pkg-dir": "^3.0.0" } }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -15466,14 +20143,23 @@ "json5": "^1.0.1" } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" } }, "micromatch": { @@ -15497,6 +20183,24 @@ "to-regex": "^3.0.2" } }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -15517,6 +20221,15 @@ "ajv-keywords": "^3.1.0" } }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -15524,14 +20237,31 @@ "dev": true }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" } }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, "terser-webpack-plugin": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", @@ -15558,67 +20288,22 @@ "is-number": "^3.0.0", "repeat-string": "^1.6.1" } - } - } - }, - "webpack-cli": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", - "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.1", - "findup-sync": "^3.0.0", - "global-modules": "^2.0.0", - "import-local": "^2.0.0", - "interpret": "^1.4.0", - "loader-utils": "^1.4.0", - "supports-color": "^6.1.0", - "v8-compile-cache": "^2.1.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - }, - "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" - } }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } } }, @@ -15635,28 +20320,18 @@ "webpack-log": "^2.0.0" }, "dependencies": { - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true } } }, "webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -15679,11 +20354,11 @@ "p-retry": "^3.0.1", "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", + "selfsigned": "^1.10.8", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", @@ -15798,7 +20473,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -15934,25 +20613,34 @@ "requires": { "ansi-colors": "^3.0.0", "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + } } }, "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", "dev": true, "requires": { - "lodash": "^4.17.15" + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" } }, "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", "dev": true, "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" }, "dependencies": { "source-map": { @@ -15964,20 +20652,40 @@ } }, "webpack-subresource-integrity": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz", - "integrity": "sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz", + "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==", "dev": true, "requires": { "webpack-sources": "^1.3.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } } }, "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -15999,23 +20707,6 @@ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "dev": true }, - "whatwg-url": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", - "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^2.0.2", - "webidl-conversions": "^6.1.0" - } - }, - "when": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", - "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", - "dev": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -16025,12 +20716,67 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", @@ -16053,9 +20799,9 @@ } }, "worker-plugin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.3.tgz", - "integrity": "sha512-7hFDYWiKcE3yHZvemsoM9lZis/PzurHAEX1ej8PLCu818Rt6QqUAiDdxHPCKZctzmhqzPpcFSgvMCiPbtooqAg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-5.0.0.tgz", + "integrity": "sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ==", "dev": true, "requires": { "loader-utils": "^1.1.0" @@ -16127,9 +20873,9 @@ } }, "xhr2": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.0.tgz", - "integrity": "sha512-BDtiD0i2iKPK/S8OAZfpk6tyzEDnKKSjxWHcMBVmh+LuqJ8A32qXTyOx+TVOg2dKvq6zGBq2sgKPkEeRs1qTRA==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==" }, "xml2js": { "version": "0.4.23", @@ -16147,12 +20893,6 @@ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true }, - "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", - "dev": true - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -16160,9 +20900,9 @@ "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yallist": { @@ -16171,6 +20911,12 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, "yaml-lint": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/yaml-lint/-/yaml-lint-1.2.4.tgz", @@ -16201,6 +20947,36 @@ "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^13.1.2" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + } } }, "yargs-parser": { @@ -16213,43 +20989,30 @@ "decamelize": "^1.2.0" } }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" }, - "zen-observable-ts": { - "version": "0.8.21", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", - "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", + "zone.js": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", + "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", "requires": { - "tslib": "^1.9.3", - "zen-observable": "^0.8.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "tslib": "^2.0.0" } - }, - "zone.js": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", - "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" } } } diff --git a/samples/angular/package.json b/samples/angular/package.json index d5f96490c0..d66a00cad5 100644 --- a/samples/angular/package.json +++ b/samples/angular/package.json @@ -1,6 +1,6 @@ { "name": "jss-sample-angular", - "version": "16.0.0", + "version": "18.0.0-canary.7", "description": "Application utilizing Sitecore JavaScript Services and Angular (angular-cli).", "config": { "appName": "JssAngularWeb", @@ -26,14 +26,14 @@ "jss": "jss", "start": "npm-run-all --serial bootstrap:disconnected --parallel start:angular start:proxy start:watch-components", "start:connected": "scjss-verify-setup && npm-run-all --serial bootstrap:connected start:angular start:watch-components", - "build": "npm-run-all --serial bootstrap:connected --serial build:client build:server --serial build:server-wrapper", + "build": "npm-run-all --serial bootstrap:connected --serial build:client build:server", "scaffold": "ng generate @sitecore-jss/sitecore-jss-angular-schematics:jss-component", - "start:angular": "ng serve -o --base-href=/ --source-map=false", + "start:angular": "ng serve -o", "start:proxy": "ts-node --project src/tsconfig.webpack-server.json scripts/disconnected-mode-proxy.ts", "start:watch-components": "ts-node --project src/tsconfig.webpack-server.json scripts/generate-component-factory.ts --watch", "build:client": "cross-env-shell ng build --prod --deploy-url $npm_package_config_sitecoreDistPath/browser/ --output-path=$npm_package_config_buildArtifactsPath/browser/", - "build:server": "cross-env-shell ng run JssAngularWeb:server:production --output-path=$npm_package_config_buildArtifactsPath/server --output-hashing=none --bundleDependencies true", - "build:server-wrapper": "cross-env-shell webpack --config webpack.server.config.js --progress --colors --output-path $npm_package_config_buildArtifactsPath", + "build:server": "cross-env-shell ng run JssAngularWeb:server:production --output-path=$npm_package_config_buildArtifactsPath/server --output-hashing=none --bundle-dependencies true", + "postbuild:server": "move-cli ./dist/server/main.js ./dist/server.bundle.js && del-cli ./dist/server", "bootstrap:connected": "ts-node --project src/tsconfig.webpack-server.json scripts/bootstrap.ts", "bootstrap:disconnected": "ts-node --project src/tsconfig.webpack-server.json scripts/bootstrap.ts --disconnected", "graphql:update": "ts-node --project src/tsconfig.webpack-server.json ./scripts/update-graphql-fragment-data.ts" @@ -41,7 +41,7 @@ "private": true, "author": { "name": "Sitecore Corporation", - "url": "https://jss.sitecore.net" + "url": "https://jss.sitecore.com" }, "repository": { "type": "git", @@ -50,85 +50,82 @@ "bugs": { "url": "https://github.com/sitecore/jss/issues" }, - "homepage": "https://jss.sitecore.net", + "homepage": "https://jss.sitecore.com", "license": "Apache-2.0", "dependencies": { - "@angular/animations": "~10.0.11", - "@angular/common": "~10.0.11", - "@angular/compiler": "~10.0.11", - "@angular/core": "~10.0.11", - "@angular/forms": "~10.0.11", - "@angular/platform-browser": "~10.0.11", - "@angular/platform-browser-dynamic": "~10.0.11", - "@angular/platform-server": "~10.0.11", - "@angular/router": "~10.0.11", + "@angular/animations": "~11.2.6", + "@angular/common": "~11.2.6", + "@angular/compiler": "~11.2.6", + "@angular/core": "~11.2.6", + "@angular/forms": "~11.2.6", + "@angular/platform-browser": "~11.2.6", + "@angular/platform-browser-dynamic": "~11.2.6", + "@angular/platform-server": "~11.2.6", + "@angular/router": "~11.2.6", + "@apollo/client": "^3.3.12", "@ngx-meta/core": "~9.0.0", - "@ngx-translate/core": "~11.0.1", - "@ngx-translate/http-loader": "~4.0.0", - "@sitecore-jss/sitecore-jss": "^16.0.0", - "@sitecore-jss/sitecore-jss-angular": "^16.0.0", - "@sitecore-jss/sitecore-jss-tracking": "^16.0.0", - "apollo-angular": "~1.10.0", - "apollo-angular-link-http-batch": "~1.9.0", - "apollo-angular-link-persisted": "~1.1.0", - "apollo-cache-inmemory": "~1.6.3", - "apollo-client": "~2.6.4", - "apollo-link": "~1.2.6", + "@ngx-translate/core": "~13.0.0", + "@ngx-translate/http-loader": "~6.0.0", + "@sitecore-jss/sitecore-jss": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-jss-angular": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-jss-tracking": "^18.0.0-canary.7", + "apollo-angular": "~2.4.0", "bootstrap": "^4.3.1", - "core-js": "~3.2.1", - "graphql": "14.5.8", - "graphql-tag": "~2.10.0", - "lodash": "^4.17.20", - "rxjs": "~6.5.3", - "tslib": "^2.0.1", - "zone.js": "~0.10.3" + "core-js": "~3.9.1", + "graphql": "15.5.0", + "graphql-tag": "~2.11.0", + "js-sha256": "^0.9.0", + "lodash": "^4.17.21", + "rxjs": "~6.6.6", + "tslib": "^2.1.0", + "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "^0.1000.6", - "@angular-eslint/builder": "0.8.0-beta.6", - "@angular-eslint/eslint-plugin": "0.8.0-beta.6", - "@angular-eslint/eslint-plugin-template": "0.8.0-beta.6", - "@angular-eslint/schematics": "^0.8.0-beta.6", - "@angular-eslint/template-parser": "0.8.0-beta.6", - "@angular/cli": "~10.0.6", - "@angular/compiler-cli": "~10.0.11", - "@angular/language-service": "~10.0.11", - "@sitecore-jss/sitecore-jss-angular-schematics": "^16.0.0", - "@sitecore-jss/sitecore-jss-cli": "^16.0.0", - "@sitecore-jss/sitecore-jss-dev-tools": "^16.0.0", - "@sitecore-jss/sitecore-jss-manifest": "^16.0.0", - "@types/jasmine": "~3.4.2", + "@angular-devkit/build-angular": "0.1102.6", + "@angular-eslint/builder": "2.0.2", + "@angular-eslint/eslint-plugin": "2.0.2", + "@angular-eslint/eslint-plugin-template": "2.0.2", + "@angular-eslint/schematics": "2.0.2", + "@angular-eslint/template-parser": "2.0.2", + "@angular/cli": "~11.2.5", + "@angular/compiler-cli": "~11.2.6", + "@angular/language-service": "~11.2.6", + "@sitecore-jss/sitecore-jss-angular-schematics": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-jss-cli": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-jss-dev-tools": "^18.0.0-canary.7", + "@sitecore-jss/sitecore-jss-manifest": "^18.0.0-canary.7", + "@types/jasmine": "~3.6.7", "@types/jasminewd2": "~2.0.8", "@types/node": "~12.7.9", - "@typescript-eslint/eslint-plugin": "4.3.0", - "@typescript-eslint/parser": "4.3.0", + "@typescript-eslint/eslint-plugin": "4.19.0", + "@typescript-eslint/parser": "4.19.0", "body-parser": "~1.19.0", - "chalk": "~2.4.2", - "codelyzer": "~5.1.2", - "cookie-parser": "~1.4.4", - "cross-env": "~6.0.2", - "enhanced-resolve": "4.1.0", - "eslint": "^7.6.0", + "chalk": "~4.1.0", + "codelyzer": "~6.0.1", + "cookie-parser": "~1.4.5", + "cross-env": "~7.0.3", + "del-cli": "^3.0.1", + "enhanced-resolve": "5.7.0", + "eslint": "^7.22.0", "eslint-plugin-import": "2.22.1", - "eslint-plugin-jsdoc": "30.7.6", - "eslint-plugin-prefer-arrow": "1.2.2", + "eslint-plugin-jsdoc": "32.3.0", + "eslint-plugin-prefer-arrow": "1.2.3", "express": "~4.17.1", - "fs-extra": "~8.1.0", + "fs-extra": "~9.1.0", "isomorphic-fetch": "^3.0.0", - "jasmine-core": "~3.5.0", - "jasmine-spec-reporter": "~4.2.1", - "karma": "^5.2.3", + "jasmine-core": "~3.7.1", + "jasmine-spec-reporter": "~6.0.0", + "karma": "^6.2.0", "karma-chrome-launcher": "~3.1.0", "karma-cli": "~2.0.0", - "karma-coverage-istanbul-reporter": "~2.1.0", - "karma-jasmine": "~2.0.1", - "karma-jasmine-html-reporter": "~1.4.2", + "karma-coverage-istanbul-reporter": "~3.0.3", + "karma-jasmine": "~4.0.1", + "karma-jasmine-html-reporter": "~1.5.4", + "move-cli": "^1.2.1", "npm-run-all": "~4.1.5", "protractor": "^7.0.0", - "ts-loader": "~6.2.0", - "ts-node": "~8.4.1", - "typescript": "~3.9.7", - "webpack-cli": "~3.3.9", + "ts-node": "~9.1.1", + "typescript": "~4.1.5", "yaml-lint": "^1.2.4" } } diff --git a/samples/angular/server.bundle.ts b/samples/angular/server.bundle.ts index cce07538e5..4e375d6cb5 100644 --- a/samples/angular/server.bundle.ts +++ b/samples/angular/server.bundle.ts @@ -1,10 +1,13 @@ // These are important and needed before anything else -import 'zone.js/dist/zone-node'; -import 'reflect-metadata'; -import { join } from 'path'; import { readFileSync } from 'fs'; +import { join } from 'path'; +import 'reflect-metadata'; +import 'zone.js/dist/zone-node'; import { JssRouteBuilderService } from './src/app/routing/jss-route-builder.service'; import { environment } from './src/environments/environment'; +import { AppServerModule, renderModule } from './src/main.server'; + +export * from './src/main.server'; const http = require('http'); const https = require('https'); @@ -12,10 +15,6 @@ const https = require('https'); // Our index.html we'll use as our template const template = readFileSync(join(__dirname, 'browser', 'index.html')).toString(); -// * NOTE :: leave this as require() since this file is built Dynamically from webpack -const { AppServerModule, renderModule } = require('./dist/server/main'); - - // Setup Http/Https agents for keep-alive. Used in headless-proxy const setUpDefaultAgents = (httpAgent, httpsAgent) => { http.globalAgent = httpAgent; @@ -23,7 +22,7 @@ const setUpDefaultAgents = (httpAgent, httpsAgent) => { }; // this is the function expected by the JSS View Engine for "integrated mode" -function renderView (callback, path, data, viewBag) { +function renderView(callback, path, data, viewBag) { try { /* Data from server is double-encoded since MS JSS does not allow control @@ -68,8 +67,8 @@ function renderView (callback, path, data, viewBag) { { provide: 'JSS_SERVER_VIEWBAG', useValue: state.viewBag }, ] }) - .then(html => callback(null, { html })) - .catch(err => callback(err, null)) + .then(html => callback(null, { html })) + .catch(err => callback(err, null)) } catch (err) { // need to ensure the callback is always invoked no matter what // or else SSR will hang diff --git a/samples/angular/src/app/components/app-components.shared.module.ts b/samples/angular/src/app/components/app-components.shared.module.ts index 509b702be7..964a28e664 100644 --- a/samples/angular/src/app/components/app-components.shared.module.ts +++ b/samples/angular/src/app/components/app-components.shared.module.ts @@ -3,7 +3,6 @@ import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { TranslateModule } from '@ngx-translate/core'; import { RouterModule } from '@angular/router'; -import { GraphQLModule } from '../jss-graphql.module'; import { StyleguideSpecimenComponent } from './shared/styleguide-specimen/styleguide-specimen.component'; import { JssModule } from '@sitecore-jss/sitecore-jss-angular'; @@ -19,7 +18,6 @@ import { JssModule } from '@sitecore-jss/sitecore-jss-angular'; CommonModule, TranslateModule, RouterModule, - GraphQLModule, JssModule, FormsModule, ], @@ -27,7 +25,6 @@ import { JssModule } from '@sitecore-jss/sitecore-jss-angular'; CommonModule, TranslateModule, RouterModule, - GraphQLModule, FormsModule, StyleguideSpecimenComponent ], diff --git a/samples/angular/src/app/components/graph-ql-connected-demo/graph-ql-connected-demo.component.ts b/samples/angular/src/app/components/graph-ql-connected-demo/graph-ql-connected-demo.component.ts index 4715985945..79fefcbce2 100644 --- a/samples/angular/src/app/components/graph-ql-connected-demo/graph-ql-connected-demo.component.ts +++ b/samples/angular/src/app/components/graph-ql-connected-demo/graph-ql-connected-demo.component.ts @@ -2,7 +2,7 @@ import { Component, Input, OnInit } from '@angular/core'; import { ComponentRendering } from '@sitecore-jss/sitecore-jss-angular'; import { DocumentNode } from 'graphql'; import { JssGraphQLService } from '../../jss-graphql.service'; -import { ApolloQueryResult } from 'apollo-client'; +import { ApolloQueryResult } from '@apollo/client/core'; import { Observable } from 'rxjs'; // We can directly import .graphql files by specifying a Webpack loader in the require statement. diff --git a/samples/angular/src/app/components/graph-ql-integrated-demo/graph-ql-integrated-demo.component.ts b/samples/angular/src/app/components/graph-ql-integrated-demo/graph-ql-integrated-demo.component.ts index 13fcb7fb18..9121e1d327 100644 --- a/samples/angular/src/app/components/graph-ql-integrated-demo/graph-ql-integrated-demo.component.ts +++ b/samples/angular/src/app/components/graph-ql-integrated-demo/graph-ql-integrated-demo.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit, Input } from '@angular/core'; import { ComponentRendering } from '@sitecore-jss/sitecore-jss-angular'; -import { ApolloQueryResult } from 'apollo-client'; +import { ApolloQueryResult } from '@apollo/client/core'; @Component({ selector: 'app-graph-ql-integrated-demo', diff --git a/samples/angular/src/app/components/styleguide-angular-lazy-loading/styleguide-angular-lazy-loading.component.html b/samples/angular/src/app/components/styleguide-angular-lazy-loading/styleguide-angular-lazy-loading.component.html index 0f524606df..c953cef398 100644 --- a/samples/angular/src/app/components/styleguide-angular-lazy-loading/styleguide-angular-lazy-loading.component.html +++ b/samples/angular/src/app/components/styleguide-angular-lazy-loading/styleguide-angular-lazy-loading.component.html @@ -1,5 +1,5 @@

JSS can lazy-load Angular components. This removes them from the main app JS bundle, reducing its size. Lazy-loading is very good for components that are used on few routes, since they are not downloaded until used on a route. This can greatly improve initial page load times.

This works very similarly to route-based Angular lazy-loading, but for an individual component. The component has its own Angular module defined for it, and the loader is added as lazy instead.

-

To see this lazy loading working, inspect network traffic in your browser's dev tools, and look for styleguide-angular-lazy-loading-styleguide-angular-lazy-loading-module.js, which is the request that loads this component's JS.

+

To see this lazy loading working, inspect network traffic in your browser's dev tools, and look for styleguide-angular-lazy-loading-styleguide-angular-lazy-loading-module.js (in production mode, the file name will be hash value), which is the request that loads this component's JS.

diff --git a/samples/angular/src/app/jss-graphql.module.ts b/samples/angular/src/app/jss-graphql.module.ts index 18e4dfc334..22dad61b1a 100644 --- a/samples/angular/src/app/jss-graphql.module.ts +++ b/samples/angular/src/app/jss-graphql.module.ts @@ -1,13 +1,14 @@ import { NgModule, PLATFORM_ID, Inject } from '@angular/core'; import { HttpClientModule } from '@angular/common/http'; -import { ApolloModule, Apollo } from 'apollo-angular'; -import { HttpBatchLinkModule, HttpBatchLink } from 'apollo-angular-link-http-batch'; -import { createPersistedQueryLink } from 'apollo-angular-link-persisted'; -import { IntrospectionFragmentMatcher, InMemoryCache } from 'apollo-cache-inmemory'; -import { environment } from '../environments/environment'; -import { JssGraphQLService } from './jss-graphql.service'; +import { InMemoryCache } from '@apollo/client/core'; +import { Apollo } from 'apollo-angular'; +import { HttpBatchLink } from 'apollo-angular/http'; +import { createPersistedQueryLink } from 'apollo-angular/persisted-queries'; import { isPlatformServer } from '@angular/common'; import { TransferState, makeStateKey } from '@angular/platform-browser'; +import { sha256 } from 'js-sha256'; +import { environment } from '../environments/environment'; +import { JssGraphQLService } from './jss-graphql.service'; /* INTROSPECTION DATA @@ -17,7 +18,6 @@ import { TransferState, makeStateKey } from '@angular/platform-browser'; */ import introspectionQueryResultData from '../graphql-fragment-types'; - // SSR transfer state key to serialize + rehydrate apollo cache on client side // See https://www.apollographql.com/docs/angular/recipes/server-side-rendering.html const STATE_KEY = makeStateKey('apollo.state'); @@ -25,19 +25,15 @@ const STATE_KEY = makeStateKey('apollo.state'); @NgModule({ imports: [ HttpClientModule, // provides HttpClient for HttpLink - ApolloModule, - HttpBatchLinkModule, ], - providers: [ - JssGraphQLService - ] + providers: [JssGraphQLService], }) export class GraphQLModule { constructor( private readonly apollo: Apollo, private readonly httpLink: HttpBatchLink, private readonly transferState: TransferState, - @Inject(PLATFORM_ID) private readonly platformId: string, + @Inject(PLATFORM_ID) private readonly platformId: string ) { this.createApolloClient(); } @@ -68,17 +64,24 @@ export class GraphQLModule { // const link = createHttpLink({ uri: endpoint, withCredentials: 'include' }); // ...or a batched link (multiple queries within 10ms all go in one HTTP request) - const batchHttp = this.httpLink.create({ uri: environment.graphQLEndpoint, withCredentials: true }); + const batchHttp = this.httpLink.create({ + uri: environment.graphQLEndpoint, + withCredentials: true, + }); // ...and an automatic persisted query link, which reduces bandwidth by using query hashes to alias content // the APQ link is _chained_ behind another link that performs the actual HTTP calls, so you can choose // APQ + batched, or APQ + http links for example. - const automaticPersistHttp = createPersistedQueryLink().concat(batchHttp); + const automaticPersistHttp = createPersistedQueryLink({ sha256 }).concat(batchHttp); + + const possibleTypes = {}; + + introspectionQueryResultData.__schema.types.forEach((supertype) => { + possibleTypes[supertype.name] = supertype.possibleTypes.map((subtype) => subtype.name); + }); const cache = new InMemoryCache({ - fragmentMatcher: new IntrospectionFragmentMatcher({ - introspectionQueryResultData, - }), + possibleTypes, }); this.apollo.create({ diff --git a/samples/angular/src/app/jss-graphql.service.ts b/samples/angular/src/app/jss-graphql.service.ts index 48738637f7..167b24270f 100644 --- a/samples/angular/src/app/jss-graphql.service.ts +++ b/samples/angular/src/app/jss-graphql.service.ts @@ -1,10 +1,16 @@ import { Injectable, PLATFORM_ID, Inject, } from '@angular/core'; import { Apollo } from 'apollo-angular'; -import { ExtraSubscriptionOptions, R } from 'apollo-angular/types'; -import { QueryOptions, ApolloQueryResult, SubscriptionOptions, MutationOptions } from 'apollo-client'; +import { ExtraSubscriptionOptions, EmptyObject } from 'apollo-angular/types'; +import { + QueryOptions, + ApolloQueryResult, + SubscriptionOptions, + MutationOptions, + FetchResult, + DocumentNode +} from '@apollo/client/core'; import { Observable, empty } from 'rxjs'; import { first } from 'rxjs/operators'; -import { FetchResult, DocumentNode } from 'apollo-link'; import { ComponentRendering, isExperienceEditorActive, resetExperienceEditorChromes } from '@sitecore-jss/sitecore-jss-angular'; import { JssContextService } from './jss-context.service'; import { ExecutableDefinitionNode } from 'graphql'; @@ -60,7 +66,7 @@ export class JssGraphQLService { /** * Executes a read query against the GraphQL endpoint */ - query(options: QueryOptions & JssGraphQLOptions): Observable> { + query(options: QueryOptions & JssGraphQLOptions): Observable> { if (this.isEditingOrPreviewingAndSsr) { return empty(); } @@ -86,7 +92,7 @@ export class JssGraphQLService { /** * Executes a GraphQL mutation (write) against the GraphQL endpoint */ - mutate(options: MutationOptions & JssGraphQLOptions): Observable> { + mutate(options: MutationOptions & JssGraphQLOptions): Observable> { if (this.isEditingOrPreviewingAndSsr) { return empty(); } @@ -99,7 +105,7 @@ export class JssGraphQLService { /** * Executes a GraphQL subscription (real-time data) against the GraphQL endpoint */ - subscribe(options: SubscriptionOptions & JssGraphQLOptions, extra?: ExtraSubscriptionOptions): Observable { + subscribe(options: SubscriptionOptions & JssGraphQLOptions, extra?: ExtraSubscriptionOptions): Observable { if (this.isEditingOrPreviewingAndSsr) { return empty(); } @@ -109,7 +115,7 @@ export class JssGraphQLService { return this.apollo.subscribe(options, extra); } - private addJssAmbientVariables(query: DocumentNode, variables: V, rendering?: ComponentRendering) { + private addJssAmbientVariables(query: DocumentNode, variables: V, rendering?: ComponentRendering) { if (!variables) { variables = {} as V; } diff --git a/samples/angular/src/app/routing/navigation/navigation.component.html b/samples/angular/src/app/routing/navigation/navigation.component.html index 68b29583ae..890e0ea8e2 100644 --- a/samples/angular/src/app/routing/navigation/navigation.component.html +++ b/samples/angular/src/app/routing/navigation/navigation.component.html @@ -5,7 +5,7 @@