You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by sa...@apache.org on 2019/11/06 21:28:57 UTC
[atlas] 01/09: ATLAS-3386 : Atlas documentation website with new
template
This is an automated email from the ASF dual-hosted git repository.
sarath pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git
commit 897bc84d425cea1d85ce468a54b10fa512a57fce
Author: kevalbhatt <kb...@apache.org>
AuthorDate: Tue Sep 17 17:32:31 2019 +0530
ATLAS-3386 : Atlas documentation website with new template
Signed-off-by: nixonrodrigues <ni...@apache.org>
(cherry picked from commit f31db4c397ea035259a21666551a381ef747ba1d)
---
docs/.gitignore | 24 +
docs/docz-lib/config/aliases.js | 3 +
docs/docz-lib/config/menu.js | 103 +
docs/docz-lib/config/versions.js | 39 +
docs/docz-lib/docz-core/dist/bundler/build.d.ts | 2 +
docs/docz-lib/docz-core/dist/bundler/config.d.ts | 4 +
.../docz-lib/docz-core/dist/bundler/devserver.d.ts | 25 +
docs/docz-lib/docz-core/dist/bundler/index.d.ts | 4 +
docs/docz-lib/docz-core/dist/bundler/loaders.d.ts | 17 +
docs/docz-lib/docz-core/dist/bundler/minifier.d.ts | 3 +
docs/docz-lib/docz-core/dist/bundler/plugins.d.ts | 11 +
docs/docz-lib/docz-core/dist/bundler/server.d.ts | 6 +
docs/docz-lib/docz-core/dist/cli.d.ts | 5 +
docs/docz-lib/docz-core/dist/commands/build.d.ts | 1 +
docs/docz-lib/docz-core/dist/commands/dev.d.ts | 1 +
docs/docz-lib/docz-core/dist/commands/index.d.ts | 3 +
docs/docz-lib/docz-core/dist/commands/serve.d.ts | 1 +
docs/docz-lib/docz-core/dist/config/argv.d.ts | 128 +
docs/docz-lib/docz-core/dist/config/babel.d.ts | 8 +
docs/docz-lib/docz-core/dist/config/docz.d.ts | 22 +
docs/docz-lib/docz-core/dist/config/env.d.ts | 10 +
docs/docz-lib/docz-core/dist/config/paths.d.ts | 43 +
docs/docz-lib/docz-core/dist/index.d.ts | 14 +
docs/docz-lib/docz-core/dist/index.esm.js | 2008 ++++
docs/docz-lib/docz-core/dist/index.js | 2024 ++++
docs/docz-lib/docz-core/dist/lib/Bundler.d.ts | 35 +
docs/docz-lib/docz-core/dist/lib/DataServer.d.ts | 28 +
docs/docz-lib/docz-core/dist/lib/Entries.d.ts | 13 +
docs/docz-lib/docz-core/dist/lib/Entry.d.ts | 33 +
docs/docz-lib/docz-core/dist/lib/Plugin.d.ts | 49 +
docs/docz-lib/docz-core/dist/lib/Socket.d.ts | 8 +
docs/docz-lib/docz-core/dist/states/config.d.ts | 3 +
docs/docz-lib/docz-core/dist/states/entries.d.ts | 4 +
docs/docz-lib/docz-core/dist/states/index.d.ts | 3 +
docs/docz-lib/docz-core/dist/states/props.d.ts | 3 +
.../docz-core/dist/templates/imports.tpl.js | 4 +
.../docz-core/dist/templates/index.tpl.html | 15 +
.../docz-lib/docz-core/dist/templates/index.tpl.js | 17 +
docs/docz-lib/docz-core/dist/templates/root.tpl.js | 24 +
.../docz-core/dist/utils/docgen/index.d.ts | 2 +
.../docz-core/dist/utils/docgen/javascript.d.ts | 5 +
.../docz-core/dist/utils/docgen/typescript.d.ts | 6 +
docs/docz-lib/docz-core/dist/utils/on-signal.d.ts | 1 +
.../docz-core/dist/utils/open-browser.d.ts | 11 +
docs/docz-lib/docz-core/dist/utils/parse-html.d.ts | 11 +
docs/docz-lib/docz-core/dist/utils/repo-info.d.ts | 3 +
docs/docz-lib/docz/bin/index.js | 2 +
docs/docz-lib/docz/dist/Playground.esm.js | 42 +
docs/docz-lib/docz/dist/Playground.js | 44 +
docs/docz-lib/docz/dist/chunk.esm.js | 311 +
docs/docz-lib/docz/dist/chunk.js | 324 +
.../docz/dist/components/AsyncComponent.d.ts | 7 +
.../docz/dist/components/AsyncPlayground.d.ts | 2 +
docs/docz-lib/docz/dist/components/AsyncRoute.d.ts | 13 +
docs/docz-lib/docz/dist/components/Link.d.ts | 4 +
docs/docz-lib/docz/dist/components/Playground.d.ts | 13 +
docs/docz-lib/docz/dist/components/Props.d.ts | 65 +
docs/docz-lib/docz/dist/components/Routes.d.ts | 8 +
docs/docz-lib/docz/dist/hooks/index.d.ts | 7 +
docs/docz-lib/docz/dist/hooks/useComponents.d.ts | 44 +
docs/docz-lib/docz/dist/hooks/useConfig.d.ts | 7 +
docs/docz-lib/docz/dist/hooks/useDataServer.d.ts | 1 +
docs/docz-lib/docz/dist/hooks/useDocs.d.ts | 2 +
docs/docz-lib/docz/dist/hooks/useMenus.d.ts | 8 +
docs/docz-lib/docz/dist/hooks/usePrevious.d.ts | 1 +
docs/docz-lib/docz/dist/hooks/useWindowSize.d.ts | 6 +
docs/docz-lib/docz/dist/index.d.ts | 8 +
docs/docz-lib/docz/dist/index.esm.js | 302 +
docs/docz-lib/docz/dist/index.js | 321 +
docs/docz-lib/docz/dist/state.d.ts | 59 +
docs/docz-lib/docz/dist/theme.d.ts | 10 +
docs/docz-lib/docz/dist/utils/createState.d.ts | 13 +
docs/docz-lib/docz/dist/utils/helpers.d.ts | 3 +
docs/docz-lib/docz/dist/utils/humanize-prop.d.ts | 2 +
docs/doczrc.js | 51 +
docs/package-lock.json | 11891 +++++++++++++++++++
docs/package.json | 39 +
docs/pom.xml | 104 +-
docs/src/documents/Asf/asfinfo.md | 17 +
docs/src/documents/ClassificationPropagation.md | 94 +
docs/src/documents/Downloads/Downloads.md | 187 +
docs/src/{site/markdown => documents}/Glossary.md | 154 +-
.../HighAvailability.md} | 167 +-
.../HighLevelArchitecture.md} | 55 +-
.../Hook/Hook-Falcon.md} | 48 +-
.../Hook/Hook-HBase.md} | 72 +-
.../Hook/Hook-Hive.md} | 114 +-
docs/src/documents/Hook/Hook-Kafka.md | 50 +
.../Hook/Hook-Sqoop.md} | 60 +-
.../Hook/Hook-Storm.md} | 53 +-
.../Import-Export/Export-API.md} | 96 +-
.../src/documents/Import-Export/Export-HDFS-API.md | 52 +
.../Import-Export}/ExportImportAudits.md | 38 +-
.../Import-Export/Import-API-Options.md} | 102 +-
.../Import-Export/Import-API.md} | 94 +-
.../documents/Import-Export/Import-Export-API.md | 56 +
.../Import-Export}/ImportEntityTransforms.md | 67 +-
.../Import-Export}/Incremental-Export.md | 19 +-
.../index.twiki => documents/Introduction.md} | 75 +-
.../Migration/Migration-0.8-to-1.0.md} | 99 +-
.../markdown => documents/Misc}/AtlasServer.md | 70 +-
.../Misc/ReplicatedAttributes.md} | 7 +-
docs/src/documents/Misc/SoftReference.md | 40 +
docs/src/documents/Notifications.md | 87 +
docs/src/documents/Project-Info/Mailing-Lists.md | 18 +
docs/src/documents/Project-Info/issue-tracking.md | 23 +
docs/src/documents/Project-Info/project-info.md | 22 +
docs/src/documents/Project-Info/project-license.md | 279 +
.../documents/Project-Info/source-repository.md | 33 +
docs/src/documents/Project-Info/team-list.md | 19 +
docs/src/documents/RestAPI.md | 13 +
.../Search/Search-Advanced.md} | 334 +-
.../Search/Search-Basic.md} | 98 +-
.../documents/Security/AtlasRangerAuthorizer.md | 83 +
.../Security/AtlasSimpleAuthorizer.md} | 63 +-
docs/src/documents/Security/Authentication.md | 155 +
.../Security/AuthorizationModel.md} | 71 +-
docs/src/documents/Security/security.md | 278 +
docs/src/documents/Setup/BuildInstruction.md | 81 +
.../Setup/Configuration.md} | 193 +-
.../Setup/EclipseSetup.md} | 63 +-
.../src/documents/Setup/InstallationInstruction.md | 327 +
.../Setup/QuickStart.md} | 26 +-
docs/src/documents/Tools/AtlasRepairIndex.md | 78 +
.../TypeSystem.twiki => documents/TypeSystem.md} | 122 +-
.../Whats-New}/WhatsNew-1.0.md | 33 +-
.../Whats-New}/WhatsNew-2.0.md | 49 +-
.../resources/images/accessories-text-editor.png | Bin
.../resources/images/application-certificate.png | Bin
docs/src/resources/images/atlas-logo-grey.png | Bin 0 -> 4935 bytes
.../src/{site => }/resources/images/atlas-logo.png | Bin
.../resources/images/column_lineage_ex1.png | Bin
.../{site => }/resources/images/contact-new.png | Bin
.../resources/images/document-properties.png | Bin
.../{site => }/resources/images/drive-harddisk.png | Bin
.../resources/images/image-x-generic.png | Bin
.../resources/images/internet-web-browser.png | Bin
.../resources/images/logos/maven-feather.png | Bin
.../markdown/atlas-server-exp-imp-audits.png | Bin
.../images/markdown/atlas-server-properties.png | Bin
.../images/markdown/category_add_term.png | Bin
.../images/markdown/category_add_term_1.png | Bin
.../images/markdown/category_add_term_2.png | Bin
.../markdown/category_details_with_terms.png | Bin
.../resources/images/markdown/category_view_1.png | Bin
.../resources/images/markdown/category_view_2.png | Bin
.../markdown/category_view_category_context.png | Bin
.../markdown/category_view_category_context_1.png | Bin
.../markdown/category_view_glossary_context.png | Bin
.../images/markdown/entity_add_term_modal.png | Bin
.../markdown/entity_assigned_term_with_tag.png | Bin
.../images/markdown/entity_details_add_term.png | Bin
.../images/markdown/entity_search_add_term.png | Bin
.../images/markdown/term_add_category.png | Bin
.../images/markdown/term_add_classification_1.png | Bin
.../images/markdown/term_add_classification_2.png | Bin
.../images/markdown/term_delete_context.png | Bin
.../resources/images/markdown/term_details.png | Bin
.../markdown/term_details_with_classification.png | Bin
.../images/markdown/term_related_term_1.png | Bin
.../resources/images/markdown/term_search.png | Bin
.../images/markdown/term_view_context.png | Bin
.../images/markdown/term_with_classification.png | Bin
.../images/markdown/terms_related_terms.png | Bin
.../resources/images/markdown/terms_view.png | Bin
.../{site => }/resources/images/network-server.png | Bin
.../resources/images/package-x-generic.png | Bin
.../resources/images/twiki/architecture.png | Bin
.../images/twiki/classification-propagation-1.png | Bin
.../images/twiki/classification-propagation-2.png | Bin
.../images/twiki/classification-propagation-3.png | Bin
.../images/twiki/classification-propagation-4.png | Bin
.../images/twiki/classification-propagation-5.png | Bin
.../images/twiki/classification-propagation-6.png | Bin
.../images/twiki/classification-propagation-7.png | Bin
.../images/twiki/classification-propagation-8.png | Bin
.../classification-propagation-entity-delete-1.png | Bin
.../classification-propagation-entity-delete-2.png | Bin
.../classification-propagation-entity-delete-3.png | Bin
.../classification-propagation-entity-delete-4.png | Bin
.../resources/images/twiki/guide-class-diagram.png | Bin
.../images/twiki/guide-instance-graph.png | Bin
.../resources/images/twiki/ranger-audit.png | Bin
.../resources/images/twiki/ranger-policy-admin.png | Bin
.../images/twiki/ranger-policy-entities.png | Bin
.../resources/images/twiki/ranger-policy-types.png | Bin
.../images/twiki/search-basic-hive_column-PII.png | Bin
...arch-basic-hive_table-customers-or-provider.png | Bin
...ch-basic-hive_table-customers-owner_is_hive.png | Bin
.../twiki/search-basic-hive_table-customers.png | Bin
.../src/{site => }/resources/images/window-new.png | Bin
docs/src/site/markdown/AtlasRepairIndex.md | 59 -
docs/src/site/markdown/SoftReference.md | 31 -
docs/src/site/twiki/Atlas-Authentication.twiki | 141 -
.../Atlas-Authorization-Ranger-Authorizer.twiki | 63 -
docs/src/site/twiki/Bridge-Kafka.twiki | 37 -
.../src/site/twiki/ClassificationPropagation.twiki | 108 -
docs/src/site/twiki/Export-HDFS-API.twiki | 81 -
docs/src/site/twiki/Import-Export-API.twiki | 43 -
docs/src/site/twiki/InstallationSteps.twiki | 348 -
docs/src/site/twiki/LICENSE.txt | 3 -
docs/src/site/twiki/Notifications.twiki | 73 -
docs/src/site/twiki/security.twiki | 263 -
.../components/shared/Header/GithubLink/index.js | 64 +
.../shared/Header/HeaderDropDown/Basic.js | 69 +
.../shared/Header/HeaderDropDown/index.js | 46 +
docs/theme/components/shared/Header/index.js | 46 +
docs/theme/components/shared/Img/index.js | 37 +
docs/theme/components/shared/LegalFooter/index.js | 89 +
docs/theme/components/shared/Logo/index.js | 96 +
docs/theme/components/shared/Main/index.js | 23 +
docs/theme/components/shared/Search/index.js | 71 +
docs/theme/components/shared/Sidebar/Docz.js | 27 +
docs/theme/components/shared/Sidebar/Hamburger.js | 135 +
docs/theme/components/shared/Sidebar/Menu.js | 127 +
.../components/shared/Sidebar/MenuHeadings.js | 51 +
docs/theme/components/shared/Sidebar/MenuLink.js | 191 +
docs/theme/components/shared/Sidebar/SmallLink.js | 90 +
docs/theme/components/shared/Sidebar/SubMenu.js | 137 +
docs/theme/components/shared/Sidebar/index.js | 478 +
docs/theme/components/shared/TeamList/index.js | 140 +
docs/theme/components/shared/common/CustomLink.js | 30 +
docs/theme/components/shared/index.js | 21 +
docs/theme/components/ui/Blockquote.js | 32 +
docs/theme/components/ui/Button.js | 31 +
docs/theme/components/ui/CodeMirror/index.js | 150 +
.../theme/components/ui/CodeMirror/ps-scrollbar.js | 115 +
docs/theme/components/ui/CodeMirror/themes/dark.js | 151 +
.../theme/components/ui/CodeMirror/themes/index.js | 20 +
.../theme/components/ui/CodeMirror/themes/light.js | 125 +
docs/theme/components/ui/InlineCode.js | 26 +
docs/theme/components/ui/Link.js | 70 +
docs/theme/components/ui/Loading.js | 108 +
docs/theme/components/ui/NotFound.js | 58 +
docs/theme/components/ui/OrderedList.js | 39 +
docs/theme/components/ui/Page.js | 106 +
docs/theme/components/ui/Paragraph.js | 25 +
docs/theme/components/ui/Pre.js | 25 +
docs/theme/components/ui/Props/PropsRaw.js | 116 +
docs/theme/components/ui/Props/PropsTable.js | 157 +
docs/theme/components/ui/Props/index.js | 90 +
docs/theme/components/ui/Table.js | 111 +
docs/theme/components/ui/UnorderedList.js | 38 +
docs/theme/components/ui/index.js | 45 +
docs/theme/config.js | 31 +
docs/theme/index.js | 55 +
docs/theme/styles/colors.js | 34 +
docs/theme/styles/fonts.js | 32 +
docs/theme/styles/global.js | 47 +
docs/theme/styles/index.js | 105 +
docs/theme/styles/modes.js | 73 +
docs/theme/styles/responsive.js | 32 +
docs/theme/styles/styled-colors.js | 23 +
docs/theme/utils/hotkeys.js | 30 +
docs/theme/utils/storage.js | 80 +
docs/theme/utils/theme.js | 35 +
docs/theme/utils/utils.js | 33 +
pom.xml | 5 +
258 files changed, 26045 insertions(+), 2361 deletions(-)
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 0000000..9cd933f
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,24 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.DS_Store
+.bower-*/
+.idea/
+node_modules/
+.docz
+target/
+*.log
+*.tgz
diff --git a/docs/docz-lib/config/aliases.js b/docs/docz-lib/config/aliases.js
new file mode 100644
index 0000000..e7e49eb
--- /dev/null
+++ b/docs/docz-lib/config/aliases.js
@@ -0,0 +1,3 @@
+export default {
+ '~docz-theme-component': '../node_modules/theme/dist/components/ui/index.ts'
+}
\ No newline at end of file
diff --git a/docs/docz-lib/config/menu.js b/docs/docz-lib/config/menu.js
new file mode 100644
index 0000000..13fe4a0
--- /dev/null
+++ b/docs/docz-lib/config/menu.js
@@ -0,0 +1,103 @@
+export default [
+ "Introduction",
+ {
+ name: "Documentation",
+ menu: [
+ {
+ name: "Features",
+ menu: [
+ "High Level Architecture",
+ "Type System",
+ "Glossary",
+ "Classification Propagation",
+ "Notifications",
+ "High Availability"
+ ]
+ },
+ {
+ name: "Search",
+ menu: [
+ "Basic Search",
+ "Advance Search"
+ ]
+ },
+ {
+ name: "Hooks",
+ menu: [
+ "HBase",
+ "Hive",
+ "Sqoop",
+ "Storm",
+ "Kafka",
+ "Falcon"
+ ]
+ },
+ {
+ name: "Import/Export",
+ menu: [
+ "Import API",
+ "Import API Options",
+ "Import Entity Transforms",
+ "Import Export API",
+ "Export API",
+ "Export HDFS API",
+ "Export Import Audits",
+ "Incremental Export"
+ ]
+ },
+ {
+ name: "Security",
+ menu: [
+ "Security Details",
+ "Authentication",
+ "Authorization Model",
+ "Atlas Simple Authorizer",
+ "Atlas Ranger Authorizer"
+ ]
+ },
+ {
+ name: "Setup",
+ menu: [
+ "Quick Start",
+ "Configuration",
+ "Build Instruction",
+ "Installation Instruction"
+ ]
+ },
+ "REST API",
+ {
+ name: "Tools",
+ menu: [
+ "Atlas Repair Index"
+ ]
+ },
+ {
+ name: "Misc",
+ menu: [
+ "Atlas Server",
+ "Replicated Attributes",
+ "Soft Reference"
+ ]
+ }
+ ]
+ }, {
+ name: "Downloads",
+ menu: [
+ "Download",
+ {
+ name: "Whats New",
+ menu: ["WhatsNew-2.0", "WhatsNew-1.0"]
+ },
+ "Migration"
+ ]
+ } ,"For Developers",
+ {
+ name: "Project Info", menu: [
+ "Project Information",
+ "Mailing Lists",
+ "Team List",
+ "Issue Tracking",
+ "License",
+ "Source Repository"
+ ]
+ }, "ASF" ];
diff --git a/docs/docz-lib/config/versions.js b/docs/docz-lib/config/versions.js
new file mode 100644
index 0000000..6c86283
--- /dev/null
+++ b/docs/docz-lib/config/versions.js
@@ -0,0 +1,39 @@
+export default [
+ { id: 1, href: "/Doc-test/", title: "Latest", label: "Latest" },
+ { id: 2, href: "/2.0.0/index.html", title: "2.0.0", label: "2.0.0" },
+ { id: 4, href: "/1.1.0/index.html", title: "1.1.0", label: "1.1.0" },
+ { id: 5, href: "/1.0.0/index.html", title: "1.0.0", label: "1.0.0" },
+ { id: 7, href: "/0.8.3/index.html", title: "0.8.3", label: "0.8.3" },
+ { id: 8, href: "/0.8.2/index.html", title: "0.8.2", label: "0.8.2" },
+ { id: 9, href: "/0.8.1/index.html", title: "0.8.1", label: "0.8.1" },
+ {
+ id: 10,
+ href: "/0.8.0-incubating/index.html",
+ title: "0.8-incubating",
+ label: "0.8-incubating"
+ },
+ {
+ id: 11,
+ href: "/0.7.1-incubating/index.html",
+ title: "0.7.1-incubating",
+ label: "0.7.1-incubating"
+ },
+ {
+ id: 12,
+ href: "/0.7.0-incubating/index.html",
+ title: "0.7-incubating",
+ label: "0.7-incubating"
+ },
+ {
+ id: 13,
+ href: "/0.6.0-incubating/index.html",
+ title: "0.6-incubating",
+ label: "0.6-incubating"
+ },
+ {
+ id: 14,
+ href: "/0.5.0-incubating/index.html",
+ title: "0.5-incubating",
+ label: "0.5-incubating"
+ }
+];
diff --git a/docs/docz-lib/docz-core/dist/bundler/build.d.ts b/docs/docz-lib/docz-core/dist/bundler/build.d.ts
new file mode 100644
index 0000000..2d42a3b
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/bundler/build.d.ts
@@ -0,0 +1,2 @@
+import webpack from 'webpack';
+export declare const build: (config: webpack.Configuration, dist: string, publicDir: string) => Promise<void>;
diff --git a/docs/docz-lib/docz-core/dist/bundler/config.d.ts b/docs/docz-lib/docz-core/dist/bundler/config.d.ts
new file mode 100644
index 0000000..d5f2307
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/bundler/config.d.ts
@@ -0,0 +1,4 @@
+import { Configuration } from 'webpack';
+import { ServerHooks as Hooks } from '../lib/Bundler';
+import { Config as Args, Env } from '../config/argv';
+export declare const createConfig: (args: Args, env: Env) => (hooks: Hooks) => Promise<Configuration>;
diff --git a/docs/docz-lib/docz-core/dist/bundler/devserver.d.ts b/docs/docz-lib/docz-core/dist/bundler/devserver.d.ts
new file mode 100644
index 0000000..eccf794
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/bundler/devserver.d.ts
@@ -0,0 +1,25 @@
+import { Config as Args } from '../config/argv';
+import { ServerHooks } from '../lib/Bundler';
+export declare const devServerConfig: (hooks: ServerHooks, args: Args) => {
+ publicPath: string;
+ compress: boolean;
+ logLevel: string;
+ clientLogLevel: string;
+ contentBase: string[];
+ watchContentBase: boolean;
+ hot: boolean;
+ quiet: boolean;
+ open: boolean;
+ watchOptions: {
+ ignored: any;
+ };
+ overlay: boolean;
+ host: string;
+ port: number;
+ historyApiFallback: {
+ disableDotRule: boolean;
+ };
+ disableHostCheck: boolean;
+ before(app: any, server: any): void;
+ after(app: any): void;
+};
diff --git a/docs/docz-lib/docz-core/dist/bundler/index.d.ts b/docs/docz-lib/docz-core/dist/bundler/index.d.ts
new file mode 100644
index 0000000..243ebec
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/bundler/index.d.ts
@@ -0,0 +1,4 @@
+import { Configuration as CFG } from 'webpack';
+import { Bundler } from '../lib/Bundler';
+import { Config as Args, Env } from '../config/argv';
+export declare const bundler: (args: Args, env: Env) => Bundler<CFG>;
diff --git a/docs/docz-lib/docz-core/dist/bundler/loaders.d.ts b/docs/docz-lib/docz-core/dist/bundler/loaders.d.ts
new file mode 100644
index 0000000..d8c5bce
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/bundler/loaders.d.ts
@@ -0,0 +1,17 @@
+import Config from 'webpack-chain';
+import { Config as Args } from '../config/argv';
+import { BabelRC } from '../config/babel';
+export declare const sourceMaps: (config: Config, args: Args) => void;
+export interface AddScriptLoaderOpts {
+ threadLoader?: boolean;
+ rule: Config.Rule;
+ babelrc: BabelRC;
+ args: Args;
+}
+export declare const js: (config: Config, args: Args, babelrc: BabelRC) => void;
+export declare const ts: (config: Config, args: Args, babelrc: BabelRC) => void;
+export declare const mdx: (config: Config, args: Args, babelrc: BabelRC) => void;
+export declare const images: (config: Config) => void;
+export declare const svg: (config: Config) => void;
+export declare const media: (config: Config) => void;
+export declare const fonts: (config: Config) => void;
diff --git a/docs/docz-lib/docz-core/dist/bundler/minifier.d.ts b/docs/docz-lib/docz-core/dist/bundler/minifier.d.ts
new file mode 100644
index 0000000..3cbf010
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/bundler/minifier.d.ts
@@ -0,0 +1,3 @@
+import Config from 'webpack-chain';
+import { Config as Args } from '../config/argv';
+export declare const minifier: (config: Config, args: Args) => void;
diff --git a/docs/docz-lib/docz-core/dist/bundler/plugins.d.ts b/docs/docz-lib/docz-core/dist/bundler/plugins.d.ts
new file mode 100644
index 0000000..f931cb8
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/bundler/plugins.d.ts
@@ -0,0 +1,11 @@
+import Config from 'webpack-chain';
+import { Config as Args, Env } from '../config/argv';
+export declare const assets: (config: Config, args: Args, env: Env) => void;
+export declare const analyzer: (config: Config) => void;
+export declare const injections: (config: Config, args: Args, env: Env) => void;
+export declare const ignore: (config: Config) => void;
+export declare const hot: (config: Config) => void;
+export declare const html: (config: Config, args: Args, env: Env) => Promise<void>;
+export declare const webpackBar: (config: Config, args: Args) => void;
+export declare const watchNodeModulesPlugin: (config: Config) => void;
+export declare const notFoundPlugin: (config: Config) => void;
diff --git a/docs/docz-lib/docz-core/dist/bundler/server.d.ts b/docs/docz-lib/docz-core/dist/bundler/server.d.ts
new file mode 100644
index 0000000..3642ce2
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/bundler/server.d.ts
@@ -0,0 +1,6 @@
+import webpack from 'webpack';
+import { Config as Args } from '../config/argv';
+import { ServerHooks as Hooks } from '../lib/Bundler';
+export declare const server: (args: Args) => (config: webpack.Configuration, hooks: Hooks) => Promise<{
+ start: () => Promise<any>;
+}>;
diff --git a/docs/docz-lib/docz-core/dist/cli.d.ts b/docs/docz-lib/docz-core/dist/cli.d.ts
new file mode 100644
index 0000000..2da5a6c
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/cli.d.ts
@@ -0,0 +1,5 @@
+export declare const cli: () => {
+ [x: string]: unknown;
+ _: string[];
+ $0: string;
+};
diff --git a/docs/docz-lib/docz-core/dist/commands/build.d.ts b/docs/docz-lib/docz-core/dist/commands/build.d.ts
new file mode 100644
index 0000000..60ed76b
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/commands/build.d.ts
@@ -0,0 +1 @@
+export declare const build: (args: any) => Promise<void>;
diff --git a/docs/docz-lib/docz-core/dist/commands/dev.d.ts b/docs/docz-lib/docz-core/dist/commands/dev.d.ts
new file mode 100644
index 0000000..83c9fc6
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/commands/dev.d.ts
@@ -0,0 +1 @@
+export declare const dev: (args: any) => Promise<void>;
diff --git a/docs/docz-lib/docz-core/dist/commands/index.d.ts b/docs/docz-lib/docz-core/dist/commands/index.d.ts
new file mode 100644
index 0000000..ed3e4e4
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/commands/index.d.ts
@@ -0,0 +1,3 @@
+export { dev } from './dev';
+export { build } from './build';
+export { serve } from './serve';
diff --git a/docs/docz-lib/docz-core/dist/commands/serve.d.ts b/docs/docz-lib/docz-core/dist/commands/serve.d.ts
new file mode 100644
index 0000000..a588871
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/commands/serve.d.ts
@@ -0,0 +1 @@
+export declare const serve: (args: any) => Promise<void>;
diff --git a/docs/docz-lib/docz-core/dist/config/argv.d.ts b/docs/docz-lib/docz-core/dist/config/argv.d.ts
new file mode 100644
index 0000000..5cce012
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/config/argv.d.ts
@@ -0,0 +1,128 @@
+import { Argv as Yargs } from 'yargs';
+import { Plugin } from '../lib/Plugin';
+import { BabelRC } from '../config/babel';
+export declare type Env = 'production' | 'development';
+export declare type ThemeConfig = Record<string, any>;
+export interface DocgenConfig {
+ handlers?: any[];
+ resolver?: (ast: any, recast: any) => any;
+ propFilter?: (prop: any) => boolean;
+ searchPath: string;
+}
+export interface Menu {
+ name: string;
+ route?: string;
+ href?: string;
+ menu?: Menu[];
+}
+export interface HtmlContext {
+ lang: string;
+ favicon?: string;
+ head?: {
+ meta: any[];
+ links: any[];
+ raw: string;
+ scripts: any[];
+ };
+ body?: {
+ raw: string;
+ scripts: any[];
+ };
+}
+export interface Argv {
+ base: string;
+ src: string;
+ files: string | string[];
+ ignore: string[];
+ watchIgnore: string;
+ public: string;
+ dest: string;
+ editBranch: string;
+ config: string;
+ debug: boolean;
+ clearConsole: boolean;
+ typescript: boolean;
+ propsParser: boolean;
+ host: string;
+ port: number;
+ websocketPort: number;
+ websocketHost: string;
+ native: boolean;
+ codeSandbox: boolean;
+ sourcemaps: boolean;
+ notUseSpecifiers: boolean;
+ title: string;
+ description: string;
+ theme: string;
+ wrapper?: string;
+ indexHtml?: string;
+ /** slugify separator */
+ separator: string;
+}
+export interface Config extends Argv {
+ paths: Record<string, any>;
+ plugins: Plugin[];
+ mdPlugins: any[];
+ hastPlugins: any[];
+ menu: Menu[];
+ htmlContext: HtmlContext;
+ themeConfig: ThemeConfig;
+ docgenConfig: DocgenConfig;
+ filterComponents: (files: string[]) => string[];
+ modifyBundlerConfig<C>(config: C, dev: boolean, args: Config): C;
+ modifyBabelRc(babelrc: BabelRC, args: Config): BabelRC;
+ onCreateWebpackChain<C>(c: C, dev: boolean, args: Config): void;
+}
+export declare const setArgs: (yargs: Yargs<{}>) => Yargs<{
+ base: any;
+} & {
+ source: any;
+} & {
+ files: any;
+} & {
+ ignore: any;
+} & {
+ public: any;
+} & {
+ dest: any;
+} & {
+ editBranch: any;
+} & {
+ config: any;
+} & {
+ title: any;
+} & {
+ description: any;
+} & {
+ theme: any;
+} & {
+ typescript: any;
+} & {
+ propsParser: any;
+} & {
+ wrapper: any;
+} & {
+ indexHtml: any;
+} & {
+ debug: any;
+} & {
+ clearConsole: any;
+} & {
+ host: any;
+} & {
+ port: any;
+} & {
+ websocketHost: any;
+} & {
+ websocketPort: any;
+} & {
+ native: any;
+} & {
+ codeSandbox: any;
+} & {
+ sourcemaps: any;
+} & {
+ separator: any;
+} & {
+ open: boolean;
+}>;
diff --git a/docs/docz-lib/docz-core/dist/config/babel.d.ts b/docs/docz-lib/docz-core/dist/config/babel.d.ts
new file mode 100644
index 0000000..09f2ba2
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/config/babel.d.ts
@@ -0,0 +1,8 @@
+import { Config, Env } from '../config/argv';
+export interface BabelRC {
+ presets: any[];
+ plugins: any[];
+ cacheDirectory?: boolean;
+ babelrc?: boolean;
+}
+export declare const getBabelConfig: (args: Config, env: Env, typescript?: boolean | undefined) => Promise<BabelRC>;
diff --git a/docs/docz-lib/docz-core/dist/config/docz.d.ts b/docs/docz-lib/docz-core/dist/config/docz.d.ts
new file mode 100644
index 0000000..5ea09e0
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/config/docz.d.ts
@@ -0,0 +1,22 @@
+import { Arguments } from 'yargs';
+import { BabelRC } from '../config/babel';
+import { Config, Argv } from '../config/argv';
+export declare const doczRcBaseConfig: {
+ htmlContext: {
+ lang: string;
+ favicon: string;
+ };
+ themeConfig: {};
+ docgenConfig: {};
+ filterComponents: (files: string[]) => string[];
+ modifyBundlerConfig: (config: any) => any;
+ modifyBabelRc: (babelrc: BabelRC) => BabelRC;
+ onCreateWebpackChain: () => null;
+ menu: never[];
+ plugins: never[];
+ mdPlugins: never[];
+ hastPlugins: never[];
+ ignore: string[];
+};
+export declare const getBaseConfig: (argv: Arguments<Argv>, custom?: Partial<Config> | undefined) => Config;
+export declare const parseConfig: (argv: Arguments<Argv>, custom?: Partial<Config> | undefined) => Promise<Config>;
diff --git a/docs/docz-lib/docz-core/dist/config/env.d.ts b/docs/docz-lib/docz-core/dist/config/env.d.ts
new file mode 100644
index 0000000..fe5afd0
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/config/env.d.ts
@@ -0,0 +1,10 @@
+export declare const setEnv: (env: string) => void;
+export interface RT {
+ [key: string]: any;
+}
+export declare const getClientEnvironment: (publicUrl: string) => {
+ raw: RT;
+ stringified: {
+ 'process.env': {};
+ };
+};
diff --git a/docs/docz-lib/docz-core/dist/config/paths.d.ts b/docs/docz-lib/docz-core/dist/config/paths.d.ts
new file mode 100644
index 0000000..f393eec
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/config/paths.d.ts
@@ -0,0 +1,43 @@
+export declare const ensureSlash: (filepath: any, needsSlash: boolean) => any;
+export declare const root: string;
+export declare const resolveApp: (to: string) => string;
+export declare const resolveOwn: (to: string) => string;
+export interface Paths {
+ root: string;
+ templates: string;
+ packageJson: string;
+ servedPath: (base: string) => string;
+ docz: string;
+ app: string;
+ cache: string;
+ appPublic: string;
+ appNodeModules: string;
+ appPackageJson: string;
+ appYarnLock: string;
+ ownNodeModules: string;
+ getDist: (dest: string) => string;
+ distPublic: (dest: string) => string;
+ importsJs: string;
+ rootJs: string;
+ indexJs: string;
+ indexHtml: string;
+ db: string;
+}
+export declare const templates: string;
+export declare const packageJson: string;
+export declare const servedPath: (base: string) => any;
+export declare const docz: string;
+export declare const app: string;
+export declare const cache: string;
+export declare const appPublic: string;
+export declare const appNodeModules: string;
+export declare const appPackageJson: string;
+export declare const appYarnLock: string;
+export declare const ownNodeModules: string;
+export declare const getDist: (dest: string) => string;
+export declare const distPublic: (dest: string) => string;
+export declare const importsJs: string;
+export declare const rootJs: string;
+export declare const indexJs: string;
+export declare const indexHtml: string;
+export declare const db: string;
diff --git a/docs/docz-lib/docz-core/dist/index.d.ts b/docs/docz-lib/docz-core/dist/index.d.ts
new file mode 100644
index 0000000..61609dc
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/index.d.ts
@@ -0,0 +1,14 @@
+/** cli exports */
+export { cli } from './cli';
+/** config exports */
+export { parseConfig, getBaseConfig } from './config/docz';
+export { Config, setArgs } from './config/argv';
+export { BabelRC } from './config/babel';
+/** states */
+import * as states from './states';
+export { states };
+/** lib exports */
+export { Plugin, createPlugin } from './lib/Plugin';
+export { DataServer } from './lib/DataServer';
+export { Entries } from './lib/Entries';
+export { Entry } from './lib/Entry';
diff --git a/docs/docz-lib/docz-core/dist/index.esm.js b/docs/docz-lib/docz-core/dist/index.esm.js
new file mode 100644
index 0000000..1df3339
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/index.esm.js
@@ -0,0 +1,2008 @@
+import { command } from 'yargs';
+import _get from 'lodash/fp/get';
+import { readJsonSync, ensureDir, remove as remove$1, outputJSONSync, emptyDir, pathExists, copy, readFileSync, readJSONSync, pathExistsSync, existsSync as existsSync$1 } from 'fs-extra';
+import { get, set } from 'env-dot-prop';
+import humanize from 'humanize-string';
+import titleize from 'titleize';
+import { realpathSync, existsSync } from 'fs';
+import { join, resolve, delimiter, isAbsolute, relative, parse, extname, normalize, dirname } from 'path';
+import { sync } from 'resolve';
+import logger__default, { error, Signale, warn, fatal, log } from 'signale';
+import { __rest } from 'tslib';
+import { getParsedData, headingsFromAst, parseMdx } from 'docz-utils/lib/mdast';
+import { compiled, touch } from 'docz-utils/lib/fs';
+import glob from 'fast-glob';
+import { createHash } from 'crypto';
+import slugify from '@sindresorhus/slugify';
+import _isFunction from 'lodash/fp/isFunction';
+import pReduce from 'p-reduce';
+import getPkgRepo from 'get-pkg-repo';
+import findup from 'find-up';
+import WS from 'ws';
+import _merge from 'lodash/fp/merge';
+import _omit from 'lodash/fp/omit';
+import { loadFrom, load, finds } from 'load-cfg';
+import detectPort from 'detect-port';
+import Config from 'webpack-chain';
+import frontmatter from 'remark-frontmatter';
+import remarkDocz from 'remark-docz';
+import rehypeDocz from 'rehype-docz';
+import slug from 'rehype-slug';
+import webpack, { IgnorePlugin, HotModuleReplacementPlugin } from 'webpack';
+import webpackBarPlugin from 'webpackbar';
+import { minify } from 'html-minifier';
+import miniHtmlWebpack, { generateCSSReferences, generateJSReferences } from 'mini-html-webpack-plugin';
+import manifestPlugin from 'webpack-manifest-plugin';
+import watchMissingNodeModules from 'react-dev-utils/WatchMissingNodeModulesPlugin';
+import 'react-dev-utils/ModuleNotFoundPlugin';
+import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
+import { TemplateTag, replaceResultTransformer, trimResultTransformer, oneLineTrim, html as html$1 } from 'common-tags';
+import * as TerserPlugin from 'terser-webpack-plugin';
+import getCacheIdentifier from 'react-dev-utils/getCacheIdentifier';
+import WebpackDevServer from 'webpack-dev-server';
+import { prepareUrls, createCompiler } from 'react-dev-utils/WebpackDevServerUtils';
+import { static as static$1 } from 'express';
+import errorOverlayMiddleware from 'react-dev-utils/errorOverlayMiddleware';
+import evalSourceMapMiddleware from 'react-dev-utils/evalSourceMapMiddleware';
+import ignoredFiles from 'react-dev-utils/ignoredFiles';
+import chalk$1 from 'chalk';
+import chokidar from 'chokidar';
+import equal from 'fast-deep-equal';
+import get$1 from 'lodash/get';
+import _propEq from 'lodash/fp/propEq';
+import externalProptypesHandler from 'react-docgen-external-proptypes-handler';
+import actualNameHandler from 'react-docgen-actual-name-handler';
+import reactDocgen from 'react-docgen';
+import _entries from 'lodash/fp/entries';
+import _contains from 'lodash/fp/contains';
+import _prop from 'lodash/fp/prop';
+import _isEmpty from 'lodash/fp/isEmpty';
+import reactDocgenTs from 'react-docgen-typescript';
+import ts$1 from 'typescript';
+import spawn$1 from 'cross-spawn';
+
+const ensureSlash = (filepath, needsSlash) => {
+ const hasSlash = filepath.endsWith('/');
+
+ if (hasSlash && !needsSlash) {
+ return filepath.substr(filepath, filepath.length - 1);
+ } else if (!hasSlash && needsSlash) {
+ return `${filepath}/`;
+ } else {
+ return filepath;
+ }
+};
+const root = realpathSync(process.cwd());
+const resolveApp = to => resolve(root, to);
+const resolveOwn = to => resolve(__dirname, '../', to);
+const templates = join(sync('docz-core'), '../templates');
+const packageJson = resolveApp('package.json');
+const servedPath = base => ensureSlash(base, true);
+const docz = resolveApp('.docz');
+const app = resolve(docz, 'app/');
+const cache = resolve(docz, 'cache/');
+const appPublic = resolve(docz, 'public/');
+const appNodeModules = resolveApp('node_modules');
+const appPackageJson = resolveApp('package.json');
+const appYarnLock = resolveOwn('yarn.lock');
+const ownNodeModules = resolveOwn('node_modules');
+const getDist = dest => join(root, dest);
+const distPublic = dest => join(dest, 'public/');
+const importsJs = resolve(app, 'imports.js');
+const rootJs = resolve(app, 'root.jsx');
+const indexJs = resolve(app, 'index.jsx');
+const indexHtml = resolve(app, 'index.html');
+const db = resolve(app, 'db.json');
+
+var paths = /*#__PURE__*/Object.freeze({
+ ensureSlash: ensureSlash,
+ root: root,
+ resolveApp: resolveApp,
+ resolveOwn: resolveOwn,
+ templates: templates,
+ packageJson: packageJson,
+ servedPath: servedPath,
+ docz: docz,
+ app: app,
+ cache: cache,
+ appPublic: appPublic,
+ appNodeModules: appNodeModules,
+ appPackageJson: appPackageJson,
+ appYarnLock: appYarnLock,
+ ownNodeModules: ownNodeModules,
+ getDist: getDist,
+ distPublic: distPublic,
+ importsJs: importsJs,
+ rootJs: rootJs,
+ indexJs: indexJs,
+ indexHtml: indexHtml,
+ db: db
+});
+
+const getEnv = (val, defaultValue = null) => get(val, defaultValue, {
+ parse: true
+});
+
+const getInitialTitle = pkg => {
+ const name = _get('name', pkg) || 'MyDoc';
+ return titleize(humanize(name.replace(/^@.*\//, '')));
+};
+
+const getInitialDescription = pkg => _get('description', pkg) || 'My awesome app using docz';
+
+const setArgs = yargs => {
+ const pkg = readJsonSync(appPackageJson, {
+ throws: false
+ });
+ return yargs.option('base', {
+ type: 'string',
+ default: getEnv('docz.base', '/')
+ }).option('source', {
+ alias: 'src',
+ type: 'string',
+ default: getEnv('docz.source', './')
+ }).option('files', {
+ type: 'string',
+ default: getEnv('docz.files', '**/*.{md,markdown,mdx}')
+ }).option('ignore', {
+ type: 'array',
+ default: getEnv('docz.ignore', [])
+ }).option('public', {
+ type: 'string',
+ default: getEnv('docz.public', '/public')
+ }).option('dest', {
+ alias: 'd',
+ type: 'string',
+ default: getEnv('docz.dest', '.docz/dist')
+ }).option('editBranch', {
+ alias: 'eb',
+ type: 'string',
+ default: getEnv('docz.edit.branch', 'master')
+ }).option('config', {
+ type: 'string',
+ default: getEnv('docz.config', '')
+ }).option('title', {
+ type: 'string',
+ default: getEnv('docz.title', getInitialTitle(pkg))
+ }).option('description', {
+ type: 'string',
+ default: getEnv('docz.description', getInitialDescription(pkg))
+ }).option('theme', {
+ type: 'string',
+ default: getEnv('docz.theme', 'theme')
+ }).option('typescript', {
+ alias: 'ts',
+ type: 'boolean',
+ default: getEnv('docz.typescript', false)
+ }).option('propsParser', {
+ type: 'boolean',
+ default: getEnv('docz.props.parser', true)
+ }).option('wrapper', {
+ type: 'string',
+ default: getEnv('docz.wrapper', null)
+ }).option('indexHtml', {
+ type: 'string',
+ default: getEnv('docz.index.html', null)
+ }).option('debug', {
+ type: 'boolean',
+ default: getEnv('docz.debug', false)
+ }).option('clearConsole', {
+ type: 'boolean',
+ default: getEnv('docz.clear.console', true)
+ }).option('host', {
+ type: 'string',
+ default: getEnv('docz.host', '127.0.0.1')
+ }).option('port', {
+ alias: 'p',
+ type: 'number',
+ default: getEnv('docz.port', 3000)
+ }).option('websocketHost', {
+ type: 'string',
+ default: getEnv('docz.websocket.host', '127.0.0.1')
+ }).option('websocketPort', {
+ type: 'number',
+ default: getEnv('docz.websocket.port', 60505)
+ }).option('native', {
+ type: 'boolean',
+ default: getEnv('docz.native', false)
+ }).option('codeSandbox', {
+ type: 'boolean',
+ default: getEnv('docz.codeSandbox', true)
+ }).option('sourcemaps', {
+ type: 'boolean',
+ default: getEnv('docz.sourcemaps', true)
+ }).option('separator', {
+ type: 'string',
+ default: getEnv('docz.separator', '-')
+ }).option('open', {
+ alias: 'o',
+ describe: 'auto open browser in dev mode',
+ type: 'boolean',
+ default: false
+ });
+};
+
+const populateNodePath = () => {
+ // We support resolving modules according to `NODE_PATH`.
+ // It works similar to `NODE_PATH` in Node itself:
+ // https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
+ // Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored.
+ // Otherwise, we risk importing Node.js core modules into an app instead of Webpack shims.
+ // https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421
+ // We also resolve them to make sure all tools using them work consistently.
+ set('node.path', get('node.path', '').split(delimiter).filter(folder => folder && !isAbsolute(folder)).map(folder => resolve(root, folder)).join(delimiter));
+};
+
+const configDotEnv = () => {
+ const NODE_ENV = get('node.env');
+ const dotenv = resolveApp('.env');
+ const dotenvFiles = [`${dotenv}.${NODE_ENV}.local`, `${dotenv}.${NODE_ENV}`, // Don't include `.env.local` for `test` environment
+ // since normally you expect tests to produce the same
+ // results for everyone
+ NODE_ENV !== 'test' && `${dotenv}.local`, dotenv]; // Load environment variables from .env* files. Suppress warnings using silent
+ // if this file is missing. dotenv will never modify any environment variables
+ // that have already been set. Variable expansion is supported in .env files.
+ // https://github.com/motdotla/dotenv
+
+ dotenvFiles.filter(Boolean).forEach(dotenvFile => {
+ require('dotenv').config({
+ path: dotenvFile
+ });
+ });
+};
+
+const setEnv = env => {
+ set('babel.env', env);
+ set('node.env', env);
+ configDotEnv();
+ populateNodePath();
+};
+const getClientEnvironment = publicUrl => {
+ const APP_TEST = /^(REACT_APP_)|(ANGULAR_APP_)|(VUE_APP_)|(DOCZ_)/i;
+ const raw = Object.keys(process.env).filter(key => APP_TEST.test(key)).reduce((env, key) => {
+ env[key] = process.env[key];
+ return env;
+ }, {
+ // Useful for determining whether we’re running in production mode. Most
+ // importantly, it switches React into the correct mode.
+ NODE_ENV: get('node.env') || 'development',
+ // Useful for resolving the correct path to static assets in `public`. For
+ // example, <img src={process.env.PUBLIC_URL + '/img/logo.png'} />. This should
+ // only be used as an escape hatch. Normally you would put images into the `src`
+ // and `import` them in code to get their
+ PUBLIC_URL: publicUrl
+ });
+ const stringified = {
+ 'process.env': Object.keys(raw).reduce((env, key) => {
+ env[key] = JSON.stringify(raw[key]);
+ return env;
+ }, {})
+ };
+ return {
+ raw,
+ stringified
+ };
+};
+
+const createId = file => createHash('md5').update(file).digest('hex');
+
+const mountRoute = (base, route) => {
+ if (base === '/') return route;
+ const baseHasSlash = base.endsWith('/');
+ if (baseHasSlash) return base.substr(0, base.length - 1) + route;
+ return base + route;
+};
+
+class Entry {
+ constructor(ast, file, src, config) {
+ const filepath = this.getFilepath(file, src);
+ const parsed = getParsedData(ast);
+ const name = this.getName(filepath, parsed);
+ this.id = createId(file);
+ this.filepath = filepath;
+ this.link = '';
+ this.slug = this.slugify(filepath, config.separator);
+ this.route = this.getRoute(parsed, config.base);
+ this.name = name;
+ this.menu = parsed.menu || '';
+ this.headings = headingsFromAst(ast);
+ this.settings = parsed;
+ }
+
+ setLink(url) {
+ if (url) {
+ this.link = url.replace('{{filepath}}', this.filepath);
+ }
+ }
+
+ getFilepath(file, src) {
+ const srcPath = resolve(root, src);
+ const filepath = relative(srcPath, file);
+
+ if (process.platform === 'win32') {
+ return filepath.split('\\').join('/');
+ }
+
+ return filepath;
+ }
+
+ getName(filepath, parsed) {
+ const filename = humanize(parse(filepath).name);
+ return parsed && parsed.name ? parsed.name : filename;
+ }
+
+ slugify(filepath, separator) {
+ const ext = extname(filepath);
+ const fileWithoutExt = filepath.replace(ext, '');
+ return slugify(fileWithoutExt, {
+ separator
+ });
+ }
+
+ getRoute(parsed, base) {
+ const parsedRoute = _get('route', parsed);
+
+ const route = parsedRoute || `/${this.slug}`;
+ return mountRoute(base, route);
+ }
+
+}
+
+class Plugin {
+ constructor(p) {
+ this.setConfig = p.setConfig;
+ this.modifyBundlerConfig = p.modifyBundlerConfig;
+ this.modifyBabelRc = p.modifyBabelRc;
+ this.modifyFiles = p.modifyFiles;
+ this.onPreCreateApp = p.onPreCreateApp;
+ this.onCreateWebpackChain = p.onCreateWebpackChain;
+ this.onCreateApp = p.onCreateApp;
+ this.onServerListening = p.onServerListening;
+ this.onPreBuild = p.onPreBuild;
+ this.onPostBuild = p.onPostBuild;
+ this.onPreRender = p.onPreRender;
+ this.onPostRender = p.onPostRender;
+ }
+
+ static runPluginsMethod(plugins) {
+ return (method, ...args) => {
+ if (plugins && plugins.length > 0) {
+ for (const plugin of plugins) {
+ const fn = _get(method, plugin);
+
+ _isFunction(fn) && fn(...args);
+ }
+ }
+ };
+ }
+
+ static propsOfPlugins(plugins) {
+ return prop => plugins && plugins.length > 0 ? plugins.map(p => _get(prop, p)).filter(Boolean) : [];
+ }
+
+ static reduceFromPlugins(plugins) {
+ return (method, initial, ...args) => {
+ return [...(plugins || [])].reduce((obj, plugin) => {
+ const fn = _get(method, plugin);
+
+ return fn && _isFunction(fn) ? fn(obj, ...args) : obj;
+ }, initial);
+ };
+ }
+
+ static reduceFromPluginsAsync(plugins) {
+ return (method, initial, ...args) => {
+ return pReduce([...(plugins || [])], (obj, plugin) => {
+ const fn = _get(method, plugin);
+
+ return Promise.resolve(fn && _isFunction(fn) ? fn(obj, ...args) : obj);
+ }, initial);
+ };
+ }
+
+}
+function createPlugin(factory) {
+ return new Plugin(factory);
+}
+
+const parseRepo = () => {
+ try {
+ const pkg = readJsonSync(appPackageJson);
+ return getPkgRepo(pkg);
+ } catch (err) {
+ return null;
+ }
+};
+const getRepoUrl = () => {
+ const repo = parseRepo();
+ return repo && (repo.browsetemplate && repo.browsetemplate.replace('{domain}', repo.domain).replace('{user}', repo.user).replace('{project}', repo.project).replace('{/tree/committish}', '') || repo.browse && repo.browse());
+};
+
+const getBitBucketPath = (branch, relative) => {
+ const querystring = `?mode=edit&spa=0&at=${branch}&fileviewer=file-view-default`;
+ const filepath = join(`/src/${branch}`, relative, `{{filepath}}`);
+ return `${filepath}${querystring}`;
+};
+
+const getTree = (repo, branch, relative) => {
+ const defaultPath = join(`/edit/${branch}`, relative, `{{filepath}}`);
+ const bitBucketPath = getBitBucketPath(branch, relative);
+ if (repo && repo.type === 'bitbucket') return bitBucketPath;
+ return defaultPath;
+};
+
+const getRepoEditUrl = (src, branch) => {
+ try {
+ const repo = parseRepo();
+ const project = parse(findup.sync('.git')).dir;
+ const root$1 = join(root, src);
+ const relative$1 = relative(project, root$1);
+ const tree = getTree(repo, branch, relative$1);
+ return repo && repo.browsetemplate && repo.browsetemplate.replace('{domain}', repo.domain).replace('{user}', repo.user).replace('{project}', repo.project).replace('{/tree/committish}', tree);
+ } catch (err) {
+ return null;
+ }
+};
+
+const fromTemplates = file => join(templates, file);
+
+const mapToObj = map => Array.from(map.entries()).reduce((obj, [key, value]) => Object.assign({}, obj, {
+ [`${key}`]: value
+}), {});
+
+const matchFilesWithSrc = config => files => {
+ const src = relative(root, config.src);
+ return files.map(file => file.startsWith(src) ? file : join(src, file));
+};
+
+const writeAppFiles = async (config, dev) => {
+ const {
+ plugins,
+ theme
+ } = config;
+ const props = Plugin.propsOfPlugins(plugins);
+ const onPreRenders = props('onPreRender');
+ const onPostRenders = props('onPostRender');
+ const isProd = !dev;
+ const root = await compiled(fromTemplates('root.tpl.js'), {
+ minimize: false
+ });
+ const js = await compiled(fromTemplates('index.tpl.js'), {
+ minimize: false
+ });
+ const websocketUrl = `ws://${config.websocketHost}:${config.websocketPort}`;
+ const rawRootJs = root({
+ theme,
+ isProd,
+ wrapper: config.wrapper,
+ websocketUrl
+ });
+ const rawIndexJs = js({
+ onPreRenders,
+ onPostRenders,
+ isProd
+ });
+ await remove$1(rootJs);
+ await remove$1(indexJs);
+ await touch(rootJs, rawRootJs);
+ await touch(indexJs, rawIndexJs);
+};
+
+class Entries {
+ static async writeApp(config, dev) {
+ await ensureDir(app);
+ await writeAppFiles(config, dev);
+ }
+
+ static async writeImports(map) {
+ const imports = await compiled(fromTemplates('imports.tpl.js'));
+ const rawImportsJs = imports({
+ entries: Object.values(map)
+ });
+ await touch(join(app, 'imports.js'), rawImportsJs);
+ }
+
+ constructor(config) {
+ this.repoEditUrl = getRepoEditUrl(config.src, config.editBranch);
+ this.all = new Map();
+
+ this.get = async () => this.getMap(config);
+ }
+
+ async getMap(config) {
+ const {
+ src,
+ files: pattern,
+ ignore,
+ plugins,
+ mdPlugins
+ } = config;
+ const arr = Array.isArray(pattern) ? pattern : [pattern];
+ const toMatch = matchFilesWithSrc(config);
+ const files = await glob(toMatch(arr), {
+ ignore: ['**/node_modules/**'].concat(ignore),
+ onlyFiles: true,
+ unique: true,
+ nocase: true,
+ matchBase: true
+ });
+
+ const createEntry = async file => {
+ try {
+ const ast = await parseMdx(file, mdPlugins);
+ const entry = new Entry(ast, file, src, config);
+ if (this.repoEditUrl) entry.setLink(this.repoEditUrl);
+
+ const {
+ settings
+ } = entry,
+ rest = __rest(entry, ["settings"]);
+
+ return Object.assign({}, settings, rest);
+ } catch (err) {
+ error(err);
+ return null;
+ }
+ };
+
+ const reduce = Plugin.reduceFromPlugins(plugins);
+ const modifiedFiles = reduce('modifyFiles', files);
+ const map = new Map();
+ const entries = await Promise.all(modifiedFiles.map(createEntry).filter(Boolean));
+
+ for (const entry of entries) {
+ if (entry) {
+ map.set(entry.filepath, entry);
+ }
+ }
+
+ this.all = map;
+ return mapToObj(map);
+ }
+
+}
+
+class DataServer {
+ constructor() {
+ this.states = new Set();
+ this.state = new Map();
+ this.listeners = new Set();
+ }
+
+ register(states) {
+ for (const state of states) this.states.add(state);
+
+ return this;
+ }
+
+ async start() {
+ const setState = (key, val) => this.setState(key, val);
+
+ const getState = () => this.getState();
+
+ await Promise.all(Array.from(this.states).map(async state => {
+ if (!_isFunction(state.start)) return;
+ return state.start({
+ setState,
+ getState
+ });
+ }));
+ }
+
+ close() {
+ for (const state of this.states) {
+ _isFunction(state.close) && state.close();
+ }
+ }
+
+ onStateChange(listener) {
+ this.listeners.add(listener);
+ return () => this.listeners.clear();
+ }
+
+ getState() {
+ return this.mapToObject(this.state);
+ }
+
+ setState(key, val) {
+ const prev = _get(key, this.getState());
+
+ const next = typeof val === 'function' ? val(prev) : val;
+ this.state.set(key, next);
+ this.writeDbFile();
+ this.listeners.forEach(listener => {
+ listener({
+ type: `state.${key}`,
+ payload: next
+ });
+ });
+ }
+
+ async writeDbFile() {
+ outputJSONSync(db, this.mapToObject(this.state), {
+ spaces: 2
+ });
+ }
+
+ mapToObject(map) {
+ return Array.from(map.entries()).reduce((obj, [key, val]) => Object.assign({}, obj, {
+ [key]: val
+ }), {});
+ }
+
+}
+
+const onSignal = cb => {
+ const signals = ['SIGINT', 'SIGTERM'];
+
+ for (const sig of signals) {
+ process.on(sig, async () => {
+ await cb();
+ process.exit();
+ });
+ }
+};
+
+const isSocketOpened = socket => socket.readyState === WS.OPEN;
+
+const sender = socket => (type, payload) => {
+ if (socket && isSocketOpened(socket)) {
+ socket.send(JSON.stringify({
+ type,
+ payload
+ }));
+ }
+};
+
+class Socket {
+ constructor(server, host, port) {
+ if (server) {
+ this.client = new WS.Server({
+ server,
+ host,
+ port
+ });
+ }
+ }
+
+ onConnection(listener) {
+ if (!this.client) return;
+ this.client.on('connection', socket => {
+ const emit = sender(socket);
+ const subs = listener(socket, emit);
+
+ const handleClose = async () => {
+ subs();
+ socket.terminate();
+ };
+
+ this.client.on('close', handleClose);
+ onSignal(handleClose);
+ });
+ }
+
+}
+
+const toOmit = ['_', '$0', 'version', 'help'];
+const htmlContext = {
+ lang: 'en',
+ favicon: 'https://cdn-std.dprcdn.net/files/acc_649651/LUKiMl'
+};
+const doczRcBaseConfig = {
+ htmlContext,
+ themeConfig: {},
+ docgenConfig: {},
+ filterComponents: files => files.filter(filepath => /\/[A-Z]\w*\.(js|jsx|ts|tsx)$/.test(filepath)),
+ modifyBundlerConfig: config => config,
+ modifyBabelRc: babelrc => babelrc,
+ onCreateWebpackChain: () => null,
+ menu: [],
+ plugins: [],
+ mdPlugins: [],
+ hastPlugins: [],
+ ignore: ['**/readme.md', '**/changelog.md', '**/code_of_conduct.md', '**/contributing.md', '**/license.md']
+};
+const getBaseConfig = (argv, custom) => {
+ const initial = _omit(toOmit, argv);
+
+ const base = Object.assign({}, initial, doczRcBaseConfig, {
+ paths
+ });
+ return _merge(base, custom);
+};
+const parseConfig = async (argv, custom) => {
+ const port = await detectPort(argv.port);
+ const websocketPort = await detectPort(argv.websocketPort);
+ const defaultConfig = getBaseConfig(argv, Object.assign({
+ port,
+ websocketPort,
+ htmlContext
+ }, custom));
+ const config = argv.config ? loadFrom(resolve(argv.config), defaultConfig) : load('docz', defaultConfig);
+ const reduceAsync = Plugin.reduceFromPluginsAsync(config.plugins);
+ return reduceAsync('setConfig', config);
+};
+
+class Bundler {
+ constructor(params) {
+ const {
+ args,
+ config,
+ server,
+ build
+ } = params;
+ const run = Plugin.runPluginsMethod(args.plugins);
+ this.args = args;
+ this.config = config;
+ this.server = server;
+ this.builder = build;
+ this.hooks = {
+ onCreateWebpackChain(config, dev, args) {
+ run('onCreateWebpackChain', config, dev, args);
+ },
+
+ onPreCreateApp(app) {
+ run('onPreCreateApp', app);
+ },
+
+ onCreateApp(app) {
+ run('onCreateApp', app);
+ },
+
+ onServerListening(server) {
+ run('onServerListening', server);
+ }
+
+ };
+ }
+
+ async mountConfig(env) {
+ const {
+ plugins
+ } = this.args;
+ const isDev = env !== 'production';
+ const reduce = Plugin.reduceFromPlugins(plugins);
+ const userConfig = await this.config(this.hooks);
+ const config = reduce('modifyBundlerConfig', userConfig, isDev, this.args);
+ return this.args.modifyBundlerConfig(config, isDev, this.args);
+ }
+
+ async createApp(config) {
+ return this.server(config, this.hooks);
+ }
+
+ async build(config) {
+ const dist = getDist(this.args.dest);
+ const publicDir = join(root, this.args.public);
+
+ if (root === resolve(dist)) {
+ logger__default.fatal(new Error('Unexpected option: "dest" cannot be set to the current working directory.'));
+ process.exit(1);
+ }
+
+ await this.builder(config, dist, publicDir);
+ }
+
+}
+
+const excludeNodeModules = filepath => /node_modules/.test(filepath) || /@babel(?:\/|\\{1,2})runtime/.test(filepath);
+
+const sourceMaps = (config, args) => {
+ const srcPath = resolve(root, args.src);
+ config.module.rule('sourcemaps').test(/\.(js|mjs|jsx|ts|tsx|md|mdx)$/).include.add(srcPath).add(app).end().exclude.add(excludeNodeModules).end().use('sourcemaps').loader(require.resolve('source-map-loader')).end().enforce('pre');
+};
+
+const addScriptLoaders = opts => {
+ const {
+ rule,
+ threadLoader = true,
+ babelrc,
+ args
+ } = opts;
+ return rule.when(!args.debug, rule => rule.use('cache-loader').loader(require.resolve('cache-loader')).options({
+ cacheDirectory: cache
+ })).when(Boolean(threadLoader), rule => rule.use('thread-loader').loader(require.resolve('thread-loader')).options({
+ workers: require('os').cpus().length - 1
+ })).use('babel-loader').loader(require.resolve('babel-loader')).options(babelrc).end();
+};
+
+const js = (config, args, babelrc) => {
+ const srcPath = resolve(root, args.src);
+ const rule = config.module.rule('js').test(/\.(jsx?|mjs)$/).include.add(srcPath).add(app).end().exclude.add(excludeNodeModules).end();
+ addScriptLoaders({
+ rule,
+ babelrc,
+ args
+ });
+};
+const ts = (config, args, babelrc) => {
+ const srcPath = resolve(root, args.src);
+ const rule = config.module.rule('ts').test(/\.tsx?$/).include.add(srcPath).add(app).end().exclude.add(excludeNodeModules).end();
+ addScriptLoaders({
+ rule,
+ babelrc,
+ args
+ });
+};
+const mdx = (config, args, babelrc) => {
+ const {
+ mdPlugins,
+ hastPlugins
+ } = args;
+ const srcPath = resolve(root, args.src);
+ const rule = config.module.rule('mdx').test(/\.(md|markdown|mdx)$/).include.add(srcPath).add(root).add(app).end().exclude.add(excludeNodeModules).end();
+ addScriptLoaders({
+ rule,
+ babelrc,
+ args,
+ threadLoader: false
+ }).use('mdx-loader').loader(require.resolve('@mdx-js/loader')).options({
+ remarkPlugins: mdPlugins.concat([[frontmatter, {
+ type: 'yaml',
+ marker: '-'
+ }], remarkDocz]),
+ rehypePlugins: hastPlugins.concat([[rehypeDocz, {
+ root: root,
+ useCodeSandbox: args.codeSandbox
+ }], slug])
+ });
+};
+const INLINE_LIMIT = 10000;
+const images = config => {
+ config.module.rule('images').test(/\.(png|jpe?g|gif)(\?.*)?$/).use('url-loader').loader(require.resolve('url-loader')).options({
+ limit: INLINE_LIMIT,
+ name: `static/img/[name].[hash:8].[ext]`
+ });
+};
+const svg = config => {
+ config.module.rule('svg').test(/\.(svg)(\?.*)?$/).use('file-loader').loader(require.resolve('file-loader')).options({
+ name: `static/img/[name].[hash:8].[ext]`
+ });
+};
+const media = config => {
+ config.module.rule('media').test(/\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/).use('url-loader').loader(require.resolve('url-loader')).options({
+ limit: INLINE_LIMIT,
+ name: `static/media/[name].[hash:8].[ext]`
+ });
+};
+const fonts = config => {
+ config.module.rule('fonts').test(/\.(woff2?|eot|ttf|otf)(\?.*)?$/i).use('url-loader').loader(require.resolve('url-loader')).options({
+ limit: INLINE_LIMIT,
+ name: `static/fonts/[name].[hash:8].[ext]`
+ });
+};
+
+const wrapItems = item => Object.keys(item).map(key => `${key}="${item[key]}"`).join(' ');
+
+const generateTags = template => (items = []) => items.map(template).join('');
+
+const generateMetaTags = generateTags(item => `<meta ${wrapItems(item)}>`);
+const generateLinkTags = generateTags(item => `<link ${wrapItems(item)}>`);
+const generateScriptTags = generateTags(item => `<script ${wrapItems(item)}></script>`);
+
+const generateRawTags = (items = []) => {
+ if (typeof items === 'string' || items instanceof String) return items;
+ return items.map(item => item).join('');
+};
+
+const getHtmlFilepath = indexHtml => indexHtml ? resolve(root, indexHtml) : fromTemplates('index.tpl.html');
+
+const getPublicUrl = (config, dev) => {
+ const prefix = config.base === '/' ? '' : config.base;
+ return dev ? prefix : `${prefix}/public`;
+};
+
+const emptyLineTrim = new TemplateTag(replaceResultTransformer(/^\s*[\r\n]/gm, ''), trimResultTransformer);
+const htmlTemplate = async indexHtml => compiled(getHtmlFilepath(indexHtml), {
+ minimize: false,
+ escape: false
+});
+const parseHtml = ({
+ config,
+ ctx,
+ dev,
+ template
+}) => {
+ const {
+ title,
+ description
+ } = config;
+ const {
+ publicPath,
+ css,
+ js,
+ lang = 'en',
+ favicon,
+ head = [],
+ body = [],
+ trimWhitespace
+ } = ctx;
+ const headStr = `
+ ${favicon ? `<link rel="icon" type="image/x-icon" href="${favicon}">` : ''}
+ ${head.meta ? generateMetaTags(head.meta) : ''}
+ ${head.links ? generateLinkTags(head.links) : ''}
+ ${head.raw ? generateRawTags(head.raw) : ''}
+ ${head.scripts ? generateScriptTags(head.scripts) : ''}
+ ${generateCSSReferences(css, publicPath)}`;
+ const footerStr = `
+ ${body.raw ? generateRawTags(body.raw) : ''}
+ ${body.scripts ? generateScriptTags(body.scripts) : ''}
+ ${generateJSReferences(js, publicPath)}`;
+ const doc = html$1(template({
+ title,
+ description,
+ lang,
+ head: headStr,
+ footer: footerStr,
+ publicUrl: getPublicUrl(config, dev)
+ }));
+ return trimWhitespace ? oneLineTrim(doc) : emptyLineTrim(doc);
+};
+
+const assets = (config, args, env) => {
+ const isProd = env === 'production';
+ const base = servedPath(args.base);
+ const publicPath = isProd ? base : '/';
+ config.plugin('assets-plugin').use(manifestPlugin, [{
+ publicPath,
+ fileName: 'assets.json'
+ }]);
+};
+const analyzer = config => {
+ config.plugin('bundle-analyzer').use(BundleAnalyzerPlugin, [{
+ generateStatsFile: true,
+ openAnalyzer: false,
+ analyzerMode: 'static'
+ }]);
+};
+const injections = (config, args, env) => {
+ const {
+ stringify
+ } = JSON;
+ const base = servedPath(args.base);
+
+ const plugin = require('webpack/lib/DefinePlugin');
+
+ config.plugin('injections').use(plugin, [Object.assign({}, getClientEnvironment(base).stringified, {
+ NODE_ENV: stringify(env),
+ DOCZ_BASE_URL: stringify(base)
+ })]);
+};
+const ignore = config => {
+ config.plugin('ignore-plugin').use(IgnorePlugin, [/(regenerate\-unicode\-properties)|(elliptic)/, /node_modules/]);
+};
+const hot = config => {
+ config.plugin('hot-module-replacement').use(HotModuleReplacementPlugin, [{
+ multiStep: true
+ }]);
+};
+const html = async (config, args, env) => {
+ const dev = env !== 'production';
+ const template = await htmlTemplate(args.indexHtml);
+ config.plugin('html-plugin').use(miniHtmlWebpack, [{
+ context: Object.assign({}, args.htmlContext, {
+ trimWhitespace: true
+ }),
+ template: ctx => {
+ const doc = parseHtml({
+ ctx,
+ dev,
+ template,
+ config: args
+ });
+ return dev ? doc : minify(doc, {
+ removeComments: true,
+ collapseWhitespace: true,
+ removeRedundantAttributes: true,
+ useShortDoctype: true,
+ removeEmptyAttributes: true,
+ removeStyleLinkTypeAttributes: true,
+ keepClosingSlash: true,
+ minifyJS: true,
+ minifyCSS: true,
+ minifyURLs: true
+ });
+ }
+ }]);
+};
+const webpackBar = (config, args) => {
+ config.plugin('webpackbar').use(webpackBarPlugin, [{
+ name: 'Docz',
+ color: '#41b883'
+ }]);
+};
+const watchNodeModulesPlugin = config => {
+ config.plugin('watch-missing-node-modules').use(watchMissingNodeModules, [appNodeModules]);
+};
+
+const minifier = (config, args) => {
+ config.optimization.minimizer('js').use(TerserPlugin, [{
+ terserOptions: {
+ parse: {
+ ecma: 8
+ },
+ compress: {
+ ecma: 5,
+ warnings: false,
+ comparisons: false
+ },
+ mangle: {
+ safari10: true
+ },
+ output: {
+ ecma: 5,
+ comments: false,
+ ascii_only: true
+ }
+ },
+ parallel: true,
+ cache: !args.debug,
+ sourceMap: args.sourcemaps
+ }]);
+};
+
+const getBabelConfig = async (args, env, typescript) => {
+ const isProd = env === 'production';
+ const isDev = env === 'development';
+ const localBabelRc = load('babel', {
+ presets: [],
+ plugins: []
+ }, false, true);
+ const presets = [[require.resolve('babel-preset-react-app'), {
+ typescript,
+ flow: !args.typescript
+ }]];
+ const defaultPlugins = [[require.resolve('babel-plugin-export-metadata'), {
+ notUseSpecifiers: args.notUseSpecifiers
+ }], [require.resolve('babel-plugin-named-asset-import'), {
+ loaderMap: {
+ svg: {
+ ReactComponent: '@svgr/webpack?-prettier,-svgo![path]'
+ }
+ }
+ }]];
+
+ const config = _merge(localBabelRc, {
+ presets,
+ babelrc: false,
+ cacheCompression: args.debug ? false : isProd,
+ cacheDirectory: !args.debug,
+ cacheIdentifier: args.debug ? null : getCacheIdentifier(isProd ? 'production' : isDev && 'development', ['docz', 'docz-core']),
+ compact: isProd,
+ customize: require.resolve('babel-preset-react-app/webpack-overrides'),
+ plugins: defaultPlugins.concat(!isProd ? [require.resolve('react-hot-loader/babel')] : [])
+ });
+
+ const reduce = Plugin.reduceFromPlugins(args.plugins);
+ const newConfig = reduce('modifyBabelRc', config, args);
+ return args.modifyBabelRc(newConfig, args);
+};
+
+/* eslint-disable @typescript-eslint/camelcase */
+const createConfig = (args, env) => async hooks => {
+ const {
+ debug
+ } = args;
+ const config = new Config();
+ const isProd = env === 'production';
+ const base = servedPath(args.base);
+ const dist = getDist(args.dest);
+ const srcPath = resolve(root, args.src);
+ const publicPath = isProd ? base : '/';
+ /**
+ * general
+ */
+
+ config.context(root);
+ config.set('mode', env);
+ config.when(args.sourcemaps, cfg => cfg.devtool(isProd ? 'source-map' : 'cheap-module-eval-source-map'), cfg => cfg.devtool(false));
+ config.node.merge({
+ child_process: 'empty',
+ dgram: 'empty',
+ fs: 'empty',
+ net: 'empty',
+ tls: 'empty'
+ });
+ /**
+ * output
+ */
+
+ const outputProd = output => output.filename('static/js/[name].[hash].js').sourceMapFilename('static/js/[name].[hash].js.map').chunkFilename('static/js/[name].[chunkhash:8].js');
+
+ const outputDev = output => output.filename('static/js/[name].js').sourceMapFilename('static/js/[name].js.map');
+
+ config.output.pathinfo(true).path(resolve(root, dist)).publicPath(publicPath).when(isProd, outputProd, outputDev).crossOriginLoading('anonymous').devtoolModuleFilenameTemplate(info => resolve(info.resourcePath).replace(/\\/g, '/'));
+ /**
+ * entries
+ */
+
+ config.entry('app').when(!isProd, entry => entry.add(require.resolve('react-dev-utils/webpackHotDevClient'))).add(indexJs);
+ /**
+ * resolve
+ */
+
+ config.resolve.set('symlinks', true);
+ config.resolve.extensions.add('.web.js').add('.mjs').add('.js').add('.json').add('.web.jsx').add('.jsx').add('.mdx').end();
+ config.resolve.alias.set('react-native$', 'react-native-web');
+
+ const inYarnWorkspaces = __dirname.includes('/docz/core/docz-core');
+
+ const doczDependenciesDir = inYarnWorkspaces ? join(__dirname, '../../../../node_modules') : ownNodeModules;
+ config.resolve.modules.add('node_modules').add(doczDependenciesDir).add(srcPath).add(root).merge(get('node.path').split(delimiter).filter(Boolean));
+ config.resolveLoader.set('symlinks', true).modules // prioritize our own
+ .add('node_modules').add(doczDependenciesDir).add(root);
+ /**
+ * loaders
+ */
+
+ const jsBabelrc = await getBabelConfig(args, env);
+ const tsBabelrc = await getBabelConfig(args, env, true);
+ config.when(args.sourcemaps, cfg => sourceMaps(cfg, args));
+ js(config, args, jsBabelrc);
+ mdx(config, args, jsBabelrc);
+ images(config);
+ svg(config);
+ media(config);
+ fonts(config);
+ await html(config, args, env);
+ assets(config, args, env);
+ ignore(config);
+ injections(config, args, env);
+ isProd && hot(config);
+ config.when(debug, cfg => analyzer(cfg));
+ config.when(!isProd, cfg => watchNodeModulesPlugin(cfg));
+ config.when(!debug && !isProd, cfg => webpackBar(cfg, args));
+ /**
+ * typescript setup
+ */
+
+ config.when(args.typescript, cfg => {
+ cfg.resolve.extensions.prepend('.ts').prepend('.tsx').end();
+ ts(cfg, args, tsBabelrc);
+ });
+ /**
+ * optimization
+ */
+
+ config.optimization.nodeEnv(env).namedModules(true).minimize(isProd).splitChunks({
+ cacheGroups: {
+ vendor: {
+ test: /[\\/]node_modules[\\/]/,
+ name: 'vendors',
+ chunks: 'all'
+ }
+ }
+ });
+ config.performance.hints(false);
+ config.when(isProd, cfg => minifier(cfg, args));
+ hooks.onCreateWebpackChain(config, !isProd, args);
+ args.onCreateWebpackChain(config, !isProd, args);
+ return config.toConfig();
+};
+
+const devServerConfig = (hooks, args) => {
+ const srcPath = resolve(root, args.src);
+ const publicDir = resolve(root, args.public);
+ const nonExistentDir = resolve(__dirname, 'non-existent');
+ return {
+ publicPath: '/',
+ compress: true,
+ logLevel: args.debug ? 'debug' : 'silent',
+ clientLogLevel: args.debug ? 'info' : 'none',
+ contentBase: [nonExistentDir],
+ watchContentBase: true,
+ hot: true,
+ quiet: !args.debug,
+ open: true,
+ watchOptions: {
+ ignored: ignoredFiles(srcPath)
+ },
+ overlay: false,
+ host: args.host,
+ port: args.port,
+ historyApiFallback: {
+ disableDotRule: true
+ },
+ disableHostCheck: true,
+
+ before(app, server) {
+ app.use('/public', static$1(publicDir));
+ app.use(evalSourceMapMiddleware(server));
+ app.use(errorOverlayMiddleware());
+ hooks.onPreCreateApp(app);
+ },
+
+ after(app) {
+ hooks.onCreateApp(app);
+ }
+
+ };
+};
+
+const useYarn = existsSync(appYarnLock);
+const server = args => async (config, hooks) => ({
+ start: async () => {
+ const serverConfig = devServerConfig(hooks, args);
+ const protocol = process.env.HTTPS === 'true' ? 'https' : 'http';
+
+ const appName = require(packageJson).name;
+
+ const useTypescript = args.typescript;
+ const urls = prepareUrls(protocol, args.host, args.port);
+ const devSocket = {
+ warnings: warnings => devServer.sockWrite(devServer.sockets, 'warnings', warnings),
+ errors: errors => devServer.sockWrite(devServer.sockets, 'errors', errors)
+ };
+ const compiler = createCompiler({
+ appName,
+ config,
+ devSocket,
+ urls,
+ useYarn,
+ useTypescript,
+ webpack
+ });
+ const devServer = new WebpackDevServer(compiler, serverConfig);
+ return devServer.listen(args.port, args.host, err => {
+ if (err) return logger__default.fatal(err);
+ hooks.onServerListening(devServer);
+ });
+ }
+});
+
+const FSR = require('react-dev-utils/FileSizeReporter');
+
+const formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
+const {
+ measureFileSizesBeforeBuild,
+ printFileSizesAfterBuild
+} = FSR;
+const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;
+const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
+
+const hasCiEnvVar = () => get('ci', false, {
+ parse: true
+});
+
+const copyPublicFolder = async (dest, publicDir) => {
+ if (await pathExists(publicDir)) {
+ await copy(publicDir, distPublic(dest), {
+ dereference: true,
+ filter: file => file !== indexHtml
+ });
+ }
+};
+
+const compile = config => new Promise((resolve, reject) => {
+ let compiler;
+
+ try {
+ compiler = webpack(config);
+ } catch (err) {
+ onError(err);
+ }
+
+ compiler && compiler.run((err, stats) => {
+ if (err) reject(err);
+ resolve(stats);
+ });
+});
+
+const builder = async (config, previousFileSizes) => new Promise(async (resolve, reject) => {
+ try {
+ const stats = await compile(config);
+ const messages = formatWebpackMessages(stats.toJson({}, true));
+
+ if (messages.errors.length) {
+ return reject(new Error(messages.errors.join('\n\n')));
+ }
+
+ if (hasCiEnvVar() && messages.warnings.length) {
+ warn('\nTreating warnings as errors because process.env.CI = true.\n' + 'Most CI servers set it automatically.\n');
+ return reject(new Error(messages.warnings.join('\n\n')));
+ }
+
+ return resolve({
+ stats,
+ previousFileSizes,
+ warnings: messages.warnings
+ });
+ } catch (err) {
+ reject(err);
+ }
+});
+
+const onSuccess = (dist, {
+ stats,
+ previousFileSizes,
+ warnings
+}) => {
+ if (warnings.length) {
+ log();
+ warn('Compiled with warnings.\n');
+ warn(warnings.join('\n\n'));
+ warn('\nSearch for the ' + chalk$1.underline(chalk$1.yellow('keywords')) + ' to learn more about each warning.');
+ warn('To ignore, add ' + chalk$1.cyan('// eslint-disable-next-line') + ' to the line before.\n');
+ }
+
+ log();
+ log(`File sizes after gzip:\n`);
+ printFileSizesAfterBuild(stats, previousFileSizes, dist, WARN_AFTER_BUNDLE_GZIP_SIZE, WARN_AFTER_CHUNK_GZIP_SIZE);
+ log();
+};
+
+const onError = err => {
+ log();
+ fatal(err);
+ process.exit(1);
+ log();
+};
+
+const build = async (config, dist, publicDir) => {
+ const interactive = new Signale({
+ interactive: true,
+ scope: 'build'
+ });
+
+ try {
+ interactive.start('Creating an optimized bundle');
+ await ensureDir(dist);
+ const previousFileSizes = await measureFileSizesBeforeBuild(dist);
+ await emptyDir(dist);
+ await copyPublicFolder(dist, publicDir);
+ const result = await builder(config, previousFileSizes);
+ interactive.success('Build successfully created');
+ onSuccess(dist, result);
+ } catch (err) {
+ fatal(chalk$1.red('Failed to compile.\n'));
+ onError(err);
+ }
+};
+
+const bundler = (args, env) => new Bundler({
+ args,
+ build,
+ config: createConfig(args, env),
+ server: server(args)
+});
+
+/**
+ * Copyright (c) 2015-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+var chalk = require('chalk');
+
+var execSync = require('child_process').execSync;
+
+var spawn = require('cross-spawn');
+
+var opn = require('opn'); // https://github.com/sindresorhus/opn#app
+
+
+var OSX_CHROME = 'google chrome';
+const Actions = Object.freeze({
+ NONE: 0,
+ BROWSER: 1,
+ SCRIPT: 2
+});
+
+function getBrowserEnv() {
+ // Attempt to honor this environment variable.
+ // It is specific to the operating system.
+ // See https://github.com/sindresorhus/opn#app for documentation.
+ const value = process.env.BROWSER;
+ let action;
+
+ if (!value) {
+ // Default.
+ action = Actions.BROWSER;
+ } else if (value.toLowerCase().endsWith('.js')) {
+ action = Actions.SCRIPT;
+ } else if (value.toLowerCase() === 'none') {
+ action = Actions.NONE;
+ } else {
+ action = Actions.BROWSER;
+ }
+
+ return {
+ action,
+ value
+ };
+}
+
+function executeNodeScript(scriptPath, url) {
+ const extraArgs = process.argv.slice(2);
+ const child = spawn('node', [scriptPath, ...extraArgs, url], {
+ stdio: 'inherit'
+ });
+ child.on('close', code => {
+ if (code !== 0) {
+ console.log();
+ console.log(chalk.red('The script specified as BROWSER environment variable failed.'));
+ console.log(chalk.cyan(scriptPath) + ' exited with code ' + code + '.');
+ console.log();
+ return;
+ }
+ });
+ return true;
+}
+
+function startBrowserProcess(browser, url) {
+ // If we're on OS X, the user hasn't specifically
+ // requested a different browser, we can try opening
+ // Chrome with AppleScript. This lets us reuse an
+ // existing tab when possible instead of creating a new one.
+ const shouldTryOpenChromeWithAppleScript = process.platform === 'darwin' && (typeof browser !== 'string' || browser === OSX_CHROME);
+
+ if (shouldTryOpenChromeWithAppleScript) {
+ try {
+ // Try our best to reuse existing tab
+ // on OS X Google Chrome with AppleScript
+ execSync('ps cax | grep "Google Chrome"');
+ execSync('osascript openChrome.applescript "' + encodeURI(url) + '"', {
+ cwd: __dirname,
+ stdio: 'ignore'
+ });
+ return true;
+ } catch (err) {// Ignore errors.
+ }
+ } // Another special case: on OS X, check if BROWSER has been set to "open".
+ // In this case, instead of passing `open` to `opn` (which won't work),
+ // just ignore it (thus ensuring the intended behavior, i.e. opening the system browser):
+ // https://github.com/facebook/create-react-app/pull/1690#issuecomment-283518768
+
+
+ if (process.platform === 'darwin' && browser === 'open') {
+ browser = undefined;
+ } // Fallback to opn
+ // (It will always open new tab)
+
+
+ try {
+ var options = {
+ app: browser,
+ wait: false
+ };
+ opn(url, options).catch(() => {}); // Prevent `unhandledRejection` error.
+
+ return true;
+ } catch (err) {
+ return false;
+ }
+}
+/**
+ * Reads the BROWSER environment variable and decides what to do with it. Returns
+ * true if it opened a browser or ran a node.js script, otherwise false.
+ */
+
+
+function openBrowser(url) {
+ const {
+ action,
+ value
+ } = getBrowserEnv();
+
+ switch (action) {
+ case Actions.NONE:
+ // Special case: BROWSER="none" will prevent opening completely.
+ return false;
+
+ case Actions.SCRIPT:
+ return executeNodeScript(value, url);
+
+ case Actions.BROWSER:
+ return startBrowserProcess(value, url);
+
+ default:
+ throw new Error('Not implemented.');
+ }
+}
+
+const mapToArray = (map = []) => Object.entries(map).map(entry => entry && {
+ key: entry[0],
+ value: entry[1]
+}).filter(Boolean);
+
+const updateEntries = entries => async p => {
+ const prev = _get('entries', p.getState());
+
+ const map = await entries.get();
+
+ if (map && !equal(prev, map)) {
+ await Entries.writeImports(map);
+ p.setState('entries', mapToArray(map));
+ }
+};
+
+const state = (entries, config, dev) => {
+ const src = relative(root, config.src);
+ const files = Array.isArray(config.files) ? config.files.map(filePath => join(src, filePath)) : join(src, config.files);
+ const ignored = config.watchIgnore || /(((^|[\/\\])\..+)|(node_modules))/;
+ const watcher = chokidar.watch(files, {
+ cwd: root,
+ ignored,
+ persistent: true
+ });
+ watcher.setMaxListeners(Infinity);
+ return {
+ id: 'entries',
+ start: async params => {
+ const update = updateEntries(entries);
+ await update(params);
+
+ if (dev) {
+ watcher.on('add', async () => update(params));
+ watcher.on('change', async () => update(params));
+ watcher.on('unlink', async () => update(params));
+ watcher.on('raw', async (event, path, details) => {
+ if (details.event === 'moved' && details.type === 'directory') {
+ await update(params);
+ }
+ });
+ }
+ },
+ close: () => {
+ watcher.close();
+ }
+ };
+};
+
+const getInitialConfig = config => {
+ const pkg = readJsonSync(appPackageJson, {
+ throws: false
+ });
+ const repoUrl = getRepoUrl();
+ return {
+ title: config.title,
+ description: config.description,
+ menu: config.menu,
+ version: get$1(pkg, 'version'),
+ repository: repoUrl,
+ native: config.native,
+ codeSandbox: config.codeSandbox,
+ themeConfig: config.themeConfig,
+ separator: config.separator
+ };
+};
+
+const update = async (params, initial, {
+ config
+}) => {
+ const next = config ? loadFrom(resolve(config), initial, true, true) : load('docz', initial, true, true);
+ params.setState('config', next);
+};
+
+const state$1 = (config, dev) => {
+ const initial = getInitialConfig(config);
+ const glob = config.config || finds('docz');
+ const ignored = config.watchIgnore || /(((^|[\/\\])\..+)|(node_modules))/;
+ const watcher = chokidar.watch(glob, {
+ cwd: root,
+ ignored,
+ persistent: true
+ });
+ watcher.setMaxListeners(Infinity);
+ return {
+ id: 'config',
+ start: async params => {
+ const fn = async () => update(params, initial, config);
+
+ await update(params, initial, config);
+
+ if (dev) {
+ watcher.on('add', fn);
+ watcher.on('change', fn);
+ watcher.on('unlink', fn);
+ }
+ },
+ close: () => {
+ watcher.close();
+ }
+ };
+};
+
+const throwError = err => {
+ logger__default.fatal(`Error parsing static types`);
+ logger__default.error(err);
+};
+
+const jsParser = (files, config) => {
+ const resolver = config.docgenConfig.resolver || reactDocgen.resolver.findAllExportedComponentDefinitions;
+
+ const parseFilepathProps = filepath => {
+ const handlers = reactDocgen.defaultHandlers.concat([externalProptypesHandler(filepath), actualNameHandler]);
+
+ try {
+ const code = readFileSync(filepath, 'utf-8');
+ const props = reactDocgen.parse(code, resolver, handlers);
+ return {
+ key: normalize(filepath),
+ value: props
+ };
+ } catch (err) {
+ if (config.debug) throwError(err);
+ return null;
+ }
+ };
+
+ return files.map(parseFilepathProps).filter(Boolean);
+};
+
+const digest = str => createHash('md5').update(str).digest('hex');
+
+const cacheFilepath = join(cache, 'propsParser.json');
+
+const readCacheFile = () => readJSONSync(cacheFilepath, {
+ throws: false
+});
+
+function checkFilesOnCache(files) {
+ const cache = readCacheFile();
+ if (_isEmpty(cache)) return files;
+ return files.filter(filepath => {
+ const normalized = normalize(filepath);
+ const hash = digest(readFileSync(normalized, 'utf-8'));
+
+ const found = _get(normalized, cache);
+
+ return found && hash !== found.hash;
+ });
+}
+
+function writePropsOnCache(items) {
+ const cache = readCacheFile();
+ const newCache = items.reduce((obj, {
+ key: filepath,
+ value
+ }) => {
+ const normalized = normalize(filepath);
+ const hash = digest(readFileSync(normalized, 'utf-8'));
+ return Object.assign({}, obj, {
+ [normalized]: {
+ hash,
+ props: value
+ }
+ });
+ }, {});
+ outputJSONSync(cacheFilepath, Object.assign({}, cache, newCache));
+}
+
+function getPropsOnCache() {
+ const cache = readCacheFile();
+
+ if (_isEmpty(cache)) {
+ warn('Any cache was found with your props definitions');
+ warn("We'll parse your components to get props from them");
+ warn('Depending on your components, this could take while...');
+ return [];
+ }
+
+ return Object.entries(cache).map(([key, value]) => ({
+ key,
+ value: _get('props', value)
+ }));
+}
+
+const mergeWithCache = (cache, props) => {
+ const keys = props.map(_prop('key'));
+ return cache.filter(item => !_contains(item.key, keys)).concat(props);
+};
+
+const removeFromCache = filepath => {
+ const cache = readCacheFile();
+ outputJSONSync(cacheFilepath, _omit(filepath, cache));
+};
+
+const getInitialFilesMap = () => {
+ const cache = readCacheFile();
+ if (_isEmpty(cache)) return new Map();
+ const map = new Map();
+
+ _entries(cache).forEach(([filepath]) => {
+ const exist = pathExistsSync(filepath);
+
+ if (!exist) {
+ removeFromCache(filepath);
+ } else {
+ map.set(filepath, {
+ text: readFileSync(filepath, 'utf-8'),
+ version: 0
+ });
+ }
+ });
+
+ return map;
+};
+
+let languageService = null;
+const filesMap = getInitialFilesMap();
+
+function getTSConfigFile(tsconfigPath) {
+ const basePath = dirname(tsconfigPath);
+ const configFile = ts$1.readConfigFile(tsconfigPath, ts$1.sys.readFile);
+ return ts$1.parseJsonConfigFileContent(configFile.config, ts$1.sys, basePath, {}, tsconfigPath);
+}
+
+function loadFiles(filesToLoad) {
+ filesToLoad.forEach(filepath => {
+ const normalized = normalize(filepath);
+ const found = filesMap.get(normalized);
+ filesMap.set(normalized, {
+ text: readFileSync(normalized, 'utf-8'),
+ version: found ? found.version + 1 : 0
+ });
+ });
+}
+
+function createServiceHost(compilerOptions, files) {
+ return {
+ getScriptFileNames: () => {
+ return [...files.keys()];
+ },
+ getScriptVersion: fileName => {
+ const file = files.get(fileName);
+ return file && file.version.toString() || '';
+ },
+ getScriptSnapshot: fileName => {
+ if (!existsSync$1(fileName)) {
+ return undefined;
+ }
+
+ let file = files.get(fileName);
+
+ if (file === undefined) {
+ const text = readFileSync(fileName).toString();
+ file = {
+ version: 0,
+ text
+ };
+ files.set(fileName, file);
+ }
+
+ return ts$1.ScriptSnapshot.fromString(file.text);
+ },
+ getCurrentDirectory: () => process.cwd(),
+ getCompilationSettings: () => compilerOptions,
+ getDefaultLibFileName: options => ts$1.getDefaultLibFilePath(options),
+ fileExists: ts$1.sys.fileExists,
+ readFile: ts$1.sys.readFile,
+ readDirectory: ts$1.sys.readDirectory
+ };
+}
+
+const parseFiles = (files, config, tsconfig) => {
+ const opts = {
+ propFilter(prop) {
+ if (prop.parent == null) return true;
+ const propFilter = config.docgenConfig.propFilter;
+ const val = propFilter && _isFunction(propFilter) && propFilter(prop);
+ return !prop.parent.fileName.includes('node_modules') || Boolean(val);
+ },
+
+ componentNameResolver(exp, source) {
+ const componentNameResolver = config.docgenConfig.resolver;
+ const val = componentNameResolver && _isFunction(componentNameResolver) && componentNameResolver(exp, source);
+ return val;
+ }
+
+ };
+ loadFiles(files);
+ const parser = reactDocgenTs.withCustomConfig(tsconfig, opts);
+
+ const compilerOptions = _get('options', getTSConfigFile(tsconfig));
+
+ const programProvider = () => {
+ if (languageService) return languageService.getProgram();
+ const servicesHost = createServiceHost(compilerOptions, filesMap);
+ const documentRegistry = ts$1.createDocumentRegistry();
+ languageService = ts$1.createLanguageService(servicesHost, documentRegistry);
+ return languageService.getProgram();
+ };
+
+ return files.map(filepath => ({
+ key: normalize(filepath),
+ value: parser.parseWithProgramProvider(filepath, programProvider)
+ }));
+};
+
+const tsParser = (files, config, tsconfig) => {
+ if (!tsconfig) return null;
+ const filesToLoad = checkFilesOnCache(files);
+ const propsOnCache = getPropsOnCache();
+ if (!filesToLoad.length) return propsOnCache;
+ const next = parseFiles(filesToLoad, config, tsconfig);
+ writePropsOnCache(next);
+ return mergeWithCache(propsOnCache, next);
+};
+
+const docgen = async (files, config) => {
+ const tsconfig = await findup('tsconfig.json', {
+ cwd: root
+ });
+ return config.typescript ? tsParser(files, config, tsconfig) : jsParser(files, config);
+};
+
+const getPattern = config => {
+ const {
+ ignore,
+ src: source,
+ typescript: ts,
+ docgenConfig: docgenConfig
+ } = config;
+ const src = relative(root, docgenConfig.searchPath ? docgenConfig.searchPath : source);
+ return ignore.map(entry => `!**/${entry}`).concat([join(src, ts ? '**/*.{ts,tsx}' : '**/*.{js,jsx,mjs}'), '!**/node_modules', '!**/doczrc.js']);
+};
+
+const removeFilepath = (items, filepath) => items.filter(item => item.key !== filepath);
+
+const initial = (config, pattern) => async p => {
+ const {
+ filterComponents
+ } = config;
+ const files = await glob(pattern, {
+ cwd: root
+ });
+ const filtered = filterComponents ? filterComponents(files) : files;
+ const metadata = await docgen(filtered, config);
+ p.setState('props', metadata);
+};
+
+const change = (p, config) => async filepath => {
+ const prev = _get('props', p.getState());
+
+ const metadata = await docgen([filepath], config);
+ const filtered = metadata.filter(_propEq('key', filepath));
+ const next = removeFilepath(prev, filepath).concat(filtered);
+ p.setState('props', next);
+};
+
+const remove = p => async filepath => {
+ const prev = _get('props', p.getState());
+
+ const next = removeFilepath(prev, filepath);
+ p.setState('props', next);
+};
+
+const state$2 = (config, dev) => {
+ const pattern = getPattern(config);
+ const ignored = config.watchIgnore || /(((^|[\/\\])\..+)|(node_modules))/;
+ const watcher = chokidar.watch(pattern, {
+ cwd: root,
+ ignored,
+ persistent: true
+ });
+ watcher.setMaxListeners(Infinity);
+ return {
+ id: 'props',
+ start: async params => {
+ const addInitial = initial(config, pattern);
+ await addInitial(params);
+
+ if (dev) {
+ watcher.on('change', change(params, config));
+ watcher.on('unlink', remove(params));
+ }
+ },
+ close: () => {
+ watcher.close();
+ }
+ };
+};
+
+
+
+var index = /*#__PURE__*/Object.freeze({
+ entries: state,
+ config: state$1,
+ props: state$2
+});
+
+process.setMaxListeners(Infinity);
+const dev = async args => {
+ const env = get('node.env');
+ const config = await parseConfig(args);
+ const bundler$1 = bundler(config, env);
+ const entries = new Entries(config);
+ const {
+ websocketHost,
+ websocketPort
+ } = config;
+ const bundlerConfig = await bundler$1.mountConfig(env);
+ const app = await bundler$1.createApp(bundlerConfig);
+
+ try {
+ await Entries.writeApp(config, true);
+ await Entries.writeImports((await entries.get()));
+ } catch (err) {
+ fatal('Failed to build your files');
+ error(err);
+ process.exit(1);
+ }
+
+ const server = await app.start();
+ const dataServer = new DataServer();
+ const socket = new Socket(server, websocketHost, websocketPort);
+ if (config.propsParser) dataServer.register([state$2(config, true)]);
+ dataServer.register([state$1(config, true), state(entries, config, true)]);
+
+ try {
+ await dataServer.start();
+ if (args.open || args.o) openBrowser(`http://${config.host}:${config.port}`);
+ } catch (err) {
+ fatal('Failed to process data server');
+ error(err);
+ dataServer.close();
+ process.exit(1);
+ }
+
+ socket.onConnection((_, emit) => {
+ const subscribe = dataServer.onStateChange(action => {
+ emit(action.type, action.payload);
+ });
+ return () => subscribe();
+ });
+ onSignal(async () => {
+ dataServer.close();
+ server.close();
+ });
+ server.on('close', async () => {
+ dataServer.close();
+ });
+};
+
+const build$1 = async args => {
+ const env = get('node.env');
+ const config = await parseConfig(args);
+ const entries = new Entries(config);
+ const bundler$1 = bundler(config, env);
+ const bundlerConfig = await bundler$1.mountConfig(env);
+ const run = Plugin.runPluginsMethod(config.plugins);
+ const dataServer = new DataServer();
+ if (config.propsParser) dataServer.register([state$2(config)]);
+ dataServer.register([state$1(config), state(entries, config)]);
+
+ try {
+ await Entries.writeApp(config, false);
+ await Entries.writeImports((await entries.get()));
+ await dataServer.start();
+ await run('onPreBuild', config);
+ await bundler$1.build(bundlerConfig);
+ await run('onPostBuild', config);
+ dataServer.close();
+ } catch (err) {
+ error(err);
+ process.exit(1);
+ dataServer.close();
+ }
+};
+
+const serve = async args => {
+ const config = await parseConfig(args);
+ const dist = getDist(config.dest);
+ spawn$1.sync('serve', ['-s', dist], {
+ stdio: 'inherit'
+ });
+};
+
+const cli = () => {
+ return command('dev', 'initialize docz dev server', setArgs, async args => {
+ setEnv('development');
+ await dev(args);
+ }).command('build', 'build dir as static site', setArgs, async args => {
+ setEnv('production');
+ await build$1(args);
+ process.exit();
+ }).command('serve', 'serve dir as static site', setArgs, async args => {
+ setEnv('production');
+ await build$1(args);
+ await serve(args);
+ process.exit();
+ }).demandCommand().help().wrap(72).epilog('for more information visit https://github.com/pedronauck/docz').showHelpOnFail(false, 'whoops, something went wrong! run with --help').argv;
+};
+
+/** cli exports */
+
+export { DataServer, Entries, Entry, Plugin, cli, createPlugin, getBaseConfig, parseConfig, setArgs, index as states };
diff --git a/docs/docz-lib/docz-core/dist/index.js b/docs/docz-lib/docz-core/dist/index.js
new file mode 100644
index 0000000..7a752f0
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/index.js
@@ -0,0 +1,2024 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var yargs = require('yargs');
+var _get = _interopDefault(require('lodash/fp/get'));
+var fs = require('fs-extra');
+var envDotProp = require('env-dot-prop');
+var humanize = _interopDefault(require('humanize-string'));
+var titleize = _interopDefault(require('titleize'));
+var fs$1 = require('fs');
+var path = require('path');
+var resolve = require('resolve');
+var logger = require('signale');
+var logger__default = _interopDefault(logger);
+var tslib_1 = require('tslib');
+var mdast = require('docz-utils/lib/mdast');
+var fs$2 = require('docz-utils/lib/fs');
+var glob = _interopDefault(require('fast-glob'));
+var crypto = require('crypto');
+var slugify = _interopDefault(require('@sindresorhus/slugify'));
+var _isFunction = _interopDefault(require('lodash/fp/isFunction'));
+var pReduce = _interopDefault(require('p-reduce'));
+var getPkgRepo = _interopDefault(require('get-pkg-repo'));
+var findup = _interopDefault(require('find-up'));
+var WS = _interopDefault(require('ws'));
+var _merge = _interopDefault(require('lodash/fp/merge'));
+var _omit = _interopDefault(require('lodash/fp/omit'));
+var loadCfg = require('load-cfg');
+var detectPort = _interopDefault(require('detect-port'));
+var Config = _interopDefault(require('webpack-chain'));
+var frontmatter = _interopDefault(require('remark-frontmatter'));
+var remarkDocz = _interopDefault(require('remark-docz'));
+var rehypeDocz = _interopDefault(require('rehype-docz'));
+var slug = _interopDefault(require('rehype-slug'));
+var webpack = require('webpack');
+var webpack__default = _interopDefault(webpack);
+var webpackBarPlugin = _interopDefault(require('webpackbar'));
+var htmlMinifier = require('html-minifier');
+var miniHtmlWebpack = require('mini-html-webpack-plugin');
+var miniHtmlWebpack__default = _interopDefault(miniHtmlWebpack);
+var manifestPlugin = _interopDefault(require('webpack-manifest-plugin'));
+var watchMissingNodeModules = _interopDefault(require('react-dev-utils/WatchMissingNodeModulesPlugin'));
+require('react-dev-utils/ModuleNotFoundPlugin');
+var webpackBundleAnalyzer = require('webpack-bundle-analyzer');
+var ctags = require('common-tags');
+var TerserPlugin = require('terser-webpack-plugin');
+var getCacheIdentifier = _interopDefault(require('react-dev-utils/getCacheIdentifier'));
+var WebpackDevServer = _interopDefault(require('webpack-dev-server'));
+var WebpackDevServerUtils = require('react-dev-utils/WebpackDevServerUtils');
+var express = require('express');
+var errorOverlayMiddleware = _interopDefault(require('react-dev-utils/errorOverlayMiddleware'));
+var evalSourceMapMiddleware = _interopDefault(require('react-dev-utils/evalSourceMapMiddleware'));
+var ignoredFiles = _interopDefault(require('react-dev-utils/ignoredFiles'));
+var chalk$1 = _interopDefault(require('chalk'));
+var chokidar = _interopDefault(require('chokidar'));
+var equal = _interopDefault(require('fast-deep-equal'));
+var get = _interopDefault(require('lodash/get'));
+var _propEq = _interopDefault(require('lodash/fp/propEq'));
+var externalProptypesHandler = _interopDefault(require('react-docgen-external-proptypes-handler'));
+var actualNameHandler = _interopDefault(require('react-docgen-actual-name-handler'));
+var reactDocgen = _interopDefault(require('react-docgen'));
+var _entries = _interopDefault(require('lodash/fp/entries'));
+var _contains = _interopDefault(require('lodash/fp/contains'));
+var _prop = _interopDefault(require('lodash/fp/prop'));
+var _isEmpty = _interopDefault(require('lodash/fp/isEmpty'));
+var reactDocgenTs = _interopDefault(require('react-docgen-typescript'));
+var ts$1 = _interopDefault(require('typescript'));
+var spawn$1 = _interopDefault(require('cross-spawn'));
+
+const ensureSlash = (filepath, needsSlash) => {
+ const hasSlash = filepath.endsWith('/');
+
+ if (hasSlash && !needsSlash) {
+ return filepath.substr(filepath, filepath.length - 1);
+ } else if (!hasSlash && needsSlash) {
+ return `${filepath}/`;
+ } else {
+ return filepath;
+ }
+};
+const root = fs$1.realpathSync(process.cwd());
+const resolveApp = to => path.resolve(root, to);
+const resolveOwn = to => path.resolve(__dirname, '../', to);
+const templates = path.join(resolve.sync('./'), '../templates');
+const packageJson = resolveApp('package.json');
+const servedPath = base => ensureSlash(base, true);
+const docz = resolveApp('.docz');
+const app = path.resolve(docz, 'app/');
+const cache = path.resolve(docz, 'cache/');
+const appPublic = path.resolve(docz, 'public/');
+const appNodeModules = resolveApp('node_modules');
+const appPackageJson = resolveApp('package.json');
+const appYarnLock = resolveOwn('yarn.lock');
+const ownNodeModules = resolveOwn('node_modules');
+const getDist = dest => path.join(root, dest);
+const distPublic = dest => path.join(dest, 'public/');
+const importsJs = path.resolve(app, 'imports.js');
+const rootJs = path.resolve(app, 'root.jsx');
+const indexJs = path.resolve(app, 'index.jsx');
+const indexHtml = path.resolve(app, 'index.html');
+const db = path.resolve(app, 'db.json');
+
+var paths = /*#__PURE__*/Object.freeze({
+ ensureSlash: ensureSlash,
+ root: root,
+ resolveApp: resolveApp,
+ resolveOwn: resolveOwn,
+ templates: templates,
+ packageJson: packageJson,
+ servedPath: servedPath,
+ docz: docz,
+ app: app,
+ cache: cache,
+ appPublic: appPublic,
+ appNodeModules: appNodeModules,
+ appPackageJson: appPackageJson,
+ appYarnLock: appYarnLock,
+ ownNodeModules: ownNodeModules,
+ getDist: getDist,
+ distPublic: distPublic,
+ importsJs: importsJs,
+ rootJs: rootJs,
+ indexJs: indexJs,
+ indexHtml: indexHtml,
+ db: db
+});
+
+const getEnv = (val, defaultValue = null) => envDotProp.get(val, defaultValue, {
+ parse: true
+});
+
+const getInitialTitle = pkg => {
+ const name = _get('name', pkg) || 'MyDoc';
+ return titleize(humanize(name.replace(/^@.*\//, '')));
+};
+
+const getInitialDescription = pkg => _get('description', pkg) || 'My awesome app using docz';
+
+const setArgs = yargs => {
+ const pkg = fs.readJsonSync(appPackageJson, {
+ throws: false
+ });
+ return yargs.option('base', {
+ type: 'string',
+ default: getEnv('docz.base', '/')
+ }).option('source', {
+ alias: 'src',
+ type: 'string',
+ default: getEnv('docz.source', './')
+ }).option('files', {
+ type: 'string',
+ default: getEnv('docz.files', '**/*.{md,markdown,mdx}')
+ }).option('ignore', {
+ type: 'array',
+ default: getEnv('docz.ignore', [])
+ }).option('public', {
+ type: 'string',
+ default: getEnv('docz.public', '/public')
+ }).option('dest', {
+ alias: 'd',
+ type: 'string',
+ default: getEnv('docz.dest', '.docz/dist')
+ }).option('editBranch', {
+ alias: 'eb',
+ type: 'string',
+ default: getEnv('docz.edit.branch', 'master')
+ }).option('config', {
+ type: 'string',
+ default: getEnv('docz.config', '')
+ }).option('title', {
+ type: 'string',
+ default: getEnv('docz.title', getInitialTitle(pkg))
+ }).option('description', {
+ type: 'string',
+ default: getEnv('docz.description', getInitialDescription(pkg))
+ }).option('theme', {
+ type: 'string',
+ default: getEnv('docz.theme', 'theme')
+ }).option('typescript', {
+ alias: 'ts',
+ type: 'boolean',
+ default: getEnv('docz.typescript', false)
+ }).option('propsParser', {
+ type: 'boolean',
+ default: getEnv('docz.props.parser', true)
+ }).option('wrapper', {
+ type: 'string',
+ default: getEnv('docz.wrapper', null)
+ }).option('indexHtml', {
+ type: 'string',
+ default: getEnv('docz.index.html', null)
+ }).option('debug', {
+ type: 'boolean',
+ default: getEnv('docz.debug', false)
+ }).option('clearConsole', {
+ type: 'boolean',
+ default: getEnv('docz.clear.console', true)
+ }).option('host', {
+ type: 'string',
+ default: getEnv('docz.host', '127.0.0.1')
+ }).option('port', {
+ alias: 'p',
+ type: 'number',
+ default: getEnv('docz.port', 3000)
+ }).option('websocketHost', {
+ type: 'string',
+ default: getEnv('docz.websocket.host', '127.0.0.1')
+ }).option('websocketPort', {
+ type: 'number',
+ default: getEnv('docz.websocket.port', 60505)
+ }).option('native', {
+ type: 'boolean',
+ default: getEnv('docz.native', false)
+ }).option('codeSandbox', {
+ type: 'boolean',
+ default: getEnv('docz.codeSandbox', true)
+ }).option('sourcemaps', {
+ type: 'boolean',
+ default: getEnv('docz.sourcemaps', true)
+ }).option('separator', {
+ type: 'string',
+ default: getEnv('docz.separator', '-')
+ }).option('open', {
+ alias: 'o',
+ describe: 'auto open browser in dev mode',
+ type: 'boolean',
+ default: false
+ });
+};
+
+const populateNodePath = () => {
+ // We support resolving modules according to `NODE_PATH`.
+ // It works similar to `NODE_PATH` in Node itself:
+ // https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
+ // Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored.
+ // Otherwise, we risk importing Node.js core modules into an app instead of Webpack shims.
+ // https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421
+ // We also resolve them to make sure all tools using them work consistently.
+ envDotProp.set('node.path', envDotProp.get('node.path', '').split(path.delimiter).filter(folder => folder && !path.isAbsolute(folder)).map(folder => path.resolve(root, folder)).join(path.delimiter));
+};
+
+const configDotEnv = () => {
+ const NODE_ENV = envDotProp.get('node.env');
+ const dotenv = resolveApp('.env');
+ const dotenvFiles = [`${dotenv}.${NODE_ENV}.local`, `${dotenv}.${NODE_ENV}`, // Don't include `.env.local` for `test` environment
+ // since normally you expect tests to produce the same
+ // results for everyone
+ NODE_ENV !== 'test' && `${dotenv}.local`, dotenv]; // Load environment variables from .env* files. Suppress warnings using silent
+ // if this file is missing. dotenv will never modify any environment variables
+ // that have already been set. Variable expansion is supported in .env files.
+ // https://github.com/motdotla/dotenv
+
+ dotenvFiles.filter(Boolean).forEach(dotenvFile => {
+ require('dotenv').config({
+ path: dotenvFile
+ });
+ });
+};
+
+const setEnv = env => {
+ envDotProp.set('babel.env', env);
+ envDotProp.set('node.env', env);
+ configDotEnv();
+ populateNodePath();
+};
+const getClientEnvironment = publicUrl => {
+ const APP_TEST = /^(REACT_APP_)|(ANGULAR_APP_)|(VUE_APP_)|(DOCZ_)/i;
+ const raw = Object.keys(process.env).filter(key => APP_TEST.test(key)).reduce((env, key) => {
+ env[key] = process.env[key];
+ return env;
+ }, {
+ // Useful for determining whether we’re running in production mode. Most
+ // importantly, it switches React into the correct mode.
+ NODE_ENV: envDotProp.get('node.env') || 'development',
+ // Useful for resolving the correct path to static assets in `public`. For
+ // example, <img src={process.env.PUBLIC_URL + '/img/logo.png'} />. This should
+ // only be used as an escape hatch. Normally you would put images into the `src`
+ // and `import` them in code to get their
+ PUBLIC_URL: publicUrl
+ });
+ const stringified = {
+ 'process.env': Object.keys(raw).reduce((env, key) => {
+ env[key] = JSON.stringify(raw[key]);
+ return env;
+ }, {})
+ };
+ return {
+ raw,
+ stringified
+ };
+};
+
+const createId = file => crypto.createHash('md5').update(file).digest('hex');
+
+const mountRoute = (base, route) => {
+ if (base === '/') return route;
+ const baseHasSlash = base.endsWith('/');
+ if (baseHasSlash) return base.substr(0, base.length - 1) + route;
+ return base + route;
+};
+
+class Entry {
+ constructor(ast, file, src, config) {
+ const filepath = this.getFilepath(file, src);
+ const parsed = mdast.getParsedData(ast);
+ const name = this.getName(filepath, parsed);
+ this.id = createId(file);
+ this.filepath = filepath;
+ this.link = '';
+ this.slug = this.slugify(filepath, config.separator);
+ this.route = this.getRoute(parsed, config.base);
+ this.name = name;
+ this.menu = parsed.menu || '';
+ this.headings = mdast.headingsFromAst(ast);
+ this.settings = parsed;
+ }
+
+ setLink(url) {
+ if (url) {
+ this.link = url.replace('{{filepath}}', this.filepath);
+ }
+ }
+
+ getFilepath(file, src) {
+ const srcPath = path.resolve(root, src);
+ const filepath = path.relative(srcPath, file);
+
+ if (process.platform === 'win32') {
+ return filepath.split('\\').join('/');
+ }
+
+ return filepath;
+ }
+
+ getName(filepath, parsed) {
+ const filename = humanize(path.parse(filepath).name);
+ return parsed && parsed.name ? parsed.name : filename;
+ }
+
+ slugify(filepath, separator) {
+ const ext = path.extname(filepath);
+ const fileWithoutExt = filepath.replace(ext, '');
+ return slugify(fileWithoutExt, {
+ separator
+ });
+ }
+
+ getRoute(parsed, base) {
+ const parsedRoute = _get('route', parsed);
+ const route = parsedRoute || `/${this.slug}`;
+ return mountRoute('/', route);
+ }
+}
+
+class Plugin {
+ constructor(p) {
+ this.setConfig = p.setConfig;
+ this.modifyBundlerConfig = p.modifyBundlerConfig;
+ this.modifyBabelRc = p.modifyBabelRc;
+ this.modifyFiles = p.modifyFiles;
+ this.onPreCreateApp = p.onPreCreateApp;
+ this.onCreateWebpackChain = p.onCreateWebpackChain;
+ this.onCreateApp = p.onCreateApp;
+ this.onServerListening = p.onServerListening;
+ this.onPreBuild = p.onPreBuild;
+ this.onPostBuild = p.onPostBuild;
+ this.onPreRender = p.onPreRender;
+ this.onPostRender = p.onPostRender;
+ }
+
+ static runPluginsMethod(plugins) {
+ return (method, ...args) => {
+ if (plugins && plugins.length > 0) {
+ for (const plugin of plugins) {
+ const fn = _get(method, plugin);
+
+ _isFunction(fn) && fn(...args);
+ }
+ }
+ };
+ }
+
+ static propsOfPlugins(plugins) {
+ return prop => plugins && plugins.length > 0 ? plugins.map(p => _get(prop, p)).filter(Boolean) : [];
+ }
+
+ static reduceFromPlugins(plugins) {
+ return (method, initial, ...args) => {
+ return [...(plugins || [])].reduce((obj, plugin) => {
+ const fn = _get(method, plugin);
+
+ return fn && _isFunction(fn) ? fn(obj, ...args) : obj;
+ }, initial);
+ };
+ }
+
+ static reduceFromPluginsAsync(plugins) {
+ return (method, initial, ...args) => {
+ return pReduce([...(plugins || [])], (obj, plugin) => {
+ const fn = _get(method, plugin);
+
+ return Promise.resolve(fn && _isFunction(fn) ? fn(obj, ...args) : obj);
+ }, initial);
+ };
+ }
+
+}
+function createPlugin(factory) {
+ return new Plugin(factory);
+}
+
+const parseRepo = () => {
+ try {
+ const pkg = fs.readJsonSync(appPackageJson);
+ return getPkgRepo(pkg);
+ } catch (err) {
+ return null;
+ }
+};
+const getRepoUrl = () => {
+ const repo = parseRepo();
+ return repo && (repo.browsetemplate && repo.browsetemplate.replace('{domain}', repo.domain).replace('{user}', repo.user).replace('{project}', repo.project).replace('{/tree/committish}', '') || repo.browse && repo.browse());
+};
+
+const getBitBucketPath = (branch, relative) => {
+ const querystring = `?mode=edit&spa=0&at=${branch}&fileviewer=file-view-default`;
+ const filepath = path.join(`/src/${branch}`, relative, `{{filepath}}`);
+ return `${filepath}${querystring}`;
+};
+
+const getTree = (repo, branch, relative) => {
+ const defaultPath = path.join(`/edit/${branch}`, relative, `{{filepath}}`);
+ const bitBucketPath = getBitBucketPath(branch, relative);
+ if (repo && repo.type === 'bitbucket') return bitBucketPath;
+ return defaultPath;
+};
+
+const getRepoEditUrl = (src, branch) => {
+ try {
+ const repo = parseRepo();
+ const project = path.parse(findup.sync('.git')).dir;
+ const root$1 = path.join(root, src);
+ const relative = path.relative(project, root$1);
+ const tree = getTree(repo, branch, relative);
+ return repo && repo.browsetemplate && repo.browsetemplate.replace('{domain}', repo.domain).replace('{user}', repo.user).replace('{project}', repo.project).replace('{/tree/committish}', tree);
+ } catch (err) {
+ return null;
+ }
+};
+
+const fromTemplates = file => path.join(templates, file);
+
+const mapToObj = map => Array.from(map.entries()).reduce((obj, [key, value]) => Object.assign({}, obj, {
+ [`${key}`]: value
+}), {});
+
+const matchFilesWithSrc = config => files => {
+ const src = path.relative(root, config.src);
+ return files.map(file => file.startsWith(src) ? file : path.join(src, file));
+};
+
+const writeAppFiles = async (config, dev) => {
+ const {
+ plugins,
+ theme
+ } = config;
+ const props = Plugin.propsOfPlugins(plugins);
+ const onPreRenders = props('onPreRender');
+ const onPostRenders = props('onPostRender');
+ const isProd = !dev;
+ const root = await fs$2.compiled(fromTemplates('root.tpl.js'), {
+ minimize: false
+ });
+ const js = await fs$2.compiled(fromTemplates('index.tpl.js'), {
+ minimize: false
+ });
+ const websocketUrl = `ws://${config.websocketHost}:${config.websocketPort}`;
+ const rawRootJs = root({
+ theme,
+ isProd,
+ wrapper: config.wrapper,
+ websocketUrl
+ });
+ const rawIndexJs = js({
+ onPreRenders,
+ onPostRenders,
+ isProd
+ });
+ await fs.remove(rootJs);
+ await fs.remove(indexJs);
+ await fs$2.touch(rootJs, rawRootJs);
+ await fs$2.touch(indexJs, rawIndexJs);
+};
+
+class Entries {
+ static async writeApp(config, dev) {
+ await fs.ensureDir(app);
+ await writeAppFiles(config, dev);
+ }
+
+ static async writeImports(map) {
+ const imports = await fs$2.compiled(fromTemplates('imports.tpl.js'));
+ const rawImportsJs = imports({
+ entries: Object.values(map)
+ });
+ await fs$2.touch(path.join(app, 'imports.js'), rawImportsJs);
+ }
+
+ constructor(config) {
+ this.repoEditUrl = getRepoEditUrl(config.src, config.editBranch);
+ this.all = new Map();
+
+ this.get = async () => this.getMap(config);
+ }
+
+ async getMap(config) {
+ const {
+ src,
+ files: pattern,
+ ignore,
+ plugins,
+ mdPlugins
+ } = config;
+ const arr = Array.isArray(pattern) ? pattern : [pattern];
+ const toMatch = matchFilesWithSrc(config);
+ const files = await glob(toMatch(arr), {
+ ignore: ['**/node_modules/**'].concat(ignore),
+ onlyFiles: true,
+ unique: true,
+ nocase: true,
+ matchBase: true
+ });
+
+ const createEntry = async file => {
+ try {
+ const ast = await mdast.parseMdx(file, mdPlugins);
+ const entry = new Entry(ast, file, src, config);
+ if (this.repoEditUrl) entry.setLink(this.repoEditUrl);
+
+ const {
+ settings
+ } = entry,
+ rest = tslib_1.__rest(entry, ["settings"]);
+
+ return Object.assign({}, settings, rest);
+ } catch (err) {
+ logger.error(err);
+ return null;
+ }
+ };
+
+ const reduce = Plugin.reduceFromPlugins(plugins);
+ const modifiedFiles = reduce('modifyFiles', files);
+ const map = new Map();
+ const entries = await Promise.all(modifiedFiles.map(createEntry).filter(Boolean));
+
+ for (const entry of entries) {
+ if (entry) {
+ map.set(entry.filepath, entry);
+ }
+ }
+
+ this.all = map;
+ return mapToObj(map);
+ }
+
+}
+
+class DataServer {
+ constructor() {
+ this.states = new Set();
+ this.state = new Map();
+ this.listeners = new Set();
+ }
+
+ register(states) {
+ for (const state of states) this.states.add(state);
+
+ return this;
+ }
+
+ async start() {
+ const setState = (key, val) => this.setState(key, val);
+
+ const getState = () => this.getState();
+
+ await Promise.all(Array.from(this.states).map(async state => {
+ if (!_isFunction(state.start)) return;
+ return state.start({
+ setState,
+ getState
+ });
+ }));
+ }
+
+ close() {
+ for (const state of this.states) {
+ _isFunction(state.close) && state.close();
+ }
+ }
+
+ onStateChange(listener) {
+ this.listeners.add(listener);
+ return () => this.listeners.clear();
+ }
+
+ getState() {
+ return this.mapToObject(this.state);
+ }
+
+ setState(key, val) {
+ const prev = _get(key, this.getState());
+
+ const next = typeof val === 'function' ? val(prev) : val;
+ this.state.set(key, next);
+ this.writeDbFile();
+ this.listeners.forEach(listener => {
+ listener({
+ type: `state.${key}`,
+ payload: next
+ });
+ });
+ }
+
+ async writeDbFile() {
+ fs.outputJSONSync(db, this.mapToObject(this.state), {
+ spaces: 2
+ });
+ }
+
+ mapToObject(map) {
+ return Array.from(map.entries()).reduce((obj, [key, val]) => Object.assign({}, obj, {
+ [key]: val
+ }), {});
+ }
+
+}
+
+const onSignal = cb => {
+ const signals = ['SIGINT', 'SIGTERM'];
+
+ for (const sig of signals) {
+ process.on(sig, async () => {
+ await cb();
+ process.exit();
+ });
+ }
+};
+
+const isSocketOpened = socket => socket.readyState === WS.OPEN;
+
+const sender = socket => (type, payload) => {
+ if (socket && isSocketOpened(socket)) {
+ socket.send(JSON.stringify({
+ type,
+ payload
+ }));
+ }
+};
+
+class Socket {
+ constructor(server, host, port) {
+ if (server) {
+ this.client = new WS.Server({
+ server,
+ host,
+ port
+ });
+ }
+ }
+
+ onConnection(listener) {
+ if (!this.client) return;
+ this.client.on('connection', socket => {
+ const emit = sender(socket);
+ const subs = listener(socket, emit);
+
+ const handleClose = async () => {
+ subs();
+ socket.terminate();
+ };
+
+ this.client.on('close', handleClose);
+ onSignal(handleClose);
+ });
+ }
+
+}
+
+const toOmit = ['_', '$0', 'version', 'help'];
+const htmlContext = {
+ lang: 'en',
+ favicon: 'https://cdn-std.dprcdn.net/files/acc_649651/LUKiMl'
+};
+const doczRcBaseConfig = {
+ htmlContext,
+ themeConfig: {},
+ docgenConfig: {},
+ filterComponents: files => files.filter(filepath => /\/[A-Z]\w*\.(js|jsx|ts|tsx)$/.test(filepath)),
+ modifyBundlerConfig: config => config,
+ modifyBabelRc: babelrc => babelrc,
+ onCreateWebpackChain: () => null,
+ menu: [],
+ plugins: [],
+ mdPlugins: [],
+ hastPlugins: [],
+ ignore: ['**/readme.md', '**/changelog.md', '**/code_of_conduct.md', '**/contributing.md', '**/license.md']
+};
+const getBaseConfig = (argv, custom) => {
+ const initial = _omit(toOmit, argv);
+
+ const base = Object.assign({}, initial, doczRcBaseConfig, {
+ paths
+ });
+ return _merge(base, custom);
+};
+const parseConfig = async (argv, custom) => {
+ const port = await detectPort(argv.port);
+ const websocketPort = await detectPort(argv.websocketPort);
+ const defaultConfig = getBaseConfig(argv, Object.assign({
+ port,
+ websocketPort,
+ htmlContext
+ }, custom));
+ const config = argv.config ? loadCfg.loadFrom(path.resolve(argv.config), defaultConfig) : loadCfg.load('docz', defaultConfig);
+ const reduceAsync = Plugin.reduceFromPluginsAsync(config.plugins);
+ return reduceAsync('setConfig', config);
+};
+
+class Bundler {
+ constructor(params) {
+ const {
+ args,
+ config,
+ server,
+ build
+ } = params;
+ const run = Plugin.runPluginsMethod(args.plugins);
+ this.args = args;
+ this.config = config;
+ this.server = server;
+ this.builder = build;
+ this.hooks = {
+ onCreateWebpackChain(config, dev, args) {
+ run('onCreateWebpackChain', config, dev, args);
+ },
+
+ onPreCreateApp(app) {
+ run('onPreCreateApp', app);
+ },
+
+ onCreateApp(app) {
+ run('onCreateApp', app);
+ },
+
+ onServerListening(server) {
+ run('onServerListening', server);
+ }
+
+ };
+ }
+
+ async mountConfig(env) {
+ const {
+ plugins
+ } = this.args;
+ const isDev = env !== 'production';
+ const reduce = Plugin.reduceFromPlugins(plugins);
+ const userConfig = await this.config(this.hooks);
+ const config = reduce('modifyBundlerConfig', userConfig, isDev, this.args);
+ return this.args.modifyBundlerConfig(config, isDev, this.args);
+ }
+
+ async createApp(config) {
+ return this.server(config, this.hooks);
+ }
+
+ async build(config) {
+ const dist = getDist(this.args.dest);
+ const publicDir = path.join(root, this.args.public);
+
+ if (root === path.resolve(dist)) {
+ logger__default.fatal(new Error('Unexpected option: "dest" cannot be set to the current working directory.'));
+ process.exit(1);
+ }
+
+ await this.builder(config, dist, publicDir);
+ }
+
+}
+
+const excludeNodeModules = filepath => /node_modules/.test(filepath) || /@babel(?:\/|\\{1,2})runtime/.test(filepath);
+
+const sourceMaps = (config, args) => {
+ const srcPath = path.resolve(root, args.src);
+ config.module.rule('sourcemaps').test(/\.(js|mjs|jsx|ts|tsx|md|mdx)$/).include.add(srcPath).add(app).end().exclude.add(excludeNodeModules).end().use('sourcemaps').loader(require.resolve('source-map-loader')).end().enforce('pre');
+};
+
+const addScriptLoaders = opts => {
+ const {
+ rule,
+ threadLoader = true,
+ babelrc,
+ args
+ } = opts;
+ return rule.when(!args.debug, rule => rule.use('cache-loader').loader(require.resolve('cache-loader')).options({
+ cacheDirectory: cache
+ })).when(Boolean(threadLoader), rule => rule.use('thread-loader').loader(require.resolve('thread-loader')).options({
+ workers: require('os').cpus().length - 1
+ })).use('babel-loader').loader(require.resolve('babel-loader')).options(babelrc).end();
+};
+
+const js = (config, args, babelrc) => {
+ const srcPath = path.resolve(root, args.src);
+ const rule = config.module.rule('js').test(/\.(jsx?|mjs)$/).include.add(srcPath).add(app).end().exclude.add(excludeNodeModules).end();
+ addScriptLoaders({
+ rule,
+ babelrc,
+ args
+ });
+};
+const ts = (config, args, babelrc) => {
+ const srcPath = path.resolve(root, args.src);
+ const rule = config.module.rule('ts').test(/\.tsx?$/).include.add(srcPath).add(app).end().exclude.add(excludeNodeModules).end();
+ addScriptLoaders({
+ rule,
+ babelrc,
+ args
+ });
+};
+const mdx = (config, args, babelrc) => {
+ const {
+ mdPlugins,
+ hastPlugins
+ } = args;
+ const srcPath = path.resolve(root, args.src);
+ const rule = config.module.rule('mdx').test(/\.(md|markdown|mdx)$/).include.add(srcPath).add(root).add(app).end().exclude.add(excludeNodeModules).end();
+ addScriptLoaders({
+ rule,
+ babelrc,
+ args,
+ threadLoader: false
+ }).use('mdx-loader').loader(require.resolve('@mdx-js/loader')).options({
+ remarkPlugins: mdPlugins.concat([[frontmatter, {
+ type: 'yaml',
+ marker: '-'
+ }], remarkDocz]),
+ rehypePlugins: hastPlugins.concat([[rehypeDocz, {
+ root: root,
+ useCodeSandbox: args.codeSandbox
+ }], slug])
+ });
+};
+const INLINE_LIMIT = 10000;
+const images = config => {
+ config.module.rule('images').test(/\.(png|jpe?g|gif)(\?.*)?$/).use('url-loader').loader(require.resolve('url-loader')).options({
+ limit: INLINE_LIMIT,
+ name: `static/img/[name].[hash:8].[ext]`
+ });
+};
+const svg = config => {
+ config.module.rule('svg').test(/\.(svg)(\?.*)?$/).use('file-loader').loader(require.resolve('file-loader')).options({
+ name: `static/img/[name].[hash:8].[ext]`
+ });
+};
+const media = config => {
+ config.module.rule('media').test(/\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/).use('url-loader').loader(require.resolve('url-loader')).options({
+ limit: INLINE_LIMIT,
+ name: `static/media/[name].[hash:8].[ext]`
+ });
+};
+const fonts = config => {
+ config.module.rule('fonts').test(/\.(woff2?|eot|ttf|otf)(\?.*)?$/i).use('url-loader').loader(require.resolve('url-loader')).options({
+ limit: INLINE_LIMIT,
+ name: `static/fonts/[name].[hash:8].[ext]`
+ });
+};
+
+const wrapItems = item => Object.keys(item).map(key => `${key}="${item[key]}"`).join(' ');
+
+const generateTags = template => (items = []) => items.map(template).join('');
+
+const generateMetaTags = generateTags(item => `<meta ${wrapItems(item)}>`);
+const generateLinkTags = generateTags(item => `<link ${wrapItems(item)}>`);
+const generateScriptTags = generateTags(item => `<script ${wrapItems(item)}></script>`);
+
+const generateRawTags = (items = []) => {
+ if (typeof items === 'string' || items instanceof String) return items;
+ return items.map(item => item).join('');
+};
+
+const getHtmlFilepath = indexHtml => indexHtml ? path.resolve(root, indexHtml) : fromTemplates('index.tpl.html');
+
+const getPublicUrl = (config, dev) => {
+ const prefix = config.base === '/' ? '' : config.base;
+ return dev ? prefix : `${prefix}/public`;
+};
+
+const emptyLineTrim = new ctags.TemplateTag(ctags.replaceResultTransformer(/^\s*[\r\n]/gm, ''), ctags.trimResultTransformer);
+const htmlTemplate = async indexHtml => fs$2.compiled(getHtmlFilepath(indexHtml), {
+ minimize: false,
+ escape: false
+});
+const parseHtml = ({
+ config,
+ ctx,
+ dev,
+ template
+}) => {
+ const {
+ title,
+ description
+ } = config;
+ const {
+ publicPath,
+ css,
+ js,
+ lang = 'en',
+ favicon,
+ head = [],
+ body = [],
+ trimWhitespace
+ } = ctx;
+ const headStr = `
+ ${favicon ? `<link rel="icon" type="image/x-icon" href="${favicon}">` : ''}
+ ${head.meta ? generateMetaTags(head.meta) : ''}
+ ${head.links ? generateLinkTags(head.links) : ''}
+ ${head.raw ? generateRawTags(head.raw) : ''}
+ ${head.scripts ? generateScriptTags(head.scripts) : ''}
+ ${miniHtmlWebpack.generateCSSReferences(css, publicPath)}`;
+ const footerStr = `
+ ${body.raw ? generateRawTags(body.raw) : ''}
+ ${body.scripts ? generateScriptTags(body.scripts) : ''}
+ ${miniHtmlWebpack.generateJSReferences(js, publicPath)}`;
+ const doc = ctags.html(template({
+ title,
+ description,
+ lang,
+ head: headStr,
+ footer: footerStr,
+ publicUrl: getPublicUrl(config, dev)
+ }));
+ return trimWhitespace ? ctags.oneLineTrim(doc) : emptyLineTrim(doc);
+};
+
+const assets = (config, args, env) => {
+ const isProd = env === 'production';
+ const base = servedPath(args.base);
+ const publicPath = isProd ? base : '/';
+ config.plugin('assets-plugin').use(manifestPlugin, [{
+ publicPath,
+ fileName: 'assets.json'
+ }]);
+};
+const analyzer = config => {
+ config.plugin('bundle-analyzer').use(webpackBundleAnalyzer.BundleAnalyzerPlugin, [{
+ generateStatsFile: true,
+ openAnalyzer: false,
+ analyzerMode: 'static'
+ }]);
+};
+const injections = (config, args, env) => {
+ const {
+ stringify
+ } = JSON;
+ const base = servedPath(args.base);
+
+ const plugin = require('webpack/lib/DefinePlugin');
+
+ config.plugin('injections').use(plugin, [Object.assign({}, getClientEnvironment(base).stringified, {
+ NODE_ENV: stringify(env),
+ DOCZ_BASE_URL: stringify(base)
+ })]);
+};
+const ignore = config => {
+ config.plugin('ignore-plugin').use(webpack.IgnorePlugin, [/(regenerate\-unicode\-properties)|(elliptic)/, /node_modules/]);
+};
+const hot = config => {
+ config.plugin('hot-module-replacement').use(webpack.HotModuleReplacementPlugin, [{
+ multiStep: true
+ }]);
+};
+const html = async (config, args, env) => {
+ const dev = env !== 'production';
+ const template = await htmlTemplate(args.indexHtml);
+ config.plugin('html-plugin').use(miniHtmlWebpack__default, [{
+ context: Object.assign({}, args.htmlContext, {
+ trimWhitespace: true
+ }),
+ template: ctx => {
+ const doc = parseHtml({
+ ctx,
+ dev,
+ template,
+ config: args
+ });
+ return dev ? doc : htmlMinifier.minify(doc, {
+ removeComments: true,
+ collapseWhitespace: true,
+ removeRedundantAttributes: true,
+ useShortDoctype: true,
+ removeEmptyAttributes: true,
+ removeStyleLinkTypeAttributes: true,
+ keepClosingSlash: true,
+ minifyJS: true,
+ minifyCSS: true,
+ minifyURLs: true
+ });
+ }
+ }]);
+};
+const webpackBar = (config, args) => {
+ config.plugin('webpackbar').use(webpackBarPlugin, [{
+ name: 'Docz',
+ color: '#41b883'
+ }]);
+};
+const watchNodeModulesPlugin = config => {
+ config.plugin('watch-missing-node-modules').use(watchMissingNodeModules, [appNodeModules]);
+};
+
+const minifier = (config, args) => {
+ config.optimization.minimizer('js').use(TerserPlugin, [{
+ terserOptions: {
+ parse: {
+ ecma: 8
+ },
+ compress: {
+ ecma: 5,
+ warnings: false,
+ comparisons: false
+ },
+ mangle: {
+ safari10: true
+ },
+ output: {
+ ecma: 5,
+ comments: false,
+ ascii_only: true
+ }
+ },
+ parallel: true,
+ cache: !args.debug,
+ sourceMap: args.sourcemaps
+ }]);
+};
+
+const getBabelConfig = async (args, env, typescript) => {
+ const isProd = env === 'production';
+ const isDev = env === 'development';
+ const localBabelRc = loadCfg.load('babel', {
+ presets: [],
+ plugins: []
+ }, false, true);
+ const presets = [[require.resolve('babel-preset-react-app'), {
+ typescript,
+ flow: !args.typescript
+ }]];
+ const defaultPlugins = [[require.resolve('babel-plugin-export-metadata'), {
+ notUseSpecifiers: args.notUseSpecifiers
+ }], [require.resolve('babel-plugin-named-asset-import'), {
+ loaderMap: {
+ svg: {
+ ReactComponent: '@svgr/webpack?-prettier,-svgo![path]'
+ }
+ }
+ }]];
+
+ const config = _merge(localBabelRc, {
+ presets,
+ babelrc: false,
+ cacheCompression: args.debug ? false : isProd,
+ cacheDirectory: !args.debug,
+ cacheIdentifier: args.debug ? null : getCacheIdentifier(isProd ? 'production' : isDev && 'development', ['docz', 'docz-core']),
+ compact: isProd,
+ customize: require.resolve('babel-preset-react-app/webpack-overrides'),
+ plugins: defaultPlugins.concat(!isProd ? [require.resolve('react-hot-loader/babel')] : [])
+ });
+
+ const reduce = Plugin.reduceFromPlugins(args.plugins);
+ const newConfig = reduce('modifyBabelRc', config, args);
+ return args.modifyBabelRc(newConfig, args);
+};
+
+/* eslint-disable @typescript-eslint/camelcase */
+const createConfig = (args, env) => async hooks => {
+ const {
+ debug
+ } = args;
+ const config = new Config();
+ const isProd = env === 'production';
+ const base = servedPath(args.base);
+ const dist = getDist(args.dest);
+ const srcPath = path.resolve(root, args.src);
+ const publicPath = isProd ? base : '/';
+ /**
+ * general
+ */
+
+ config.context(root);
+ config.set('mode', env);
+ config.when(args.sourcemaps, cfg => cfg.devtool(isProd ? 'source-map' : 'cheap-module-eval-source-map'), cfg => cfg.devtool(false));
+ config.node.merge({
+ child_process: 'empty',
+ dgram: 'empty',
+ fs: 'empty',
+ net: 'empty',
+ tls: 'empty'
+ });
+ /**
+ * output
+ */
+
+ const outputProd = output => output.filename('static/js/[name].[hash].js').sourceMapFilename('static/js/[name].[hash].js.map').chunkFilename('static/js/[name].[chunkhash:8].js');
+
+ const outputDev = output => output.filename('static/js/[name].js').sourceMapFilename('static/js/[name].js.map');
+
+ config.output.pathinfo(true).path(path.resolve(root, dist)).publicPath(publicPath).when(isProd, outputProd, outputDev).crossOriginLoading('anonymous').devtoolModuleFilenameTemplate(info => path.resolve(info.resourcePath).replace(/\\/g, '/'));
+ /**
+ * entries
+ */
+
+ config.entry('app').when(!isProd, entry => entry.add(require.resolve('react-dev-utils/webpackHotDevClient'))).add(indexJs);
+ /**
+ * resolve
+ */
+
+ config.resolve.set('symlinks', true);
+ config.resolve.extensions.add('.web.js').add('.mjs').add('.js').add('.json').add('.web.jsx').add('.jsx').add('.mdx').end();
+ config.resolve.alias.set('react-native$', 'react-native-web');
+
+ const inYarnWorkspaces = __dirname.includes('/docz/core/docz-core');
+
+ const doczDependenciesDir = inYarnWorkspaces ? path.join(__dirname, '../../../../node_modules') : ownNodeModules;
+ config.resolve.modules.add('node_modules').add(doczDependenciesDir).add(srcPath).add(root).merge(envDotProp.get('node.path').split(path.delimiter).filter(Boolean));
+ config.resolveLoader.set('symlinks', true).modules // prioritize our own
+ .add('node_modules').add(doczDependenciesDir).add(root);
+ /**
+ * loaders
+ */
+
+ const jsBabelrc = await getBabelConfig(args, env);
+ const tsBabelrc = await getBabelConfig(args, env, true);
+ config.when(args.sourcemaps, cfg => sourceMaps(cfg, args));
+ js(config, args, jsBabelrc);
+ mdx(config, args, jsBabelrc);
+ images(config);
+ svg(config);
+ media(config);
+ fonts(config);
+ await html(config, args, env);
+ assets(config, args, env);
+ ignore(config);
+ injections(config, args, env);
+ isProd && hot(config);
+ config.when(debug, cfg => analyzer(cfg));
+ config.when(!isProd, cfg => watchNodeModulesPlugin(cfg));
+ config.when(!debug && !isProd, cfg => webpackBar(cfg, args));
+ /**
+ * typescript setup
+ */
+
+ config.when(args.typescript, cfg => {
+ cfg.resolve.extensions.prepend('.ts').prepend('.tsx').end();
+ ts(cfg, args, tsBabelrc);
+ });
+ /**
+ * optimization
+ */
+
+ config.optimization.nodeEnv(env).namedModules(true).minimize(isProd).splitChunks({
+ cacheGroups: {
+ vendor: {
+ test: /[\\/]node_modules[\\/]/,
+ name: 'vendors',
+ chunks: 'all'
+ }
+ }
+ });
+ config.performance.hints(false);
+ config.when(isProd, cfg => minifier(cfg, args));
+ hooks.onCreateWebpackChain(config, !isProd, args);
+ args.onCreateWebpackChain(config, !isProd, args);
+ return config.toConfig();
+};
+
+const devServerConfig = (hooks, args) => {
+ const srcPath = path.resolve(root, args.src);
+ const publicDir = path.resolve(root, args.public);
+ const nonExistentDir = path.resolve(__dirname, 'non-existent');
+ return {
+ publicPath: '/',
+ compress: true,
+ logLevel: args.debug ? 'debug' : 'silent',
+ clientLogLevel: args.debug ? 'info' : 'none',
+ contentBase: [nonExistentDir],
+ watchContentBase: true,
+ hot: true,
+ quiet: !args.debug,
+ open: true,
+ watchOptions: {
+ ignored: ignoredFiles(srcPath)
+ },
+ overlay: false,
+ host: args.host,
+ port: args.port,
+ historyApiFallback: {
+ disableDotRule: true
+ },
+ disableHostCheck: true,
+
+ before(app, server) {
+ app.use('/public', express.static(publicDir));
+ app.use(evalSourceMapMiddleware(server));
+ app.use(errorOverlayMiddleware());
+ hooks.onPreCreateApp(app);
+ },
+
+ after(app) {
+ hooks.onCreateApp(app);
+ }
+
+ };
+};
+
+const useYarn = fs$1.existsSync(appYarnLock);
+const server = args => async (config, hooks) => ({
+ start: async () => {
+ const serverConfig = devServerConfig(hooks, args);
+ const protocol = process.env.HTTPS === 'true' ? 'https' : 'http';
+
+ const appName = require(packageJson).name;
+
+ const useTypescript = args.typescript;
+ const urls = WebpackDevServerUtils.prepareUrls(protocol, args.host, args.port);
+ const devSocket = {
+ warnings: warnings => devServer.sockWrite(devServer.sockets, 'warnings', warnings),
+ errors: errors => devServer.sockWrite(devServer.sockets, 'errors', errors)
+ };
+ const compiler = WebpackDevServerUtils.createCompiler({
+ appName,
+ config,
+ devSocket,
+ urls,
+ useYarn,
+ useTypescript,
+ webpack: webpack__default
+ });
+ const devServer = new WebpackDevServer(compiler, serverConfig);
+ return devServer.listen(args.port, args.host, err => {
+ if (err) return logger__default.fatal(err);
+ hooks.onServerListening(devServer);
+ });
+ }
+});
+
+const FSR = require('react-dev-utils/FileSizeReporter');
+
+const formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
+const {
+ measureFileSizesBeforeBuild,
+ printFileSizesAfterBuild
+} = FSR;
+const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;
+const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
+
+const hasCiEnvVar = () => envDotProp.get('ci', false, {
+ parse: true
+});
+
+const copyPublicFolder = async (dest, publicDir) => {
+ if (await fs.pathExists(publicDir)) {
+ await fs.copy(publicDir, distPublic(dest), {
+ dereference: true,
+ filter: file => file !== indexHtml
+ });
+ }
+};
+
+const compile = config => new Promise((resolve, reject) => {
+ let compiler;
+
+ try {
+ compiler = webpack__default(config);
+ } catch (err) {
+ onError(err);
+ }
+
+ compiler && compiler.run((err, stats) => {
+ if (err) reject(err);
+ resolve(stats);
+ });
+});
+
+const builder = async (config, previousFileSizes) => new Promise(async (resolve, reject) => {
+ try {
+ const stats = await compile(config);
+ const messages = formatWebpackMessages(stats.toJson({}, true));
+
+ if (messages.errors.length) {
+ return reject(new Error(messages.errors.join('\n\n')));
+ }
+
+ if (hasCiEnvVar() && messages.warnings.length) {
+ logger.warn('\nTreating warnings as errors because process.env.CI = true.\n' + 'Most CI servers set it automatically.\n');
+ return reject(new Error(messages.warnings.join('\n\n')));
+ }
+
+ return resolve({
+ stats,
+ previousFileSizes,
+ warnings: messages.warnings
+ });
+ } catch (err) {
+ reject(err);
+ }
+});
+
+const onSuccess = (dist, {
+ stats,
+ previousFileSizes,
+ warnings
+}) => {
+ if (warnings.length) {
+ logger.log();
+ logger.warn('Compiled with warnings.\n');
+ logger.warn(warnings.join('\n\n'));
+ logger.warn('\nSearch for the ' + chalk$1.underline(chalk$1.yellow('keywords')) + ' to learn more about each warning.');
+ logger.warn('To ignore, add ' + chalk$1.cyan('// eslint-disable-next-line') + ' to the line before.\n');
+ }
+
+ logger.log();
+ logger.log(`File sizes after gzip:\n`);
+ printFileSizesAfterBuild(stats, previousFileSizes, dist, WARN_AFTER_BUNDLE_GZIP_SIZE, WARN_AFTER_CHUNK_GZIP_SIZE);
+ logger.log();
+};
+
+const onError = err => {
+ logger.log();
+ logger.fatal(err);
+ process.exit(1);
+ logger.log();
+};
+
+const build = async (config, dist, publicDir) => {
+ const interactive = new logger.Signale({
+ interactive: true,
+ scope: 'build'
+ });
+
+ try {
+ interactive.start('Creating an optimized bundle');
+ await fs.ensureDir(dist);
+ const previousFileSizes = await measureFileSizesBeforeBuild(dist);
+ await fs.emptyDir(dist);
+ await copyPublicFolder(dist, publicDir);
+ const result = await builder(config, previousFileSizes);
+ interactive.success('Build successfully created');
+ onSuccess(dist, result);
+ } catch (err) {
+ logger.fatal(chalk$1.red('Failed to compile.\n'));
+ onError(err);
+ }
+};
+
+const bundler = (args, env) => new Bundler({
+ args,
+ build,
+ config: createConfig(args, env),
+ server: server(args)
+});
+
+/**
+ * Copyright (c) 2015-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+var chalk = require('chalk');
+
+var execSync = require('child_process').execSync;
+
+var spawn = require('cross-spawn');
+
+var opn = require('opn'); // https://github.com/sindresorhus/opn#app
+
+
+var OSX_CHROME = 'google chrome';
+const Actions = Object.freeze({
+ NONE: 0,
+ BROWSER: 1,
+ SCRIPT: 2
+});
+
+function getBrowserEnv() {
+ // Attempt to honor this environment variable.
+ // It is specific to the operating system.
+ // See https://github.com/sindresorhus/opn#app for documentation.
+ const value = process.env.BROWSER;
+ let action;
+
+ if (!value) {
+ // Default.
+ action = Actions.BROWSER;
+ } else if (value.toLowerCase().endsWith('.js')) {
+ action = Actions.SCRIPT;
+ } else if (value.toLowerCase() === 'none') {
+ action = Actions.NONE;
+ } else {
+ action = Actions.BROWSER;
+ }
+
+ return {
+ action,
+ value
+ };
+}
+
+function executeNodeScript(scriptPath, url) {
+ const extraArgs = process.argv.slice(2);
+ const child = spawn('node', [scriptPath, ...extraArgs, url], {
+ stdio: 'inherit'
+ });
+ child.on('close', code => {
+ if (code !== 0) {
+ console.log();
+ console.log(chalk.red('The script specified as BROWSER environment variable failed.'));
+ console.log(chalk.cyan(scriptPath) + ' exited with code ' + code + '.');
+ console.log();
+ return;
+ }
+ });
+ return true;
+}
+
+function startBrowserProcess(browser, url) {
+ // If we're on OS X, the user hasn't specifically
+ // requested a different browser, we can try opening
+ // Chrome with AppleScript. This lets us reuse an
+ // existing tab when possible instead of creating a new one.
+ const shouldTryOpenChromeWithAppleScript = process.platform === 'darwin' && (typeof browser !== 'string' || browser === OSX_CHROME);
+
+ if (shouldTryOpenChromeWithAppleScript) {
+ try {
+ // Try our best to reuse existing tab
+ // on OS X Google Chrome with AppleScript
+ execSync('ps cax | grep "Google Chrome"');
+ execSync('osascript openChrome.applescript "' + encodeURI(url) + '"', {
+ cwd: __dirname,
+ stdio: 'ignore'
+ });
+ return true;
+ } catch (err) {// Ignore errors.
+ }
+ } // Another special case: on OS X, check if BROWSER has been set to "open".
+ // In this case, instead of passing `open` to `opn` (which won't work),
+ // just ignore it (thus ensuring the intended behavior, i.e. opening the system browser):
+ // https://github.com/facebook/create-react-app/pull/1690#issuecomment-283518768
+
+
+ if (process.platform === 'darwin' && browser === 'open') {
+ browser = undefined;
+ } // Fallback to opn
+ // (It will always open new tab)
+
+
+ try {
+ var options = {
+ app: browser,
+ wait: false
+ };
+ opn(url, options).catch(() => {}); // Prevent `unhandledRejection` error.
+
+ return true;
+ } catch (err) {
+ return false;
+ }
+}
+/**
+ * Reads the BROWSER environment variable and decides what to do with it. Returns
+ * true if it opened a browser or ran a node.js script, otherwise false.
+ */
+
+
+function openBrowser(url) {
+ const {
+ action,
+ value
+ } = getBrowserEnv();
+
+ switch (action) {
+ case Actions.NONE:
+ // Special case: BROWSER="none" will prevent opening completely.
+ return false;
+
+ case Actions.SCRIPT:
+ return executeNodeScript(value, url);
+
+ case Actions.BROWSER:
+ return startBrowserProcess(value, url);
+
+ default:
+ throw new Error('Not implemented.');
+ }
+}
+
+const mapToArray = (map = []) => Object.entries(map).map(entry => entry && {
+ key: entry[0],
+ value: entry[1]
+}).filter(Boolean);
+
+const updateEntries = entries => async p => {
+ const prev = _get('entries', p.getState());
+
+ const map = await entries.get();
+
+ if (map && !equal(prev, map)) {
+ await Entries.writeImports(map);
+ p.setState('entries', mapToArray(map));
+ }
+};
+
+const state = (entries, config, dev) => {
+ const src = path.relative(root, config.src);
+ const files = Array.isArray(config.files) ? config.files.map(filePath => path.join(src, filePath)) : path.join(src, config.files);
+ const ignored = config.watchIgnore || /(((^|[\/\\])\..+)|(node_modules))/;
+ const watcher = chokidar.watch(files, {
+ cwd: root,
+ ignored,
+ persistent: true
+ });
+ watcher.setMaxListeners(Infinity);
+ return {
+ id: 'entries',
+ start: async params => {
+ const update = updateEntries(entries);
+ await update(params);
+
+ if (dev) {
+ watcher.on('add', async () => update(params));
+ watcher.on('change', async () => update(params));
+ watcher.on('unlink', async () => update(params));
+ watcher.on('raw', async (event, path, details) => {
+ if (details.event === 'moved' && details.type === 'directory') {
+ await update(params);
+ }
+ });
+ }
+ },
+ close: () => {
+ watcher.close();
+ }
+ };
+};
+
+const getInitialConfig = config => {
+ const pkg = fs.readJsonSync(appPackageJson, {
+ throws: false
+ });
+ const repoUrl = getRepoUrl();
+ return {
+ title: config.title,
+ description: config.description,
+ menu: config.menu,
+ version: get(pkg, 'version'),
+ repository: repoUrl,
+ native: config.native,
+ codeSandbox: config.codeSandbox,
+ themeConfig: config.themeConfig,
+ separator: config.separator
+ };
+};
+
+const update = async (params, initial, {
+ config
+}) => {
+ const next = config ? loadCfg.loadFrom(path.resolve(config), initial, true, true) : loadCfg.load('docz', initial, true, true);
+ params.setState('config', next);
+};
+
+const state$1 = (config, dev) => {
+ const initial = getInitialConfig(config);
+ const glob = config.config || loadCfg.finds('docz');
+ const ignored = config.watchIgnore || /(((^|[\/\\])\..+)|(node_modules))/;
+ const watcher = chokidar.watch(glob, {
+ cwd: root,
+ ignored,
+ persistent: true
+ });
+ watcher.setMaxListeners(Infinity);
+ return {
+ id: 'config',
+ start: async params => {
+ const fn = async () => update(params, initial, config);
+
+ await update(params, initial, config);
+
+ if (dev) {
+ watcher.on('add', fn);
+ watcher.on('change', fn);
+ watcher.on('unlink', fn);
+ }
+ },
+ close: () => {
+ watcher.close();
+ }
+ };
+};
+
+const throwError = err => {
+ logger__default.fatal(`Error parsing static types`);
+ logger__default.error(err);
+};
+
+const jsParser = (files, config) => {
+ const resolver = config.docgenConfig.resolver || reactDocgen.resolver.findAllExportedComponentDefinitions;
+
+ const parseFilepathProps = filepath => {
+ const handlers = reactDocgen.defaultHandlers.concat([externalProptypesHandler(filepath), actualNameHandler]);
+
+ try {
+ const code = fs.readFileSync(filepath, 'utf-8');
+ const props = reactDocgen.parse(code, resolver, handlers);
+ return {
+ key: path.normalize(filepath),
+ value: props
+ };
+ } catch (err) {
+ if (config.debug) throwError(err);
+ return null;
+ }
+ };
+
+ return files.map(parseFilepathProps).filter(Boolean);
+};
+
+const digest = str => crypto.createHash('md5').update(str).digest('hex');
+
+const cacheFilepath = path.join(cache, 'propsParser.json');
+
+const readCacheFile = () => fs.readJSONSync(cacheFilepath, {
+ throws: false
+});
+
+function checkFilesOnCache(files) {
+ const cache = readCacheFile();
+ if (_isEmpty(cache)) return files;
+ return files.filter(filepath => {
+ const normalized = path.normalize(filepath);
+ const hash = digest(fs.readFileSync(normalized, 'utf-8'));
+
+ const found = _get(normalized, cache);
+
+ return found && hash !== found.hash;
+ });
+}
+
+function writePropsOnCache(items) {
+ const cache = readCacheFile();
+ const newCache = items.reduce((obj, {
+ key: filepath,
+ value
+ }) => {
+ const normalized = path.normalize(filepath);
+ const hash = digest(fs.readFileSync(normalized, 'utf-8'));
+ return Object.assign({}, obj, {
+ [normalized]: {
+ hash,
+ props: value
+ }
+ });
+ }, {});
+ fs.outputJSONSync(cacheFilepath, Object.assign({}, cache, newCache));
+}
+
+function getPropsOnCache() {
+ const cache = readCacheFile();
+
+ if (_isEmpty(cache)) {
+ logger.warn('Any cache was found with your props definitions');
+ logger.warn("We'll parse your components to get props from them");
+ logger.warn('Depending on your components, this could take while...');
+ return [];
+ }
+
+ return Object.entries(cache).map(([key, value]) => ({
+ key,
+ value: _get('props', value)
+ }));
+}
+
+const mergeWithCache = (cache, props) => {
+ const keys = props.map(_prop('key'));
+ return cache.filter(item => !_contains(item.key, keys)).concat(props);
+};
+
+const removeFromCache = filepath => {
+ const cache = readCacheFile();
+ fs.outputJSONSync(cacheFilepath, _omit(filepath, cache));
+};
+
+const getInitialFilesMap = () => {
+ const cache = readCacheFile();
+ if (_isEmpty(cache)) return new Map();
+ const map = new Map();
+
+ _entries(cache).forEach(([filepath]) => {
+ const exist = fs.pathExistsSync(filepath);
+
+ if (!exist) {
+ removeFromCache(filepath);
+ } else {
+ map.set(filepath, {
+ text: fs.readFileSync(filepath, 'utf-8'),
+ version: 0
+ });
+ }
+ });
+
+ return map;
+};
+
+let languageService = null;
+const filesMap = getInitialFilesMap();
+
+function getTSConfigFile(tsconfigPath) {
+ const basePath = path.dirname(tsconfigPath);
+ const configFile = ts$1.readConfigFile(tsconfigPath, ts$1.sys.readFile);
+ return ts$1.parseJsonConfigFileContent(configFile.config, ts$1.sys, basePath, {}, tsconfigPath);
+}
+
+function loadFiles(filesToLoad) {
+ filesToLoad.forEach(filepath => {
+ const normalized = path.normalize(filepath);
+ const found = filesMap.get(normalized);
+ filesMap.set(normalized, {
+ text: fs.readFileSync(normalized, 'utf-8'),
+ version: found ? found.version + 1 : 0
+ });
+ });
+}
+
+function createServiceHost(compilerOptions, files) {
+ return {
+ getScriptFileNames: () => {
+ return [...files.keys()];
+ },
+ getScriptVersion: fileName => {
+ const file = files.get(fileName);
+ return file && file.version.toString() || '';
+ },
+ getScriptSnapshot: fileName => {
+ if (!fs.existsSync(fileName)) {
+ return undefined;
+ }
+
+ let file = files.get(fileName);
+
+ if (file === undefined) {
+ const text = fs.readFileSync(fileName).toString();
+ file = {
+ version: 0,
+ text
+ };
+ files.set(fileName, file);
+ }
+
+ return ts$1.ScriptSnapshot.fromString(file.text);
+ },
+ getCurrentDirectory: () => process.cwd(),
+ getCompilationSettings: () => compilerOptions,
+ getDefaultLibFileName: options => ts$1.getDefaultLibFilePath(options),
+ fileExists: ts$1.sys.fileExists,
+ readFile: ts$1.sys.readFile,
+ readDirectory: ts$1.sys.readDirectory
+ };
+}
+
+const parseFiles = (files, config, tsconfig) => {
+ const opts = {
+ propFilter(prop) {
+ if (prop.parent == null) return true;
+ const propFilter = config.docgenConfig.propFilter;
+ const val = propFilter && _isFunction(propFilter) && propFilter(prop);
+ return !prop.parent.fileName.includes('node_modules') || Boolean(val);
+ },
+
+ componentNameResolver(exp, source) {
+ const componentNameResolver = config.docgenConfig.resolver;
+ const val = componentNameResolver && _isFunction(componentNameResolver) && componentNameResolver(exp, source);
+ return val;
+ }
+
+ };
+ loadFiles(files);
+ const parser = reactDocgenTs.withCustomConfig(tsconfig, opts);
+
+ const compilerOptions = _get('options', getTSConfigFile(tsconfig));
+
+ const programProvider = () => {
+ if (languageService) return languageService.getProgram();
+ const servicesHost = createServiceHost(compilerOptions, filesMap);
+ const documentRegistry = ts$1.createDocumentRegistry();
+ languageService = ts$1.createLanguageService(servicesHost, documentRegistry);
+ return languageService.getProgram();
+ };
+
+ return files.map(filepath => ({
+ key: path.normalize(filepath),
+ value: parser.parseWithProgramProvider(filepath, programProvider)
+ }));
+};
+
+const tsParser = (files, config, tsconfig) => {
+ if (!tsconfig) return null;
+ const filesToLoad = checkFilesOnCache(files);
+ const propsOnCache = getPropsOnCache();
+ if (!filesToLoad.length) return propsOnCache;
+ const next = parseFiles(filesToLoad, config, tsconfig);
+ writePropsOnCache(next);
+ return mergeWithCache(propsOnCache, next);
+};
+
+const docgen = async (files, config) => {
+ const tsconfig = await findup('tsconfig.json', {
+ cwd: root
+ });
+ return config.typescript ? tsParser(files, config, tsconfig) : jsParser(files, config);
+};
+
+const getPattern = config => {
+ const {
+ ignore,
+ src: source,
+ typescript: ts,
+ docgenConfig: docgenConfig
+ } = config;
+ const src = path.relative(root, docgenConfig.searchPath ? docgenConfig.searchPath : source);
+ return ignore.map(entry => `!**/${entry}`).concat([path.join(src, ts ? '**/*.{ts,tsx}' : '**/*.{js,jsx,mjs}'), '!**/node_modules', '!**/doczrc.js']);
+};
+
+const removeFilepath = (items, filepath) => items.filter(item => item.key !== filepath);
+
+const initial = (config, pattern) => async p => {
+ const {
+ filterComponents
+ } = config;
+ const files = await glob(pattern, {
+ cwd: root
+ });
+ const filtered = filterComponents ? filterComponents(files) : files;
+ const metadata = await docgen(filtered, config);
+ p.setState('props', metadata);
+};
+
+const change = (p, config) => async filepath => {
+ const prev = _get('props', p.getState());
+
+ const metadata = await docgen([filepath], config);
+ const filtered = metadata.filter(_propEq('key', filepath));
+ const next = removeFilepath(prev, filepath).concat(filtered);
+ p.setState('props', next);
+};
+
+const remove = p => async filepath => {
+ const prev = _get('props', p.getState());
+
+ const next = removeFilepath(prev, filepath);
+ p.setState('props', next);
+};
+
+const state$2 = (config, dev) => {
+ const pattern = getPattern(config);
+ const ignored = config.watchIgnore || /(((^|[\/\\])\..+)|(node_modules))/;
+ const watcher = chokidar.watch(pattern, {
+ cwd: root,
+ ignored,
+ persistent: true
+ });
+ watcher.setMaxListeners(Infinity);
+ return {
+ id: 'props',
+ start: async params => {
+ const addInitial = initial(config, pattern);
+ await addInitial(params);
+
+ if (dev) {
+ watcher.on('change', change(params, config));
+ watcher.on('unlink', remove(params));
+ }
+ },
+ close: () => {
+ watcher.close();
+ }
+ };
+};
+
+
+
+var index = /*#__PURE__*/Object.freeze({
+ entries: state,
+ config: state$1,
+ props: state$2
+});
+
+process.setMaxListeners(Infinity);
+const dev = async args => {
+ const env = envDotProp.get('node.env');
+ const config = await parseConfig(args);
+ const bundler$1 = bundler(config, env);
+ const entries = new Entries(config);
+ const {
+ websocketHost,
+ websocketPort
+ } = config;
+ const bundlerConfig = await bundler$1.mountConfig(env);
+ const app = await bundler$1.createApp(bundlerConfig);
+
+ try {
+ await Entries.writeApp(config, true);
+ await Entries.writeImports((await entries.get()));
+ } catch (err) {
+ logger.fatal('Failed to build your files');
+ logger.error(err);
+ process.exit(1);
+ }
+
+ const server = await app.start();
+ const dataServer = new DataServer();
+ const socket = new Socket(server, websocketHost, websocketPort);
+ if (config.propsParser) dataServer.register([state$2(config, true)]);
+ dataServer.register([state$1(config, true), state(entries, config, true)]);
+
+ try {
+ await dataServer.start();
+ if (args.open || args.o) openBrowser(`http://${config.host}:${config.port}`);
+ } catch (err) {
+ logger.fatal('Failed to process data server');
+ logger.error(err);
+ dataServer.close();
+ process.exit(1);
+ }
+
+ socket.onConnection((_, emit) => {
+ const subscribe = dataServer.onStateChange(action => {
+ emit(action.type, action.payload);
+ });
+ return () => subscribe();
+ });
+ onSignal(async () => {
+ dataServer.close();
+ server.close();
+ });
+ server.on('close', async () => {
+ dataServer.close();
+ });
+};
+
+const build$1 = async args => {
+ const env = envDotProp.get('node.env');
+ const config = await parseConfig(args);
+ const entries = new Entries(config);
+ const bundler$1 = bundler(config, env);
+ const bundlerConfig = await bundler$1.mountConfig(env);
+ const run = Plugin.runPluginsMethod(config.plugins);
+ const dataServer = new DataServer();
+ if (config.propsParser) dataServer.register([state$2(config)]);
+ dataServer.register([state$1(config), state(entries, config)]);
+
+ try {
+ await Entries.writeApp(config, false);
+ await Entries.writeImports((await entries.get()));
+ await dataServer.start();
+ await run('onPreBuild', config);
+ await bundler$1.build(bundlerConfig);
+ await run('onPostBuild', config);
+ dataServer.close();
+ } catch (err) {
+ logger.error(err);
+ process.exit(1);
+ dataServer.close();
+ }
+};
+
+const serve = async args => {
+ const config = await parseConfig(args);
+ const dist = getDist(config.dest);
+ spawn$1.sync('serve', ['-s', dist], {
+ stdio: 'inherit'
+ });
+};
+
+const cli = () => {
+ return yargs.command('dev', 'initialize docz dev server', setArgs, async args => {
+ setEnv('development');
+ await dev(args);
+ }).command('build', 'build dir as static site', setArgs, async args => {
+ setEnv('production');
+ await build$1(args);
+ process.exit();
+ }).command('serve', 'serve dir as static site', setArgs, async args => {
+ setEnv('production');
+ await build$1(args);
+ await serve(args);
+ process.exit();
+ }).demandCommand().help().wrap(72).epilog('for more information visit https://github.com/pedronauck/docz').showHelpOnFail(false, 'whoops, something went wrong! run with --help').argv;
+};
+
+/** cli exports */
+
+exports.DataServer = DataServer;
+exports.Entries = Entries;
+exports.Entry = Entry;
+exports.Plugin = Plugin;
+exports.cli = cli;
+exports.createPlugin = createPlugin;
+exports.getBaseConfig = getBaseConfig;
+exports.parseConfig = parseConfig;
+exports.setArgs = setArgs;
+exports.states = index;
diff --git a/docs/docz-lib/docz-core/dist/lib/Bundler.d.ts b/docs/docz-lib/docz-core/dist/lib/Bundler.d.ts
new file mode 100644
index 0000000..227c18f
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/lib/Bundler.d.ts
@@ -0,0 +1,35 @@
+/// <reference types="node" />
+import * as http from 'http';
+import { Config as Args, Env } from '../config/argv';
+export interface ServerHooks {
+ onCreateWebpackChain<C>(config: C, dev: boolean, args: Args): void;
+ onPreCreateApp<A>(app: A): void;
+ onCreateApp<A>(app: A): void;
+ onServerListening<S>(server: S): void;
+}
+export interface BundlerServer {
+ start(): Promise<http.Server>;
+}
+export declare type ConfigFn<C> = (hooks: ServerHooks) => Promise<C>;
+export declare type BuildFn<C> = (config: C, dist: string, publicDir: string) => void;
+export declare type ServerFn<C> = (config: C, hooks: ServerHooks) => BundlerServer | Promise<BundlerServer>;
+export interface BundlerConstructor<Config> {
+ args: Args;
+ config: ConfigFn<Config>;
+ server: ServerFn<Config>;
+ build: BuildFn<Config>;
+}
+export interface ConfigObj {
+ [key: string]: any;
+}
+export declare class Bundler<C = ConfigObj> {
+ private readonly args;
+ private config;
+ private server;
+ private builder;
+ private hooks;
+ constructor(params: BundlerConstructor<C>);
+ mountConfig(env: Env): Promise<C>;
+ createApp(config: C): Promise<BundlerServer>;
+ build(config: C): Promise<void>;
+}
diff --git a/docs/docz-lib/docz-core/dist/lib/DataServer.d.ts b/docs/docz-lib/docz-core/dist/lib/DataServer.d.ts
new file mode 100644
index 0000000..2fec3af
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/lib/DataServer.d.ts
@@ -0,0 +1,28 @@
+export interface Params {
+ getState: () => Record<string, any>;
+ setState: (key: string, val: any) => void;
+}
+export interface State {
+ id: string;
+ start: (params: Params) => Promise<void>;
+ close: () => void;
+}
+export interface Action {
+ type: string;
+ payload: any;
+}
+export declare type Listener = (action: Action) => void;
+export declare class DataServer {
+ private states;
+ private state;
+ private listeners;
+ constructor();
+ register(states: State[]): DataServer;
+ start(): Promise<void>;
+ close(): void;
+ onStateChange(listener: Listener): () => void;
+ getState(): Map<string, any>;
+ private setState;
+ private writeDbFile;
+ private mapToObject;
+}
diff --git a/docs/docz-lib/docz-core/dist/lib/Entries.d.ts b/docs/docz-lib/docz-core/dist/lib/Entries.d.ts
new file mode 100644
index 0000000..9b7cc16
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/lib/Entries.d.ts
@@ -0,0 +1,13 @@
+import { EntryObj } from './Entry';
+import { Config } from '../config/argv';
+export declare const fromTemplates: (file: string) => string;
+export declare type EntryMap = Record<string, EntryObj>;
+export declare class Entries {
+ static writeApp(config: Config, dev: boolean): Promise<void>;
+ static writeImports(map: EntryMap): Promise<void>;
+ all: Map<string, EntryObj>;
+ get: () => Promise<EntryMap>;
+ repoEditUrl: string | null;
+ constructor(config: Config);
+ private getMap;
+}
diff --git a/docs/docz-lib/docz-core/dist/lib/Entry.d.ts b/docs/docz-lib/docz-core/dist/lib/Entry.d.ts
new file mode 100644
index 0000000..a9dc790
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/lib/Entry.d.ts
@@ -0,0 +1,33 @@
+import { Heading } from 'docz-utils/lib/mdast';
+import { Config } from '../config/argv';
+export interface EntryObj {
+ id: string;
+ filepath: string;
+ link: string | null;
+ slug: string;
+ name: string;
+ route: string;
+ menu: string | null;
+ headings: Heading[];
+ [key: string]: any;
+}
+export declare class Entry {
+ readonly [key: string]: any;
+ id: string;
+ filepath: string;
+ link: string | null;
+ slug: string;
+ route: string;
+ name: string;
+ menu: string | null;
+ headings: Heading[];
+ settings: {
+ [key: string]: any;
+ };
+ constructor(ast: any, file: string, src: string, config: Config);
+ setLink(url: string): void;
+ private getFilepath;
+ private getName;
+ private slugify;
+ private getRoute;
+}
diff --git a/docs/docz-lib/docz-core/dist/lib/Plugin.d.ts b/docs/docz-lib/docz-core/dist/lib/Plugin.d.ts
new file mode 100644
index 0000000..9c6917c
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/lib/Plugin.d.ts
@@ -0,0 +1,49 @@
+import WebpackChainConfig from 'webpack-chain';
+import { Config } from '../config/argv';
+import { BabelRC } from '../config/babel';
+export declare type SetConfig = (config: Config) => Config | Promise<Config>;
+export declare type ModifyBundlerConfig<C = any> = (config: C, dev: boolean, args: Config) => C;
+export declare type ModifyBabelRC = (babelrc: BabelRC, args: Config) => BabelRC;
+export declare type ModifyFiles = (files: string[], args: Config) => string[];
+export declare type OnCreateWebpackChain = (config: WebpackChainConfig, dev: boolean, args: Config) => void;
+export declare type onPreCreateApp = <A>(app: A) => void;
+export declare type onCreateApp = <A>(app: A) => void;
+export declare type OnServerListening = <S>(server: S) => void;
+export declare type OnPreBuild = (args: Config) => void;
+export declare type OnPostBuild = (args: Config) => void;
+export declare type OnPreRender = () => void;
+export declare type OnPostRender = () => void;
+export interface PluginFactory {
+ setConfig?: SetConfig;
+ modifyBundlerConfig?: ModifyBundlerConfig;
+ modifyBabelRc?: ModifyBabelRC;
+ modifyFiles?: ModifyFiles;
+ onCreateWebpackChain?: OnCreateWebpackChain;
+ onPreCreateApp?: onPreCreateApp;
+ onCreateApp?: onCreateApp;
+ onServerListening?: OnServerListening;
+ onPreBuild?: OnPreBuild;
+ onPostBuild?: OnPostBuild;
+ onPreRender?: OnPreRender;
+ onPostRender?: OnPostRender;
+}
+export declare class Plugin<C = any> implements PluginFactory {
+ static runPluginsMethod(plugins: Plugin[] | undefined): (method: keyof Plugin, ...args: any[]) => void;
+ static propsOfPlugins(plugins: Plugin[]): (prop: keyof Plugin) => any[];
+ static reduceFromPlugins<C>(plugins: Plugin[] | undefined): (method: keyof Plugin, initial: C, ...args: any[]) => C;
+ static reduceFromPluginsAsync<C>(plugins: Plugin[] | undefined): (method: keyof Plugin, initial: C, ...args: any[]) => Promise<C>;
+ readonly setConfig?: SetConfig;
+ readonly modifyBundlerConfig?: ModifyBundlerConfig<C>;
+ readonly modifyBabelRc?: ModifyBabelRC;
+ readonly modifyFiles?: ModifyFiles;
+ readonly onCreateWebpackChain?: OnCreateWebpackChain;
+ readonly onPreCreateApp?: onPreCreateApp;
+ readonly onCreateApp?: onCreateApp;
+ readonly onServerListening?: OnServerListening;
+ readonly onPreBuild?: OnPreBuild;
+ readonly onPostBuild?: OnPostBuild;
+ readonly onPreRender?: OnPreRender;
+ readonly onPostRender?: OnPostRender;
+ constructor(p: PluginFactory);
+}
+export declare function createPlugin<C = any>(factory: PluginFactory): Plugin<C>;
diff --git a/docs/docz-lib/docz-core/dist/lib/Socket.d.ts b/docs/docz-lib/docz-core/dist/lib/Socket.d.ts
new file mode 100644
index 0000000..d4254ff
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/lib/Socket.d.ts
@@ -0,0 +1,8 @@
+import WS from 'ws';
+export declare type Send = (type: string, payload: any) => void;
+export declare type On = (type: string) => Promise<any>;
+export declare class Socket {
+ private client?;
+ constructor(server?: any, host?: string, port?: number);
+ onConnection(listener: (socket: WS, emit: Send) => () => void): void;
+}
diff --git a/docs/docz-lib/docz-core/dist/states/config.d.ts b/docs/docz-lib/docz-core/dist/states/config.d.ts
new file mode 100644
index 0000000..c2205d5
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/states/config.d.ts
@@ -0,0 +1,3 @@
+import { State } from '../lib/DataServer';
+import { Config } from '../config/argv';
+export declare const state: (config: Config, dev?: boolean | undefined) => State;
diff --git a/docs/docz-lib/docz-core/dist/states/entries.d.ts b/docs/docz-lib/docz-core/dist/states/entries.d.ts
new file mode 100644
index 0000000..cc04acd
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/states/entries.d.ts
@@ -0,0 +1,4 @@
+import { State } from '../lib/DataServer';
+import { Entries } from '../lib/Entries';
+import { Config } from '../config/argv';
+export declare const state: (entries: Entries, config: Config, dev?: boolean | undefined) => State;
diff --git a/docs/docz-lib/docz-core/dist/states/index.d.ts b/docs/docz-lib/docz-core/dist/states/index.d.ts
new file mode 100644
index 0000000..36f20b5
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/states/index.d.ts
@@ -0,0 +1,3 @@
+export { state as entries } from './entries';
+export { state as config } from './config';
+export { state as props } from './props';
diff --git a/docs/docz-lib/docz-core/dist/states/props.d.ts b/docs/docz-lib/docz-core/dist/states/props.d.ts
new file mode 100644
index 0000000..c2205d5
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/states/props.d.ts
@@ -0,0 +1,3 @@
+import { State } from '../lib/DataServer';
+import { Config } from '../config/argv';
+export declare const state: (config: Config, dev?: boolean | undefined) => State;
diff --git a/docs/docz-lib/docz-core/dist/templates/imports.tpl.js b/docs/docz-lib/docz-core/dist/templates/imports.tpl.js
new file mode 100644
index 0000000..a511179
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/templates/imports.tpl.js
@@ -0,0 +1,4 @@
+export const imports = {
+ <% entries.forEach(function(entry) { %>'<%- entry.filepath %>': () =>
+ import(/* webpackPrefetch: true, webpackChunkName: "<%- entry.slug %>" */ '<%- entry.filepath %>'),<% }) %>
+}
diff --git a/docs/docz-lib/docz-core/dist/templates/index.tpl.html b/docs/docz-lib/docz-core/dist/templates/index.tpl.html
new file mode 100644
index 0000000..fdb737c
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/templates/index.tpl.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html lang="{{ lang }}">
+ <head>
+ <meta charset="UTF-8">
+ <meta name="description" content="{{ description }}">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
+ <title>{{ title }}</title>
+ {{ head }}
+ </head>
+ <body>
+ <div id="root"></div>
+ {{ footer }}
+ </body>
+</html>
diff --git a/docs/docz-lib/docz-core/dist/templates/index.tpl.js b/docs/docz-lib/docz-core/dist/templates/index.tpl.js
new file mode 100644
index 0000000..a828a1a
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/templates/index.tpl.js
@@ -0,0 +1,17 @@
+import React from 'react'
+import ReactDOM from 'react-dom'
+import Root from './root'
+
+const _onPreRenders = [<% if (onPreRenders) {%><%- onPreRenders %><%}%>]
+const _onPostRenders = [<% if (onPostRenders) {%><%- onPostRenders %><%}%>]
+
+const onPreRender = () => _onPreRenders.forEach(f => f && f())
+const onPostRender = () => _onPostRenders.forEach(f => f && f())
+
+const root = document.querySelector('#root')
+const render = (Component = Root) => {
+ onPreRender()
+ ReactDOM.render(<Component />, root, onPostRender)
+}
+
+render(Root)
diff --git a/docs/docz-lib/docz-core/dist/templates/root.tpl.js b/docs/docz-lib/docz-core/dist/templates/root.tpl.js
new file mode 100644
index 0000000..596c5ef
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/templates/root.tpl.js
@@ -0,0 +1,24 @@
+import React from 'react'
+import { Link, Router, Routes<% if (!isProd) {%>, useDataServer<%}%> } from '../../docz-lib/docz/dist'
+<% if (!isProd) {%>import { hot } from 'react-hot-loader'<%}%>
+import Theme from '<%- theme %>'
+
+import { imports } from './imports'
+import database from './db.json'
+<% if (wrapper) {%>import Wrapper from '<%- wrapper %>'<%}%>
+
+const Root = () => {
+ <% if (!isProd && websocketUrl) {%>useDataServer('<%- websocketUrl %>')<%}%>
+ return (
+ <Theme
+ <% if (wrapper) {%>wrapper={Wrapper}<%}%>
+ linkComponent={Link}
+ db={database}
+ >
+ <Routes imports={imports} />
+ </Theme>
+ )
+}
+
+<% if (!isProd) {%>export default hot(module)(Root)<%}%>
+<% if (isProd) {%>export default Root<%}%>
diff --git a/docs/docz-lib/docz-core/dist/utils/docgen/index.d.ts b/docs/docz-lib/docz-core/dist/utils/docgen/index.d.ts
new file mode 100644
index 0000000..7223731
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/utils/docgen/index.d.ts
@@ -0,0 +1,2 @@
+import { Config } from '../../config/argv';
+export declare const docgen: (files: string[], config: Config) => Promise<any>;
diff --git a/docs/docz-lib/docz-core/dist/utils/docgen/javascript.d.ts b/docs/docz-lib/docz-core/dist/utils/docgen/javascript.d.ts
new file mode 100644
index 0000000..e1ff6e3
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/utils/docgen/javascript.d.ts
@@ -0,0 +1,5 @@
+import { Config } from '../../config/argv';
+export declare const jsParser: (files: string[], config: Config) => ({
+ key: string;
+ value: any;
+} | null)[];
diff --git a/docs/docz-lib/docz-core/dist/utils/docgen/typescript.d.ts b/docs/docz-lib/docz-core/dist/utils/docgen/typescript.d.ts
new file mode 100644
index 0000000..72a9e07
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/utils/docgen/typescript.d.ts
@@ -0,0 +1,6 @@
+import { Config } from '../../config/argv';
+export interface TSFile {
+ text?: string;
+ version: number;
+}
+export declare const tsParser: (files: string[], config: Config, tsconfig?: string | undefined) => any;
diff --git a/docs/docz-lib/docz-core/dist/utils/on-signal.d.ts b/docs/docz-lib/docz-core/dist/utils/on-signal.d.ts
new file mode 100644
index 0000000..e1a70b4
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/utils/on-signal.d.ts
@@ -0,0 +1 @@
+export declare const onSignal: (cb: () => any) => void;
diff --git a/docs/docz-lib/docz-core/dist/utils/open-browser.d.ts b/docs/docz-lib/docz-core/dist/utils/open-browser.d.ts
new file mode 100644
index 0000000..04e169f
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/utils/open-browser.d.ts
@@ -0,0 +1,11 @@
+/**
+ * Copyright (c) 2015-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+/**
+ * Reads the BROWSER environment variable and decides what to do with it. Returns
+ * true if it opened a browser or ran a node.js script, otherwise false.
+ */
+export declare function openBrowser(url: any): boolean;
diff --git a/docs/docz-lib/docz-core/dist/utils/parse-html.d.ts b/docs/docz-lib/docz-core/dist/utils/parse-html.d.ts
new file mode 100644
index 0000000..aa74032
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/utils/parse-html.d.ts
@@ -0,0 +1,11 @@
+import { Config } from '../config/argv';
+export declare type tagsTemplate = (type: string) => string;
+export declare const htmlTemplate: (indexHtml: string | undefined) => Promise<(data: any) => string>;
+interface ParseHtmlParams {
+ config: Config;
+ ctx: Record<string, any>;
+ dev: boolean;
+ template: (props: Record<string, any>) => string;
+}
+export declare const parseHtml: ({ config, ctx, dev, template }: ParseHtmlParams) => any;
+export {};
diff --git a/docs/docz-lib/docz-core/dist/utils/repo-info.d.ts b/docs/docz-lib/docz-core/dist/utils/repo-info.d.ts
new file mode 100644
index 0000000..916ee05
--- /dev/null
+++ b/docs/docz-lib/docz-core/dist/utils/repo-info.d.ts
@@ -0,0 +1,3 @@
+export declare const parseRepo: () => any;
+export declare const getRepoUrl: () => any;
+export declare const getRepoEditUrl: (src: string, branch: string) => string | null;
diff --git a/docs/docz-lib/docz/bin/index.js b/docs/docz-lib/docz/bin/index.js
new file mode 100755
index 0000000..044994a
--- /dev/null
+++ b/docs/docz-lib/docz/bin/index.js
@@ -0,0 +1,2 @@
+#!/usr/bin/env nodejs
+require('../../docz-core/dist/index.js').cli()
diff --git a/docs/docz-lib/docz/dist/Playground.esm.js b/docs/docz-lib/docz/dist/Playground.esm.js
new file mode 100644
index 0000000..382066e
--- /dev/null
+++ b/docs/docz-lib/docz/dist/Playground.esm.js
@@ -0,0 +1,42 @@
+import { createElement } from 'react';
+import 'lodash/fp/get';
+import { b as useComponents } from './chunk.esm.js';
+import 'lodash/fp/omit';
+import 'fast-deep-equal';
+import 'lodash/fp/merge';
+import 'array-sort';
+import 'lodash/fp/unionBy';
+import 'lodash/fp/flattenDepth';
+import 'lodash/fp/pipe';
+import 'ulid';
+import 'match-sorter';
+import 'lodash/fp/throttle';
+
+const Playground = ({
+ className,
+ style,
+ wrapper: Wrapper,
+ children,
+ __scope,
+ __position,
+ __code,
+ __codesandbox
+}) => {
+ const components = useComponents();
+ if (!components || !components.playground) return null;
+ const props = {
+ className,
+ style,
+ components
+ };
+ return createElement(components.playground, Object.assign({}, props, {
+ component: children,
+ wrapper: Wrapper,
+ scope: __scope,
+ position: __position,
+ code: __code,
+ codesandbox: __codesandbox
+ }));
+};
+
+export default Playground;
diff --git a/docs/docz-lib/docz/dist/Playground.js b/docs/docz-lib/docz/dist/Playground.js
new file mode 100644
index 0000000..82ed23f
--- /dev/null
+++ b/docs/docz-lib/docz/dist/Playground.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var React = require('react');
+require('lodash/fp/get');
+var __chunk_1 = require('./chunk.js');
+require('lodash/fp/omit');
+require('fast-deep-equal');
+require('lodash/fp/merge');
+require('array-sort');
+require('lodash/fp/unionBy');
+require('lodash/fp/flattenDepth');
+require('lodash/fp/pipe');
+require('ulid');
+require('match-sorter');
+require('lodash/fp/throttle');
+
+const Playground = ({
+ className,
+ style,
+ wrapper: Wrapper,
+ children,
+ __scope,
+ __position,
+ __code,
+ __codesandbox
+}) => {
+ const components = __chunk_1.useComponents();
+ if (!components || !components.playground) return null;
+ const props = {
+ className,
+ style,
+ components
+ };
+ return React.createElement(components.playground, Object.assign({}, props, {
+ component: children,
+ wrapper: Wrapper,
+ scope: __scope,
+ position: __position,
+ code: __code,
+ codesandbox: __codesandbox
+ }));
+};
+
+exports.default = Playground;
diff --git a/docs/docz-lib/docz/dist/chunk.esm.js b/docs/docz-lib/docz/dist/chunk.esm.js
new file mode 100644
index 0000000..d9ea02c
--- /dev/null
+++ b/docs/docz-lib/docz/dist/chunk.esm.js
@@ -0,0 +1,311 @@
+import { createContext, createElement, useContext, Fragment, Component, useEffect, useMemo, useRef, useState } from 'react';
+import _get from 'lodash/fp/get';
+import _omit from 'lodash/fp/omit';
+import equal from 'fast-deep-equal';
+import _merge from 'lodash/fp/merge';
+import sort from 'array-sort';
+import _unionBy from 'lodash/fp/unionBy';
+import _flattenDepth from 'lodash/fp/flattenDepth';
+import _pipe from 'lodash/fp/pipe';
+import { ulid } from 'ulid';
+import match from 'match-sorter';
+import _throttle from 'lodash/fp/throttle';
+
+const DefaultNotFound = () => createElement(Fragment, null, "Not found");
+
+const DefaultLoading = () => createElement(Fragment, null, "Loading");
+
+const DefaultPage = ({
+ children
+}) => createElement(Fragment, null, children);
+
+const DefaultPlayground = ({
+ component,
+ code
+}) => createElement(Fragment, null, component, code);
+
+const defaultComponents = {
+ loading: DefaultLoading,
+ playground: DefaultPlayground,
+ notFound: DefaultNotFound,
+ page: DefaultPage
+};
+const ctx = createContext({});
+const ComponentsProvider = ({
+ components: themeComponents = {},
+ children
+}) => createElement(ctx.Provider, {
+ value: Object.assign({}, defaultComponents, themeComponents)
+}, children);
+const useComponents = () => {
+ return useContext(ctx);
+};
+
+const isFn = value => typeof value === 'function';
+function flatArrFromObject(arr, prop) {
+ const reducer = (arr, obj) => {
+ const value = _get(prop)(obj);
+
+ return value ? arr.concat([value]) : arr;
+ };
+
+ return Array.from(new Set(arr.reduce(reducer, [])));
+}
+function compare(a, b, reverse) {
+ if (a < b) return reverse ? 1 : -1;
+ if (a > b) return reverse ? -1 : 1;
+ return 0;
+}
+
+function create(initial) {
+ var _a;
+
+ const ctx = createContext(initial);
+ const listeners = new Set();
+
+ const dispatch = fn => {
+ listeners.forEach(listener => listener(fn));
+ };
+
+ return {
+ context: ctx,
+ set: fn => dispatch(fn),
+ Provider: (_a = class Provider extends Component {
+ constructor() {
+ super(...arguments);
+ this.state = this.props.initial || initial || {};
+ }
+
+ static getDerivedStateFromProps(props, state) {
+ if (!equal(props.initial, state)) return props.initial;
+ return null;
+ }
+
+ componentDidMount() {
+ listeners.add(fn => this.setState(fn));
+ }
+
+ componentWillUnmount() {
+ listeners.clear();
+ }
+
+ render() {
+ return createElement(ctx.Provider, {
+ value: this.state
+ }, this.props.children);
+ }
+
+ }, _a.displayName = 'DoczStateProvider', _a)
+ };
+}
+
+const doczState = create({});
+
+const useConfig = () => {
+ const state = useContext(doczState.context);
+ const {
+ linkComponent,
+ transform,
+ config,
+ themeConfig = {}
+ } = state;
+
+ const newConfig = _merge(themeConfig, config ? config.themeConfig : {});
+
+ const transformed = transform ? transform(newConfig) : newConfig;
+ return Object.assign({}, config, {
+ linkComponent,
+ themeConfig: transformed
+ });
+};
+
+const updateState = ev => {
+ const {
+ type,
+ payload
+ } = JSON.parse(ev.data);
+ const prop = type.startsWith('state.') && type.split('.')[1];
+
+ if (prop) {
+ doczState.set(state => Object.assign({}, state, {
+ [prop]: payload
+ }));
+ }
+};
+
+const useDataServer = url => {
+ useEffect(() => {
+ if (!url) return;
+ const socket = new WebSocket(url);
+ socket.onmessage = updateState;
+ return () => socket.close();
+ }, []);
+};
+
+const useDocs = () => {
+ const {
+ entries = []
+ } = useContext(doczState.context);
+ const arr = entries.map(({
+ value
+ }) => value);
+ return sort(arr, (a, b) => compare(a.name, b.name));
+};
+
+const noMenu = entry => !entry.menu;
+
+const fromMenu = menu => entry => entry.menu === menu;
+
+const entryAsMenu = entry => ({
+ name: entry.name,
+ route: entry.route,
+ parent: entry.parent
+});
+
+const entriesOfMenu = (menu, entries) => entries.filter(fromMenu(menu)).map(entryAsMenu);
+
+const parseMenu = entries => name => ({
+ name,
+ menu: entriesOfMenu(name, entries)
+});
+
+const menusFromEntries = entries => {
+ const entriesWithoutMenu = entries.filter(noMenu).map(entryAsMenu);
+ const menus = flatArrFromObject(entries, 'menu').map(parseMenu(entries));
+ return _unionBy('name', menus, entriesWithoutMenu);
+};
+
+const parseItemStr = item => typeof item === 'string' ? {
+ name: item
+} : item;
+
+const normalize = item => {
+ const selected = parseItemStr(item);
+ return Object.assign({}, selected, {
+ id: selected.id || ulid(),
+ parent: _get('parent', selected) || _get('parent', item),
+ menu: Array.isArray(selected.menu) ? selected.menu.map(normalize) : selected.menu
+ });
+};
+
+const clean = item => item.href || item.route ? _omit('menu', item) : item;
+
+const normalizeAndClean = _pipe(normalize, clean);
+
+const mergeMenus = (entriesMenu, configMenu) => {
+ const first = entriesMenu.map(normalizeAndClean);
+ const second = configMenu.map(normalizeAndClean);
+
+ const merged = _unionBy('name', first, second);
+
+ return merged.map(item => {
+ if (!item.menu) return item;
+ const found = second.find(i => i.name === item.name);
+ const foundMenu = found && found.menu;
+ return Object.assign({}, item, {
+ menu: foundMenu ? mergeMenus(item.menu, foundMenu) : item.menu || found.menu
+ });
+ });
+};
+
+const UNKNOWN_POS = Infinity;
+
+const findPos = (item, orderedList = []) => {
+ const name = typeof item !== 'string' ? _get('name', item) : item;
+ const pos = orderedList.findIndex(item => item === name);
+ return pos !== -1 ? pos : UNKNOWN_POS;
+};
+
+const compareWithMenu = (to = []) => (a, b) => {
+ const list = to.map(i => i.name || i);
+ return compare(findPos(a, list), findPos(b, list));
+};
+
+const sortByName = (a, b) => {
+ return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
+};
+
+const sortMenus = (first, second = []) => {
+ const sorted = sort(first, compareWithMenu(second), sortByName);
+ return sorted.map(item => {
+ if (!item.menu) return item;
+ const found = second.find(menu => menu.name === item.name);
+ const foundMenu = found && found.menu;
+ return Object.assign({}, item, {
+ menu: foundMenu ? sortMenus(item.menu, foundMenu) : sort(item.menu, sortByName)
+ });
+ });
+};
+
+const search = (val, menu) => {
+ const items = menu.map(item => [item].concat(item.menu || []));
+
+ const flattened = _flattenDepth(2, items);
+
+ const flattenedDeduplicated = [...new Set(flattened)];
+ return match(flattenedDeduplicated, val, {
+ keys: ['name']
+ });
+};
+
+const filterMenus = (items, filter) => {
+ if (!filter) return items;
+ return items.filter(filter).map(item => {
+ if (!item.menu) return item;
+ return Object.assign({}, item, {
+ menu: item.menu.filter(filter)
+ });
+ });
+};
+
+const useMenus = opts => {
+ const {
+ query = ''
+ } = opts || {};
+ const {
+ entries,
+ config
+ } = useContext(doczState.context);
+ if (!entries) return null;
+ const arr = entries.map(({
+ value
+ }) => value);
+ const entriesMenu = menusFromEntries(arr);
+ const sorted = useMemo(() => {
+ const merged = mergeMenus(entriesMenu, config.menu);
+ const result = sortMenus(merged, config.menu);
+ return filterMenus(result, opts && opts.filter);
+ }, [entries, config]);
+ return query && query.length > 0 ? search(query, sorted) : sorted;
+};
+
+const usePrevious = (value, defaultValue) => {
+ const ref = useRef(defaultValue);
+ useEffect(() => {
+ ref.current = value;
+ });
+ return ref.current;
+};
+
+const isClient = typeof window === 'object';
+
+const getSize = (initialWidth, initialHeight) => ({
+ innerHeight: isClient ? window.innerHeight : initialHeight,
+ innerWidth: isClient ? window.innerWidth : initialWidth,
+ outerHeight: isClient ? window.outerHeight : initialHeight,
+ outerWidth: isClient ? window.outerWidth : initialWidth
+});
+
+const useWindowSize = (throttleMs = 300, initialWidth = Infinity, initialHeight = Infinity) => {
+ const [windowSize, setWindowSize] = useState(getSize(initialHeight, initialHeight));
+
+ const tSetWindowResize = _throttle(throttleMs, () => setWindowSize(getSize(initialHeight, initialHeight)));
+
+ useEffect(() => {
+ window.addEventListener('resize', tSetWindowResize);
+ return () => void window.removeEventListener('resize', tSetWindowResize);
+ }, []);
+ return windowSize;
+};
+
+export { isFn as a, useComponents as b, doczState as c, useConfig as d, useDataServer as e, useDocs as f, useMenus as g, usePrevious as h, useWindowSize as i, ComponentsProvider as j };
diff --git a/docs/docz-lib/docz/dist/chunk.js b/docs/docz-lib/docz/dist/chunk.js
new file mode 100644
index 0000000..c68a824
--- /dev/null
+++ b/docs/docz-lib/docz/dist/chunk.js
@@ -0,0 +1,324 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var React = require('react');
+var _get = _interopDefault(require('lodash/fp/get'));
+var _omit = _interopDefault(require('lodash/fp/omit'));
+var equal = _interopDefault(require('fast-deep-equal'));
+var _merge = _interopDefault(require('lodash/fp/merge'));
+var sort = _interopDefault(require('array-sort'));
+var _unionBy = _interopDefault(require('lodash/fp/unionBy'));
+var _flattenDepth = _interopDefault(require('lodash/fp/flattenDepth'));
+var _pipe = _interopDefault(require('lodash/fp/pipe'));
+var ulid = require('ulid');
+var match = _interopDefault(require('match-sorter'));
+var _throttle = _interopDefault(require('lodash/fp/throttle'));
+
+const DefaultNotFound = () => React.createElement(React.Fragment, null, "Not found");
+
+const DefaultLoading = () => React.createElement(React.Fragment, null, "Loading");
+
+const DefaultPage = ({
+ children
+}) => React.createElement(React.Fragment, null, children);
+
+const DefaultPlayground = ({
+ component,
+ code
+}) => React.createElement(React.Fragment, null, component, code);
+
+const defaultComponents = {
+ loading: DefaultLoading,
+ playground: DefaultPlayground,
+ notFound: DefaultNotFound,
+ page: DefaultPage
+};
+const ctx = React.createContext({});
+const ComponentsProvider = ({
+ components: themeComponents = {},
+ children
+}) => React.createElement(ctx.Provider, {
+ value: Object.assign({}, defaultComponents, themeComponents)
+}, children);
+const useComponents = () => {
+ return React.useContext(ctx);
+};
+
+const isFn = value => typeof value === 'function';
+function flatArrFromObject(arr, prop) {
+ const reducer = (arr, obj) => {
+ const value = _get(prop)(obj);
+
+ return value ? arr.concat([value]) : arr;
+ };
+
+ return Array.from(new Set(arr.reduce(reducer, [])));
+}
+function compare(a, b, reverse) {
+ if (a < b) return reverse ? 1 : -1;
+ if (a > b) return reverse ? -1 : 1;
+ return 0;
+}
+
+function create(initial) {
+ var _a;
+
+ const ctx = React.createContext(initial);
+ const listeners = new Set();
+
+ const dispatch = fn => {
+ listeners.forEach(listener => listener(fn));
+ };
+
+ return {
+ context: ctx,
+ set: fn => dispatch(fn),
+ Provider: (_a = class Provider extends React.Component {
+ constructor() {
+ super(...arguments);
+ this.state = this.props.initial || initial || {};
+ }
+
+ static getDerivedStateFromProps(props, state) {
+ if (!equal(props.initial, state)) return props.initial;
+ return null;
+ }
+
+ componentDidMount() {
+ listeners.add(fn => this.setState(fn));
+ }
+
+ componentWillUnmount() {
+ listeners.clear();
+ }
+
+ render() {
+ return React.createElement(ctx.Provider, {
+ value: this.state
+ }, this.props.children);
+ }
+
+ }, _a.displayName = 'DoczStateProvider', _a)
+ };
+}
+
+const doczState = create({});
+
+const useConfig = () => {
+ const state = React.useContext(doczState.context);
+ const {
+ linkComponent,
+ transform,
+ config,
+ themeConfig = {}
+ } = state;
+
+ const newConfig = _merge(themeConfig, config ? config.themeConfig : {});
+
+ const transformed = transform ? transform(newConfig) : newConfig;
+ return Object.assign({}, config, {
+ linkComponent,
+ themeConfig: transformed
+ });
+};
+
+const updateState = ev => {
+ const {
+ type,
+ payload
+ } = JSON.parse(ev.data);
+ const prop = type.startsWith('state.') && type.split('.')[1];
+
+ if (prop) {
+ doczState.set(state => Object.assign({}, state, {
+ [prop]: payload
+ }));
+ }
+};
+
+const useDataServer = url => {
+ React.useEffect(() => {
+ if (!url) return;
+ const socket = new WebSocket(url);
+ socket.onmessage = updateState;
+ return () => socket.close();
+ }, []);
+};
+
+const useDocs = () => {
+ const {
+ entries = []
+ } = React.useContext(doczState.context);
+ const arr = entries.map(({
+ value
+ }) => value);
+ return sort(arr, (a, b) => compare(a.name, b.name));
+};
+
+const noMenu = entry => !entry.menu;
+
+const fromMenu = menu => entry => entry.menu === menu;
+
+const entryAsMenu = entry => ({
+ name: entry.name,
+ route: entry.route,
+ parent: entry.parent
+});
+
+const entriesOfMenu = (menu, entries) => entries.filter(fromMenu(menu)).map(entryAsMenu);
+
+const parseMenu = entries => name => ({
+ name,
+ menu: entriesOfMenu(name, entries)
+});
+
+const menusFromEntries = entries => {
+ const entriesWithoutMenu = entries.filter(noMenu).map(entryAsMenu);
+ const menus = flatArrFromObject(entries, 'menu').map(parseMenu(entries));
+ return _unionBy('name', menus, entriesWithoutMenu);
+};
+
+const parseItemStr = item => typeof item === 'string' ? {
+ name: item
+} : item;
+
+const normalize = item => {
+ const selected = parseItemStr(item);
+ return Object.assign({}, selected, {
+ id: selected.id || ulid.ulid(),
+ parent: _get('parent', selected) || _get('parent', item),
+ menu: Array.isArray(selected.menu) ? selected.menu.map(normalize) : selected.menu
+ });
+};
+
+const clean = item => item.href || item.route ? _omit('menu', item) : item;
+
+const normalizeAndClean = _pipe(normalize, clean);
+
+const mergeMenus = (entriesMenu, configMenu) => {
+ const first = entriesMenu.map(normalizeAndClean);
+ const second = configMenu.map(normalizeAndClean);
+
+ const merged = _unionBy('name', first, second);
+
+ return merged.map(item => {
+ if (!item.menu) return item;
+ const found = second.find(i => i.name === item.name);
+ const foundMenu = found && found.menu;
+ return Object.assign({}, item, {
+ menu: foundMenu ? mergeMenus(item.menu, foundMenu) : item.menu || found.menu
+ });
+ });
+};
+
+const UNKNOWN_POS = Infinity;
+
+const findPos = (item, orderedList = []) => {
+ const name = typeof item !== 'string' ? _get('name', item) : item;
+ const pos = orderedList.findIndex(item => item === name);
+ return pos !== -1 ? pos : UNKNOWN_POS;
+};
+
+const compareWithMenu = (to = []) => (a, b) => {
+ const list = to.map(i => i.name || i);
+ return compare(findPos(a, list), findPos(b, list));
+};
+
+const sortByName = (a, b) => {
+ return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
+};
+
+const sortMenus = (first, second = []) => {
+ const sorted = sort(first, compareWithMenu(second), sortByName);
+ return sorted.map(item => {
+ if (!item.menu) return item;
+ const found = second.find(menu => menu.name === item.name);
+ const foundMenu = found && found.menu;
+ return Object.assign({}, item, {
+ menu: foundMenu ? sortMenus(item.menu, foundMenu) : sort(item.menu, sortByName)
+ });
+ });
+};
+
+const search = (val, menu) => {
+ const items = menu.map(item => [item].concat(item.menu || []));
+
+ const flattened = _flattenDepth(2, items);
+
+ const flattenedDeduplicated = [...new Set(flattened)];
+ return match(flattenedDeduplicated, val, {
+ keys: ['name']
+ });
+};
+
+const filterMenus = (items, filter) => {
+ if (!filter) return items;
+ return items.filter(filter).map(item => {
+ if (!item.menu) return item;
+ return Object.assign({}, item, {
+ menu: item.menu.filter(filter)
+ });
+ });
+};
+
+const useMenus = opts => {
+ const {
+ query = ''
+ } = opts || {};
+ const {
+ entries,
+ config
+ } = React.useContext(doczState.context);
+ if (!entries) return null;
+ const arr = entries.map(({
+ value
+ }) => value);
+ const entriesMenu = menusFromEntries(arr);
+ const sorted = React.useMemo(() => {
+ const merged = mergeMenus(entriesMenu, config.menu);
+ const result = sortMenus(merged, config.menu);
+ return filterMenus(result, opts && opts.filter);
+ }, [entries, config]);
+ return query && query.length > 0 ? search(query, sorted) : sorted;
+};
+
+const usePrevious = (value, defaultValue) => {
+ const ref = React.useRef(defaultValue);
+ React.useEffect(() => {
+ ref.current = value;
+ });
+ return ref.current;
+};
+
+const isClient = typeof window === 'object';
+
+const getSize = (initialWidth, initialHeight) => ({
+ innerHeight: isClient ? window.innerHeight : initialHeight,
+ innerWidth: isClient ? window.innerWidth : initialWidth,
+ outerHeight: isClient ? window.outerHeight : initialHeight,
+ outerWidth: isClient ? window.outerWidth : initialWidth
+});
+
+const useWindowSize = (throttleMs = 300, initialWidth = Infinity, initialHeight = Infinity) => {
+ const [windowSize, setWindowSize] = React.useState(getSize(initialHeight, initialHeight));
+
+ const tSetWindowResize = _throttle(throttleMs, () => setWindowSize(getSize(initialHeight, initialHeight)));
+
+ React.useEffect(() => {
+ window.addEventListener('resize', tSetWindowResize);
+ return () => void window.removeEventListener('resize', tSetWindowResize);
+ }, []);
+ return windowSize;
+};
+
+exports.ComponentsProvider = ComponentsProvider;
+exports.doczState = doczState;
+exports.isFn = isFn;
+exports.useComponents = useComponents;
+exports.useConfig = useConfig;
+exports.useDataServer = useDataServer;
+exports.useDocs = useDocs;
+exports.useMenus = useMenus;
+exports.usePrevious = usePrevious;
+exports.useWindowSize = useWindowSize;
diff --git a/docs/docz-lib/docz/dist/components/AsyncComponent.d.ts b/docs/docz-lib/docz/dist/components/AsyncComponent.d.ts
new file mode 100644
index 0000000..9470a46
--- /dev/null
+++ b/docs/docz-lib/docz/dist/components/AsyncComponent.d.ts
@@ -0,0 +1,7 @@
+import { SFC, ComponentType } from 'react';
+interface Props {
+ as: ComponentType<any>;
+ getInitialProps?: (props: any) => any;
+}
+export declare const AsyncComponent: SFC<Props>;
+export {};
diff --git a/docs/docz-lib/docz/dist/components/AsyncPlayground.d.ts b/docs/docz-lib/docz/dist/components/AsyncPlayground.d.ts
new file mode 100644
index 0000000..c597825
--- /dev/null
+++ b/docs/docz-lib/docz/dist/components/AsyncPlayground.d.ts
@@ -0,0 +1,2 @@
+import * as React from 'react';
+export declare const Playground: React.SFC<any>;
diff --git a/docs/docz-lib/docz/dist/components/AsyncRoute.d.ts b/docs/docz-lib/docz/dist/components/AsyncRoute.d.ts
new file mode 100644
index 0000000..0f6ad6e
--- /dev/null
+++ b/docs/docz-lib/docz/dist/components/AsyncRoute.d.ts
@@ -0,0 +1,13 @@
+import { SFC } from 'react';
+import { Entry } from '../state';
+import { ComponentsMap } from '../hooks/useComponents';
+export declare type Imports = Record<string, () => Promise<any>>;
+export declare const loadRoute: (path: string, imports: Record<string, () => Promise<any>>, components: ComponentsMap) => import("@loadable/component").LoadableComponent<any>;
+interface AsyncRouteProps {
+ asyncComponent: any;
+ components: ComponentsMap;
+ path: string;
+ entry: Entry;
+}
+export declare const AsyncRoute: SFC<AsyncRouteProps>;
+export {};
diff --git a/docs/docz-lib/docz/dist/components/Link.d.ts b/docs/docz-lib/docz/dist/components/Link.d.ts
new file mode 100644
index 0000000..00ab189
--- /dev/null
+++ b/docs/docz-lib/docz/dist/components/Link.d.ts
@@ -0,0 +1,4 @@
+import * as React from 'react';
+import { LinkProps } from '@reach/router';
+export { LinkProps };
+export declare const Link: React.ForwardRefExoticComponent<Pick<LinkProps<any>, "key" | "download" | "hrefLang" | "media" | "rel" | "target" | "type" | "referrerPolicy" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "style" | "tabIndex" | "title" | "inputMode" | "is" | "radioGroup" | [...]
diff --git a/docs/docz-lib/docz/dist/components/Playground.d.ts b/docs/docz-lib/docz/dist/components/Playground.d.ts
new file mode 100644
index 0000000..1179bbf
--- /dev/null
+++ b/docs/docz-lib/docz/dist/components/Playground.d.ts
@@ -0,0 +1,13 @@
+import { ComponentType, SFC } from 'react';
+export interface PlaygroundProps {
+ className?: string;
+ style?: any;
+ wrapper?: ComponentType<any>;
+ children: any;
+ __scope: Record<string, any>;
+ __position: number;
+ __code: string;
+ __codesandbox: string;
+}
+declare const Playground: SFC<PlaygroundProps>;
+export default Playground;
diff --git a/docs/docz-lib/docz/dist/components/Props.d.ts b/docs/docz-lib/docz/dist/components/Props.d.ts
new file mode 100644
index 0000000..5729b46
--- /dev/null
+++ b/docs/docz-lib/docz/dist/components/Props.d.ts
@@ -0,0 +1,65 @@
+import { SFC, ComponentType } from 'react';
+export interface EnumValue {
+ value: string;
+ computed: boolean;
+}
+export interface FlowTypeElement {
+ name: string;
+ value: string;
+}
+export interface FlowTypeArgs {
+ name: string;
+ type: {
+ name: string;
+ };
+}
+export interface PropType {
+ name: string;
+ value?: any;
+ raw?: any;
+ computed?: boolean;
+}
+export interface FlowType extends PropType {
+ elements: FlowTypeElement[];
+ name: string;
+ raw: string;
+ type?: string;
+ computed?: boolean;
+ signature?: {
+ arguments: FlowTypeArgs[];
+ return: {
+ name: string;
+ };
+ };
+}
+export interface Prop {
+ required: boolean;
+ description?: string;
+ type: PropType;
+ defaultValue?: {
+ value: string;
+ computed: boolean;
+ };
+ flowType?: FlowType;
+}
+export declare type ComponentWithDocGenInfo = ComponentType & {
+ __docgenInfo: {
+ description?: string;
+ props?: Record<string, Prop>;
+ };
+};
+export interface PropsProps {
+ title?: Node;
+ isRaw?: boolean;
+ isToggle?: boolean;
+ of: ComponentWithDocGenInfo;
+}
+export declare const getPropType: (prop: Prop) => any;
+export interface PropsComponentProps {
+ title?: Node;
+ isRaw?: boolean;
+ isToggle?: boolean;
+ props: Record<string, Prop>;
+ getPropType(prop: Prop): string;
+}
+export declare const Props: SFC<PropsProps>;
diff --git a/docs/docz-lib/docz/dist/components/Routes.d.ts b/docs/docz-lib/docz/dist/components/Routes.d.ts
new file mode 100644
index 0000000..27776c9
--- /dev/null
+++ b/docs/docz-lib/docz/dist/components/Routes.d.ts
@@ -0,0 +1,8 @@
+import { SFC } from 'react';
+import { ComponentsMap } from '../hooks/useComponents';
+import { Imports } from './AsyncRoute';
+export interface RoutesProps {
+ components: ComponentsMap;
+ imports: Imports;
+}
+export declare const Routes: SFC<RoutesProps>;
diff --git a/docs/docz-lib/docz/dist/hooks/index.d.ts b/docs/docz-lib/docz/dist/hooks/index.d.ts
new file mode 100644
index 0000000..d02f7b8
--- /dev/null
+++ b/docs/docz-lib/docz/dist/hooks/index.d.ts
@@ -0,0 +1,7 @@
+export * from './useComponents';
+export { useConfig, UseConfigObj } from './useConfig';
+export { useDataServer } from './useDataServer';
+export { useDocs } from './useDocs';
+export { useMenus } from './useMenus';
+export { usePrevious } from './usePrevious';
+export { useWindowSize } from './useWindowSize';
diff --git a/docs/docz-lib/docz/dist/hooks/useComponents.d.ts b/docs/docz-lib/docz/dist/hooks/useComponents.d.ts
new file mode 100644
index 0000000..01e03cf
--- /dev/null
+++ b/docs/docz-lib/docz/dist/hooks/useComponents.d.ts
@@ -0,0 +1,44 @@
+import { SFC, ComponentType as CT } from 'react';
+import { RouteComponentProps } from '@reach/router';
+import { Entry } from '../state';
+export declare type PageProps = RouteComponentProps<any> & {
+ doc: Entry;
+};
+export interface PlaygroundProps {
+ className?: string;
+ style?: any;
+ wrapper?: CT<any>;
+ components: ComponentsMap;
+ component: JSX.Element;
+ position: number;
+ code: string;
+ codesandbox: string;
+ scope: Record<string, any>;
+}
+export declare type PlaygroundComponent = CT<PlaygroundProps>;
+export interface ComponentsMap {
+ loading?: CT;
+ page?: CT<PageProps>;
+ notFound?: CT<RouteComponentProps<any>>;
+ playground?: PlaygroundComponent;
+ h1?: CT<any> | string;
+ h2?: CT<any> | string;
+ h3?: CT<any> | string;
+ h4?: CT<any> | string;
+ h5?: CT<any> | string;
+ h6?: CT<any> | string;
+ span?: CT<any> | string;
+ a?: CT<any> | string;
+ ul?: CT<any> | string;
+ table?: CT<any> | string;
+ pre?: CT<any> | string;
+ code?: CT<any> | string;
+ inlineCode?: CT<any> | string;
+ [key: string]: any;
+}
+export declare type NotFoundComponent = CT<RouteComponentProps<any>>;
+export interface ComponentsProviderProps {
+ components: ComponentsMap;
+}
+export declare const ComponentsProvider: SFC<ComponentsProviderProps>;
+export declare const useComponents: () => ComponentsMap;
diff --git a/docs/docz-lib/docz/dist/hooks/useConfig.d.ts b/docs/docz-lib/docz/dist/hooks/useConfig.d.ts
new file mode 100644
index 0000000..857250e
--- /dev/null
+++ b/docs/docz-lib/docz/dist/hooks/useConfig.d.ts
@@ -0,0 +1,7 @@
+/// <reference types="react" />
+import { ThemeConfig, Config } from '../state';
+export interface UseConfigObj extends Config {
+ themeConfig: ThemeConfig;
+ linkComponent?: React.ComponentType<any>;
+}
+export declare const useConfig: () => UseConfigObj;
diff --git a/docs/docz-lib/docz/dist/hooks/useDataServer.d.ts b/docs/docz-lib/docz/dist/hooks/useDataServer.d.ts
new file mode 100644
index 0000000..6f66307
--- /dev/null
+++ b/docs/docz-lib/docz/dist/hooks/useDataServer.d.ts
@@ -0,0 +1 @@
+export declare const useDataServer: (url: string | undefined) => void;
diff --git a/docs/docz-lib/docz/dist/hooks/useDocs.d.ts b/docs/docz-lib/docz/dist/hooks/useDocs.d.ts
new file mode 100644
index 0000000..b245978
--- /dev/null
+++ b/docs/docz-lib/docz/dist/hooks/useDocs.d.ts
@@ -0,0 +1,2 @@
+import { Entry } from '../state';
+export declare const useDocs: () => Entry[] | null;
diff --git a/docs/docz-lib/docz/dist/hooks/useMenus.d.ts b/docs/docz-lib/docz/dist/hooks/useMenus.d.ts
new file mode 100644
index 0000000..88bb144
--- /dev/null
+++ b/docs/docz-lib/docz/dist/hooks/useMenus.d.ts
@@ -0,0 +1,8 @@
+import { MenuItem } from '../state';
+declare type FilterFn = (item: MenuItem) => boolean;
+export interface UseMenusParams {
+ query?: string;
+ filter?: FilterFn;
+}
+export declare const useMenus: (opts?: UseMenusParams | undefined) => MenuItem[] | null;
+export {};
diff --git a/docs/docz-lib/docz/dist/hooks/usePrevious.d.ts b/docs/docz-lib/docz/dist/hooks/usePrevious.d.ts
new file mode 100644
index 0000000..2a58025
--- /dev/null
+++ b/docs/docz-lib/docz/dist/hooks/usePrevious.d.ts
@@ -0,0 +1 @@
+export declare const usePrevious: (value: any, defaultValue?: any) => any;
diff --git a/docs/docz-lib/docz/dist/hooks/useWindowSize.d.ts b/docs/docz-lib/docz/dist/hooks/useWindowSize.d.ts
new file mode 100644
index 0000000..006a9de
--- /dev/null
+++ b/docs/docz-lib/docz/dist/hooks/useWindowSize.d.ts
@@ -0,0 +1,6 @@
+export declare const useWindowSize: (throttleMs?: number, initialWidth?: number, initialHeight?: number) => {
+ innerHeight: number;
+ innerWidth: number;
+ outerHeight: number;
+ outerWidth: number;
+};
diff --git a/docs/docz-lib/docz/dist/index.d.ts b/docs/docz-lib/docz/dist/index.d.ts
new file mode 100644
index 0000000..cc8dd20
--- /dev/null
+++ b/docs/docz-lib/docz/dist/index.d.ts
@@ -0,0 +1,8 @@
+export { Playground } from './components/AsyncPlayground';
+export { AsyncRoute, loadRoute } from './components/AsyncRoute';
+export { Link, LinkProps } from './components/Link';
+export { Props, PropsComponentProps } from './components/Props';
+export { Routes } from './components/Routes';
+export * from './hooks';
+export { theme } from './theme';
+export { doczState, Entry, MenuItem, ThemeConfig } from './state';
diff --git a/docs/docz-lib/docz/dist/index.esm.js b/docs/docz-lib/docz/dist/index.esm.js
new file mode 100644
index 0000000..1f8671d
--- /dev/null
+++ b/docs/docz-lib/docz/dist/index.esm.js
@@ -0,0 +1,302 @@
+import * as React from 'react';
+import { createElement, Suspense, useState, useEffect, forwardRef, useCallback, useContext, useMemo, memo, Fragment } from 'react';
+import loadable from '@loadable/component';
+import _get from 'lodash/fp/get';
+import { __rest } from 'tslib';
+import { a as isFn, b as useComponents, c as doczState } from './chunk.esm.js';
+export { j as ComponentsProvider, c as doczState, b as useComponents, d as useConfig, e as useDataServer, f as useDocs, g as useMenus, h as usePrevious, i as useWindowSize } from './chunk.esm.js';
+import _omit from 'lodash/fp/omit';
+import { Link as Link$1, createHistory, LocationProvider, Router } from '@reach/router';
+import _first from 'lodash/fp/first';
+import capitalize from 'capitalize';
+import 'fast-deep-equal';
+import 'lodash/fp/merge';
+import 'array-sort';
+import 'lodash/fp/unionBy';
+import 'lodash/fp/flattenDepth';
+import 'lodash/fp/pipe';
+import 'ulid';
+import 'match-sorter';
+import 'lodash/fp/throttle';
+import { MDXProvider } from '@mdx-js/react';
+import createHashSource from 'hash-source';
+let source = createHashSource();
+
+const BasePlayground = loadable(() => import('./Playground.esm.js'));
+const Playground = props => typeof window !== 'undefined' ? createElement(Suspense, {
+ fallback: null
+}, createElement(BasePlayground, Object.assign({}, props))) : null;
+
+const AsyncComponent = defaultProps => {
+ const [loading, setLoading] = useState(true);
+ const [error, setError] = useState(null);
+ const [data, setData] = useState({});
+ useEffect(() => {
+ const {
+ getInitialProps
+ } = defaultProps;
+
+ if (getInitialProps && isFn(getInitialProps)) {
+ setLoading(true);
+ getInitialProps(defaultProps).then(data => {
+ setLoading(false);
+ setError(null);
+ setData(data);
+ }).catch(err => {
+ setLoading(false);
+ setError(err);
+ setData({});
+ });
+ }
+ }, []);
+
+ const {
+ as: Comp,
+ getInitialProps
+ } = defaultProps,
+ props = __rest(defaultProps, ["as", "getInitialProps"]);
+
+ return createElement(Comp, Object.assign({}, props, {
+ data: Object.assign({}, data, {
+ loading,
+ error
+ })
+ }));
+};
+
+const loadRoute = (path, imports, components) => {
+ const Loading = components.loading;
+
+ const fn = async () => {
+ const importFn = _get(path, imports);
+
+ const {
+ default: Component,
+ getInitialProps
+ } = await importFn();
+
+ const ExportedComponent = props => createElement(AsyncComponent, Object.assign({}, props, {
+ as: Component || 'div',
+ getInitialProps: getInitialProps
+ }));
+
+ return ExportedComponent;
+ };
+
+ return loadable(fn, {
+ fallback: createElement(Loading, null)
+ });
+};
+const AsyncRoute = defaultProps => {
+ const {
+ asyncComponent,
+ path,
+ entry
+ } = defaultProps,
+ routeProps = __rest(defaultProps, ["asyncComponent", "path", "entry"]);
+
+ const components = useComponents();
+ const Page = components.page;
+ const Component = asyncComponent;
+ const props = Object.assign({}, routeProps, {
+ doc: entry
+ });
+ return Page ? createElement(Page, Object.assign({}, props), createElement(Component, Object.assign({}, props))) : createElement(Component, Object.assign({}, props));
+};
+
+const Link = forwardRef((defaultProps, ref) => {
+ const props = _omit(['activeClassName', 'partiallyActive'], defaultProps);
+
+ const isActive = useCallback(({
+ isCurrent
+ }) => {
+ return isCurrent ? {
+ className: `${props.className} active`
+ } : {};
+ }, [props.className]);
+ return createElement(Link$1, Object.assign({}, props, {
+ getProps: isActive,
+ ref: ref
+ }));
+});
+Link.displayName = 'Link';
+
+const RE_OBJECTOF = /(?:React\.)?(?:PropTypes\.)?objectOf\((?:React\.)?(?:PropTypes\.)?(\w+)\)/;
+
+const getTypeStr = type => {
+ switch (type.name.toLowerCase()) {
+ case 'instanceof':
+ return `Class(${type.value})`;
+
+ case 'enum':
+ if (type.computed) return type.value;
+ return type.value ? type.value.map(v => `${v.value}`).join(' │ ') : type.raw;
+
+ case 'union':
+ return type.value ? type.value.map(t => `${getTypeStr(t)}`).join(' │ ') : type.raw;
+
+ case 'array':
+ return type.raw;
+
+ case 'arrayof':
+ return `Array<${getTypeStr(type.value)}>`;
+
+ case 'custom':
+ if (type.raw.indexOf('function') !== -1 || type.raw.indexOf('=>') !== -1) return 'Custom(Function)';else if (type.raw.toLowerCase().indexOf('objectof') !== -1) {
+ const m = type.raw.match(RE_OBJECTOF);
+ if (m && m[1]) return `ObjectOf(${capitalize(m[1])})`;
+ return 'ObjectOf';
+ }
+ return 'Custom';
+
+ case 'bool':
+ return 'Boolean';
+
+ case 'func':
+ return 'Function';
+
+ case 'shape':
+ const shape = type.value;
+ const rst = {};
+ Object.keys(shape).forEach(key => {
+ rst[key] = getTypeStr(shape[key]);
+ });
+ return JSON.stringify(rst, null, 2);
+
+ default:
+ return capitalize(type.name);
+ }
+};
+
+const humanize = type => getTypeStr(type);
+
+const getPropType = prop => {
+ const propName = _get('name', prop.flowType || prop.type);
+
+ if (!propName) return null;
+ const isEnum = propName.startsWith('"') || propName === 'enum';
+ const name = capitalize(isEnum ? 'enum' : propName);
+
+ const value = _get('type.value', prop);
+
+ if (!name) return null;
+
+ if (isEnum && typeof value === 'string' || !prop.flowType && !isEnum && !value || prop.flowType && !prop.flowType.elements) {
+ return name;
+ }
+
+ return prop.flowType ? humanize(prop.flowType) : humanize(prop.type);
+};
+const Props = ({
+ title,
+ isToggle,
+ isRaw,
+ of: component
+}) => {
+ const components = useComponents();
+ const {
+ props: stateProps
+ } = useContext(doczState.context);
+ const PropsComponent = components.props;
+
+ const filename = _get('__filemeta.filename', component);
+
+ const filemetaName = _get('__filemeta.name', component);
+
+ const componentName = filemetaName || component.displayName || component.name;
+ const found = stateProps && stateProps.length > 0 && stateProps.find(item => filename ? item.key === filename : item.key.includes(`${componentName}.`));
+ const value = _get('value', found) || [];
+
+ const firstDefinition = _first(value);
+
+ const definition = value.find(i => i.displayName === componentName);
+
+ const props = _get('props', definition || firstDefinition);
+
+ if (!props) return null;
+ if (!PropsComponent) return null;
+ return createElement(PropsComponent, {
+ title: title,
+ isRaw: isRaw,
+ isToggle: isToggle,
+ props: props,
+ getPropType: getPropType
+ });
+};
+
+const goToHash = ({
+ location
+}) => {
+ setTimeout(() => {
+ if (location && location.hash) {
+ const decodedHash = decodeURI(location.hash);
+ const id = decodedHash.substring(1);
+ const el = document.getElementById(id);
+ if (el) el.scrollIntoView();
+ }
+ });
+};
+
+const Routes = ({
+ imports
+}) => {
+ const components = useComponents();
+ const {
+ entries
+ } = useContext(doczState.context);
+ const NotFound = components.notFound;
+ const history = useMemo(() => createHistory(source), []);
+ useEffect(() => {
+ history.listen(goToHash);
+ }, []);
+ return createElement(MDXProvider, {
+ components: components
+ }, createElement(LocationProvider, {
+ history: history
+ }, createElement(Router, null, createElement(NotFound, {
+ default: true
+ }), entries && entries.map(({
+ key: path,
+ value: entry
+ }) => {
+ const props = {
+ path,
+ entries,
+ components
+ };
+ const component = loadRoute(path, imports, components);
+ return createElement(AsyncRoute, Object.assign({}, props, {
+ entry: entry,
+ key: entry.id,
+ path: entry.route,
+ asyncComponent: component
+ }));
+ }))));
+};
+
+function theme(themeConfig, transform = c => c) {
+ return WrappedComponent => {
+ const Theme = memo(props => {
+ const {
+ linkComponent
+ } = props;
+ const {
+ db,
+ children,
+ wrapper: Wrapper = Fragment
+ } = props;
+ const initial = Object.assign({}, db, {
+ themeConfig,
+ transform,
+ linkComponent
+ });
+ return createElement(doczState.Provider, {
+ initial: initial
+ }, createElement(Wrapper, null, createElement(WrappedComponent, null, children)));
+ });
+ Theme.displayName = WrappedComponent.displayName || 'DoczTheme';
+ return Theme;
+ };
+}
+
+export { AsyncRoute, Link, Playground, Props, Routes, loadRoute, theme };
diff --git a/docs/docz-lib/docz/dist/index.js b/docs/docz-lib/docz/dist/index.js
new file mode 100644
index 0000000..97256b3
--- /dev/null
+++ b/docs/docz-lib/docz/dist/index.js
@@ -0,0 +1,321 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var React = require('react');
+var loadable = _interopDefault(require('@loadable/component'));
+var _get = _interopDefault(require('lodash/fp/get'));
+var tslib_1 = require('tslib');
+var __chunk_1 = require('./chunk.js');
+var _omit = _interopDefault(require('lodash/fp/omit'));
+var router = require('@reach/router');
+var _first = _interopDefault(require('lodash/fp/first'));
+var capitalize = _interopDefault(require('capitalize'));
+require('fast-deep-equal');
+require('lodash/fp/merge');
+require('array-sort');
+require('lodash/fp/unionBy');
+require('lodash/fp/flattenDepth');
+require('lodash/fp/pipe');
+require('ulid');
+require('match-sorter');
+require('lodash/fp/throttle');
+var react = require('@mdx-js/react');
+var createHashSource = require('hash-source');
+let source = createHashSource.default();;
+
+const BasePlayground = loadable(() => Promise.resolve(require('./Playground.js')));
+const Playground = props => typeof window !== 'undefined' ? React.createElement(React.Suspense, {
+ fallback: null
+}, React.createElement(BasePlayground, Object.assign({}, props))) : null;
+
+const AsyncComponent = defaultProps => {
+ const [loading, setLoading] = React.useState(true);
+ const [error, setError] = React.useState(null);
+ const [data, setData] = React.useState({});
+ React.useEffect(() => {
+ const {
+ getInitialProps
+ } = defaultProps;
+
+ if (getInitialProps && __chunk_1.isFn(getInitialProps)) {
+ setLoading(true);
+ getInitialProps(defaultProps).then(data => {
+ setLoading(false);
+ setError(null);
+ setData(data);
+ }).catch(err => {
+ setLoading(false);
+ setError(err);
+ setData({});
+ });
+ }
+ }, []);
+
+ const {
+ as: Comp,
+ getInitialProps
+ } = defaultProps,
+ props = tslib_1.__rest(defaultProps, ["as", "getInitialProps"]);
+
+ return React.createElement(Comp, Object.assign({}, props, {
+ data: Object.assign({}, data, {
+ loading,
+ error
+ })
+ }));
+};
+
+const loadRoute = (path, imports, components) => {
+ const Loading = components.loading;
+
+ const fn = async () => {
+ const importFn = _get(path, imports);
+
+ const {
+ default: Component,
+ getInitialProps
+ } = await importFn();
+
+ const ExportedComponent = props => React.createElement(AsyncComponent, Object.assign({}, props, {
+ as: Component || 'div',
+ getInitialProps: getInitialProps
+ }));
+
+ return ExportedComponent;
+ };
+
+ return loadable(fn, {
+ fallback: React.createElement(Loading, null)
+ });
+};
+const AsyncRoute = defaultProps => {
+ const {
+ asyncComponent,
+ path,
+ entry
+ } = defaultProps,
+ routeProps = tslib_1.__rest(defaultProps, ["asyncComponent", "path", "entry"]);
+
+ const components = __chunk_1.useComponents();
+ const Page = components.page;
+ const Component = asyncComponent;
+ const props = Object.assign({}, routeProps, {
+ doc: entry
+ });
+ return Page ? React.createElement(Page, Object.assign({}, props), React.createElement(Component, Object.assign({}, props))) : React.createElement(Component, Object.assign({}, props));
+};
+
+const Link = React.forwardRef((defaultProps, ref) => {
+ const props = _omit(['activeClassName', 'partiallyActive'], defaultProps);
+
+ const isActive = React.useCallback(({
+ isCurrent
+ }) => {
+ return isCurrent ? {
+ className: `${props.className} active`
+ } : {};
+ }, [props.className]);
+ return React.createElement(router.Link, Object.assign({}, props, {
+ getProps: isActive,
+ ref: ref
+ }));
+});
+Link.displayName = 'Link';
+
+const RE_OBJECTOF = /(?:React\.)?(?:PropTypes\.)?objectOf\((?:React\.)?(?:PropTypes\.)?(\w+)\)/;
+
+const getTypeStr = type => {
+ switch (type.name.toLowerCase()) {
+ case 'instanceof':
+ return `Class(${type.value})`;
+
+ case 'enum':
+ if (type.computed) return type.value;
+ return type.value ? type.value.map(v => `${v.value}`).join(' │ ') : type.raw;
+
+ case 'union':
+ return type.value ? type.value.map(t => `${getTypeStr(t)}`).join(' │ ') : type.raw;
+
+ case 'array':
+ return type.raw;
+
+ case 'arrayof':
+ return `Array<${getTypeStr(type.value)}>`;
+
+ case 'custom':
+ if (type.raw.indexOf('function') !== -1 || type.raw.indexOf('=>') !== -1) return 'Custom(Function)';else if (type.raw.toLowerCase().indexOf('objectof') !== -1) {
+ const m = type.raw.match(RE_OBJECTOF);
+ if (m && m[1]) return `ObjectOf(${capitalize(m[1])})`;
+ return 'ObjectOf';
+ }
+ return 'Custom';
+
+ case 'bool':
+ return 'Boolean';
+
+ case 'func':
+ return 'Function';
+
+ case 'shape':
+ const shape = type.value;
+ const rst = {};
+ Object.keys(shape).forEach(key => {
+ rst[key] = getTypeStr(shape[key]);
+ });
+ return JSON.stringify(rst, null, 2);
+
+ default:
+ return capitalize(type.name);
+ }
+};
+
+const humanize = type => getTypeStr(type);
+
+const getPropType = prop => {
+ const propName = _get('name', prop.flowType || prop.type);
+
+ if (!propName) return null;
+ const isEnum = propName.startsWith('"') || propName === 'enum';
+ const name = capitalize(isEnum ? 'enum' : propName);
+
+ const value = _get('type.value', prop);
+
+ if (!name) return null;
+
+ if (isEnum && typeof value === 'string' || !prop.flowType && !isEnum && !value || prop.flowType && !prop.flowType.elements) {
+ return name;
+ }
+
+ return prop.flowType ? humanize(prop.flowType) : humanize(prop.type);
+};
+const Props = ({
+ title,
+ isToggle,
+ isRaw,
+ of: component
+}) => {
+ const components = __chunk_1.useComponents();
+ const {
+ props: stateProps
+ } = React.useContext(__chunk_1.doczState.context);
+ const PropsComponent = components.props;
+
+ const filename = _get('__filemeta.filename', component);
+
+ const filemetaName = _get('__filemeta.name', component);
+
+ const componentName = filemetaName || component.displayName || component.name;
+ const found = stateProps && stateProps.length > 0 && stateProps.find(item => filename ? item.key === filename : item.key.includes(`${componentName}.`));
+ const value = _get('value', found) || [];
+
+ const firstDefinition = _first(value);
+
+ const definition = value.find(i => i.displayName === componentName);
+
+ const props = _get('props', definition || firstDefinition);
+
+ if (!props) return null;
+ if (!PropsComponent) return null;
+ return React.createElement(PropsComponent, {
+ title: title,
+ isRaw: isRaw,
+ isToggle: isToggle,
+ props: props,
+ getPropType: getPropType
+ });
+};
+
+const goToHash = ({
+ location
+}) => {
+ setTimeout(() => {
+ if (location && location.hash) {
+ const decodedHash = decodeURI(location.hash);
+ const id = decodedHash.substring(1);
+ const el = document.getElementById(id);
+ if (el) el.scrollIntoView();
+ }
+ });
+};
+
+const Routes = ({
+ imports
+}) => {
+ const components = __chunk_1.useComponents();
+ const {
+ entries
+ } = React.useContext(__chunk_1.doczState.context);
+ const NotFound = components.notFound;
+ const history = React.useMemo(() => router.createHistory(source), []);
+ React.useEffect(() => {
+ history.listen(goToHash);
+ }, []);
+ return React.createElement(react.MDXProvider, {
+ components: components
+ }, React.createElement(router.LocationProvider, {
+ history: history
+ }, React.createElement(router.Router, null, React.createElement(NotFound, {
+ default: true
+ }), entries && entries.map(({
+ key: path,
+ value: entry
+ }) => {
+ const props = {
+ path,
+ entries,
+ components
+ };
+ const component = loadRoute(path, imports, components);
+ return React.createElement(AsyncRoute, Object.assign({}, props, {
+ entry: entry,
+ key: entry.id,
+ path: entry.route,
+ asyncComponent: component
+ }));
+ }))));
+};
+
+function theme(themeConfig, transform = c => c) {
+ return WrappedComponent => {
+ const Theme = React.memo(props => {
+ const {
+ linkComponent
+ } = props;
+ const {
+ db,
+ children,
+ wrapper: Wrapper = React.Fragment
+ } = props;
+ const initial = Object.assign({}, db, {
+ themeConfig,
+ transform,
+ linkComponent
+ });
+ return React.createElement(__chunk_1.doczState.Provider, {
+ initial: initial
+ }, React.createElement(Wrapper, null, React.createElement(WrappedComponent, null, children)));
+ });
+ Theme.displayName = WrappedComponent.displayName || 'DoczTheme';
+ return Theme;
+ };
+}
+
+exports.ComponentsProvider = __chunk_1.ComponentsProvider;
+exports.doczState = __chunk_1.doczState;
+exports.useComponents = __chunk_1.useComponents;
+exports.useConfig = __chunk_1.useConfig;
+exports.useDataServer = __chunk_1.useDataServer;
+exports.useDocs = __chunk_1.useDocs;
+exports.useMenus = __chunk_1.useMenus;
+exports.usePrevious = __chunk_1.usePrevious;
+exports.useWindowSize = __chunk_1.useWindowSize;
+exports.AsyncRoute = AsyncRoute;
+exports.Link = Link;
+exports.Playground = Playground;
+exports.Props = Props;
+exports.Routes = Routes;
+exports.loadRoute = loadRoute;
+exports.theme = theme;
diff --git a/docs/docz-lib/docz/dist/state.d.ts b/docs/docz-lib/docz/dist/state.d.ts
new file mode 100644
index 0000000..a0a9a9e
--- /dev/null
+++ b/docs/docz-lib/docz/dist/state.d.ts
@@ -0,0 +1,59 @@
+import { ComponentType } from 'react';
+export interface Heading {
+ depth: number;
+ slug: string;
+ value: string;
+}
+export interface Entry {
+ id: string;
+ filepath: string;
+ slug: string;
+ route: string;
+ name: string;
+ order: number;
+ menu: string | null;
+ headings: Heading[];
+ [key: string]: any;
+}
+export interface MenuItem {
+ id: string;
+ name: string;
+ route?: string;
+ href?: string;
+ menu?: MenuItem[];
+ order?: number;
+ parent?: string;
+}
+export declare type ThemeConfig = Record<string, any>;
+export interface Config {
+ title: string;
+ description: string;
+ themeConfig: ThemeConfig;
+ menu: MenuItem[];
+ version: string | null;
+ repository: string | null;
+ native: boolean;
+ separator: string;
+ codeSandbox: boolean;
+ base?: string;
+}
+export declare type Entries = {
+ key: string;
+ value: Entry;
+}[];
+export declare type Props = {
+ key: string;
+ value: any;
+}[];
+export declare type TransformFn = (config: ThemeConfig) => ThemeConfig;
+export interface Database {
+ config: Config;
+ props?: Props;
+ entries?: Entries;
+}
+export interface DoczState extends Database {
+ linkComponent: ComponentType<any>;
+ themeConfig?: ThemeConfig;
+ transform?: TransformFn;
+}
+export declare const doczState: import("./utils/createState").State<DoczState>;
diff --git a/docs/docz-lib/docz/dist/theme.d.ts b/docs/docz-lib/docz/dist/theme.d.ts
new file mode 100644
index 0000000..1dab68f
--- /dev/null
+++ b/docs/docz-lib/docz/dist/theme.d.ts
@@ -0,0 +1,10 @@
+import { ComponentType as CT } from 'react';
+import { Database, ThemeConfig, TransformFn } from './state';
+export interface ThemeProps {
+ db: Database;
+ wrapper?: CT;
+ linkComponent?: CT;
+ children(WrappedComponent: CT): JSX.Element;
+}
+export declare type ThemeReturn = (WrappedComponent: CT) => CT<ThemeProps>;
+export declare function theme(themeConfig: ThemeConfig, transform?: TransformFn): ThemeReturn;
diff --git a/docs/docz-lib/docz/dist/utils/createState.d.ts b/docs/docz-lib/docz/dist/utils/createState.d.ts
new file mode 100644
index 0000000..cad3c8e
--- /dev/null
+++ b/docs/docz-lib/docz/dist/utils/createState.d.ts
@@ -0,0 +1,13 @@
+import * as React from 'react';
+export interface ProviderProps<T> {
+ initial?: T;
+}
+export declare type PrevState<T> = (prevState: T) => T;
+export declare type GetFn<T> = (state: T) => React.ReactNode;
+export declare type Dispatch<T> = T | PrevState<T>;
+export interface State<T> {
+ context: React.Context<T>;
+ set: (param: Dispatch<T>) => void;
+ Provider: React.ComponentType<ProviderProps<T>>;
+}
+export declare function create<T = any>(initial: T): State<T>;
diff --git a/docs/docz-lib/docz/dist/utils/helpers.d.ts b/docs/docz-lib/docz/dist/utils/helpers.d.ts
new file mode 100644
index 0000000..087b6eb
--- /dev/null
+++ b/docs/docz-lib/docz/dist/utils/helpers.d.ts
@@ -0,0 +1,3 @@
+export declare const isFn: (value: any) => boolean;
+export declare function flatArrFromObject<T>(arr: T[], prop: string): string[];
+export declare function compare<T>(a: T, b: T, reverse?: boolean): number;
diff --git a/docs/docz-lib/docz/dist/utils/humanize-prop.d.ts b/docs/docz-lib/docz/dist/utils/humanize-prop.d.ts
new file mode 100644
index 0000000..f9d1124
--- /dev/null
+++ b/docs/docz-lib/docz/dist/utils/humanize-prop.d.ts
@@ -0,0 +1,2 @@
+import { PropType, FlowType } from '../components/Props';
+export declare const humanize: (type: PropType | FlowType) => any;
diff --git a/docs/doczrc.js b/docs/doczrc.js
new file mode 100644
index 0000000..be24d36
--- /dev/null
+++ b/docs/doczrc.js
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import menu from "./docz-lib/config/menu";
+import versions from './docz-lib/config/versions';
+
+module.exports = {
+ title: "Apache Atlas",
+ files: "**/*.{md,mdx}",
+ base: "/",
+ baseUrl:"./public",
+ src: "./src",
+ public: "./src/resources",
+ menu: menu,
+ atlasVersions: versions,
+ theme: "theme/",
+ modifyBundlerConfig: config => {
+ config.module.rules.push(
+ {
+ test: /\.(js)$/,
+ exclude: /node_modules/,
+ use: {
+ loader: "babel-loader",
+ query: {
+ presets: ["@babel/react"],
+ plugins: [
+ "@babel/plugin-proposal-class-properties",
+ "@babel/plugin-syntax-dynamic-import"
+ ]
+ }
+ }
+ }
+ );
+ return config;
+ }
+};
diff --git a/docs/package-lock.json b/docs/package-lock.json
new file mode 100644
index 0000000..ed2c499
--- /dev/null
+++ b/docs/package-lock.json
@@ -0,0 +1,11891 @@
+{
+ "name": "doc",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/cli": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.4.4.tgz",
+ "integrity": "sha512-XGr5YjQSjgTa6OzQZY57FAJsdeVSAKR/u/KA5exWIz66IKtv/zXtHy+fIZcMry/EgYegwuHE7vzGnrFhjdIAsQ==",
+ "requires": {
+ "chokidar": "^2.0.4",
+ "commander": "^2.8.1",
+ "convert-source-map": "^1.1.0",
+ "fs-readdir-recursive": "^1.1.0",
+ "glob": "^7.0.0",
+ "lodash": "^4.17.11",
+ "mkdirp": "^0.5.1",
+ "output-file-sync": "^2.0.0",
+ "slash": "^2.0.0",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
+ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/core": {
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz",
+ "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==",
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/generator": "^7.4.4",
+ "@babel/helpers": "^7.4.4",
+ "@babel/parser": "^7.4.5",
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.4.5",
+ "@babel/types": "^7.4.4",
+ "convert-source-map": "^1.1.0",
+ "debug": "^4.1.0",
+ "json5": "^2.1.0",
+ "lodash": "^4.17.11",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "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=="
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz",
+ "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==",
+ "requires": {
+ "@babel/types": "^7.4.4",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.11",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz",
+ "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz",
+ "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==",
+ "requires": {
+ "@babel/helper-explode-assignable-expression": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-builder-react-jsx": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz",
+ "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==",
+ "requires": {
+ "@babel/types": "^7.3.0",
+ "esutils": "^2.0.0"
+ }
+ },
+ "@babel/helper-call-delegate": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz",
+ "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==",
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.4.4",
+ "@babel/traverse": "^7.4.4",
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.5.tgz",
+ "integrity": "sha512-ZsxkyYiRA7Bg+ZTRpPvB6AbOFKTFFK4LrvTet8lInm0V468MWCaSYJE+I7v2z2r8KNLtYiV+K5kTCnR7dvyZjg==",
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-member-expression-to-functions": "^7.5.5",
+ "@babel/helper-optimise-call-expression": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.5.5",
+ "@babel/helper-split-export-declaration": "^7.4.4"
+ }
+ },
+ "@babel/helper-define-map": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz",
+ "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==",
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/types": "^7.5.5",
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
+ "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ }
+ }
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz",
+ "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
+ "requires": {
+ "@babel/traverse": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
+ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.0.0",
+ "@babel/template": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
+ "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz",
+ "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==",
+ "requires": {
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz",
+ "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==",
+ "requires": {
+ "@babel/types": "^7.5.5"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
+ "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ }
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz",
+ "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz",
+ "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-simple-access": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/template": "^7.4.4",
+ "@babel/types": "^7.5.5",
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
+ "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ }
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz",
+ "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
+ "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA=="
+ },
+ "@babel/helper-regex": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz",
+ "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==",
+ "requires": {
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ }
+ }
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz",
+ "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-wrap-function": "^7.1.0",
+ "@babel/template": "^7.1.0",
+ "@babel/traverse": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz",
+ "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==",
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.5.5",
+ "@babel/helper-optimise-call-expression": "^7.0.0",
+ "@babel/traverse": "^7.5.5",
+ "@babel/types": "^7.5.5"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz",
+ "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==",
+ "requires": {
+ "@babel/types": "^7.5.5",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz",
+ "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g=="
+ },
+ "@babel/traverse": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz",
+ "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==",
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.5.5",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.5.5",
+ "@babel/types": "^7.5.5",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
+ "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz",
+ "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==",
+ "requires": {
+ "@babel/template": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
+ "requires": {
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz",
+ "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==",
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/template": "^7.1.0",
+ "@babel/traverse": "^7.1.0",
+ "@babel/types": "^7.2.0"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz",
+ "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==",
+ "requires": {
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.4.4",
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
+ "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz",
+ "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew=="
+ },
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz",
+ "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-remap-async-to-generator": "^7.1.0",
+ "@babel/plugin-syntax-async-generators": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-class-properties": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz",
+ "integrity": "sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A==",
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.5.5",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-proposal-decorators": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz",
+ "integrity": "sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw==",
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.4.4",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-decorators": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-dynamic-import": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz",
+ "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-json-strings": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
+ "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-json-strings": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz",
+ "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz",
+ "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.5.4"
+ }
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz",
+ "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-decorators": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz",
+ "integrity": "sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
+ "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-flow": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz",
+ "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-json-strings": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
+ "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz",
+ "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
+ "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz",
+ "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
+ "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz",
+ "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-remap-async-to-generator": "^7.1.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz",
+ "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz",
+ "integrity": "sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "lodash": "^4.17.13"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ }
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz",
+ "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-define-map": "^7.5.5",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-optimise-call-expression": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.5.5",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz",
+ "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz",
+ "integrity": "sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz",
+ "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.5.4"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz",
+ "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz",
+ "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==",
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-flow-strip-types": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz",
+ "integrity": "sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz",
+ "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz",
+ "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==",
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz",
+ "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz",
+ "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz",
+ "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==",
+ "requires": {
+ "@babel/helper-module-transforms": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz",
+ "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==",
+ "requires": {
+ "@babel/helper-module-transforms": "^7.4.4",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-simple-access": "^7.1.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz",
+ "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==",
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.4.4",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz",
+ "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==",
+ "requires": {
+ "@babel/helper-module-transforms": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz",
+ "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==",
+ "requires": {
+ "regexp-tree": "^0.1.6"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz",
+ "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz",
+ "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.5.5"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz",
+ "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==",
+ "requires": {
+ "@babel/helper-call-delegate": "^7.4.4",
+ "@babel/helper-get-function-arity": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz",
+ "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-constant-elements": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.5.0.tgz",
+ "integrity": "sha512-c5Ba8cpybZFp1Izkf2sWGuNjOxoQ32tFgBvvYvwGhi4+9f6vGiSK9Gex4uVuO/Va6YJFu41aAh1MzMjUWkp0IQ==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-display-name": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz",
+ "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz",
+ "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==",
+ "requires": {
+ "@babel/helper-builder-react-jsx": "^7.3.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-self": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz",
+ "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-source": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz",
+ "integrity": "sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz",
+ "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==",
+ "requires": {
+ "regenerator-transform": "^0.14.0"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz",
+ "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-runtime": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.5.5.tgz",
+ "integrity": "sha512-6Xmeidsun5rkwnGfMOp6/z9nSzWpHFNVr2Jx7kwoq4mVatQfQx5S56drBgEHF+XQbKOdIaOiMIINvp/kAwMN+w==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "resolve": "^1.8.1",
+ "semver": "^5.5.1"
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
+ "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz",
+ "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz",
+ "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz",
+ "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz",
+ "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-typescript": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.5.5.tgz",
+ "integrity": "sha512-pehKf4m640myZu5B2ZviLaiBlxMCjSZ1qTEO459AXKX5GnPueyulJeCqZFs1nz/Ya2dDzXQ1NxZ/kKNWyD4h6w==",
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.5.5",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-typescript": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz",
+ "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.5.4"
+ }
+ },
+ "@babel/polyfill": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz",
+ "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==",
+ "requires": {
+ "core-js": "^2.6.5",
+ "regenerator-runtime": "^0.13.2"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
+ "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A=="
+ }
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.5.tgz",
+ "integrity": "sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
+ "@babel/plugin-proposal-dynamic-import": "^7.5.0",
+ "@babel/plugin-proposal-json-strings": "^7.2.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.5.5",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+ "@babel/plugin-syntax-async-generators": "^7.2.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.2.0",
+ "@babel/plugin-syntax-json-strings": "^7.2.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
+ "@babel/plugin-transform-arrow-functions": "^7.2.0",
+ "@babel/plugin-transform-async-to-generator": "^7.5.0",
+ "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
+ "@babel/plugin-transform-block-scoping": "^7.5.5",
+ "@babel/plugin-transform-classes": "^7.5.5",
+ "@babel/plugin-transform-computed-properties": "^7.2.0",
+ "@babel/plugin-transform-destructuring": "^7.5.0",
+ "@babel/plugin-transform-dotall-regex": "^7.4.4",
+ "@babel/plugin-transform-duplicate-keys": "^7.5.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
+ "@babel/plugin-transform-for-of": "^7.4.4",
+ "@babel/plugin-transform-function-name": "^7.4.4",
+ "@babel/plugin-transform-literals": "^7.2.0",
+ "@babel/plugin-transform-member-expression-literals": "^7.2.0",
+ "@babel/plugin-transform-modules-amd": "^7.5.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.5.0",
+ "@babel/plugin-transform-modules-systemjs": "^7.5.0",
+ "@babel/plugin-transform-modules-umd": "^7.2.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5",
+ "@babel/plugin-transform-new-target": "^7.4.4",
+ "@babel/plugin-transform-object-super": "^7.5.5",
+ "@babel/plugin-transform-parameters": "^7.4.4",
+ "@babel/plugin-transform-property-literals": "^7.2.0",
+ "@babel/plugin-transform-regenerator": "^7.4.5",
+ "@babel/plugin-transform-reserved-words": "^7.2.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.2.0",
+ "@babel/plugin-transform-spread": "^7.2.0",
+ "@babel/plugin-transform-sticky-regex": "^7.2.0",
+ "@babel/plugin-transform-template-literals": "^7.4.4",
+ "@babel/plugin-transform-typeof-symbol": "^7.2.0",
+ "@babel/plugin-transform-unicode-regex": "^7.4.4",
+ "@babel/types": "^7.5.5",
+ "browserslist": "^4.6.0",
+ "core-js-compat": "^3.1.1",
+ "invariant": "^2.2.2",
+ "js-levenshtein": "^1.1.3",
+ "semver": "^5.5.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
+ "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ }
+ }
+ },
+ "@babel/preset-react": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz",
+ "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^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/preset-typescript": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz",
+ "integrity": "sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.3.2"
+ }
+ },
+ "@babel/register": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.5.5.tgz",
+ "integrity": "sha512-pdd5nNR+g2qDkXZlW1yRCWFlNrAn2PPdnZUB72zjX4l1Vv4fMRRLwyf+n/idFCLI1UgVGboUU8oVziwTBiyNKQ==",
+ "requires": {
+ "core-js": "^3.0.0",
+ "find-cache-dir": "^2.0.0",
+ "lodash": "^4.17.13",
+ "mkdirp": "^0.5.1",
+ "pirates": "^4.0.0",
+ "source-map-support": "^0.5.9"
+ },
+ "dependencies": {
+ "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=="
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ }
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz",
+ "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==",
+ "requires": {
+ "regenerator-runtime": "^0.13.2"
+ }
+ },
+ "@babel/template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
+ "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz",
+ "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==",
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/generator": "^7.4.4",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.4.5",
+ "@babel/types": "^7.4.4",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.11"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "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=="
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
+ "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.11",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@emotion/cache": {
+ "version": "10.0.14",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.14.tgz",
+ "integrity": "sha512-HNGEwWnPlNyy/WPXBXzbjzkzeZFV657Z99/xq2xs5yinJHbMfi3ioCvBJ6Y8Zc8DQzO9F5jDmVXJB41Ytx3QMw==",
+ "dev": true,
+ "requires": {
+ "@emotion/sheet": "0.9.3",
+ "@emotion/stylis": "0.8.4",
+ "@emotion/utils": "0.11.2",
+ "@emotion/weak-memoize": "0.2.3"
+ }
+ },
+ "@emotion/core": {
+ "version": "10.0.14",
+ "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.14.tgz",
+ "integrity": "sha512-G9FbyxLm3lSnPfLDcag8fcOQBKui/ueXmWOhV+LuEQg9HrqExuWnWaO6gm6S5rNe+AMcqLXVljf8pYgAdFLNSg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.4.3",
+ "@emotion/cache": "^10.0.14",
+ "@emotion/css": "^10.0.14",
+ "@emotion/serialize": "^0.11.8",
+ "@emotion/sheet": "0.9.3",
+ "@emotion/utils": "0.11.2"
+ }
+ },
+ "@emotion/css": {
+ "version": "10.0.14",
+ "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.14.tgz",
+ "integrity": "sha512-MozgPkBEWvorcdpqHZE5x1D/PLEHUitALQCQYt2wayf4UNhpgQs2tN0UwHYS4FMy5ROBH+0ALyCFVYJ/ywmwlg==",
+ "dev": true,
+ "requires": {
+ "@emotion/serialize": "^0.11.8",
+ "@emotion/utils": "0.11.2",
+ "babel-plugin-emotion": "^10.0.14"
+ }
+ },
+ "@emotion/hash": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.2.tgz",
+ "integrity": "sha512-RMtr1i6E8MXaBWwhXL3yeOU8JXRnz8GNxHvaUfVvwxokvayUY0zoBeWbKw1S9XkufmGEEdQd228pSZXFkAln8Q==",
+ "dev": true
+ },
+ "@emotion/is-prop-valid": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz",
+ "integrity": "sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA==",
+ "requires": {
+ "@emotion/memoize": "0.7.1"
+ }
+ },
+ "@emotion/memoize": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.1.tgz",
+ "integrity": "sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg=="
+ },
+ "@emotion/serialize": {
+ "version": "0.11.8",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.8.tgz",
+ "integrity": "sha512-Qb6Us2Yk1ZW8SOYH6s5z7qzXXb2iHwVeqc6FjXtac0vvxC416ki0eTtHNw4Q5smoyxdyZh3519NKGrQvvvrZ/Q==",
+ "dev": true,
+ "requires": {
+ "@emotion/hash": "0.7.2",
+ "@emotion/memoize": "0.7.2",
+ "@emotion/unitless": "0.7.4",
+ "@emotion/utils": "0.11.2",
+ "csstype": "^2.5.7"
+ },
+ "dependencies": {
+ "@emotion/memoize": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.2.tgz",
+ "integrity": "sha512-hnHhwQzvPCW1QjBWFyBtsETdllOM92BfrKWbUTmh9aeOlcVOiXvlPsK4104xH8NsaKfg86PTFsWkueQeUfMA/w==",
+ "dev": true
+ },
+ "@emotion/unitless": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.4.tgz",
+ "integrity": "sha512-kBa+cDHOR9jpRJ+kcGMsysrls0leukrm68DmFQoMIWQcXdr2cZvyvypWuGYT7U+9kAExUE7+T7r6G3C3A6L8MQ==",
+ "dev": true
+ }
+ }
+ },
+ "@emotion/sheet": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.3.tgz",
+ "integrity": "sha512-c3Q6V7Df7jfwSq5AzQWbXHa5soeE4F5cbqi40xn0CzXxWW9/6Mxq48WJEtqfWzbZtW9odZdnRAkwCQwN12ob4A==",
+ "dev": true
+ },
+ "@emotion/styled": {
+ "version": "10.0.14",
+ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.14.tgz",
+ "integrity": "sha512-Ae8d5N/FmjvZKXjqWcjfhZhjCdkvxZSqD95Q72BYDNQnsOKLHIA4vWlMolLXDNkw1dIxV3l2pp82Z87HXj6eYQ==",
+ "dev": true,
+ "requires": {
+ "@emotion/styled-base": "^10.0.14",
+ "babel-plugin-emotion": "^10.0.14"
+ }
+ },
+ "@emotion/styled-base": {
+ "version": "10.0.14",
+ "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.14.tgz",
+ "integrity": "sha512-1nC5iO/Rk0DY47M5wXCyWpbo/woiwXWfVbNKDM3QRi7CKq8CwC++PQ5HgiYflFrAt1vjzIVZqnzrIn3idUoQgg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.4.3",
+ "@emotion/is-prop-valid": "0.8.2",
+ "@emotion/serialize": "^0.11.8",
+ "@emotion/utils": "0.11.2"
+ },
+ "dependencies": {
+ "@emotion/is-prop-valid": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.2.tgz",
+ "integrity": "sha512-ZQIMAA2kLUWiUeMZNJDTeCwYRx1l8SQL0kHktze4COT22occKpDML1GDUXP5/sxhOMrZO8vZw773ni4H5Snrsg==",
+ "dev": true,
+ "requires": {
+ "@emotion/memoize": "0.7.2"
+ }
+ },
+ "@emotion/memoize": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.2.tgz",
+ "integrity": "sha512-hnHhwQzvPCW1QjBWFyBtsETdllOM92BfrKWbUTmh9aeOlcVOiXvlPsK4104xH8NsaKfg86PTFsWkueQeUfMA/w==",
+ "dev": true
+ }
+ }
+ },
+ "@emotion/stylis": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.4.tgz",
+ "integrity": "sha512-TLmkCVm8f8gH0oLv+HWKiu7e8xmBIaokhxcEKPh1m8pXiV/akCiq50FvYgOwY42rjejck8nsdQxZlXZ7pmyBUQ==",
+ "dev": true
+ },
+ "@emotion/unitless": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.3.tgz",
+ "integrity": "sha512-4zAPlpDEh2VwXswwr/t8xGNDGg8RQiPxtxZ3qQEXyQsBV39ptTdESCjuBvGze1nLMVrxmTIKmnO/nAV8Tqjjzg=="
+ },
+ "@emotion/utils": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.2.tgz",
+ "integrity": "sha512-UHX2XklLl3sIaP6oiMmlVzT0J+2ATTVpf0dHQVyPJHTkOITvXfaSqnRk6mdDhV9pR8T/tHc3cex78IKXssmzrA==",
+ "dev": true
+ },
+ "@emotion/weak-memoize": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.3.tgz",
+ "integrity": "sha512-zVgvPwGK7c1aVdUVc9Qv7SqepOGRDrqCw7KZPSZziWGxSlbII3gmvGLPzLX4d0n0BMbamBacUrN22zOMyFFEkQ==",
+ "dev": true
+ },
+ "@hutson/parse-repository-url": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz",
+ "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q=="
+ },
+ "@loadable/component": {
+ "version": "5.10.2",
+ "resolved": "https://registry.npmjs.org/@loadable/component/-/component-5.10.2.tgz",
+ "integrity": "sha512-pUzGRc/mhGzZ0+xJPQErnS68BQEApFYGwn10iSDqBHdDhOruCASTer1J+rYI4jaJJcegJwnuzh7j/SqMoiCyAQ==",
+ "requires": {
+ "@babel/runtime": "^7.4.4",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
+ "@mdx-js/loader": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-1.3.1.tgz",
+ "integrity": "sha512-wg1uxBZ+7lkfawtznD29Acrh9UJ/sySeaDzgi+Q3zk55A25tPmVxKVjwGXWDC0mrRRJ8cjcoWant3whok+WPDw==",
+ "requires": {
+ "@mdx-js/mdx": "^1.3.1",
+ "@mdx-js/react": "^1.3.1",
+ "loader-utils": "1.2.3"
+ }
+ },
+ "@mdx-js/mdx": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.3.1.tgz",
+ "integrity": "sha512-mLP4iN6OhDnA9IqAiKAFb/wSnmwU1Mb9gy0szzV0QbDHtlinmzQmK2YyEv9Stf8NXvWbsNVTj9p3hy01nZY9yA==",
+ "requires": {
+ "@babel/core": "7.5.5",
+ "@babel/plugin-syntax-jsx": "7.2.0",
+ "@babel/plugin-syntax-object-rest-spread": "7.2.0",
+ "@mdx-js/util": "^1.3.1",
+ "babel-plugin-apply-mdx-type-prop": "^1.3.1",
+ "babel-plugin-extract-import-names": "^1.3.1",
+ "camelcase-css": "2.0.1",
+ "detab": "2.0.2",
+ "hast-util-raw": "5.0.1",
+ "lodash.uniq": "4.5.0",
+ "mdast-util-to-hast": "6.0.1",
+ "remark-mdx": "^1.3.1",
+ "remark-parse": "7.0.1",
+ "remark-squeeze-paragraphs": "3.0.4",
+ "style-to-object": "0.2.3",
+ "unified": "8.3.2",
+ "unist-builder": "1.0.4",
+ "unist-util-visit": "2.0.0"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/core": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz",
+ "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==",
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.5.5",
+ "@babel/helpers": "^7.5.5",
+ "@babel/parser": "^7.5.5",
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.5.5",
+ "@babel/types": "^7.5.5",
+ "convert-source-map": "^1.1.0",
+ "debug": "^4.1.0",
+ "json5": "^2.1.0",
+ "lodash": "^4.17.13",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz",
+ "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==",
+ "requires": {
+ "@babel/types": "^7.5.5",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz",
+ "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==",
+ "requires": {
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.5.5",
+ "@babel/types": "^7.5.5"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz",
+ "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g=="
+ },
+ "@babel/traverse": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz",
+ "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==",
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.5.5",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.5.5",
+ "@babel/types": "^7.5.5",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
+ "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "remark-parse": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-7.0.1.tgz",
+ "integrity": "sha512-WOZLa545jYXtSy+txza6ACudKWByQac4S2DmGk+tAGO/3XnVTOxwyCIxB7nTcLlk8Aayhcuf3cV1WV6U6L7/DQ==",
+ "requires": {
+ "collapse-white-space": "^1.0.2",
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-whitespace-character": "^1.0.0",
+ "is-word-character": "^1.0.0",
+ "markdown-escapes": "^1.0.0",
+ "parse-entities": "^1.1.0",
+ "repeat-string": "^1.5.4",
+ "state-toggle": "^1.0.0",
+ "trim": "0.0.1",
+ "trim-trailing-lines": "^1.0.0",
+ "unherit": "^1.0.4",
+ "unist-util-remove-position": "^1.0.0",
+ "vfile-location": "^2.0.0",
+ "xtend": "^4.0.1"
+ }
+ }
+ }
+ },
+ "@mdx-js/react": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.3.1.tgz",
+ "integrity": "sha512-HwpA0r4XiydiUXceAtzguLs3FH8Jbfpgoff3L+pejemiqyxol/FYMxwMu0WcBxti5eJYBqZEwL+C5od6OsS7Gw=="
+ },
+ "@mdx-js/util": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.3.1.tgz",
+ "integrity": "sha512-YOlSyl/EfTRoO7Twzad6RYJlHcyW1WZo8gDRO+4uFTy6+AHMaqSCMAPJIJkmKwgi+IPojQUGuMzKJ47qxQ9BbA=="
+ },
+ "@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==",
+ "requires": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.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=="
+ },
+ "@reach/router": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@reach/router/-/router-1.2.1.tgz",
+ "integrity": "sha512-kTaX08X4g27tzIFQGRukaHmNbtMYDS3LEWIS8+l6OayGIw6Oyo1HIF/JzeuR2FoF9z6oV+x/wJSVSq4v8tcUGQ==",
+ "requires": {
+ "create-react-context": "^0.2.1",
+ "invariant": "^2.2.3",
+ "prop-types": "^15.6.1",
+ "react-lifecycles-compat": "^3.0.4",
+ "warning": "^3.0.0"
+ }
+ },
+ "@sindresorhus/slugify": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-0.9.1.tgz",
+ "integrity": "sha512-b6heYM9dzZD13t2GOiEQTDE0qX+I1GyOotMwKh9VQqzuNiVdPVT8dM43fe9HNb/3ul+Qwd5oKSEDrDIfhq3bnQ==",
+ "requires": {
+ "escape-string-regexp": "^1.0.5",
+ "lodash.deburr": "^4.1.0"
+ }
+ },
+ "@svgr/babel-plugin-add-jsx-attribute": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz",
+ "integrity": "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig=="
+ },
+ "@svgr/babel-plugin-remove-jsx-attribute": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz",
+ "integrity": "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ=="
+ },
+ "@svgr/babel-plugin-remove-jsx-empty-expression": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz",
+ "integrity": "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w=="
+ },
+ "@svgr/babel-plugin-replace-jsx-attribute-value": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz",
+ "integrity": "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w=="
+ },
+ "@svgr/babel-plugin-svg-dynamic-title": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.1.tgz",
+ "integrity": "sha512-p6z6JJroP989jHWcuraeWpzdejehTmLUpyC9smhTBWyPN0VVGe2phbYxpPTV7Vh8XzmFrcG55idrnfWn/2oQEw=="
+ },
+ "@svgr/babel-plugin-svg-em-dimensions": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz",
+ "integrity": "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w=="
+ },
+ "@svgr/babel-plugin-transform-react-native-svg": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz",
+ "integrity": "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw=="
+ },
+ "@svgr/babel-plugin-transform-svg-component": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz",
+ "integrity": "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw=="
+ },
+ "@svgr/babel-preset": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.1.tgz",
+ "integrity": "sha512-rPFKLmyhlh6oeBv3j2vEAj2nd2QbWqpoJLKzBLjwQVt+d9aeXajVaPNEqrES2spjXKR4OxfgSs7U0NtmAEkr0Q==",
+ "requires": {
+ "@svgr/babel-plugin-add-jsx-attribute": "^4.2.0",
+ "@svgr/babel-plugin-remove-jsx-attribute": "^4.2.0",
+ "@svgr/babel-plugin-remove-jsx-empty-expression": "^4.2.0",
+ "@svgr/babel-plugin-replace-jsx-attribute-value": "^4.2.0",
+ "@svgr/babel-plugin-svg-dynamic-title": "^4.3.1",
+ "@svgr/babel-plugin-svg-em-dimensions": "^4.2.0",
+ "@svgr/babel-plugin-transform-react-native-svg": "^4.2.0",
+ "@svgr/babel-plugin-transform-svg-component": "^4.2.0"
+ }
+ },
+ "@svgr/core": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.2.tgz",
+ "integrity": "sha512-N+tP5CLFd1hP9RpO83QJPZY3NL8AtrdqNbuhRgBkjE/49RnMrrRsFm1wY8pueUfAGvzn6tSXUq29o6ah8RuR5w==",
+ "requires": {
+ "@svgr/plugin-jsx": "^4.3.2",
+ "camelcase": "^5.3.1",
+ "cosmiconfig": "^5.2.1"
+ }
+ },
+ "@svgr/hast-util-to-babel-ast": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz",
+ "integrity": "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==",
+ "requires": {
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@svgr/plugin-jsx": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.2.tgz",
+ "integrity": "sha512-+1GW32RvmNmCsOkMoclA/TppNjHPLMnNZG3/Ecscxawp051XJ2MkO09Hn11VcotdC2EPrDfT8pELGRo+kbZ1Eg==",
+ "requires": {
+ "@babel/core": "^7.4.5",
+ "@svgr/babel-preset": "^4.3.1",
+ "@svgr/hast-util-to-babel-ast": "^4.3.2",
+ "svg-parser": "^2.0.0"
+ }
+ },
+ "@svgr/plugin-svgo": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz",
+ "integrity": "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==",
+ "requires": {
+ "cosmiconfig": "^5.2.1",
+ "merge-deep": "^3.0.2",
+ "svgo": "^1.2.2"
+ }
+ },
+ "@svgr/webpack": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.2.tgz",
+ "integrity": "sha512-F3VE5OvyOWBEd2bF7BdtFRyI6E9it3mN7teDw0JQTlVtc4HZEYiiLSl+Uf9Uub6IYHVGc+qIrxxDyeedkQru2w==",
+ "requires": {
+ "@babel/core": "^7.4.5",
+ "@babel/plugin-transform-react-constant-elements": "^7.0.0",
+ "@babel/preset-env": "^7.4.5",
+ "@babel/preset-react": "^7.0.0",
+ "@svgr/core": "^4.3.2",
+ "@svgr/plugin-jsx": "^4.3.2",
+ "@svgr/plugin-svgo": "^4.3.1",
+ "loader-utils": "^1.2.3"
+ }
+ },
+ "@types/events": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
+ "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g=="
+ },
+ "@types/glob": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
+ "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
+ "requires": {
+ "@types/events": "*",
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/minimatch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
+ },
+ "@types/node": {
+ "version": "12.7.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.2.tgz",
+ "integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg=="
+ },
+ "@types/q": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz",
+ "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw=="
+ },
+ "@types/unist": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz",
+ "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ=="
+ },
+ "@types/vfile": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/vfile/-/vfile-3.0.2.tgz",
+ "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==",
+ "requires": {
+ "@types/node": "*",
+ "@types/unist": "*",
+ "@types/vfile-message": "*"
+ }
+ },
+ "@types/vfile-message": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/vfile-message/-/vfile-message-1.0.1.tgz",
+ "integrity": "sha512-mlGER3Aqmq7bqR1tTTIVHq8KSAFFRyGbrxuM8C/H82g6k7r2fS+IMEkIu3D7JHzG10NvPdR8DNx0jr0pwpp4dA==",
+ "requires": {
+ "@types/node": "*",
+ "@types/unist": "*"
+ }
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
+ "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
+ "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ=="
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
+ "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA=="
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
+ "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q=="
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
+ "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
+ "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow=="
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
+ "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "mamacro": "^0.0.3"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
+ "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ=="
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
+ "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
+ "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
+ "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
+ "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw=="
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
+ "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/helper-wasm-section": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-opt": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
+ "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
+ "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
+ "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
+ "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/floating-point-hex-parser": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-code-frame": "1.8.5",
+ "@webassemblyjs/helper-fsm": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
+ "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webpack-contrib/schema-utils": {
+ "version": "1.0.0-beta.0",
+ "resolved": "https://registry.npmjs.org/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz",
+ "integrity": "sha512-LonryJP+FxQQHsjGBi6W786TQB1Oym+agTpY0c+Kj8alnIw+DLUJb6SI8Y1GHGhLCH1yPRrucjObUmxNICQ1pg==",
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-keywords": "^3.1.0",
+ "chalk": "^2.3.2",
+ "strip-ansi": "^4.0.0",
+ "text-table": "^0.2.0",
+ "webpack-log": "^1.1.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "webpack-log": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz",
+ "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==",
+ "requires": {
+ "chalk": "^2.1.0",
+ "log-symbols": "^2.1.0",
+ "loglevelnext": "^1.0.1",
+ "uuid": "^3.1.0"
+ }
+ }
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
+ },
+ "@zeit/schemas": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz",
+ "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg=="
+ },
+ "accepts": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "requires": {
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
+ }
+ },
+ "acorn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz",
+ "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg=="
+ },
+ "acorn-walk": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
+ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA=="
+ },
+ "address": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.1.0.tgz",
+ "integrity": "sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ=="
+ },
+ "ajv": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ=="
+ },
+ "ajv-keywords": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
+ "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ=="
+ },
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "requires": {
+ "string-width": "^2.0.0"
+ }
+ },
+ "ansi-colors": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA=="
+ },
+ "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=="
+ },
+ "ansi-html": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4="
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "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==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ },
+ "arch": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz",
+ "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg=="
+ },
+ "arg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz",
+ "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w=="
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "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=="
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw="
+ },
+ "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="
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+ },
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.7.0"
+ }
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI="
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys="
+ },
+ "array-sort": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz",
+ "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==",
+ "requires": {
+ "default-compare": "^1.0.0",
+ "get-value": "^2.0.6",
+ "kind-of": "^5.0.2"
+ },
+ "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=="
+ }
+ }
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
+ },
+ "art-template": {
+ "version": "4.13.2",
+ "resolved": "https://registry.npmjs.org/art-template/-/art-template-4.13.2.tgz",
+ "integrity": "sha512-04ws5k+ndA5DghfheY4c8F1304XJKeTcaXqZCLpxFkNMSkaR3ChW1pX2i9d3sEEOZuLy7de8lFriRaik1jEeOQ==",
+ "requires": {
+ "acorn": "^5.0.3",
+ "escodegen": "^1.8.1",
+ "estraverse": "^4.2.0",
+ "html-minifier": "^3.4.3",
+ "is-keyword-js": "^1.0.3",
+ "js-tokens": "^3.0.1",
+ "merge-source-map": "^1.0.3",
+ "source-map": "^0.5.6"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
+ },
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+ },
+ "html-minifier": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
+ "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
+ "requires": {
+ "camel-case": "3.0.x",
+ "clean-css": "4.2.x",
+ "commander": "2.17.x",
+ "he": "1.2.x",
+ "param-case": "2.1.x",
+ "relateurl": "0.2.x",
+ "uglify-js": "3.4.x"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
+ }
+ }
+ },
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+ "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="
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
+ },
+ "ast-types": {
+ "version": "0.12.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.4.tgz",
+ "integrity": "sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw=="
+ },
+ "async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz",
+ "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==",
+ "requires": {
+ "lodash": "^4.17.11"
+ }
+ },
+ "async-each": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ=="
+ },
+ "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=="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
+ },
+ "axios": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
+ "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
+ "dev": true,
+ "requires": {
+ "follow-redirects": "1.5.10",
+ "is-buffer": "^2.0.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"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+ "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+ "dev": true,
+ "requires": {
+ "debug": "=3.1.0"
+ }
+ },
+ "is-buffer": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
+ "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
+ "dev": true
+ }
+ }
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "babel-core": {
+ "version": "7.0.0-bridge.0",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
+ "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg=="
+ },
+ "babel-loader": {
+ "version": "8.0.6",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz",
+ "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==",
+ "requires": {
+ "find-cache-dir": "^2.0.0",
+ "loader-utils": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "pify": "^4.0.1"
+ }
+ },
+ "babel-plugin-apply-mdx-type-prop": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.3.1.tgz",
+ "integrity": "sha512-tyh0iGhU4upNy4ruxOOOnqTO9Ci43gcXrH0vtcVmOMvGjyfhDHzug8ULoZZJqSTl5V77qUskafQsYHF3f1UV9g==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0",
+ "@mdx-js/util": "^1.3.1"
+ }
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+ "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "babel-plugin-emotion": {
+ "version": "10.0.14",
+ "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.14.tgz",
+ "integrity": "sha512-T7hdxJ4xXkKW3OXcizK0pnUJlBeNj/emjQZPDIZvGOuwl2adIgicQWRNkz6BuwKdDTrqaXQn1vayaL6aL8QW5A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@emotion/hash": "0.7.2",
+ "@emotion/memoize": "0.7.2",
+ "@emotion/serialize": "^0.11.8",
+ "babel-plugin-macros": "^2.0.0",
+ "babel-plugin-syntax-jsx": "^6.18.0",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^1.0.5",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7"
+ },
+ "dependencies": {
+ "@emotion/memoize": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.2.tgz",
+ "integrity": "sha512-hnHhwQzvPCW1QjBWFyBtsETdllOM92BfrKWbUTmh9aeOlcVOiXvlPsK4104xH8NsaKfg86PTFsWkueQeUfMA/w==",
+ "dev": true
+ }
+ }
+ },
+ "babel-plugin-export-metadata": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-export-metadata/-/babel-plugin-export-metadata-1.2.0.tgz",
+ "integrity": "sha512-rOTzhs/rXbuYMm4e8uTgAvTUw8H7QdU8maFy1ClArp/j8cpgzB80/oixQFiT/KAlLB+6ygLxr3befj97k2WppA==",
+ "requires": {
+ "@babel/cli": "^7.4.4",
+ "@babel/core": "^7.4.4",
+ "@babel/preset-env": "^7.4.4",
+ "@babel/template": "^7.4.4",
+ "babel-core": "7.0.0-bridge.0",
+ "lodash": "^4.17.11"
+ }
+ },
+ "babel-plugin-extract-import-names": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.3.1.tgz",
+ "integrity": "sha512-7KqXFwbzj9y6anLoIpMKQsC2J3PsiZMRaSP3qTCP9PY38Bz2cwsJnTIMKvottVQB2evBCYPqjp3VPSZ74jM1Dw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "7.0.0"
+ }
+ },
+ "babel-plugin-lodash": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz",
+ "integrity": "sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0-beta.49",
+ "@babel/types": "^7.0.0-beta.49",
+ "glob": "^7.1.1",
+ "lodash": "^4.17.10",
+ "require-package-name": "^2.0.1"
+ }
+ },
+ "babel-plugin-macros": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.5.1.tgz",
+ "integrity": "sha512-xN3KhAxPzsJ6OQTktCanNpIFnnMsCV+t8OloKxIL72D6+SUZYFn9qfklPgef5HyyDtzYZqqb+fs1S12+gQY82Q==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.4.2",
+ "cosmiconfig": "^5.2.0",
+ "resolve": "^1.10.0"
+ }
+ },
+ "babel-plugin-named-asset-import": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.3.tgz",
+ "integrity": "sha512-1XDRysF4894BUdMChT+2HHbtJYiO7zx5Be7U6bT8dISy7OdyETMGIAQBMPQCsY1YRf0xcubwnKKaDr5bk15JTA=="
+ },
+ "babel-plugin-react-transform": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-react-transform/-/babel-plugin-react-transform-3.0.0.tgz",
+ "integrity": "sha512-4vJGddwPiHAOgshzZdGwYy4zRjjIr5SMY7gkOaCyIASjgpcsyLTlZNuB5rHOFoaTvGlhfo8/g4pobXPyHqm/3w==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.6.1"
+ }
+ },
+ "babel-plugin-styled-components": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.1.tgz",
+ "integrity": "sha512-F6R2TnPGNN6iuXCs0xQ+EsrunwNoWI55J5I8Pkd/+fzzbv1I4gFgTaZepMOVpLobYWU2XaLIm+73L0zD3CnOdQ==",
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-module-imports": "^7.0.0",
+ "babel-plugin-syntax-jsx": "^6.18.0",
+ "lodash": "^4.17.11"
+ }
+ },
+ "babel-plugin-syntax-jsx": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+ "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY="
+ },
+ "babel-plugin-transform-react-remove-prop-types": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
+ "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA=="
+ },
+ "babel-preset-react-app": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.0.1.tgz",
+ "integrity": "sha512-v7MeY+QxdBhM9oU5uOQCIHLsErYkEbbjctXsb10II+KAnttbe0rvprvP785dRxfa9dI4ZbsGXsRU07Qdi5BtOw==",
+ "requires": {
+ "@babel/core": "7.5.5",
+ "@babel/plugin-proposal-class-properties": "7.5.5",
+ "@babel/plugin-proposal-decorators": "7.4.4",
+ "@babel/plugin-proposal-object-rest-spread": "7.5.5",
+ "@babel/plugin-syntax-dynamic-import": "7.2.0",
+ "@babel/plugin-transform-destructuring": "7.5.0",
+ "@babel/plugin-transform-flow-strip-types": "7.4.4",
+ "@babel/plugin-transform-react-display-name": "7.2.0",
+ "@babel/plugin-transform-runtime": "7.5.5",
+ "@babel/preset-env": "7.5.5",
+ "@babel/preset-react": "7.0.0",
+ "@babel/preset-typescript": "7.3.3",
+ "@babel/runtime": "7.5.5",
+ "babel-plugin-dynamic-import-node": "2.3.0",
+ "babel-plugin-macros": "2.6.1",
+ "babel-plugin-transform-react-remove-prop-types": "0.4.24"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/core": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz",
+ "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==",
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.5.5",
+ "@babel/helpers": "^7.5.5",
+ "@babel/parser": "^7.5.5",
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.5.5",
+ "@babel/types": "^7.5.5",
+ "convert-source-map": "^1.1.0",
+ "debug": "^4.1.0",
+ "json5": "^2.1.0",
+ "lodash": "^4.17.13",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz",
+ "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==",
+ "requires": {
+ "@babel/types": "^7.5.5",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.13",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz",
+ "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==",
+ "requires": {
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.5.5",
+ "@babel/types": "^7.5.5"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz",
+ "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g=="
+ },
+ "@babel/runtime": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz",
+ "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==",
+ "requires": {
+ "regenerator-runtime": "^0.13.2"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz",
+ "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==",
+ "requires": {
+ "@babel/code-frame": "^7.5.5",
+ "@babel/generator": "^7.5.5",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.5.5",
+ "@babel/types": "^7.5.5",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.13"
+ }
+ },
+ "@babel/types": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
+ "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "babel-plugin-macros": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.6.1.tgz",
+ "integrity": "sha512-6W2nwiXme6j1n2erPOnmRiWfObUhWH7Qw1LMi9XZy8cj+KtESu3T6asZvtk5bMQQjX8te35o7CFueiSdL/2NmQ==",
+ "requires": {
+ "@babel/runtime": "^7.4.2",
+ "cosmiconfig": "^5.2.0",
+ "resolve": "^1.10.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
+ "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A=="
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ }
+ }
+ },
+ "bail": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz",
+ "integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww=="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "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": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "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",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "requires": {
+ "kind-of": "^6.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==",
+ "requires": {
+ "kind-of": "^6.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==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY="
+ },
+ "bfj": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz",
+ "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==",
+ "requires": {
+ "bluebird": "^3.5.5",
+ "check-types": "^8.0.3",
+ "hoopy": "^0.1.4",
+ "tryer": "^1.0.1"
+ }
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="
+ },
+ "bluebird": {
+ "version": "3.5.5",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
+ "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w=="
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="
+ },
+ "body-parser": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+ "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+ "requires": {
+ "bytes": "3.1.0",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
+ "on-finished": "~2.3.0",
+ "qs": "6.7.0",
+ "raw-body": "2.4.0",
+ "type-is": "~1.6.17"
+ }
+ },
+ "bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+ "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+ "requires": {
+ "array-flatten": "^2.1.0",
+ "deep-equal": "^1.0.1",
+ "dns-equal": "^1.0.0",
+ "dns-txt": "^2.0.2",
+ "multicast-dns": "^6.0.1",
+ "multicast-dns-service-types": "^1.1.0"
+ },
+ "dependencies": {
+ "array-flatten": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
+ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
+ }
+ }
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ },
+ "boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "requires": {
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^1.2.0",
+ "widest-line": "^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="
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "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=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
... 22090 lines suppressed ...