From 53e4dd8c2db048dd0f0ccf6e966b41bf19aa4689 Mon Sep 17 00:00:00 2001 From: Jacob Bolda Date: Thu, 17 Feb 2022 15:20:56 -0600 Subject: [PATCH] remove create-tauri-app (#3493) Co-authored-by: Lucas Nogueira --- .changes/config.json | 42 +- ...dd-empty-description-for-rust-dominator.md | 5 - .changes/cta-ci-compatible.md | 5 - .changes/cta-cli-install.md | 5 - .changes/cta-crash.md | 5 - .changes/cta-react-disable-open-browser.md | 5 - .changes/cta-solid-recipe.md | 5 - .changes/going-rc.md | 1 - .changes/pre.json | 6 - .github/workflows/lint-js.yml | 11 - .github/workflows/test-cta.yml | 99 - .husky/pre-commit | 9 - ARCHITECTURE.md | 2 +- README.md | 18 +- core/tauri/tests/restart/Cargo.lock | 3 +- renovate.json | 68 +- tooling/cli.js/dist/api/cli.js | 760 ++++ tooling/cli.js/dist/api/cli.js.map | 1 + tooling/cli.js/dist/api/dependency-manager.js | 1655 +++++++++ .../cli.js/dist/api/dependency-manager.js.map | 1 + tooling/cli.js/dist/api/tauricon.js | 3106 +++++++++++++++++ tooling/cli.js/dist/api/tauricon.js.map | 1 + .../cli.js/dist/helpers/download-binary.js | 384 ++ .../dist/helpers/download-binary.js.map | 1 + tooling/cli.js/dist/helpers/rust-cli.js | 655 ++++ tooling/cli.js/dist/helpers/rust-cli.js.map | 1 + tooling/cli.js/dist/helpers/spawn.js | 194 + tooling/cli.js/dist/helpers/spawn.js.map | 1 + tooling/create-tauri-app/.eslintrc.js | 55 - tooling/create-tauri-app/.gitignore | 64 - tooling/create-tauri-app/.prettierrc.js | 5 - tooling/create-tauri-app/CHANGELOG.md | 101 - .../create-tauri-app/bin/create-tauri-app.js | 10 - tooling/create-tauri-app/jest.config.js | 14 - tooling/create-tauri-app/package.json | 66 - tooling/create-tauri-app/readme.md | 57 - tooling/create-tauri-app/rollup.config.js | 28 - .../src/dependency-manager.ts | 103 - .../create-tauri-app/src/helpers/empty-dir.ts | 17 - .../src/helpers/package-manager.ts | 14 - .../src/helpers/update-package-json.ts | 21 - .../src/helpers/update-tauri-conf.ts | 28 - tooling/create-tauri-app/src/index.ts | 404 --- tooling/create-tauri-app/src/recipes/cljs.ts | 91 - .../create-tauri-app/src/recipes/dominator.ts | 57 - .../create-tauri-app/src/recipes/ng-cli.ts | 113 - tooling/create-tauri-app/src/recipes/react.ts | 137 - tooling/create-tauri-app/src/recipes/solid.ts | 72 - .../create-tauri-app/src/recipes/svelte.ts | 73 - .../create-tauri-app/src/recipes/vanilla.ts | 52 - tooling/create-tauri-app/src/recipes/vite.ts | 127 - .../create-tauri-app/src/recipes/vue-cli.ts | 60 - tooling/create-tauri-app/src/shell.ts | 40 - .../src/templates/dominator/_.gitignore | 5 - .../src/templates/dominator/_Cargo.toml | 25 - .../src/templates/dominator/_package.json | 16 - .../src/templates/dominator/dist/_index.html | 27 - .../src/templates/dominator/rollup.config.js | 32 - .../src/templates/dominator/src/lib.rs | 52 - .../src/templates/react/react-ts/src/App.css | 54 - .../src/templates/react/react-ts/src/App.tsx | 40 - .../templates/react/react-ts/src/tauri.svg | 1 - .../templates/react/react-ts/src/wordmark.svg | 1 - .../src/templates/react/react/src/App.css | 54 - .../src/templates/react/react/src/App.js | 40 - .../src/templates/react/react/src/tauri.svg | 1 - .../templates/react/react/src/wordmark.svg | 1 - .../src/templates/vanilla/_package.json | 6 - .../src/templates/vanilla/dist/_index.html | 21 - tooling/create-tauri-app/src/types/config.ts | 26 - tooling/create-tauri-app/src/types/deps.ts | 11 - tooling/create-tauri-app/src/types/recipe.ts | 22 - tooling/create-tauri-app/test/spawn.test.mjs | 194 - tooling/create-tauri-app/tsconfig.json | 18 - .../types/fixturez/index.d.ts | 1 - tooling/create-tauri-app/yarn.lock | 2677 -------------- 76 files changed, 6795 insertions(+), 5388 deletions(-) delete mode 100644 .changes/cta-add-empty-description-for-rust-dominator.md delete mode 100644 .changes/cta-ci-compatible.md delete mode 100644 .changes/cta-cli-install.md delete mode 100644 .changes/cta-crash.md delete mode 100644 .changes/cta-react-disable-open-browser.md delete mode 100644 .changes/cta-solid-recipe.md delete mode 100644 .github/workflows/test-cta.yml create mode 100644 tooling/cli.js/dist/api/cli.js create mode 100644 tooling/cli.js/dist/api/cli.js.map create mode 100644 tooling/cli.js/dist/api/dependency-manager.js create mode 100644 tooling/cli.js/dist/api/dependency-manager.js.map create mode 100644 tooling/cli.js/dist/api/tauricon.js create mode 100644 tooling/cli.js/dist/api/tauricon.js.map create mode 100644 tooling/cli.js/dist/helpers/download-binary.js create mode 100644 tooling/cli.js/dist/helpers/download-binary.js.map create mode 100644 tooling/cli.js/dist/helpers/rust-cli.js create mode 100644 tooling/cli.js/dist/helpers/rust-cli.js.map create mode 100644 tooling/cli.js/dist/helpers/spawn.js create mode 100644 tooling/cli.js/dist/helpers/spawn.js.map delete mode 100644 tooling/create-tauri-app/.eslintrc.js delete mode 100644 tooling/create-tauri-app/.gitignore delete mode 100644 tooling/create-tauri-app/.prettierrc.js delete mode 100644 tooling/create-tauri-app/CHANGELOG.md delete mode 100755 tooling/create-tauri-app/bin/create-tauri-app.js delete mode 100644 tooling/create-tauri-app/jest.config.js delete mode 100644 tooling/create-tauri-app/package.json delete mode 100644 tooling/create-tauri-app/readme.md delete mode 100644 tooling/create-tauri-app/rollup.config.js delete mode 100644 tooling/create-tauri-app/src/dependency-manager.ts delete mode 100644 tooling/create-tauri-app/src/helpers/empty-dir.ts delete mode 100644 tooling/create-tauri-app/src/helpers/package-manager.ts delete mode 100644 tooling/create-tauri-app/src/helpers/update-package-json.ts delete mode 100644 tooling/create-tauri-app/src/helpers/update-tauri-conf.ts delete mode 100644 tooling/create-tauri-app/src/index.ts delete mode 100644 tooling/create-tauri-app/src/recipes/cljs.ts delete mode 100644 tooling/create-tauri-app/src/recipes/dominator.ts delete mode 100644 tooling/create-tauri-app/src/recipes/ng-cli.ts delete mode 100644 tooling/create-tauri-app/src/recipes/react.ts delete mode 100644 tooling/create-tauri-app/src/recipes/solid.ts delete mode 100644 tooling/create-tauri-app/src/recipes/svelte.ts delete mode 100644 tooling/create-tauri-app/src/recipes/vanilla.ts delete mode 100644 tooling/create-tauri-app/src/recipes/vite.ts delete mode 100644 tooling/create-tauri-app/src/recipes/vue-cli.ts delete mode 100644 tooling/create-tauri-app/src/shell.ts delete mode 100644 tooling/create-tauri-app/src/templates/dominator/_.gitignore delete mode 100644 tooling/create-tauri-app/src/templates/dominator/_Cargo.toml delete mode 100644 tooling/create-tauri-app/src/templates/dominator/_package.json delete mode 100644 tooling/create-tauri-app/src/templates/dominator/dist/_index.html delete mode 100644 tooling/create-tauri-app/src/templates/dominator/rollup.config.js delete mode 100644 tooling/create-tauri-app/src/templates/dominator/src/lib.rs delete mode 100644 tooling/create-tauri-app/src/templates/react/react-ts/src/App.css delete mode 100644 tooling/create-tauri-app/src/templates/react/react-ts/src/App.tsx delete mode 100644 tooling/create-tauri-app/src/templates/react/react-ts/src/tauri.svg delete mode 100644 tooling/create-tauri-app/src/templates/react/react-ts/src/wordmark.svg delete mode 100644 tooling/create-tauri-app/src/templates/react/react/src/App.css delete mode 100644 tooling/create-tauri-app/src/templates/react/react/src/App.js delete mode 100644 tooling/create-tauri-app/src/templates/react/react/src/tauri.svg delete mode 100644 tooling/create-tauri-app/src/templates/react/react/src/wordmark.svg delete mode 100644 tooling/create-tauri-app/src/templates/vanilla/_package.json delete mode 100644 tooling/create-tauri-app/src/templates/vanilla/dist/_index.html delete mode 100644 tooling/create-tauri-app/src/types/config.ts delete mode 100644 tooling/create-tauri-app/src/types/deps.ts delete mode 100644 tooling/create-tauri-app/src/types/recipe.ts delete mode 100644 tooling/create-tauri-app/test/spawn.test.mjs delete mode 100644 tooling/create-tauri-app/tsconfig.json delete mode 100644 tooling/create-tauri-app/types/fixturez/index.d.ts delete mode 100644 tooling/create-tauri-app/yarn.lock diff --git a/.changes/config.json b/.changes/config.json index 1e3b8e1e5..e075525b9 100644 --- a/.changes/config.json +++ b/.changes/config.json @@ -213,49 +213,34 @@ "tauri-bundler": { "path": "./tooling/bundler", "manager": "rust", - "dependencies": [ - "tauri-utils" - ] + "dependencies": ["tauri-utils"] }, "tauri-runtime": { "path": "./core/tauri-runtime", "manager": "rust", - "dependencies": [ - "tauri-utils" - ], + "dependencies": ["tauri-utils"], "postversion": "node ../../.scripts/covector/sync-prerelease.js ${ pkg.pkg } ${ release.type }" }, "tauri-runtime-wry": { "path": "./core/tauri-runtime-wry", "manager": "rust", - "dependencies": [ - "tauri-utils", - "tauri-runtime" - ], + "dependencies": ["tauri-utils", "tauri-runtime"], "postversion": "node ../../.scripts/covector/sync-prerelease.js ${ pkg.pkg } ${ release.type }" }, "tauri-codegen": { "path": "./core/tauri-codegen", "manager": "rust", - "dependencies": [ - "tauri-utils" - ] + "dependencies": ["tauri-utils"] }, "tauri-macros": { "path": "./core/tauri-macros", "manager": "rust", - "dependencies": [ - "tauri-codegen", - "tauri-utils" - ] + "dependencies": ["tauri-codegen", "tauri-utils"] }, "tauri-build": { "path": "./core/tauri-build", "manager": "rust", - "dependencies": [ - "tauri-codegen", - "tauri-utils" - ], + "dependencies": ["tauri-codegen", "tauri-utils"], "postversion": "node ../../.scripts/covector/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }" }, "tauri": { @@ -272,9 +257,7 @@ "cli.js": { "path": "./tooling/cli/node", "manager": "javascript", - "dependencies": [ - "cli.rs" - ], + "dependencies": ["cli.rs"], "postversion": "node ../../../.scripts/covector/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }", "prepublish": [], "publish": [], @@ -283,10 +266,7 @@ "cli.rs": { "path": "./tooling/cli", "manager": "rust", - "dependencies": [ - "tauri-bundler", - "tauri-utils" - ], + "dependencies": ["tauri-bundler", "tauri-utils"], "postversion": "cargo check", "assets": [ { @@ -295,14 +275,10 @@ } ] }, - "create-tauri-app": { - "path": "./tooling/create-tauri-app", - "manager": "javascript" - }, "tauri-driver": { "path": "./tooling/webdriver", "manager": "rust", "postversion": "node ../../.scripts/covector/sync-prerelease.js ${ pkg.pkg } ${ release.type }" } } -} \ No newline at end of file +} diff --git a/.changes/cta-add-empty-description-for-rust-dominator.md b/.changes/cta-add-empty-description-for-rust-dominator.md deleted file mode 100644 index 8de51d273..000000000 --- a/.changes/cta-add-empty-description-for-rust-dominator.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"create-tauri-app": patch ---- - -Add empty description to Cargo.toml in dominator recipe. \ No newline at end of file diff --git a/.changes/cta-ci-compatible.md b/.changes/cta-ci-compatible.md deleted file mode 100644 index 71c4e8dcb..000000000 --- a/.changes/cta-ci-compatible.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"create-tauri-app": patch ---- - -`create-tauri-app` should now be fully compatiable with CI environments. diff --git a/.changes/cta-cli-install.md b/.changes/cta-cli-install.md deleted file mode 100644 index 3bcb7a858..000000000 --- a/.changes/cta-cli-install.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"create-tauri-app": patch ---- - -Fix crash when using `create-react-app` recipe. diff --git a/.changes/cta-crash.md b/.changes/cta-crash.md deleted file mode 100644 index 19e9341f3..000000000 --- a/.changes/cta-crash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"create-tauri-app": patch ---- - -Fix `create-tauri-app` failing to bootstrap projects. diff --git a/.changes/cta-react-disable-open-browser.md b/.changes/cta-react-disable-open-browser.md deleted file mode 100644 index 9103cf6fa..000000000 --- a/.changes/cta-react-disable-open-browser.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"create-tauri-app": patch ---- - -Stop react recipe from opening in browser by default. diff --git a/.changes/cta-solid-recipe.md b/.changes/cta-solid-recipe.md deleted file mode 100644 index 6dccde7d7..000000000 --- a/.changes/cta-solid-recipe.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'create-tauri-app': patch ---- - -Add SolidJS recipe using the official template. diff --git a/.changes/going-rc.md b/.changes/going-rc.md index 81aef49dd..67941b46e 100644 --- a/.changes/going-rc.md +++ b/.changes/going-rc.md @@ -8,7 +8,6 @@ 'tauri-codegen': major 'tauri-macros': major 'tauri-build': major -'create-tauri-app': major 'tauri-driver': patch --- diff --git a/.changes/pre.json b/.changes/pre.json index 34fce0d96..a8281ca73 100644 --- a/.changes/pre.json +++ b/.changes/pre.json @@ -67,12 +67,6 @@ ".changes/core-path-endpoint-path-doesnt-exist-error.md", ".changes/create-window-return-window.md", ".changes/csp-nonces.md", - ".changes/cta-add-empty-description-for-rust-dominator.md", - ".changes/cta-ci-compatible.md", - ".changes/cta-cli-install.md", - ".changes/cta-crash.md", - ".changes/cta-react-disable-open-browser.md", - ".changes/cta-solid-recipe.md", ".changes/current-binary-caching.md", ".changes/custom-invoke-system.md", ".changes/data-url-csp.md", diff --git a/.github/workflows/lint-js.yml b/.github/workflows/lint-js.yml index c7213aa41..5eadd0a0a 100644 --- a/.github/workflows/lint-js.yml +++ b/.github/workflows/lint-js.yml @@ -10,7 +10,6 @@ on: - '.github/workflows/lint-js.yml' - 'tooling/cli/node/**' - 'tooling/api/**' - - 'tooling/create-tauri-app/**' jobs: eslint-check: @@ -42,13 +41,3 @@ jobs: - name: run api format working-directory: ./tooling/api/ run: yarn format:check - - - name: install create-tauri-app deps via yarn - working-directory: ./tooling/create-tauri-app/ - run: yarn - - name: run create-tauri-app lint - working-directory: ./tooling/create-tauri-app/ - run: yarn lint - - name: run create-tauri-app format - working-directory: ./tooling/create-tauri-app/ - run: yarn format:check diff --git a/.github/workflows/test-cta.yml b/.github/workflows/test-cta.yml deleted file mode 100644 index 9d2f788ed..000000000 --- a/.github/workflows/test-cta.yml +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright 2019-2021 Tauri Programme within The Commons Conservancy -# SPDX-License-Identifier: Apache-2.0 -# SPDX-License-Identifier: MIT - -name: test create-tauri-app -env: - RUST_BACKTRACE: 1 - CARGO_INCREMENTAL: 0 # This is set to 0 by the https://github.com/Swatinem/rust-cache - CARGO_PROFILE_DEV_DEBUG: 0 # This would add unnecessary bloat to the target folder, decreasing cache efficiency. - TAURI_RECIPE: 'vanillajs,cra,vite,ngcli,solid' - -on: - workflow_dispatch: - inputs: - platform: - default: 'ubuntu' - pull_request: - paths: - - 'tooling/create-tauri-app/**' - -jobs: - create-recipe-with-npm: - name: 'node@${{ matrix.node }} + npm@${{ matrix.manager }}' - runs-on: ${{ github.event.inputs.platform || 'ubuntu' }}-latest - - strategy: - fail-fast: false - matrix: - node: ['14', '16'] - manager: ['7'] - exclude: - - node: '16' - manager: '6' - - steps: - - uses: actions/checkout@v2 - - name: install stable - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - - uses: volta-cli/action@v1 - with: - node-version: ${{ matrix.node }} - npm-version: ${{ matrix.manager }} - yarn-version: 1.22.5 - - name: install webkit2gtk - if: (github.event.inputs.platform || 'ubuntu') == 'ubuntu' - run: | - sudo apt-get update - sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf - #- run: yarn - # working-directory: tooling/cli/node - #- run: yarn build - # working-directory: tooling/cli/node - - run: yarn - working-directory: tooling/api - - run: yarn build - working-directory: tooling/api - - run: yarn - working-directory: tooling/create-tauri-app - - run: yarn build - working-directory: tooling/create-tauri-app - - run: yarn test - working-directory: tooling/create-tauri-app - env: - TAURI_RUN_MANAGER: 'npm' - - # create-recipe-with-yarn: - # name: "node@${{ matrix.node }} + yarn@1" - # runs-on: ${{ github.event.inputs.platform || 'ubuntu' }}-latest - - # strategy: - # fail-fast: false - # matrix: - # node: ["14", "16"] - - # steps: - # - uses: actions/checkout@v2 - # - name: install stable - # uses: actions-rs/toolchain@v1 - # with: - # toolchain: stable - # - uses: volta-cli/action@v1 - # with: - # node-version: ${{ matrix.node }} - # yarn-version: 1.22.5 - # - name: install webkit2gtk - # if: (github.event.inputs.platform || 'ubuntu') == 'ubuntu' - # run: | - # sudo apt-get update - # sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf - # - run: yarn - # working-directory: tooling/create-tauri-app - # - run: yarn build - # working-directory: tooling/create-tauri-app - # - run: yarn test - # working-directory: tooling/create-tauri-app - # env: - # TAURI_RUN_MANAGER: "yarn" diff --git a/.husky/pre-commit b/.husky/pre-commit index 1b7d9d961..c9d98ed21 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -22,12 +22,3 @@ else yarn format cd ../../.. fi - -if [ -z "$(git diff --name-only tooling/create-tauri-app)" ]; then - echo "skipping create-tauri-app - no changes detected" -else - cd tooling/create-tauri-app - yarn format - yarn lint-fix - cd ../.. -fi diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 5ea98ee8d..cfff480fb 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -50,7 +50,7 @@ It is a wrapper around [cli.rs](https://github.com/tauri-apps/tauri/blob/dev/too #### [cli.rs](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli) [RUST] This rust executable provides the full interface to all of the required activities for which the CLI is required. It will run on macOS, Windows, and Linux. -#### [create-tauri-app](https://github.com/tauri-apps/tauri/tree/dev/tooling/create-tauri-app) [JS] +#### [create-tauri-app](https://github.com/tauri-apps/create-tauri-app) [JS] This is a toolkit that will enable engineering teams to rapidly scaffold out a new tauri-apps project using the frontend framework of their choice (as long as it has been configured). # External Crates diff --git a/README.md b/README.md index e1f04fe17..f8f976fee 100644 --- a/README.md +++ b/README.md @@ -13,15 +13,15 @@ ## Current Releases -| Component | Description | Version | Lin | Win | Mac | -| --------------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --- | --- | --- | -| [**cli.rs**](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli) | create, develop and build apps | [![](https://img.shields.io/crates/v/tauri-cli.svg)](https://crates.io/crates/tauri-cli) | ✅ | ✅ | ✅ | -| [**cli.js**](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli/node) | Node.js CLI wrapper for cli.rs | [![](https://img.shields.io/npm/v/@tauri-apps/cli.svg)](https://www.npmjs.com/package/@tauri-apps/cli) | ✅ | ✅ | ✅ | -| [**api.js**](https://github.com/tauri-apps/tauri/tree/dev/tooling/api) | JS API for interaction with Rust backend | [![](https://img.shields.io/npm/v/@tauri-apps/api.svg)](https://www.npmjs.com/package/@tauri-apps/api) | ✅ | ✅ | ✅ | -| [**create-tauri-app**](https://github.com/tauri-apps/tauri/tree/dev/tooling/create-tauri-app) | Get started with your first Tauri app | [![](https://img.shields.io/npm/v/create-tauri-app.svg)](https://www.npmjs.com/package/create-tauri-app) | ✅ | ✅ | ✅ | -| [**vue-cli-plugin-tauri**](https://github.com/tauri-apps/vue-cli-plugin-tauri/) | Vue CLI plugin for Tauri | [![](https://img.shields.io/npm/v/vue-cli-plugin-tauri.svg)](https://www.npmjs.com/package/vue-cli-plugin-tauri) | ✅ | ✅ | ✅ | -| [**core**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri) | runtime core | [![](https://img.shields.io/crates/v/tauri.svg)](https://crates.io/crates/tauri) | ✅ | ✅ | ✅ | -| [**bundler**](https://github.com/tauri-apps/tauri/tree/dev/tooling/bundler) | manufacture the final binaries | [![](https://img.shields.io/crates/v/tauri-bundler.svg)](https://crates.io/crates/tauri-bundler) | ✅ | ✅ | ✅ | +| Component | Description | Version | Lin | Win | Mac | +| ------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --- | --- | --- | +| [**cli.rs**](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli) | create, develop and build apps | [![](https://img.shields.io/crates/v/tauri-cli.svg)](https://crates.io/crates/tauri-cli) | ✅ | ✅ | ✅ | +| [**cli.js**](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli/node) | Node.js CLI wrapper for cli.rs | [![](https://img.shields.io/npm/v/@tauri-apps/cli.svg)](https://www.npmjs.com/package/@tauri-apps/cli) | ✅ | ✅ | ✅ | +| [**api.js**](https://github.com/tauri-apps/tauri/tree/dev/tooling/api) | JS API for interaction with Rust backend | [![](https://img.shields.io/npm/v/@tauri-apps/api.svg)](https://www.npmjs.com/package/@tauri-apps/api) | ✅ | ✅ | ✅ | +| [**create-tauri-app**](https://github.com/tauri-apps/create-tauri-app) | Get started with your first Tauri app | [![](https://img.shields.io/npm/v/create-tauri-app.svg)](https://www.npmjs.com/package/create-tauri-app) | ✅ | ✅ | ✅ | +| [**vue-cli-plugin-tauri**](https://github.com/tauri-apps/vue-cli-plugin-tauri/) | Vue CLI plugin for Tauri | [![](https://img.shields.io/npm/v/vue-cli-plugin-tauri.svg)](https://www.npmjs.com/package/vue-cli-plugin-tauri) | ✅ | ✅ | ✅ | +| [**core**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri) | runtime core | [![](https://img.shields.io/crates/v/tauri.svg)](https://crates.io/crates/tauri) | ✅ | ✅ | ✅ | +| [**bundler**](https://github.com/tauri-apps/tauri/tree/dev/tooling/bundler) | manufacture the final binaries | [![](https://img.shields.io/crates/v/tauri-bundler.svg)](https://crates.io/crates/tauri-bundler) | ✅ | ✅ | ✅ | ## Introduction Tauri is a framework for building tiny, blazing fast binaries for all major desktop platforms. Developers can integrate any front-end framework that compiles to HTML, JS and CSS for building their user interface. The backend of the application is a rust-sourced binary with an API that the front-end can interact with. diff --git a/core/tauri/tests/restart/Cargo.lock b/core/tauri/tests/restart/Cargo.lock index 21ba523fb..53e63da5d 100644 --- a/core/tauri/tests/restart/Cargo.lock +++ b/core/tauri/tests/restart/Cargo.lock @@ -2534,8 +2534,9 @@ dependencies = [ [[package]] name = "tauri" -version = "1.0.0-rc.1" +version = "1.0.0-rc.2" dependencies = [ + "anyhow", "bincode", "cfg_aliases", "dirs-next", diff --git a/renovate.json b/renovate.json index ebd1563c7..8ca14b079 100644 --- a/renovate.json +++ b/renovate.json @@ -1,31 +1,20 @@ { - "extends": [ - "config:base" - ], + "extends": ["config:base"], "schedule": "after 3am on Wednesday", "ignorePaths": [], - "labels": [ - "chore" - ], - "enabledManagers": [ - "cargo", - "npm" - ], + "labels": ["chore"], + "enabledManagers": ["cargo", "npm"], "cargo": { "enabled": true }, "packageRules": [ { - "packagePatterns": [ - "*" - ], + "packagePatterns": ["*"], "enabled": false }, { "enabled": true, - "paths": [ - "core/tauri/**" - ], + "paths": ["core/tauri/**"], "groupName": "Tauri Core", "groupSlug": "allTauriCore", "commitMessagePrefix": "chore(deps)", @@ -36,9 +25,7 @@ }, { "enabled": true, - "paths": [ - "core/tauri-build/**" - ], + "paths": ["core/tauri-build/**"], "groupName": "Tauri Build", "groupSlug": "allTauriBuild", "commitMessagePrefix": "chore(deps)", @@ -49,9 +36,7 @@ }, { "enabled": true, - "paths": [ - "core/tauri-codegen/**" - ], + "paths": ["core/tauri-codegen/**"], "groupName": "Tauri Codegen", "groupSlug": "allTauriCodegen", "commitMessagePrefix": "chore(deps)", @@ -62,9 +47,7 @@ }, { "enabled": true, - "paths": [ - "core/tauri-macros/**" - ], + "paths": ["core/tauri-macros/**"], "groupName": "Tauri Macros", "groupSlug": "allTauriMacros", "commitMessagePrefix": "chore(deps)", @@ -75,9 +58,7 @@ }, { "enabled": true, - "paths": [ - "core/tauri-utils/**" - ], + "paths": ["core/tauri-utils/**"], "groupName": "Tauri Utils", "groupSlug": "allTauriUtils", "commitMessagePrefix": "chore(deps)", @@ -88,9 +69,7 @@ }, { "enabled": true, - "paths": [ - "tooling/cli/**" - ], + "paths": ["tooling/cli/**"], "groupName": "Tauri CLI", "groupSlug": "allTauriCLI", "commitMessagePrefix": "chore(deps)", @@ -101,9 +80,7 @@ }, { "enabled": true, - "paths": [ - "tooling/bundler/**" - ], + "paths": ["tooling/bundler/**"], "groupName": "Tauri Bundler", "groupSlug": "allTauriBundler", "commitMessagePrefix": "chore(deps)", @@ -114,9 +91,7 @@ }, { "enabled": true, - "paths": [ - "tooling/cli/node" - ], + "paths": ["tooling/cli/node"], "groupName": "Tauri JS CLI", "groupSlug": "allTauriJSCLI", "commitMessagePrefix": "chore(deps)", @@ -127,9 +102,7 @@ }, { "enabled": true, - "paths": [ - "tooling/api/**" - ], + "paths": ["tooling/api/**"], "groupName": "Tauri API Definitions", "groupSlug": "allTauriAPIDefinitions", "commitMessagePrefix": "chore(deps)", @@ -137,19 +110,6 @@ "enabled": true }, "rebaseConflictedPrs": false - }, - { - "enabled": true, - "paths": [ - "tooling/create-tauri-app/**" - ], - "groupName": "create-tauri-app", - "groupSlug": "allCTA", - "commitMessagePrefix": "chore(deps)", - "lockFileMaintenance": { - "enabled": true - }, - "rebaseConflictedPrs": false } ] -} \ No newline at end of file +} diff --git a/tooling/cli.js/dist/api/cli.js b/tooling/cli.js/dist/api/cli.js new file mode 100644 index 000000000..24934d94a --- /dev/null +++ b/tooling/cli.js/dist/api/cli.js @@ -0,0 +1,760 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["tauri"] = factory(); + else + root["tauri"] = factory(); +})(this, function() { +return /******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../cli.rs/Cargo.toml": +/*!****************************!*\ + !*** ../cli.rs/Cargo.toml ***! + \****************************/ +/***/ ((module) => { + +module.exports = { + "workspace": {}, + "package": { + "name": "tauri-cli", + "version": "1.0.0-beta.5", + "authors": [ + "Tauri Programme within The Commons Conservancy" + ], + "edition": "2018", + "categories": [ + "gui", + "web-programming" + ], + "license": "Apache-2.0 OR MIT", + "homepage": "https://tauri.studio", + "repository": "https://github.com/tauri-apps/tauri", + "description": "Command line interface for building Tauri apps", + "include": [ + "src/", + "/templates", + "MergeModules/", + "*.json", + "*.rs" + ] + }, + "bin": [ + { + "name": "cargo-tauri", + "path": "src/main.rs" + } + ], + "dependencies": { + "clap": { + "version": "3.0.0-beta.2", + "features": [ + "yaml" + ] + }, + "anyhow": "1.0", + "tauri-bundler": { + "version": "1.0.0-beta.3", + "path": "../bundler" + }, + "colored": "2.0", + "once_cell": "1.8", + "serde": { + "version": "1.0", + "features": [ + "derive" + ] + }, + "serde_json": "1.0", + "serde_with": "1.9", + "notify": "4.0", + "shared_child": "0.3", + "toml_edit": "0.2", + "json-patch": "0.2", + "schemars": "0.8", + "toml": "0.5", + "valico": "3.6", + "handlebars": "4.1", + "include_dir": "0.6", + "minisign": "0.6", + "base64": "0.13.0", + "ureq": "2.1", + "os_info": "3.0", + "semver": "1.0", + "regex": "1.5", + "lazy_static": "1", + "libc": "0.2", + "terminal_size": "0.1", + "unicode-width": "0.1", + "tempfile": "3", + "zeroize": "1.3" + }, + "target": { + "cfg(windows)": { + "dependencies": { + "winapi": { + "version": "0.3", + "features": [ + "winbase", + "winuser", + "consoleapi", + "processenv", + "wincon" + ] + }, + "encode_unicode": "0.3" + } + }, + "cfg(target_os = \"linux\")": { + "dependencies": { + "heck": "0.3" + } + } + }, + "build-dependencies": { + "schemars": "0.8", + "serde": { + "version": "1.0", + "features": [ + "derive" + ] + }, + "serde_json": "1.0", + "serde_with": "1.9" + } +} + +/***/ }), + +/***/ "./src/api/cli.ts": +/*!************************!*\ + !*** ./src/api/cli.ts ***! + \************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.build = exports.dev = exports.init = void 0; +var rust_cli_1 = __webpack_require__(/*! ../helpers/rust-cli */ "./src/helpers/rust-cli.ts"); +function toKebabCase(value) { + return value + .replace(/([a-z])([A-Z])/g, '$1-$2') + .replace(/\s+/g, '-') + .toLowerCase(); +} +function runCliCommand(command, args) { + return __awaiter(this, void 0, void 0, function () { + var argsArray, _i, _a, _b, argName, argValue; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + argsArray = []; + for (_i = 0, _a = Object.entries(args !== null && args !== void 0 ? args : {}); _i < _a.length; _i++) { + _b = _a[_i], argName = _b[0], argValue = _b[1]; + if (argValue === false) { + continue; + } + argsArray.push("--" + toKebabCase(argName)); + if (argValue === true) { + continue; + } + argsArray.push(typeof argValue === 'string' ? argValue : JSON.stringify(argValue)); + } + return [4 /*yield*/, rust_cli_1.runOnRustCli(command, argsArray)]; + case 1: return [2 /*return*/, _c.sent()]; + } + }); + }); +} +var init = function (args) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, runCliCommand('init', args)]; + case 1: return [2 /*return*/, _a.sent()]; + } +}); }); }; +exports.init = init; +var dev = function (args) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, runCliCommand('dev', args)]; + case 1: return [2 /*return*/, _a.sent()]; + } +}); }); }; +exports.dev = dev; +var build = function (args) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, runCliCommand('build', args)]; + case 1: return [2 /*return*/, _a.sent()]; + } +}); }); }; +exports.build = build; + + +/***/ }), + +/***/ "./src/helpers/download-binary.ts": +/*!****************************************!*\ + !*** ./src/helpers/download-binary.ts ***! + \****************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.downloadRustup = exports.downloadCli = void 0; +var stream_1 = __importDefault(__webpack_require__(/*! stream */ "stream")); +var util_1 = __webpack_require__(/*! util */ "util"); +var fs_1 = __importDefault(__webpack_require__(/*! fs */ "fs")); +var got_1 = __importDefault(__webpack_require__(/*! got */ "got")); +var path_1 = __importDefault(__webpack_require__(/*! path */ "path")); +var pipeline = util_1.promisify(stream_1.default.pipeline); +// Webpack reads the file at build-time, so this becomes a static var +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access +var tauriCliManifest = __webpack_require__(/*! ../../../cli.rs/Cargo.toml */ "../cli.rs/Cargo.toml"); +var downloads = {}; +function downloadBinaryRelease(tag, asset, outPath) { + return __awaiter(this, void 0, void 0, function () { + var url, removeDownloadedCliIfNeeded; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + url = "https://github.com/tauri-apps/binary-releases/releases/download/" + tag + "/" + asset; + removeDownloadedCliIfNeeded = function () { + try { + if (!(url in downloads)) { + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.unlinkSync(outPath); + } + } + finally { + process.exit(); + } + }; + // on exit, we remove the `tauri-cli` file if the download didn't complete + process.on('exit', removeDownloadedCliIfNeeded); + process.on('SIGINT', removeDownloadedCliIfNeeded); + process.on('SIGTERM', removeDownloadedCliIfNeeded); + process.on('SIGHUP', removeDownloadedCliIfNeeded); + process.on('SIGBREAK', removeDownloadedCliIfNeeded); + // TODO: Check hash of download + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename + return [4 /*yield*/, pipeline(got_1.default.stream(url), fs_1.default.createWriteStream(outPath)).catch(function (e) { + try { + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.unlinkSync(outPath); + } + catch (_a) { } + throw e; + }) + // eslint-disable-next-line security/detect-object-injection + ]; + case 1: + // TODO: Check hash of download + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename + _a.sent(); + // eslint-disable-next-line security/detect-object-injection + downloads[url] = true; + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.chmodSync(outPath, 448); + console.log('Download Complete'); + return [2 /*return*/]; + } + }); + }); +} +function downloadCli() { + return __awaiter(this, void 0, void 0, function () { + var version, platform, extension, outPath; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + version = tauriCliManifest.package.version; + platform = process.platform; + if (platform === 'win32') { + platform = 'windows'; + } + else if (platform === 'linux') { + platform = 'linux'; + } + else if (platform === 'darwin') { + platform = 'macos'; + } + else { + throw Error('Unsupported platform'); + } + extension = platform === 'windows' ? '.exe' : ''; + outPath = path_1.default.join(__dirname, "../../bin/tauri-cli" + extension); + console.log('Downloading Rust CLI...'); + return [4 /*yield*/, downloadBinaryRelease("tauri-cli-v" + version, "tauri-cli_" + platform + extension, outPath)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); +} +exports.downloadCli = downloadCli; +function downloadRustup() { + return __awaiter(this, void 0, void 0, function () { + var assetName; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + assetName = process.platform === 'win32' ? 'rustup-init.exe' : 'rustup-init.sh'; + console.log('Downloading Rustup...'); + return [4 /*yield*/, downloadBinaryRelease('rustup', assetName, path_1.default.join(__dirname, "../../bin/" + assetName))]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.downloadRustup = downloadRustup; + + +/***/ }), + +/***/ "./src/helpers/logger.ts": +/*!*******************************!*\ + !*** ./src/helpers/logger.ts ***! + \*******************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var ms_1 = __importDefault(__webpack_require__(/*! ms */ "ms")); +var prevTime; +exports.default = (function (banner, color) { + if (color === void 0) { color = chalk_1.default.green; } + return function (msg) { + var curr = +new Date(); + var diff = curr - (prevTime || curr); + prevTime = curr; + if (msg) { + console.log( + // TODO: proper typings for color and banner + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call + " " + color(String(banner)) + " " + msg + " " + chalk_1.default.green("+" + ms_1.default(diff))); + } + else { + console.log(); + } + }; +}); + + +/***/ }), + +/***/ "./src/helpers/rust-cli.ts": +/*!*********************************!*\ + !*** ./src/helpers/rust-cli.ts ***! + \*********************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __spreadArray = (this && this.__spreadArray) || function (to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.runOnRustCli = void 0; +var fs_1 = __webpack_require__(/*! fs */ "fs"); +var path_1 = __webpack_require__(/*! path */ "path"); +var spawn_1 = __webpack_require__(/*! ./spawn */ "./src/helpers/spawn.ts"); +var download_binary_1 = __webpack_require__(/*! ./download-binary */ "./src/helpers/download-binary.ts"); +var currentTauriCliVersion = function () { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + var tauriCliManifest = + // eslint-disable-next-line @typescript-eslint/no-var-requires + __webpack_require__(/*! ../../../cli.rs/Cargo.toml */ "../cli.rs/Cargo.toml"); + return tauriCliManifest.package.version; +}; +function runOnRustCli(command, args) { + return __awaiter(this, void 0, void 0, function () { + var targetPath, targetCliPath, resolveCb, rejectCb, pid, promise, onClose, cliPath, localCliPath; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + targetPath = path_1.resolve(__dirname, '../..'); + targetCliPath = path_1.join(targetPath, 'bin/tauri-cli' + (process.platform === 'win32' ? '.exe' : '')); + promise = new Promise(function (resolve, reject) { + resolveCb = resolve; + rejectCb = function () { return reject(new Error()); }; + }); + onClose = function (code, pid) { + if (code === 0) { + resolveCb(); + } + else { + rejectCb(); + } + }; + if (!fs_1.existsSync(targetCliPath)) return [3 /*break*/, 1]; + pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose); + return [3 /*break*/, 4]; + case 1: + if (true) return [3 /*break*/, 3]; + return [4 /*yield*/, download_binary_1.downloadCli()]; + case 2: + _a.sent(); + pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose); + return [3 /*break*/, 4]; + case 3: + if (fs_1.existsSync(path_1.resolve(targetPath, '../bundler'))) { + cliPath = path_1.resolve(targetPath, '../cli.rs'); + spawn_1.spawnSync('cargo', ['build', '--release'], cliPath); + localCliPath = path_1.resolve(targetPath, '../cli.rs/target/release/cargo-tauri'); + pid = spawn_1.spawn(localCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose); + } + else { + spawn_1.spawnSync('cargo', [ + 'install', + '--root', + targetPath, + 'tauri-cli', + '--version', + currentTauriCliVersion() + ], process.cwd()); + pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose); + } + _a.label = 4; + case 4: return [2 /*return*/, { pid: pid, promise: promise }]; + } + }); + }); +} +exports.runOnRustCli = runOnRustCli; + + +/***/ }), + +/***/ "./src/helpers/spawn.ts": +/*!******************************!*\ + !*** ./src/helpers/spawn.ts ***! + \******************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.spawnSync = exports.spawn = void 0; +var cross_spawn_1 = __importDefault(__webpack_require__(/*! cross-spawn */ "cross-spawn")); +var logger_1 = __importDefault(__webpack_require__(/*! ./logger */ "./src/helpers/logger.ts")); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var log = logger_1.default('app:spawn'); +var warn = logger_1.default('app:spawn', chalk_1.default.red); +/* + Returns pid, takes onClose + */ +var spawn = function (cmd, params, cwd, onClose) { + var _a; + log("Running \"" + cmd + " " + params.join(' ') + "\""); + log(); + // TODO: move to execa? + var runner = cross_spawn_1.default(cmd, params, { + stdio: 'inherit', + cwd: cwd, + env: process.env + }); + runner.on('close', function (code) { + var _a; + log(); + if (code) { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + log("Command \"" + cmd + "\" failed with exit code: " + code); + } + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain + onClose && onClose(code !== null && code !== void 0 ? code : 0, (_a = runner.pid) !== null && _a !== void 0 ? _a : 0); + }); + return (_a = runner.pid) !== null && _a !== void 0 ? _a : 0; +}; +exports.spawn = spawn; +/* + Returns nothing, takes onFail + */ +var spawnSync = function (cmd, params, cwd, onFail) { + log("[sync] Running \"" + cmd + " " + params.join(' ') + "\""); + log(); + var runner = cross_spawn_1.default.sync(cmd, params, { + stdio: 'inherit', + cwd: cwd + }); + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + if (runner.status || runner.error) { + warn(); + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + warn("\u26A0\uFE0F Command \"" + cmd + "\" failed with exit code: " + runner.status); + if (runner.status === null) { + warn("\u26A0\uFE0F Please globally install \"" + cmd + "\""); + } + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain + onFail && onFail(); + process.exit(1); + } +}; +exports.spawnSync = spawnSync; + + +/***/ }), + +/***/ "chalk": +/*!************************!*\ + !*** external "chalk" ***! + \************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("chalk");; + +/***/ }), + +/***/ "cross-spawn": +/*!******************************!*\ + !*** external "cross-spawn" ***! + \******************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("cross-spawn");; + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("fs");; + +/***/ }), + +/***/ "got": +/*!**********************!*\ + !*** external "got" ***! + \**********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("got");; + +/***/ }), + +/***/ "ms": +/*!*********************!*\ + !*** external "ms" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("ms");; + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("path");; + +/***/ }), + +/***/ "stream": +/*!*************************!*\ + !*** external "stream" ***! + \*************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("stream");; + +/***/ }), + +/***/ "util": +/*!***********************!*\ + !*** external "util" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("util");; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__("./src/api/cli.ts"); +/******/ +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=cli.js.map \ No newline at end of file diff --git a/tooling/cli.js/dist/api/cli.js.map b/tooling/cli.js/dist/api/cli.js.map new file mode 100644 index 000000000..35bfa391e --- /dev/null +++ b/tooling/cli.js/dist/api/cli.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://tauri/webpack/universalModuleDefinition","webpack://tauri/../cli.rs/Cargo.toml","webpack://tauri/./src/api/cli.ts","webpack://tauri/./src/helpers/download-binary.ts","webpack://tauri/./src/helpers/logger.ts","webpack://tauri/./src/helpers/rust-cli.ts","webpack://tauri/./src/helpers/spawn.ts","webpack://tauri/external \"chalk\"","webpack://tauri/external \"cross-spawn\"","webpack://tauri/external \"fs\"","webpack://tauri/external \"got\"","webpack://tauri/external \"ms\"","webpack://tauri/external \"path\"","webpack://tauri/external \"stream\"","webpack://tauri/external \"util\"","webpack://tauri/webpack/bootstrap","webpack://tauri/webpack/startup"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;ACVA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,C;;;;;;;;;;;AC5Ga;AACb;AACA;AACA;AACA;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,aAAa,GAAG,WAAW,GAAG,YAAY;AAC1C,iBAAiB,mBAAO,CAAC,sDAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG,EAAE,gBAAgB;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,4BAA4B,uDAAuD;AACnF;AACA;AACA;AACA;AACA,CAAC,EAAE,EAAE,EAAE;AACP,YAAY;AACZ,2BAA2B,uDAAuD;AAClF;AACA;AACA;AACA;AACA,CAAC,EAAE,EAAE,EAAE;AACP,WAAW;AACX,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,CAAC,EAAE,EAAE,EAAE;AACP,aAAa;;;;;;;;;;;;AC7FA;AACb;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,sBAAsB,GAAG,mBAAmB;AAC5C,+BAA+B,mBAAO,CAAC,sBAAQ;AAC/C,aAAa,mBAAO,CAAC,kBAAM;AAC3B,2BAA2B,mBAAO,CAAC,cAAI;AACvC,4BAA4B,mBAAO,CAAC,gBAAK;AACzC,6BAA6B,mBAAO,CAAC,kBAAM;AAC3C;AACA;AACA;AACA,uBAAuB,mBAAO,CAAC,wDAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,sBAAsB;;;;;;;;;;;;ACpJT;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C,2BAA2B,mBAAO,CAAC,cAAI;AACvC;AACA,eAAe;AACf,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AC3BY;AACb;AACA;AACA;AACA;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,oDAAoD,QAAQ;AAC5D;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,oBAAoB;AACpB,WAAW,mBAAO,CAAC,cAAI;AACvB,aAAa,mBAAO,CAAC,kBAAM;AAC3B,cAAc,mBAAO,CAAC,uCAAS;AAC/B,wBAAwB,mBAAO,CAAC,2DAAmB;AACnD;AACA;AACA;AACA;AACA,IAAI,mBAAO,CAAC,wDAA4B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,4BAA4B;AAC5E,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,IAAwC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,6BAA6B;AAC5E;AACA,SAAS;AACT,KAAK;AACL;AACA,oBAAoB;;;;;;;;;;;;AChHP;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,GAAG,aAAa;AACjC,oCAAoC,mBAAO,CAAC,gCAAa;AACzD,+BAA+B,mBAAO,CAAC,yCAAU;AACjD,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;AC/DjB,mC;;;;;;;;;;;ACAA,yC;;;;;;;;;;;ACAA,gC;;;;;;;;;;;ACAA,iC;;;;;;;;;;;ACAA,gC;;;;;;;;;;;ACAA,kC;;;;;;;;;;;ACAA,oC;;;;;;;;;;;ACAA,kC;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UCtBA;UACA;UACA;UACA","file":"api/cli.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tauri\"] = factory();\n\telse\n\t\troot[\"tauri\"] = factory();\n})(this, function() {\nreturn ","module.exports = {\n\t\"workspace\": {},\n\t\"package\": {\n\t\t\"name\": \"tauri-cli\",\n\t\t\"version\": \"1.0.0-beta.5\",\n\t\t\"authors\": [\n\t\t\t\"Tauri Programme within The Commons Conservancy\"\n\t\t],\n\t\t\"edition\": \"2018\",\n\t\t\"categories\": [\n\t\t\t\"gui\",\n\t\t\t\"web-programming\"\n\t\t],\n\t\t\"license\": \"Apache-2.0 OR MIT\",\n\t\t\"homepage\": \"https://tauri.studio\",\n\t\t\"repository\": \"https://github.com/tauri-apps/tauri\",\n\t\t\"description\": \"Command line interface for building Tauri apps\",\n\t\t\"include\": [\n\t\t\t\"src/\",\n\t\t\t\"/templates\",\n\t\t\t\"MergeModules/\",\n\t\t\t\"*.json\",\n\t\t\t\"*.rs\"\n\t\t]\n\t},\n\t\"bin\": [\n\t\t{\n\t\t\t\"name\": \"cargo-tauri\",\n\t\t\t\"path\": \"src/main.rs\"\n\t\t}\n\t],\n\t\"dependencies\": {\n\t\t\"clap\": {\n\t\t\t\"version\": \"3.0.0-beta.2\",\n\t\t\t\"features\": [\n\t\t\t\t\"yaml\"\n\t\t\t]\n\t\t},\n\t\t\"anyhow\": \"1.0\",\n\t\t\"tauri-bundler\": {\n\t\t\t\"version\": \"1.0.0-beta.3\",\n\t\t\t\"path\": \"../bundler\"\n\t\t},\n\t\t\"colored\": \"2.0\",\n\t\t\"once_cell\": \"1.8\",\n\t\t\"serde\": {\n\t\t\t\"version\": \"1.0\",\n\t\t\t\"features\": [\n\t\t\t\t\"derive\"\n\t\t\t]\n\t\t},\n\t\t\"serde_json\": \"1.0\",\n\t\t\"serde_with\": \"1.9\",\n\t\t\"notify\": \"4.0\",\n\t\t\"shared_child\": \"0.3\",\n\t\t\"toml_edit\": \"0.2\",\n\t\t\"json-patch\": \"0.2\",\n\t\t\"schemars\": \"0.8\",\n\t\t\"toml\": \"0.5\",\n\t\t\"valico\": \"3.6\",\n\t\t\"handlebars\": \"4.1\",\n\t\t\"include_dir\": \"0.6\",\n\t\t\"minisign\": \"0.6\",\n\t\t\"base64\": \"0.13.0\",\n\t\t\"ureq\": \"2.1\",\n\t\t\"os_info\": \"3.0\",\n\t\t\"semver\": \"1.0\",\n\t\t\"regex\": \"1.5\",\n\t\t\"lazy_static\": \"1\",\n\t\t\"libc\": \"0.2\",\n\t\t\"terminal_size\": \"0.1\",\n\t\t\"unicode-width\": \"0.1\",\n\t\t\"tempfile\": \"3\",\n\t\t\"zeroize\": \"1.3\"\n\t},\n\t\"target\": {\n\t\t\"cfg(windows)\": {\n\t\t\t\"dependencies\": {\n\t\t\t\t\"winapi\": {\n\t\t\t\t\t\"version\": \"0.3\",\n\t\t\t\t\t\"features\": [\n\t\t\t\t\t\t\"winbase\",\n\t\t\t\t\t\t\"winuser\",\n\t\t\t\t\t\t\"consoleapi\",\n\t\t\t\t\t\t\"processenv\",\n\t\t\t\t\t\t\"wincon\"\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"encode_unicode\": \"0.3\"\n\t\t\t}\n\t\t},\n\t\t\"cfg(target_os = \\\"linux\\\")\": {\n\t\t\t\"dependencies\": {\n\t\t\t\t\"heck\": \"0.3\"\n\t\t\t}\n\t\t}\n\t},\n\t\"build-dependencies\": {\n\t\t\"schemars\": \"0.8\",\n\t\t\"serde\": {\n\t\t\t\"version\": \"1.0\",\n\t\t\t\"features\": [\n\t\t\t\t\"derive\"\n\t\t\t]\n\t\t},\n\t\t\"serde_json\": \"1.0\",\n\t\t\"serde_with\": \"1.9\"\n\t}\n}","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.build = exports.dev = exports.init = void 0;\r\nvar rust_cli_1 = require(\"../helpers/rust-cli\");\r\nfunction toKebabCase(value) {\r\n return value\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/\\s+/g, '-')\r\n .toLowerCase();\r\n}\r\nfunction runCliCommand(command, args) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var argsArray, _i, _a, _b, argName, argValue;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n argsArray = [];\r\n for (_i = 0, _a = Object.entries(args !== null && args !== void 0 ? args : {}); _i < _a.length; _i++) {\r\n _b = _a[_i], argName = _b[0], argValue = _b[1];\r\n if (argValue === false) {\r\n continue;\r\n }\r\n argsArray.push(\"--\" + toKebabCase(argName));\r\n if (argValue === true) {\r\n continue;\r\n }\r\n argsArray.push(typeof argValue === 'string' ? argValue : JSON.stringify(argValue));\r\n }\r\n return [4 /*yield*/, rust_cli_1.runOnRustCli(command, argsArray)];\r\n case 1: return [2 /*return*/, _c.sent()];\r\n }\r\n });\r\n });\r\n}\r\nvar init = function (args) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, runCliCommand('init', args)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n}); }); };\r\nexports.init = init;\r\nvar dev = function (args) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, runCliCommand('dev', args)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n}); }); };\r\nexports.dev = dev;\r\nvar build = function (args) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, runCliCommand('build', args)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n}); }); };\r\nexports.build = build;\r\n","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.downloadRustup = exports.downloadCli = void 0;\r\nvar stream_1 = __importDefault(require(\"stream\"));\r\nvar util_1 = require(\"util\");\r\nvar fs_1 = __importDefault(require(\"fs\"));\r\nvar got_1 = __importDefault(require(\"got\"));\r\nvar path_1 = __importDefault(require(\"path\"));\r\nvar pipeline = util_1.promisify(stream_1.default.pipeline);\r\n// Webpack reads the file at build-time, so this becomes a static var\r\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access\r\nvar tauriCliManifest = require('../../../cli.rs/Cargo.toml');\r\nvar downloads = {};\r\nfunction downloadBinaryRelease(tag, asset, outPath) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, removeDownloadedCliIfNeeded;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = \"https://github.com/tauri-apps/binary-releases/releases/download/\" + tag + \"/\" + asset;\r\n removeDownloadedCliIfNeeded = function () {\r\n try {\r\n if (!(url in downloads)) {\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.unlinkSync(outPath);\r\n }\r\n }\r\n finally {\r\n process.exit();\r\n }\r\n };\r\n // on exit, we remove the `tauri-cli` file if the download didn't complete\r\n process.on('exit', removeDownloadedCliIfNeeded);\r\n process.on('SIGINT', removeDownloadedCliIfNeeded);\r\n process.on('SIGTERM', removeDownloadedCliIfNeeded);\r\n process.on('SIGHUP', removeDownloadedCliIfNeeded);\r\n process.on('SIGBREAK', removeDownloadedCliIfNeeded);\r\n // TODO: Check hash of download\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename\r\n return [4 /*yield*/, pipeline(got_1.default.stream(url), fs_1.default.createWriteStream(outPath)).catch(function (e) {\r\n try {\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.unlinkSync(outPath);\r\n }\r\n catch (_a) { }\r\n throw e;\r\n })\r\n // eslint-disable-next-line security/detect-object-injection\r\n ];\r\n case 1:\r\n // TODO: Check hash of download\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename\r\n _a.sent();\r\n // eslint-disable-next-line security/detect-object-injection\r\n downloads[url] = true;\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.chmodSync(outPath, 448);\r\n console.log('Download Complete');\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction downloadCli() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var version, platform, extension, outPath;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n version = tauriCliManifest.package.version;\r\n platform = process.platform;\r\n if (platform === 'win32') {\r\n platform = 'windows';\r\n }\r\n else if (platform === 'linux') {\r\n platform = 'linux';\r\n }\r\n else if (platform === 'darwin') {\r\n platform = 'macos';\r\n }\r\n else {\r\n throw Error('Unsupported platform');\r\n }\r\n extension = platform === 'windows' ? '.exe' : '';\r\n outPath = path_1.default.join(__dirname, \"../../bin/tauri-cli\" + extension);\r\n console.log('Downloading Rust CLI...');\r\n return [4 /*yield*/, downloadBinaryRelease(\"tauri-cli-v\" + version, \"tauri-cli_\" + platform + extension, outPath)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nexports.downloadCli = downloadCli;\r\nfunction downloadRustup() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var assetName;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n assetName = process.platform === 'win32' ? 'rustup-init.exe' : 'rustup-init.sh';\r\n console.log('Downloading Rustup...');\r\n return [4 /*yield*/, downloadBinaryRelease('rustup', assetName, path_1.default.join(__dirname, \"../../bin/\" + assetName))];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.downloadRustup = downloadRustup;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar ms_1 = __importDefault(require(\"ms\"));\r\nvar prevTime;\r\nexports.default = (function (banner, color) {\r\n if (color === void 0) { color = chalk_1.default.green; }\r\n return function (msg) {\r\n var curr = +new Date();\r\n var diff = curr - (prevTime || curr);\r\n prevTime = curr;\r\n if (msg) {\r\n console.log(\r\n // TODO: proper typings for color and banner\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call\r\n \" \" + color(String(banner)) + \" \" + msg + \" \" + chalk_1.default.green(\"+\" + ms_1.default(diff)));\r\n }\r\n else {\r\n console.log();\r\n }\r\n };\r\n});\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.runOnRustCli = void 0;\r\nvar fs_1 = require(\"fs\");\r\nvar path_1 = require(\"path\");\r\nvar spawn_1 = require(\"./spawn\");\r\nvar download_binary_1 = require(\"./download-binary\");\r\nvar currentTauriCliVersion = function () {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\r\n var tauriCliManifest = \r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n require('../../../cli.rs/Cargo.toml');\r\n return tauriCliManifest.package.version;\r\n};\r\nfunction runOnRustCli(command, args) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var targetPath, targetCliPath, resolveCb, rejectCb, pid, promise, onClose, cliPath, localCliPath;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n targetPath = path_1.resolve(__dirname, '../..');\r\n targetCliPath = path_1.join(targetPath, 'bin/tauri-cli' + (process.platform === 'win32' ? '.exe' : ''));\r\n promise = new Promise(function (resolve, reject) {\r\n resolveCb = resolve;\r\n rejectCb = function () { return reject(new Error()); };\r\n });\r\n onClose = function (code, pid) {\r\n if (code === 0) {\r\n resolveCb();\r\n }\r\n else {\r\n rejectCb();\r\n }\r\n };\r\n if (!fs_1.existsSync(targetCliPath)) return [3 /*break*/, 1];\r\n pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose);\r\n return [3 /*break*/, 4];\r\n case 1:\r\n if (!(process.env.NODE_ENV === 'production')) return [3 /*break*/, 3];\r\n return [4 /*yield*/, download_binary_1.downloadCli()];\r\n case 2:\r\n _a.sent();\r\n pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose);\r\n return [3 /*break*/, 4];\r\n case 3:\r\n if (fs_1.existsSync(path_1.resolve(targetPath, '../bundler'))) {\r\n cliPath = path_1.resolve(targetPath, '../cli.rs');\r\n spawn_1.spawnSync('cargo', ['build', '--release'], cliPath);\r\n localCliPath = path_1.resolve(targetPath, '../cli.rs/target/release/cargo-tauri');\r\n pid = spawn_1.spawn(localCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose);\r\n }\r\n else {\r\n spawn_1.spawnSync('cargo', [\r\n 'install',\r\n '--root',\r\n targetPath,\r\n 'tauri-cli',\r\n '--version',\r\n currentTauriCliVersion()\r\n ], process.cwd());\r\n pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose);\r\n }\r\n _a.label = 4;\r\n case 4: return [2 /*return*/, { pid: pid, promise: promise }];\r\n }\r\n });\r\n });\r\n}\r\nexports.runOnRustCli = runOnRustCli;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.spawnSync = exports.spawn = void 0;\r\nvar cross_spawn_1 = __importDefault(require(\"cross-spawn\"));\r\nvar logger_1 = __importDefault(require(\"./logger\"));\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar log = logger_1.default('app:spawn');\r\nvar warn = logger_1.default('app:spawn', chalk_1.default.red);\r\n/*\r\n Returns pid, takes onClose\r\n */\r\nvar spawn = function (cmd, params, cwd, onClose) {\r\n var _a;\r\n log(\"Running \\\"\" + cmd + \" \" + params.join(' ') + \"\\\"\");\r\n log();\r\n // TODO: move to execa?\r\n var runner = cross_spawn_1.default(cmd, params, {\r\n stdio: 'inherit',\r\n cwd: cwd,\r\n env: process.env\r\n });\r\n runner.on('close', function (code) {\r\n var _a;\r\n log();\r\n if (code) {\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\r\n log(\"Command \\\"\" + cmd + \"\\\" failed with exit code: \" + code);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\r\n onClose && onClose(code !== null && code !== void 0 ? code : 0, (_a = runner.pid) !== null && _a !== void 0 ? _a : 0);\r\n });\r\n return (_a = runner.pid) !== null && _a !== void 0 ? _a : 0;\r\n};\r\nexports.spawn = spawn;\r\n/*\r\n Returns nothing, takes onFail\r\n */\r\nvar spawnSync = function (cmd, params, cwd, onFail) {\r\n log(\"[sync] Running \\\"\" + cmd + \" \" + params.join(' ') + \"\\\"\");\r\n log();\r\n var runner = cross_spawn_1.default.sync(cmd, params, {\r\n stdio: 'inherit',\r\n cwd: cwd\r\n });\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\r\n if (runner.status || runner.error) {\r\n warn();\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\r\n warn(\"\\u26A0\\uFE0F Command \\\"\" + cmd + \"\\\" failed with exit code: \" + runner.status);\r\n if (runner.status === null) {\r\n warn(\"\\u26A0\\uFE0F Please globally install \\\"\" + cmd + \"\\\"\");\r\n }\r\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\r\n onFail && onFail();\r\n process.exit(1);\r\n }\r\n};\r\nexports.spawnSync = spawnSync;\r\n","module.exports = require(\"chalk\");;","module.exports = require(\"cross-spawn\");;","module.exports = require(\"fs\");;","module.exports = require(\"got\");;","module.exports = require(\"ms\");;","module.exports = require(\"path\");;","module.exports = require(\"stream\");;","module.exports = require(\"util\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/api/cli.ts\");\n"],"sourceRoot":""} \ No newline at end of file diff --git a/tooling/cli.js/dist/api/dependency-manager.js b/tooling/cli.js/dist/api/dependency-manager.js new file mode 100644 index 000000000..39a044295 --- /dev/null +++ b/tooling/cli.js/dist/api/dependency-manager.js @@ -0,0 +1,1655 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["tauri"] = factory(); + else + root["tauri"] = factory(); +})(this, function() { +return /******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../cli.rs/Cargo.toml": +/*!****************************!*\ + !*** ../cli.rs/Cargo.toml ***! + \****************************/ +/***/ ((module) => { + +module.exports = { + "workspace": {}, + "package": { + "name": "tauri-cli", + "version": "1.0.0-beta.5", + "authors": [ + "Tauri Programme within The Commons Conservancy" + ], + "edition": "2018", + "categories": [ + "gui", + "web-programming" + ], + "license": "Apache-2.0 OR MIT", + "homepage": "https://tauri.studio", + "repository": "https://github.com/tauri-apps/tauri", + "description": "Command line interface for building Tauri apps", + "include": [ + "src/", + "/templates", + "MergeModules/", + "*.json", + "*.rs" + ] + }, + "bin": [ + { + "name": "cargo-tauri", + "path": "src/main.rs" + } + ], + "dependencies": { + "clap": { + "version": "3.0.0-beta.2", + "features": [ + "yaml" + ] + }, + "anyhow": "1.0", + "tauri-bundler": { + "version": "1.0.0-beta.3", + "path": "../bundler" + }, + "colored": "2.0", + "once_cell": "1.8", + "serde": { + "version": "1.0", + "features": [ + "derive" + ] + }, + "serde_json": "1.0", + "serde_with": "1.9", + "notify": "4.0", + "shared_child": "0.3", + "toml_edit": "0.2", + "json-patch": "0.2", + "schemars": "0.8", + "toml": "0.5", + "valico": "3.6", + "handlebars": "4.1", + "include_dir": "0.6", + "minisign": "0.6", + "base64": "0.13.0", + "ureq": "2.1", + "os_info": "3.0", + "semver": "1.0", + "regex": "1.5", + "lazy_static": "1", + "libc": "0.2", + "terminal_size": "0.1", + "unicode-width": "0.1", + "tempfile": "3", + "zeroize": "1.3" + }, + "target": { + "cfg(windows)": { + "dependencies": { + "winapi": { + "version": "0.3", + "features": [ + "winbase", + "winuser", + "consoleapi", + "processenv", + "wincon" + ] + }, + "encode_unicode": "0.3" + } + }, + "cfg(target_os = \"linux\")": { + "dependencies": { + "heck": "0.3" + } + } + }, + "build-dependencies": { + "schemars": "0.8", + "serde": { + "version": "1.0", + "features": [ + "derive" + ] + }, + "serde_json": "1.0", + "serde_with": "1.9" + } +} + +/***/ }), + +/***/ "./src/api/dependency-manager/cargo-crates.ts": +/*!****************************************************!*\ + !*** ./src/api/dependency-manager/cargo-crates.ts ***! + \****************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __spreadArray = (this && this.__spreadArray) || function (to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.update = exports.install = void 0; +var spawn_1 = __webpack_require__(/*! ./../../helpers/spawn */ "./src/helpers/spawn.ts"); +var types_1 = __webpack_require__(/*! ./types */ "./src/api/dependency-manager/types.ts"); +var util_1 = __webpack_require__(/*! ./util */ "./src/api/dependency-manager/util.ts"); +var logger_1 = __importDefault(__webpack_require__(/*! ../../helpers/logger */ "./src/helpers/logger.ts")); +var app_paths_1 = __webpack_require__(/*! ../../helpers/app-paths */ "./src/helpers/app-paths.ts"); +var fs_1 = __webpack_require__(/*! fs */ "fs"); +var toml_1 = __importDefault(__webpack_require__(/*! @tauri-apps/toml */ "@tauri-apps/toml")); +var inquirer_1 = __importDefault(__webpack_require__(/*! inquirer */ "inquirer")); +var log = logger_1.default('dependency:crates'); +var dependencies = ['tauri']; +function readToml(tomlPath) { + if (fs_1.existsSync(tomlPath)) { + var manifest = fs_1.readFileSync(tomlPath).toString(); + return toml_1.default.parse(manifest); + } + return null; +} +function dependencyDefinition(version) { + return { version: version.substring(0, version.lastIndexOf('.')) }; +} +function manageDependencies(managementType) { + return __awaiter(this, void 0, void 0, function () { + var installedDeps, updatedDeps, result, manifest, lockPath, lock, _loop_1, _i, dependencies_1, dependency; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + installedDeps = []; + updatedDeps = []; + result = new Map(); + manifest = readToml(app_paths_1.resolve.tauri('Cargo.toml')); + if (manifest === null) { + log('Cargo.toml not found. Skipping crates check...'); + return [2 /*return*/, result]; + } + lockPath = app_paths_1.resolve.tauri('Cargo.lock'); + if (!fs_1.existsSync(lockPath)) { + spawn_1.spawnSync('cargo', ['generate-lockfile'], app_paths_1.tauriDir); + } + lock = readToml(lockPath); + _loop_1 = function (dependency) { + var lockPackages, manifestDep, currentVersion, latestVersion, latestVersion, inquired; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + lockPackages = lock + ? lock.package.filter(function (pkg) { return pkg.name === dependency; }) + : []; + manifestDep = manifest.dependencies[dependency]; + currentVersion = lockPackages.length === 1 + ? lockPackages[0].version + : typeof manifestDep === 'string' + ? manifestDep + : manifestDep === null || manifestDep === void 0 ? void 0 : manifestDep.version; + if (!(currentVersion === undefined)) return [3 /*break*/, 1]; + log("Installing " + dependency + "..."); + latestVersion = util_1.getCrateLatestVersion(dependency); + if (latestVersion !== null) { + // eslint-disable-next-line security/detect-object-injection + manifest.dependencies[dependency] = dependencyDefinition(latestVersion); + } + installedDeps.push(dependency); + return [3 /*break*/, 6]; + case 1: + if (!(managementType === types_1.ManagementType.Update)) return [3 /*break*/, 5]; + latestVersion = util_1.getCrateLatestVersion(dependency); + if (!(latestVersion !== null && util_1.semverLt(currentVersion, latestVersion))) return [3 /*break*/, 3]; + return [4 /*yield*/, inquirer_1.default.prompt([ + { + type: 'confirm', + name: 'answer', + message: "[CRATES] \"" + dependency + "\" latest version is " + latestVersion + ". Do you want to update?", + default: false + } + ])]; + case 2: + inquired = (_b.sent()); + if (inquired.answer) { + log("Updating " + dependency + "..."); + // eslint-disable-next-line security/detect-object-injection + manifest.dependencies[dependency] = + dependencyDefinition(latestVersion); + updatedDeps.push(dependency); + } + return [3 /*break*/, 4]; + case 3: + log("\"" + dependency + "\" is up to date"); + _b.label = 4; + case 4: return [3 /*break*/, 6]; + case 5: + log("\"" + dependency + "\" is already installed"); + _b.label = 6; + case 6: return [2 /*return*/]; + } + }); + }; + _i = 0, dependencies_1 = dependencies; + _a.label = 1; + case 1: + if (!(_i < dependencies_1.length)) return [3 /*break*/, 4]; + dependency = dependencies_1[_i]; + return [5 /*yield**/, _loop_1(dependency)]; + case 2: + _a.sent(); + _a.label = 3; + case 3: + _i++; + return [3 /*break*/, 1]; + case 4: + if (installedDeps.length || updatedDeps.length) { + fs_1.writeFileSync(app_paths_1.resolve.tauri('Cargo.toml'), toml_1.default.stringify(manifest)); + } + if (updatedDeps.length) { + if (!fs_1.existsSync(app_paths_1.resolve.tauri('Cargo.lock'))) { + spawn_1.spawnSync('cargo', ['generate-lockfile'], app_paths_1.tauriDir); + } + spawn_1.spawnSync('cargo', __spreadArray([ + 'update', + '--aggressive' + ], updatedDeps.reduce(function (initialValue, dep) { return __spreadArray(__spreadArray([], initialValue), ['-p', dep]); }, [])), app_paths_1.tauriDir); + } + result.set(types_1.ManagementType.Install, installedDeps); + result.set(types_1.ManagementType.Update, updatedDeps); + return [2 /*return*/, result]; + } + }); + }); +} +function install() { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Install)]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.install = install; +function update() { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Update)]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.update = update; + + +/***/ }), + +/***/ "./src/api/dependency-manager/index.ts": +/*!*********************************************!*\ + !*** ./src/api/dependency-manager/index.ts ***! + \*********************************************/ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var logger_1 = __importDefault(__webpack_require__(/*! ../../helpers/logger */ "./src/helpers/logger.ts")); +var rust = __importStar(__webpack_require__(/*! ./rust */ "./src/api/dependency-manager/rust.ts")); +var cargoCrates = __importStar(__webpack_require__(/*! ./cargo-crates */ "./src/api/dependency-manager/cargo-crates.ts")); +var npmPackages = __importStar(__webpack_require__(/*! ./npm-packages */ "./src/api/dependency-manager/npm-packages.ts")); +var log = logger_1.default('dependency:manager'); +module.exports = { + installDependencies: function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + log('Installing missing dependencies...'); + return [4 /*yield*/, rust.install()]; + case 1: + _a.sent(); + return [4 /*yield*/, cargoCrates.install()]; + case 2: + _a.sent(); + return [4 /*yield*/, npmPackages.install()]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }, + updateDependencies: function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + log('Updating dependencies...'); + return [4 /*yield*/, rust.update()]; + case 1: + _a.sent(); + return [4 /*yield*/, cargoCrates.update()]; + case 2: + _a.sent(); + return [4 /*yield*/, npmPackages.update()]; + case 3: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + } +}; + + +/***/ }), + +/***/ "./src/api/dependency-manager/managers/index.ts": +/*!******************************************************!*\ + !*** ./src/api/dependency-manager/managers/index.ts ***! + \******************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__webpack_require__(/*! ./yarn-manager */ "./src/api/dependency-manager/managers/yarn-manager.ts"), exports); +__exportStar(__webpack_require__(/*! ./npm-manager */ "./src/api/dependency-manager/managers/npm-manager.ts"), exports); +__exportStar(__webpack_require__(/*! ./pnpm-manager */ "./src/api/dependency-manager/managers/pnpm-manager.ts"), exports); +__exportStar(__webpack_require__(/*! ./types */ "./src/api/dependency-manager/managers/types.ts"), exports); + + +/***/ }), + +/***/ "./src/api/dependency-manager/managers/npm-manager.ts": +/*!************************************************************!*\ + !*** ./src/api/dependency-manager/managers/npm-manager.ts ***! + \************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.NpmManager = void 0; +var cross_spawn_1 = __webpack_require__(/*! cross-spawn */ "cross-spawn"); +var spawn_1 = __webpack_require__(/*! ../../../helpers/spawn */ "./src/helpers/spawn.ts"); +var app_paths_1 = __webpack_require__(/*! ../../../helpers/app-paths */ "./src/helpers/app-paths.ts"); +var NpmManager = /** @class */ (function () { + function NpmManager() { + this.type = 'npm'; + } + NpmManager.prototype.installPackage = function (packageName) { + spawn_1.spawnSync('npm', ['install', packageName], app_paths_1.appDir); + }; + NpmManager.prototype.installDevPackage = function (packageName) { + spawn_1.spawnSync('npm', ['install', packageName, '--save-dev'], app_paths_1.appDir); + }; + NpmManager.prototype.updatePackage = function (packageName) { + spawn_1.spawnSync('npm', ['install', packageName + "@latest"], app_paths_1.appDir); + }; + NpmManager.prototype.getPackageVersion = function (packageName) { + var child = cross_spawn_1.sync('npm', ['list', packageName, 'version', '--depth', '0'], { + cwd: app_paths_1.appDir + }); + var output = String(child.output[1]); + // eslint-disable-next-line security/detect-non-literal-regexp + var matches = new RegExp(packageName + '@(\\S+)', 'g').exec(output); + if (matches === null || matches === void 0 ? void 0 : matches[1]) { + return matches[1]; + } + else { + return null; + } + }; + NpmManager.prototype.getLatestVersion = function (packageName) { + var child = cross_spawn_1.sync('npm', ['show', packageName, 'version'], { + cwd: app_paths_1.appDir + }); + return String(child.output[1]).replace('\n', ''); + }; + return NpmManager; +}()); +exports.NpmManager = NpmManager; + + +/***/ }), + +/***/ "./src/api/dependency-manager/managers/pnpm-manager.ts": +/*!*************************************************************!*\ + !*** ./src/api/dependency-manager/managers/pnpm-manager.ts ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PnpmManager = void 0; +var cross_spawn_1 = __webpack_require__(/*! cross-spawn */ "cross-spawn"); +var spawn_1 = __webpack_require__(/*! ../../../helpers/spawn */ "./src/helpers/spawn.ts"); +var app_paths_1 = __webpack_require__(/*! ../../../helpers/app-paths */ "./src/helpers/app-paths.ts"); +var PnpmManager = /** @class */ (function () { + function PnpmManager() { + this.type = 'pnpm'; + } + PnpmManager.prototype.installPackage = function (packageName) { + spawn_1.spawnSync('pnpm', ['add', packageName], app_paths_1.appDir); + }; + PnpmManager.prototype.installDevPackage = function (packageName) { + spawn_1.spawnSync('pnpm', ['add', packageName, '--save-dev'], app_paths_1.appDir); + }; + PnpmManager.prototype.updatePackage = function (packageName) { + spawn_1.spawnSync('pnpm', ['add', packageName + "@latest"], app_paths_1.appDir); + }; + PnpmManager.prototype.getPackageVersion = function (packageName) { + var child = cross_spawn_1.sync('pnpm', ['list', packageName, 'version', '--depth', '0'], { + cwd: app_paths_1.appDir + }); + var output = String(child.output[1]); + // eslint-disable-next-line security/detect-non-literal-regexp + var matches = new RegExp(packageName + ' (\\S+)', 'g').exec(output); + if (matches === null || matches === void 0 ? void 0 : matches[1]) { + return matches[1]; + } + else { + return null; + } + }; + PnpmManager.prototype.getLatestVersion = function (packageName) { + var child = cross_spawn_1.sync('pnpm', ['info', packageName, 'version'], { + cwd: app_paths_1.appDir + }); + return String(child.output[1]).replace('\n', ''); + }; + return PnpmManager; +}()); +exports.PnpmManager = PnpmManager; + + +/***/ }), + +/***/ "./src/api/dependency-manager/managers/types.ts": +/*!******************************************************!*\ + !*** ./src/api/dependency-manager/managers/types.ts ***! + \******************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), + +/***/ "./src/api/dependency-manager/managers/yarn-manager.ts": +/*!*************************************************************!*\ + !*** ./src/api/dependency-manager/managers/yarn-manager.ts ***! + \*************************************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.YarnManager = void 0; +var cross_spawn_1 = __webpack_require__(/*! cross-spawn */ "cross-spawn"); +var spawn_1 = __webpack_require__(/*! ../../../helpers/spawn */ "./src/helpers/spawn.ts"); +var app_paths_1 = __webpack_require__(/*! ../../../helpers/app-paths */ "./src/helpers/app-paths.ts"); +var YarnManager = /** @class */ (function () { + function YarnManager() { + this.type = 'yarn'; + } + YarnManager.prototype.installPackage = function (packageName) { + spawn_1.spawnSync('yarn', ['add', packageName], app_paths_1.appDir); + }; + YarnManager.prototype.installDevPackage = function (packageName) { + spawn_1.spawnSync('yarn', ['add', packageName, '--dev'], app_paths_1.appDir); + }; + YarnManager.prototype.updatePackage = function (packageName) { + spawn_1.spawnSync('yarn', ['upgrade', packageName, '--latest'], app_paths_1.appDir); + }; + YarnManager.prototype.getPackageVersion = function (packageName) { + var child = cross_spawn_1.sync('yarn', ['list', '--pattern', packageName, '--depth', '0'], { cwd: app_paths_1.appDir }); + var output = String(child.output[1]); + // eslint-disable-next-line security/detect-non-literal-regexp + var matches = new RegExp(packageName + '@(\\S+)', 'g').exec(output); + if (matches === null || matches === void 0 ? void 0 : matches[1]) { + return matches[1]; + } + else { + return null; + } + }; + YarnManager.prototype.getLatestVersion = function (packageName) { + var child = cross_spawn_1.sync('yarn', ['info', packageName, 'version', '--json'], { cwd: app_paths_1.appDir }); + var output = String(child.output[1]); + var packageJson = JSON.parse(output); + return packageJson.data; + }; + return YarnManager; +}()); +exports.YarnManager = YarnManager; + + +/***/ }), + +/***/ "./src/api/dependency-manager/npm-packages.ts": +/*!****************************************************!*\ + !*** ./src/api/dependency-manager/npm-packages.ts ***! + \****************************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.update = exports.installTheseDev = exports.installThese = exports.install = void 0; +var types_1 = __webpack_require__(/*! ./types */ "./src/api/dependency-manager/types.ts"); +var util_1 = __webpack_require__(/*! ./util */ "./src/api/dependency-manager/util.ts"); +var logger_1 = __importDefault(__webpack_require__(/*! ../../helpers/logger */ "./src/helpers/logger.ts")); +var app_paths_1 = __webpack_require__(/*! ../../helpers/app-paths */ "./src/helpers/app-paths.ts"); +var inquirer_1 = __importDefault(__webpack_require__(/*! inquirer */ "inquirer")); +var fs_1 = __webpack_require__(/*! fs */ "fs"); +var cross_spawn_1 = __webpack_require__(/*! cross-spawn */ "cross-spawn"); +var log = logger_1.default('dependency:npm-packages'); +function manageDependencies(managementType, dependencies) { + var _a, _b, _c; + return __awaiter(this, void 0, void 0, function () { + var installedDeps, updatedDeps, npmChild, yarnChild, pnpmChild, _i, dependencies_1, dependency, currentVersion, packageManager, prefix, inquired, latestVersion, inquired, result; + return __generator(this, function (_d) { + switch (_d.label) { + case 0: + installedDeps = []; + updatedDeps = []; + npmChild = cross_spawn_1.sync('npm', ['--version']); + yarnChild = cross_spawn_1.sync('yarn', ['--version']); + pnpmChild = cross_spawn_1.sync('pnpm', ['--version']); + if (((_a = npmChild.status) !== null && _a !== void 0 ? _a : npmChild.error) && + ((_b = yarnChild.status) !== null && _b !== void 0 ? _b : yarnChild.error) && + ((_c = pnpmChild.status) !== null && _c !== void 0 ? _c : pnpmChild.error)) { + throw new Error('must have installed one of the following package managers `npm`, `yarn`, `pnpm` to manage dependenices'); + } + if (!fs_1.existsSync(app_paths_1.resolve.app('package.json'))) return [3 /*break*/, 10]; + _i = 0, dependencies_1 = dependencies; + _d.label = 1; + case 1: + if (!(_i < dependencies_1.length)) return [3 /*break*/, 10]; + dependency = dependencies_1[_i]; + currentVersion = util_1.getNpmPackageVersion(dependency); + packageManager = util_1.getManager().type.toUpperCase(); + if (!(currentVersion === null)) return [3 /*break*/, 4]; + log("Installing " + dependency + "..."); + if (!(managementType === types_1.ManagementType.Install || + managementType === types_1.ManagementType.InstallDev)) return [3 /*break*/, 3]; + prefix = managementType === types_1.ManagementType.InstallDev + ? ' as dev-dependency' + : ''; + return [4 /*yield*/, inquirer_1.default.prompt([ + { + type: 'confirm', + name: 'answer', + message: "[" + packageManager + "]: \"Do you want to install " + dependency + prefix + "?\"", + default: false + } + ])]; + case 2: + inquired = _d.sent(); + if (inquired.answer) { + if (managementType === types_1.ManagementType.Install) { + util_1.installNpmPackage(dependency); + } + else if (managementType === types_1.ManagementType.InstallDev) { + util_1.installNpmDevPackage(dependency); + } + installedDeps.push(dependency); + } + _d.label = 3; + case 3: return [3 /*break*/, 9]; + case 4: + if (!(managementType === types_1.ManagementType.Update)) return [3 /*break*/, 8]; + latestVersion = util_1.getNpmLatestVersion(dependency); + if (!util_1.semverLt(currentVersion, latestVersion)) return [3 /*break*/, 6]; + return [4 /*yield*/, inquirer_1.default.prompt([ + { + type: 'confirm', + name: 'answer', + message: "[" + packageManager + "]: \"" + dependency + "\" latest version is " + latestVersion + ". Do you want to update?", + default: false + } + ])]; + case 5: + inquired = _d.sent(); + if (inquired.answer) { + log("Updating " + dependency + "..."); + util_1.updateNpmPackage(dependency); + updatedDeps.push(dependency); + } + return [3 /*break*/, 7]; + case 6: + log("\"" + dependency + "\" is up to date"); + _d.label = 7; + case 7: return [3 /*break*/, 9]; + case 8: + log("\"" + dependency + "\" is already installed"); + _d.label = 9; + case 9: + _i++; + return [3 /*break*/, 1]; + case 10: + result = new Map(); + result.set(types_1.ManagementType.Install, installedDeps); + result.set(types_1.ManagementType.Update, updatedDeps); + return [2 /*return*/, result]; + } + }); + }); +} +var dependencies = ['@tauri-apps/api', '@tauri-apps/cli']; +function install() { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Install, dependencies)]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.install = install; +function installThese(dependencies) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Install, dependencies)]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.installThese = installThese; +function installTheseDev(dependencies) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.InstallDev, dependencies)]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.installTheseDev = installTheseDev; +function update() { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Update, dependencies)]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.update = update; + + +/***/ }), + +/***/ "./src/api/dependency-manager/rust.ts": +/*!********************************************!*\ + !*** ./src/api/dependency-manager/rust.ts ***! + \********************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.update = exports.install = void 0; +var types_1 = __webpack_require__(/*! ./types */ "./src/api/dependency-manager/types.ts"); +var spawn_1 = __webpack_require__(/*! ../../helpers/spawn */ "./src/helpers/spawn.ts"); +var get_script_version_1 = __importDefault(__webpack_require__(/*! ../../helpers/get-script-version */ "./src/helpers/get-script-version.ts")); +var download_binary_1 = __webpack_require__(/*! ../../helpers/download-binary */ "./src/helpers/download-binary.ts"); +var logger_1 = __importDefault(__webpack_require__(/*! ../../helpers/logger */ "./src/helpers/logger.ts")); +var fs_1 = __webpack_require__(/*! fs */ "fs"); +var path_1 = __webpack_require__(/*! path */ "path"); +var os_1 = __webpack_require__(/*! os */ "os"); +var https_1 = __importDefault(__webpack_require__(/*! https */ "https")); +var log = logger_1.default('dependency:rust'); +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function download(url, dest) { + return __awaiter(this, void 0, void 0, function () { + var file; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + file = fs_1.createWriteStream(dest); + return [4 /*yield*/, new Promise(function (resolve, reject) { + https_1.default + .get(url, function (response) { + response.pipe(file); + file.on('finish', function () { + file.close(); + resolve(); + }); + }) + .on('error', function (err) { + fs_1.unlinkSync(dest); + reject(err.message); + }); + })]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +function installRustup() { + return __awaiter(this, void 0, void 0, function () { + var assetName, rustupPath; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + assetName = os_1.platform() === 'win32' ? 'rustup-init.exe' : 'rustup-init.sh'; + rustupPath = path_1.resolve(__dirname, "../../bin/" + assetName); + if (!!fs_1.existsSync(rustupPath)) return [3 /*break*/, 2]; + return [4 /*yield*/, download_binary_1.downloadRustup()]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + if (os_1.platform() === 'win32') { + return [2 /*return*/, spawn_1.spawnSync('powershell', ['-NoProfile', rustupPath], process.cwd())]; + } + return [2 /*return*/, spawn_1.spawnSync('/bin/sh', [rustupPath], process.cwd())]; + } + }); + }); +} +function manageDependencies(managementType) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!(get_script_version_1.default('rustup') === null)) return [3 /*break*/, 2]; + log('Installing rustup...'); + return [4 /*yield*/, installRustup()]; + case 1: + _a.sent(); + _a.label = 2; + case 2: + if (managementType === types_1.ManagementType.Update) { + spawn_1.spawnSync('rustup', ['update'], process.cwd()); + } + return [2 /*return*/]; + } + }); + }); +} +function install() { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Install)]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.install = install; +function update() { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Update)]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.update = update; + + +/***/ }), + +/***/ "./src/api/dependency-manager/types.ts": +/*!*********************************************!*\ + !*** ./src/api/dependency-manager/types.ts ***! + \*********************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ManagementType = void 0; +var ManagementType; +(function (ManagementType) { + ManagementType[ManagementType["Install"] = 0] = "Install"; + ManagementType[ManagementType["InstallDev"] = 1] = "InstallDev"; + ManagementType[ManagementType["Update"] = 2] = "Update"; +})(ManagementType = exports.ManagementType || (exports.ManagementType = {})); + + +/***/ }), + +/***/ "./src/api/dependency-manager/util.ts": +/*!********************************************!*\ + !*** ./src/api/dependency-manager/util.ts ***! + \********************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.semverLt = exports.padVersion = exports.updateNpmPackage = exports.installNpmDevPackage = exports.installNpmPackage = exports.getNpmPackageVersion = exports.getNpmLatestVersion = exports.getCrateLatestVersion = exports.getManager = void 0; +var cross_spawn_1 = __webpack_require__(/*! cross-spawn */ "cross-spawn"); +var app_paths_1 = __webpack_require__(/*! ../../helpers/app-paths */ "./src/helpers/app-paths.ts"); +var fs_1 = __webpack_require__(/*! fs */ "fs"); +// import semver from 'semver' +var managers_1 = __webpack_require__(/*! ./managers */ "./src/api/dependency-manager/managers/index.ts"); +var getManager = function () { + if (fs_1.existsSync(app_paths_1.resolve.app('yarn.lock'))) { + return new managers_1.YarnManager(); + } + else if (fs_1.existsSync(app_paths_1.resolve.app('pnpm-lock.yaml'))) { + return new managers_1.PnpmManager(); + } + else { + return new managers_1.NpmManager(); + } +}; +exports.getManager = getManager; +function getCrateLatestVersion(crateName) { + var child = cross_spawn_1.sync('cargo', ['search', crateName, '--limit', '1']); + var output = String(child.output[1]); + // eslint-disable-next-line security/detect-non-literal-regexp + var matches = new RegExp(crateName + ' = "(\\S+)"', 'g').exec(output); + if (matches === null || matches === void 0 ? void 0 : matches[1]) { + return matches[1]; + } + else { + return null; + } +} +exports.getCrateLatestVersion = getCrateLatestVersion; +function getNpmLatestVersion(packageName) { + return getManager().getLatestVersion(packageName); +} +exports.getNpmLatestVersion = getNpmLatestVersion; +function getNpmPackageVersion(packageName) { + return getManager().getPackageVersion(packageName); +} +exports.getNpmPackageVersion = getNpmPackageVersion; +function installNpmPackage(packageName) { + return getManager().installPackage(packageName); +} +exports.installNpmPackage = installNpmPackage; +function installNpmDevPackage(packageName) { + return getManager().installDevPackage(packageName); +} +exports.installNpmDevPackage = installNpmDevPackage; +function updateNpmPackage(packageName) { + return getManager().updatePackage(packageName); +} +exports.updateNpmPackage = updateNpmPackage; +function padVersion(version) { + var _a; + var count = ((_a = version.match(/\./g)) !== null && _a !== void 0 ? _a : []).length; + while (count < 2) { + count++; + version += '.0'; + } + return version; +} +exports.padVersion = padVersion; +function semverLt(first, second) { + return first !== second; + // TODO: When version 1.0.0 is released this code should work again + // return semver.lt(padVersion(first), padVersion(second)) +} +exports.semverLt = semverLt; + + +/***/ }), + +/***/ "./src/helpers/app-paths.ts": +/*!**********************************!*\ + !*** ./src/helpers/app-paths.ts ***! + \**********************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.resolve = exports.tauriDir = exports.appDir = void 0; +var fs_1 = __webpack_require__(/*! fs */ "fs"); +var path_1 = __webpack_require__(/*! path */ "path"); +var logger_1 = __importDefault(__webpack_require__(/*! ./logger */ "./src/helpers/logger.ts")); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var warn = logger_1.default('tauri', chalk_1.default.red); +function resolvePath(basePath, dir) { + return dir && path_1.isAbsolute(dir) ? dir : path_1.resolve(basePath, dir); +} +var getAppDir = function () { + var dir = process.cwd(); + var count = 0; + // only go up three folders max + while (dir.length > 0 && !dir.endsWith(path_1.sep) && count <= 2) { + if (fs_1.existsSync(path_1.join(dir, 'src-tauri', 'tauri.conf.json'))) { + return dir; + } + count++; + dir = path_1.normalize(path_1.join(dir, '..')); + } + warn("Couldn't find recognize the current folder as a part of a Tauri project"); + process.exit(1); +}; +var appDir = getAppDir(); +exports.appDir = appDir; +var tauriDir = path_1.resolve(appDir, 'src-tauri'); +exports.tauriDir = tauriDir; +var resolveDir = { + app: function (dir) { return resolvePath(appDir, dir); }, + tauri: function (dir) { return resolvePath(tauriDir, dir); } +}; +exports.resolve = resolveDir; + + +/***/ }), + +/***/ "./src/helpers/download-binary.ts": +/*!****************************************!*\ + !*** ./src/helpers/download-binary.ts ***! + \****************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.downloadRustup = exports.downloadCli = void 0; +var stream_1 = __importDefault(__webpack_require__(/*! stream */ "stream")); +var util_1 = __webpack_require__(/*! util */ "util"); +var fs_1 = __importDefault(__webpack_require__(/*! fs */ "fs")); +var got_1 = __importDefault(__webpack_require__(/*! got */ "got")); +var path_1 = __importDefault(__webpack_require__(/*! path */ "path")); +var pipeline = util_1.promisify(stream_1.default.pipeline); +// Webpack reads the file at build-time, so this becomes a static var +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access +var tauriCliManifest = __webpack_require__(/*! ../../../cli.rs/Cargo.toml */ "../cli.rs/Cargo.toml"); +var downloads = {}; +function downloadBinaryRelease(tag, asset, outPath) { + return __awaiter(this, void 0, void 0, function () { + var url, removeDownloadedCliIfNeeded; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + url = "https://github.com/tauri-apps/binary-releases/releases/download/" + tag + "/" + asset; + removeDownloadedCliIfNeeded = function () { + try { + if (!(url in downloads)) { + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.unlinkSync(outPath); + } + } + finally { + process.exit(); + } + }; + // on exit, we remove the `tauri-cli` file if the download didn't complete + process.on('exit', removeDownloadedCliIfNeeded); + process.on('SIGINT', removeDownloadedCliIfNeeded); + process.on('SIGTERM', removeDownloadedCliIfNeeded); + process.on('SIGHUP', removeDownloadedCliIfNeeded); + process.on('SIGBREAK', removeDownloadedCliIfNeeded); + // TODO: Check hash of download + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename + return [4 /*yield*/, pipeline(got_1.default.stream(url), fs_1.default.createWriteStream(outPath)).catch(function (e) { + try { + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.unlinkSync(outPath); + } + catch (_a) { } + throw e; + }) + // eslint-disable-next-line security/detect-object-injection + ]; + case 1: + // TODO: Check hash of download + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename + _a.sent(); + // eslint-disable-next-line security/detect-object-injection + downloads[url] = true; + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.chmodSync(outPath, 448); + console.log('Download Complete'); + return [2 /*return*/]; + } + }); + }); +} +function downloadCli() { + return __awaiter(this, void 0, void 0, function () { + var version, platform, extension, outPath; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + version = tauriCliManifest.package.version; + platform = process.platform; + if (platform === 'win32') { + platform = 'windows'; + } + else if (platform === 'linux') { + platform = 'linux'; + } + else if (platform === 'darwin') { + platform = 'macos'; + } + else { + throw Error('Unsupported platform'); + } + extension = platform === 'windows' ? '.exe' : ''; + outPath = path_1.default.join(__dirname, "../../bin/tauri-cli" + extension); + console.log('Downloading Rust CLI...'); + return [4 /*yield*/, downloadBinaryRelease("tauri-cli-v" + version, "tauri-cli_" + platform + extension, outPath)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); +} +exports.downloadCli = downloadCli; +function downloadRustup() { + return __awaiter(this, void 0, void 0, function () { + var assetName; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + assetName = process.platform === 'win32' ? 'rustup-init.exe' : 'rustup-init.sh'; + console.log('Downloading Rustup...'); + return [4 /*yield*/, downloadBinaryRelease('rustup', assetName, path_1.default.join(__dirname, "../../bin/" + assetName))]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.downloadRustup = downloadRustup; + + +/***/ }), + +/***/ "./src/helpers/get-script-version.ts": +/*!*******************************************!*\ + !*** ./src/helpers/get-script-version.ts ***! + \*******************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __spreadArray = (this && this.__spreadArray) || function (to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var cross_spawn_1 = __webpack_require__(/*! cross-spawn */ "cross-spawn"); +function getVersion(command, args) { + if (args === void 0) { args = []; } + try { + var child = cross_spawn_1.sync(command, __spreadArray(__spreadArray([], args), ['--version'])); + if (child.status === 0) { + var output = String(child.output[1]); + return output.replace(/\n/g, ''); + } + return null; + } + catch (err) { + return null; + } +} +exports.default = getVersion; + + +/***/ }), + +/***/ "./src/helpers/logger.ts": +/*!*******************************!*\ + !*** ./src/helpers/logger.ts ***! + \*******************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var ms_1 = __importDefault(__webpack_require__(/*! ms */ "ms")); +var prevTime; +exports.default = (function (banner, color) { + if (color === void 0) { color = chalk_1.default.green; } + return function (msg) { + var curr = +new Date(); + var diff = curr - (prevTime || curr); + prevTime = curr; + if (msg) { + console.log( + // TODO: proper typings for color and banner + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call + " " + color(String(banner)) + " " + msg + " " + chalk_1.default.green("+" + ms_1.default(diff))); + } + else { + console.log(); + } + }; +}); + + +/***/ }), + +/***/ "./src/helpers/spawn.ts": +/*!******************************!*\ + !*** ./src/helpers/spawn.ts ***! + \******************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.spawnSync = exports.spawn = void 0; +var cross_spawn_1 = __importDefault(__webpack_require__(/*! cross-spawn */ "cross-spawn")); +var logger_1 = __importDefault(__webpack_require__(/*! ./logger */ "./src/helpers/logger.ts")); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var log = logger_1.default('app:spawn'); +var warn = logger_1.default('app:spawn', chalk_1.default.red); +/* + Returns pid, takes onClose + */ +var spawn = function (cmd, params, cwd, onClose) { + var _a; + log("Running \"" + cmd + " " + params.join(' ') + "\""); + log(); + // TODO: move to execa? + var runner = cross_spawn_1.default(cmd, params, { + stdio: 'inherit', + cwd: cwd, + env: process.env + }); + runner.on('close', function (code) { + var _a; + log(); + if (code) { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + log("Command \"" + cmd + "\" failed with exit code: " + code); + } + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain + onClose && onClose(code !== null && code !== void 0 ? code : 0, (_a = runner.pid) !== null && _a !== void 0 ? _a : 0); + }); + return (_a = runner.pid) !== null && _a !== void 0 ? _a : 0; +}; +exports.spawn = spawn; +/* + Returns nothing, takes onFail + */ +var spawnSync = function (cmd, params, cwd, onFail) { + log("[sync] Running \"" + cmd + " " + params.join(' ') + "\""); + log(); + var runner = cross_spawn_1.default.sync(cmd, params, { + stdio: 'inherit', + cwd: cwd + }); + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + if (runner.status || runner.error) { + warn(); + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + warn("\u26A0\uFE0F Command \"" + cmd + "\" failed with exit code: " + runner.status); + if (runner.status === null) { + warn("\u26A0\uFE0F Please globally install \"" + cmd + "\""); + } + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain + onFail && onFail(); + process.exit(1); + } +}; +exports.spawnSync = spawnSync; + + +/***/ }), + +/***/ "@tauri-apps/toml": +/*!***********************************!*\ + !*** external "@tauri-apps/toml" ***! + \***********************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("@tauri-apps/toml");; + +/***/ }), + +/***/ "chalk": +/*!************************!*\ + !*** external "chalk" ***! + \************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("chalk");; + +/***/ }), + +/***/ "cross-spawn": +/*!******************************!*\ + !*** external "cross-spawn" ***! + \******************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("cross-spawn");; + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("fs");; + +/***/ }), + +/***/ "got": +/*!**********************!*\ + !*** external "got" ***! + \**********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("got");; + +/***/ }), + +/***/ "https": +/*!************************!*\ + !*** external "https" ***! + \************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("https");; + +/***/ }), + +/***/ "inquirer": +/*!***************************!*\ + !*** external "inquirer" ***! + \***************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("inquirer");; + +/***/ }), + +/***/ "ms": +/*!*********************!*\ + !*** external "ms" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("ms");; + +/***/ }), + +/***/ "os": +/*!*********************!*\ + !*** external "os" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("os");; + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("path");; + +/***/ }), + +/***/ "stream": +/*!*************************!*\ + !*** external "stream" ***! + \*************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("stream");; + +/***/ }), + +/***/ "util": +/*!***********************!*\ + !*** external "util" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("util");; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__("./src/api/dependency-manager/index.ts"); +/******/ +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=dependency-manager.js.map \ No newline at end of file diff --git a/tooling/cli.js/dist/api/dependency-manager.js.map b/tooling/cli.js/dist/api/dependency-manager.js.map new file mode 100644 index 000000000..649270d6d --- /dev/null +++ b/tooling/cli.js/dist/api/dependency-manager.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://tauri/webpack/universalModuleDefinition","webpack://tauri/../cli.rs/Cargo.toml","webpack://tauri/./src/api/dependency-manager/cargo-crates.ts","webpack://tauri/./src/api/dependency-manager/index.ts","webpack://tauri/./src/api/dependency-manager/managers/index.ts","webpack://tauri/./src/api/dependency-manager/managers/npm-manager.ts","webpack://tauri/./src/api/dependency-manager/managers/pnpm-manager.ts","webpack://tauri/./src/api/dependency-manager/managers/types.ts","webpack://tauri/./src/api/dependency-manager/managers/yarn-manager.ts","webpack://tauri/./src/api/dependency-manager/npm-packages.ts","webpack://tauri/./src/api/dependency-manager/rust.ts","webpack://tauri/./src/api/dependency-manager/types.ts","webpack://tauri/./src/api/dependency-manager/util.ts","webpack://tauri/./src/helpers/app-paths.ts","webpack://tauri/./src/helpers/download-binary.ts","webpack://tauri/./src/helpers/get-script-version.ts","webpack://tauri/./src/helpers/logger.ts","webpack://tauri/./src/helpers/spawn.ts","webpack://tauri/external \"@tauri-apps/toml\"","webpack://tauri/external \"chalk\"","webpack://tauri/external \"cross-spawn\"","webpack://tauri/external \"fs\"","webpack://tauri/external \"got\"","webpack://tauri/external \"https\"","webpack://tauri/external \"inquirer\"","webpack://tauri/external \"ms\"","webpack://tauri/external \"os\"","webpack://tauri/external \"path\"","webpack://tauri/external \"stream\"","webpack://tauri/external \"util\"","webpack://tauri/webpack/bootstrap","webpack://tauri/webpack/startup"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;ACVA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,C;;;;;;;;;;;AC5Ga;AACb;AACA;AACA;AACA;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,oDAAoD,QAAQ;AAC5D;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,GAAG,eAAe;AAChC,cAAc,mBAAO,CAAC,qDAAuB;AAC7C,cAAc,mBAAO,CAAC,sDAAS;AAC/B,aAAa,mBAAO,CAAC,oDAAQ;AAC7B,+BAA+B,mBAAO,CAAC,qDAAsB;AAC7D,kBAAkB,mBAAO,CAAC,2DAAyB;AACnD,WAAW,mBAAO,CAAC,cAAI;AACvB,6BAA6B,mBAAO,CAAC,0CAAkB;AACvD,iCAAiC,mBAAO,CAAC,0BAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,gCAAgC,EAAE;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,oEAAoE,EAAE;AAClJ;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,cAAc;;;;;;;;;;;;ACtMD;AACb;AACA;AACA;AACA;AACA;AACA,kCAAkC,oCAAoC,aAAa,EAAE,EAAE;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,yCAAyC,6BAA6B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,+BAA+B,mBAAO,CAAC,qDAAsB;AAC7D,wBAAwB,mBAAO,CAAC,oDAAQ;AACxC,+BAA+B,mBAAO,CAAC,oEAAgB;AACvD,+BAA+B,mBAAO,CAAC,oEAAgB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;;;;;;;;;;;;AC7Ga;AACb;AACA;AACA,kCAAkC,oCAAoC,aAAa,EAAE,EAAE;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,aAAa,mBAAO,CAAC,6EAAgB;AACrC,aAAa,mBAAO,CAAC,2EAAe;AACpC,aAAa,mBAAO,CAAC,6EAAgB;AACrC,aAAa,mBAAO,CAAC,+DAAS;;;;;;;;;;;;ACfjB;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,kBAAkB;AAClB,oBAAoB,mBAAO,CAAC,gCAAa;AACzC,cAAc,mBAAO,CAAC,sDAAwB;AAC9C,kBAAkB,mBAAO,CAAC,8DAA4B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD,kBAAkB;;;;;;;;;;;;ACzCL;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,mBAAmB;AACnB,oBAAoB,mBAAO,CAAC,gCAAa;AACzC,cAAc,mBAAO,CAAC,sDAAwB;AAC9C,kBAAkB,mBAAO,CAAC,8DAA4B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD,mBAAmB;;;;;;;;;;;;ACzCN;AACb,8CAA6C,CAAC,cAAc,EAAC;;;;;;;;;;;;ACDhD;AACb,8CAA6C,CAAC,cAAc,EAAC;AAC7D,mBAAmB;AACnB,oBAAoB,mBAAO,CAAC,gCAAa;AACzC,cAAc,mBAAO,CAAC,sDAAwB;AAC9C,kBAAkB,mBAAO,CAAC,8DAA4B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,0BAA0B;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,0BAA0B;AACtH;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,mBAAmB;;;;;;;;;;;;ACvCN;AACb;AACA;AACA;AACA;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,GAAG,uBAAuB,GAAG,oBAAoB,GAAG,eAAe;AACjF,cAAc,mBAAO,CAAC,sDAAS;AAC/B,aAAa,mBAAO,CAAC,oDAAQ;AAC7B,+BAA+B,mBAAO,CAAC,qDAAsB;AAC7D,kBAAkB,mBAAO,CAAC,2DAAyB;AACnD,iCAAiC,mBAAO,CAAC,0BAAU;AACnD,WAAW,mBAAO,CAAC,cAAI;AACvB,oBAAoB,mBAAO,CAAC,gCAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,cAAc;;;;;;;;;;;;AC7LD;AACb;AACA;AACA;AACA;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,GAAG,eAAe;AAChC,cAAc,mBAAO,CAAC,sDAAS;AAC/B,cAAc,mBAAO,CAAC,mDAAqB;AAC3C,2CAA2C,mBAAO,CAAC,6EAAkC;AACrF,wBAAwB,mBAAO,CAAC,uEAA+B;AAC/D,+BAA+B,mBAAO,CAAC,qDAAsB;AAC7D,WAAW,mBAAO,CAAC,cAAI;AACvB,aAAa,mBAAO,CAAC,kBAAM;AAC3B,WAAW,mBAAO,CAAC,cAAI;AACvB,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,cAAc;;;;;;;;;;;;ACjJD;AACb;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C,sBAAsB,KAAK;;;;;;;;;;;;ACX7D;AACb;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,gBAAgB,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,4BAA4B,GAAG,yBAAyB,GAAG,4BAA4B,GAAG,2BAA2B,GAAG,6BAA6B,GAAG,kBAAkB;AAC7O,oBAAoB,mBAAO,CAAC,gCAAa;AACzC,kBAAkB,mBAAO,CAAC,2DAAyB;AACnD,WAAW,mBAAO,CAAC,cAAI;AACvB;AACA,iBAAiB,mBAAO,CAAC,kEAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;;;;;;;;;;;ACvEH;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,eAAe,GAAG,gBAAgB,GAAG,cAAc;AACnD,WAAW,mBAAO,CAAC,cAAI;AACvB,aAAa,mBAAO,CAAC,kBAAM;AAC3B,+BAA+B,mBAAO,CAAC,yCAAU;AACjD,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,gBAAgB;AAChB;AACA,yBAAyB,iCAAiC,EAAE;AAC5D,2BAA2B,mCAAmC;AAC9D;AACA,eAAe;;;;;;;;;;;;ACvCF;AACb;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,sBAAsB,GAAG,mBAAmB;AAC5C,+BAA+B,mBAAO,CAAC,sBAAQ;AAC/C,aAAa,mBAAO,CAAC,kBAAM;AAC3B,2BAA2B,mBAAO,CAAC,cAAI;AACvC,4BAA4B,mBAAO,CAAC,gBAAK;AACzC,6BAA6B,mBAAO,CAAC,kBAAM;AAC3C;AACA;AACA;AACA,uBAAuB,mBAAO,CAAC,wDAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,sBAAsB;;;;;;;;;;;;ACpJT;AACb;AACA;AACA;AACA;AACA,oDAAoD,QAAQ;AAC5D;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,oBAAoB,mBAAO,CAAC,gCAAa;AACzC;AACA,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACzBF;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C,2BAA2B,mBAAO,CAAC,cAAI;AACvC;AACA,eAAe;AACf,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AC3BY;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,GAAG,aAAa;AACjC,oCAAoC,mBAAO,CAAC,gCAAa;AACzD,+BAA+B,mBAAO,CAAC,yCAAU;AACjD,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;AC/DjB,8C;;;;;;;;;;;ACAA,mC;;;;;;;;;;;ACAA,yC;;;;;;;;;;;ACAA,gC;;;;;;;;;;;ACAA,iC;;;;;;;;;;;ACAA,mC;;;;;;;;;;;ACAA,sC;;;;;;;;;;;ACAA,gC;;;;;;;;;;;ACAA,gC;;;;;;;;;;;ACAA,kC;;;;;;;;;;;ACAA,oC;;;;;;;;;;;ACAA,kC;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UCtBA;UACA;UACA;UACA","file":"api/dependency-manager.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tauri\"] = factory();\n\telse\n\t\troot[\"tauri\"] = factory();\n})(this, function() {\nreturn ","module.exports = {\n\t\"workspace\": {},\n\t\"package\": {\n\t\t\"name\": \"tauri-cli\",\n\t\t\"version\": \"1.0.0-beta.5\",\n\t\t\"authors\": [\n\t\t\t\"Tauri Programme within The Commons Conservancy\"\n\t\t],\n\t\t\"edition\": \"2018\",\n\t\t\"categories\": [\n\t\t\t\"gui\",\n\t\t\t\"web-programming\"\n\t\t],\n\t\t\"license\": \"Apache-2.0 OR MIT\",\n\t\t\"homepage\": \"https://tauri.studio\",\n\t\t\"repository\": \"https://github.com/tauri-apps/tauri\",\n\t\t\"description\": \"Command line interface for building Tauri apps\",\n\t\t\"include\": [\n\t\t\t\"src/\",\n\t\t\t\"/templates\",\n\t\t\t\"MergeModules/\",\n\t\t\t\"*.json\",\n\t\t\t\"*.rs\"\n\t\t]\n\t},\n\t\"bin\": [\n\t\t{\n\t\t\t\"name\": \"cargo-tauri\",\n\t\t\t\"path\": \"src/main.rs\"\n\t\t}\n\t],\n\t\"dependencies\": {\n\t\t\"clap\": {\n\t\t\t\"version\": \"3.0.0-beta.2\",\n\t\t\t\"features\": [\n\t\t\t\t\"yaml\"\n\t\t\t]\n\t\t},\n\t\t\"anyhow\": \"1.0\",\n\t\t\"tauri-bundler\": {\n\t\t\t\"version\": \"1.0.0-beta.3\",\n\t\t\t\"path\": \"../bundler\"\n\t\t},\n\t\t\"colored\": \"2.0\",\n\t\t\"once_cell\": \"1.8\",\n\t\t\"serde\": {\n\t\t\t\"version\": \"1.0\",\n\t\t\t\"features\": [\n\t\t\t\t\"derive\"\n\t\t\t]\n\t\t},\n\t\t\"serde_json\": \"1.0\",\n\t\t\"serde_with\": \"1.9\",\n\t\t\"notify\": \"4.0\",\n\t\t\"shared_child\": \"0.3\",\n\t\t\"toml_edit\": \"0.2\",\n\t\t\"json-patch\": \"0.2\",\n\t\t\"schemars\": \"0.8\",\n\t\t\"toml\": \"0.5\",\n\t\t\"valico\": \"3.6\",\n\t\t\"handlebars\": \"4.1\",\n\t\t\"include_dir\": \"0.6\",\n\t\t\"minisign\": \"0.6\",\n\t\t\"base64\": \"0.13.0\",\n\t\t\"ureq\": \"2.1\",\n\t\t\"os_info\": \"3.0\",\n\t\t\"semver\": \"1.0\",\n\t\t\"regex\": \"1.5\",\n\t\t\"lazy_static\": \"1\",\n\t\t\"libc\": \"0.2\",\n\t\t\"terminal_size\": \"0.1\",\n\t\t\"unicode-width\": \"0.1\",\n\t\t\"tempfile\": \"3\",\n\t\t\"zeroize\": \"1.3\"\n\t},\n\t\"target\": {\n\t\t\"cfg(windows)\": {\n\t\t\t\"dependencies\": {\n\t\t\t\t\"winapi\": {\n\t\t\t\t\t\"version\": \"0.3\",\n\t\t\t\t\t\"features\": [\n\t\t\t\t\t\t\"winbase\",\n\t\t\t\t\t\t\"winuser\",\n\t\t\t\t\t\t\"consoleapi\",\n\t\t\t\t\t\t\"processenv\",\n\t\t\t\t\t\t\"wincon\"\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"encode_unicode\": \"0.3\"\n\t\t\t}\n\t\t},\n\t\t\"cfg(target_os = \\\"linux\\\")\": {\n\t\t\t\"dependencies\": {\n\t\t\t\t\"heck\": \"0.3\"\n\t\t\t}\n\t\t}\n\t},\n\t\"build-dependencies\": {\n\t\t\"schemars\": \"0.8\",\n\t\t\"serde\": {\n\t\t\t\"version\": \"1.0\",\n\t\t\t\"features\": [\n\t\t\t\t\"derive\"\n\t\t\t]\n\t\t},\n\t\t\"serde_json\": \"1.0\",\n\t\t\"serde_with\": \"1.9\"\n\t}\n}","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.update = exports.install = void 0;\r\nvar spawn_1 = require(\"./../../helpers/spawn\");\r\nvar types_1 = require(\"./types\");\r\nvar util_1 = require(\"./util\");\r\nvar logger_1 = __importDefault(require(\"../../helpers/logger\"));\r\nvar app_paths_1 = require(\"../../helpers/app-paths\");\r\nvar fs_1 = require(\"fs\");\r\nvar toml_1 = __importDefault(require(\"@tauri-apps/toml\"));\r\nvar inquirer_1 = __importDefault(require(\"inquirer\"));\r\nvar log = logger_1.default('dependency:crates');\r\nvar dependencies = ['tauri'];\r\nfunction readToml(tomlPath) {\r\n if (fs_1.existsSync(tomlPath)) {\r\n var manifest = fs_1.readFileSync(tomlPath).toString();\r\n return toml_1.default.parse(manifest);\r\n }\r\n return null;\r\n}\r\nfunction dependencyDefinition(version) {\r\n return { version: version.substring(0, version.lastIndexOf('.')) };\r\n}\r\nfunction manageDependencies(managementType) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var installedDeps, updatedDeps, result, manifest, lockPath, lock, _loop_1, _i, dependencies_1, dependency;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n installedDeps = [];\r\n updatedDeps = [];\r\n result = new Map();\r\n manifest = readToml(app_paths_1.resolve.tauri('Cargo.toml'));\r\n if (manifest === null) {\r\n log('Cargo.toml not found. Skipping crates check...');\r\n return [2 /*return*/, result];\r\n }\r\n lockPath = app_paths_1.resolve.tauri('Cargo.lock');\r\n if (!fs_1.existsSync(lockPath)) {\r\n spawn_1.spawnSync('cargo', ['generate-lockfile'], app_paths_1.tauriDir);\r\n }\r\n lock = readToml(lockPath);\r\n _loop_1 = function (dependency) {\r\n var lockPackages, manifestDep, currentVersion, latestVersion, latestVersion, inquired;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n lockPackages = lock\r\n ? lock.package.filter(function (pkg) { return pkg.name === dependency; })\r\n : [];\r\n manifestDep = manifest.dependencies[dependency];\r\n currentVersion = lockPackages.length === 1\r\n ? lockPackages[0].version\r\n : typeof manifestDep === 'string'\r\n ? manifestDep\r\n : manifestDep === null || manifestDep === void 0 ? void 0 : manifestDep.version;\r\n if (!(currentVersion === undefined)) return [3 /*break*/, 1];\r\n log(\"Installing \" + dependency + \"...\");\r\n latestVersion = util_1.getCrateLatestVersion(dependency);\r\n if (latestVersion !== null) {\r\n // eslint-disable-next-line security/detect-object-injection\r\n manifest.dependencies[dependency] = dependencyDefinition(latestVersion);\r\n }\r\n installedDeps.push(dependency);\r\n return [3 /*break*/, 6];\r\n case 1:\r\n if (!(managementType === types_1.ManagementType.Update)) return [3 /*break*/, 5];\r\n latestVersion = util_1.getCrateLatestVersion(dependency);\r\n if (!(latestVersion !== null && util_1.semverLt(currentVersion, latestVersion))) return [3 /*break*/, 3];\r\n return [4 /*yield*/, inquirer_1.default.prompt([\r\n {\r\n type: 'confirm',\r\n name: 'answer',\r\n message: \"[CRATES] \\\"\" + dependency + \"\\\" latest version is \" + latestVersion + \". Do you want to update?\",\r\n default: false\r\n }\r\n ])];\r\n case 2:\r\n inquired = (_b.sent());\r\n if (inquired.answer) {\r\n log(\"Updating \" + dependency + \"...\");\r\n // eslint-disable-next-line security/detect-object-injection\r\n manifest.dependencies[dependency] =\r\n dependencyDefinition(latestVersion);\r\n updatedDeps.push(dependency);\r\n }\r\n return [3 /*break*/, 4];\r\n case 3:\r\n log(\"\\\"\" + dependency + \"\\\" is up to date\");\r\n _b.label = 4;\r\n case 4: return [3 /*break*/, 6];\r\n case 5:\r\n log(\"\\\"\" + dependency + \"\\\" is already installed\");\r\n _b.label = 6;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n };\r\n _i = 0, dependencies_1 = dependencies;\r\n _a.label = 1;\r\n case 1:\r\n if (!(_i < dependencies_1.length)) return [3 /*break*/, 4];\r\n dependency = dependencies_1[_i];\r\n return [5 /*yield**/, _loop_1(dependency)];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n _i++;\r\n return [3 /*break*/, 1];\r\n case 4:\r\n if (installedDeps.length || updatedDeps.length) {\r\n fs_1.writeFileSync(app_paths_1.resolve.tauri('Cargo.toml'), toml_1.default.stringify(manifest));\r\n }\r\n if (updatedDeps.length) {\r\n if (!fs_1.existsSync(app_paths_1.resolve.tauri('Cargo.lock'))) {\r\n spawn_1.spawnSync('cargo', ['generate-lockfile'], app_paths_1.tauriDir);\r\n }\r\n spawn_1.spawnSync('cargo', __spreadArray([\r\n 'update',\r\n '--aggressive'\r\n ], updatedDeps.reduce(function (initialValue, dep) { return __spreadArray(__spreadArray([], initialValue), ['-p', dep]); }, [])), app_paths_1.tauriDir);\r\n }\r\n result.set(types_1.ManagementType.Install, installedDeps);\r\n result.set(types_1.ManagementType.Update, updatedDeps);\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n}\r\nfunction install() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Install)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.install = install;\r\nfunction update() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Update)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.update = update;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar logger_1 = __importDefault(require(\"../../helpers/logger\"));\r\nvar rust = __importStar(require(\"./rust\"));\r\nvar cargoCrates = __importStar(require(\"./cargo-crates\"));\r\nvar npmPackages = __importStar(require(\"./npm-packages\"));\r\nvar log = logger_1.default('dependency:manager');\r\nmodule.exports = {\r\n installDependencies: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n log('Installing missing dependencies...');\r\n return [4 /*yield*/, rust.install()];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, cargoCrates.install()];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, npmPackages.install()];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n },\r\n updateDependencies: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n log('Updating dependencies...');\r\n return [4 /*yield*/, rust.update()];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, cargoCrates.update()];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, npmPackages.update()];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n }\r\n};\r\n","\"use strict\";\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__exportStar(require(\"./yarn-manager\"), exports);\r\n__exportStar(require(\"./npm-manager\"), exports);\r\n__exportStar(require(\"./pnpm-manager\"), exports);\r\n__exportStar(require(\"./types\"), exports);\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.NpmManager = void 0;\r\nvar cross_spawn_1 = require(\"cross-spawn\");\r\nvar spawn_1 = require(\"../../../helpers/spawn\");\r\nvar app_paths_1 = require(\"../../../helpers/app-paths\");\r\nvar NpmManager = /** @class */ (function () {\r\n function NpmManager() {\r\n this.type = 'npm';\r\n }\r\n NpmManager.prototype.installPackage = function (packageName) {\r\n spawn_1.spawnSync('npm', ['install', packageName], app_paths_1.appDir);\r\n };\r\n NpmManager.prototype.installDevPackage = function (packageName) {\r\n spawn_1.spawnSync('npm', ['install', packageName, '--save-dev'], app_paths_1.appDir);\r\n };\r\n NpmManager.prototype.updatePackage = function (packageName) {\r\n spawn_1.spawnSync('npm', ['install', packageName + \"@latest\"], app_paths_1.appDir);\r\n };\r\n NpmManager.prototype.getPackageVersion = function (packageName) {\r\n var child = cross_spawn_1.sync('npm', ['list', packageName, 'version', '--depth', '0'], {\r\n cwd: app_paths_1.appDir\r\n });\r\n var output = String(child.output[1]);\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n var matches = new RegExp(packageName + '@(\\\\S+)', 'g').exec(output);\r\n if (matches === null || matches === void 0 ? void 0 : matches[1]) {\r\n return matches[1];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n NpmManager.prototype.getLatestVersion = function (packageName) {\r\n var child = cross_spawn_1.sync('npm', ['show', packageName, 'version'], {\r\n cwd: app_paths_1.appDir\r\n });\r\n return String(child.output[1]).replace('\\n', '');\r\n };\r\n return NpmManager;\r\n}());\r\nexports.NpmManager = NpmManager;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PnpmManager = void 0;\r\nvar cross_spawn_1 = require(\"cross-spawn\");\r\nvar spawn_1 = require(\"../../../helpers/spawn\");\r\nvar app_paths_1 = require(\"../../../helpers/app-paths\");\r\nvar PnpmManager = /** @class */ (function () {\r\n function PnpmManager() {\r\n this.type = 'pnpm';\r\n }\r\n PnpmManager.prototype.installPackage = function (packageName) {\r\n spawn_1.spawnSync('pnpm', ['add', packageName], app_paths_1.appDir);\r\n };\r\n PnpmManager.prototype.installDevPackage = function (packageName) {\r\n spawn_1.spawnSync('pnpm', ['add', packageName, '--save-dev'], app_paths_1.appDir);\r\n };\r\n PnpmManager.prototype.updatePackage = function (packageName) {\r\n spawn_1.spawnSync('pnpm', ['add', packageName + \"@latest\"], app_paths_1.appDir);\r\n };\r\n PnpmManager.prototype.getPackageVersion = function (packageName) {\r\n var child = cross_spawn_1.sync('pnpm', ['list', packageName, 'version', '--depth', '0'], {\r\n cwd: app_paths_1.appDir\r\n });\r\n var output = String(child.output[1]);\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n var matches = new RegExp(packageName + ' (\\\\S+)', 'g').exec(output);\r\n if (matches === null || matches === void 0 ? void 0 : matches[1]) {\r\n return matches[1];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n PnpmManager.prototype.getLatestVersion = function (packageName) {\r\n var child = cross_spawn_1.sync('pnpm', ['info', packageName, 'version'], {\r\n cwd: app_paths_1.appDir\r\n });\r\n return String(child.output[1]).replace('\\n', '');\r\n };\r\n return PnpmManager;\r\n}());\r\nexports.PnpmManager = PnpmManager;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.YarnManager = void 0;\r\nvar cross_spawn_1 = require(\"cross-spawn\");\r\nvar spawn_1 = require(\"../../../helpers/spawn\");\r\nvar app_paths_1 = require(\"../../../helpers/app-paths\");\r\nvar YarnManager = /** @class */ (function () {\r\n function YarnManager() {\r\n this.type = 'yarn';\r\n }\r\n YarnManager.prototype.installPackage = function (packageName) {\r\n spawn_1.spawnSync('yarn', ['add', packageName], app_paths_1.appDir);\r\n };\r\n YarnManager.prototype.installDevPackage = function (packageName) {\r\n spawn_1.spawnSync('yarn', ['add', packageName, '--dev'], app_paths_1.appDir);\r\n };\r\n YarnManager.prototype.updatePackage = function (packageName) {\r\n spawn_1.spawnSync('yarn', ['upgrade', packageName, '--latest'], app_paths_1.appDir);\r\n };\r\n YarnManager.prototype.getPackageVersion = function (packageName) {\r\n var child = cross_spawn_1.sync('yarn', ['list', '--pattern', packageName, '--depth', '0'], { cwd: app_paths_1.appDir });\r\n var output = String(child.output[1]);\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n var matches = new RegExp(packageName + '@(\\\\S+)', 'g').exec(output);\r\n if (matches === null || matches === void 0 ? void 0 : matches[1]) {\r\n return matches[1];\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n YarnManager.prototype.getLatestVersion = function (packageName) {\r\n var child = cross_spawn_1.sync('yarn', ['info', packageName, 'version', '--json'], { cwd: app_paths_1.appDir });\r\n var output = String(child.output[1]);\r\n var packageJson = JSON.parse(output);\r\n return packageJson.data;\r\n };\r\n return YarnManager;\r\n}());\r\nexports.YarnManager = YarnManager;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.update = exports.installTheseDev = exports.installThese = exports.install = void 0;\r\nvar types_1 = require(\"./types\");\r\nvar util_1 = require(\"./util\");\r\nvar logger_1 = __importDefault(require(\"../../helpers/logger\"));\r\nvar app_paths_1 = require(\"../../helpers/app-paths\");\r\nvar inquirer_1 = __importDefault(require(\"inquirer\"));\r\nvar fs_1 = require(\"fs\");\r\nvar cross_spawn_1 = require(\"cross-spawn\");\r\nvar log = logger_1.default('dependency:npm-packages');\r\nfunction manageDependencies(managementType, dependencies) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var installedDeps, updatedDeps, npmChild, yarnChild, pnpmChild, _i, dependencies_1, dependency, currentVersion, packageManager, prefix, inquired, latestVersion, inquired, result;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n installedDeps = [];\r\n updatedDeps = [];\r\n npmChild = cross_spawn_1.sync('npm', ['--version']);\r\n yarnChild = cross_spawn_1.sync('yarn', ['--version']);\r\n pnpmChild = cross_spawn_1.sync('pnpm', ['--version']);\r\n if (((_a = npmChild.status) !== null && _a !== void 0 ? _a : npmChild.error) &&\r\n ((_b = yarnChild.status) !== null && _b !== void 0 ? _b : yarnChild.error) &&\r\n ((_c = pnpmChild.status) !== null && _c !== void 0 ? _c : pnpmChild.error)) {\r\n throw new Error('must have installed one of the following package managers `npm`, `yarn`, `pnpm` to manage dependenices');\r\n }\r\n if (!fs_1.existsSync(app_paths_1.resolve.app('package.json'))) return [3 /*break*/, 10];\r\n _i = 0, dependencies_1 = dependencies;\r\n _d.label = 1;\r\n case 1:\r\n if (!(_i < dependencies_1.length)) return [3 /*break*/, 10];\r\n dependency = dependencies_1[_i];\r\n currentVersion = util_1.getNpmPackageVersion(dependency);\r\n packageManager = util_1.getManager().type.toUpperCase();\r\n if (!(currentVersion === null)) return [3 /*break*/, 4];\r\n log(\"Installing \" + dependency + \"...\");\r\n if (!(managementType === types_1.ManagementType.Install ||\r\n managementType === types_1.ManagementType.InstallDev)) return [3 /*break*/, 3];\r\n prefix = managementType === types_1.ManagementType.InstallDev\r\n ? ' as dev-dependency'\r\n : '';\r\n return [4 /*yield*/, inquirer_1.default.prompt([\r\n {\r\n type: 'confirm',\r\n name: 'answer',\r\n message: \"[\" + packageManager + \"]: \\\"Do you want to install \" + dependency + prefix + \"?\\\"\",\r\n default: false\r\n }\r\n ])];\r\n case 2:\r\n inquired = _d.sent();\r\n if (inquired.answer) {\r\n if (managementType === types_1.ManagementType.Install) {\r\n util_1.installNpmPackage(dependency);\r\n }\r\n else if (managementType === types_1.ManagementType.InstallDev) {\r\n util_1.installNpmDevPackage(dependency);\r\n }\r\n installedDeps.push(dependency);\r\n }\r\n _d.label = 3;\r\n case 3: return [3 /*break*/, 9];\r\n case 4:\r\n if (!(managementType === types_1.ManagementType.Update)) return [3 /*break*/, 8];\r\n latestVersion = util_1.getNpmLatestVersion(dependency);\r\n if (!util_1.semverLt(currentVersion, latestVersion)) return [3 /*break*/, 6];\r\n return [4 /*yield*/, inquirer_1.default.prompt([\r\n {\r\n type: 'confirm',\r\n name: 'answer',\r\n message: \"[\" + packageManager + \"]: \\\"\" + dependency + \"\\\" latest version is \" + latestVersion + \". Do you want to update?\",\r\n default: false\r\n }\r\n ])];\r\n case 5:\r\n inquired = _d.sent();\r\n if (inquired.answer) {\r\n log(\"Updating \" + dependency + \"...\");\r\n util_1.updateNpmPackage(dependency);\r\n updatedDeps.push(dependency);\r\n }\r\n return [3 /*break*/, 7];\r\n case 6:\r\n log(\"\\\"\" + dependency + \"\\\" is up to date\");\r\n _d.label = 7;\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n log(\"\\\"\" + dependency + \"\\\" is already installed\");\r\n _d.label = 9;\r\n case 9:\r\n _i++;\r\n return [3 /*break*/, 1];\r\n case 10:\r\n result = new Map();\r\n result.set(types_1.ManagementType.Install, installedDeps);\r\n result.set(types_1.ManagementType.Update, updatedDeps);\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n}\r\nvar dependencies = ['@tauri-apps/api', '@tauri-apps/cli'];\r\nfunction install() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Install, dependencies)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.install = install;\r\nfunction installThese(dependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Install, dependencies)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.installThese = installThese;\r\nfunction installTheseDev(dependencies) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.InstallDev, dependencies)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.installTheseDev = installTheseDev;\r\nfunction update() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Update, dependencies)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.update = update;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.update = exports.install = void 0;\r\nvar types_1 = require(\"./types\");\r\nvar spawn_1 = require(\"../../helpers/spawn\");\r\nvar get_script_version_1 = __importDefault(require(\"../../helpers/get-script-version\"));\r\nvar download_binary_1 = require(\"../../helpers/download-binary\");\r\nvar logger_1 = __importDefault(require(\"../../helpers/logger\"));\r\nvar fs_1 = require(\"fs\");\r\nvar path_1 = require(\"path\");\r\nvar os_1 = require(\"os\");\r\nvar https_1 = __importDefault(require(\"https\"));\r\nvar log = logger_1.default('dependency:rust');\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nfunction download(url, dest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var file;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n file = fs_1.createWriteStream(dest);\r\n return [4 /*yield*/, new Promise(function (resolve, reject) {\r\n https_1.default\r\n .get(url, function (response) {\r\n response.pipe(file);\r\n file.on('finish', function () {\r\n file.close();\r\n resolve();\r\n });\r\n })\r\n .on('error', function (err) {\r\n fs_1.unlinkSync(dest);\r\n reject(err.message);\r\n });\r\n })];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nfunction installRustup() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var assetName, rustupPath;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n assetName = os_1.platform() === 'win32' ? 'rustup-init.exe' : 'rustup-init.sh';\r\n rustupPath = path_1.resolve(__dirname, \"../../bin/\" + assetName);\r\n if (!!fs_1.existsSync(rustupPath)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, download_binary_1.downloadRustup()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (os_1.platform() === 'win32') {\r\n return [2 /*return*/, spawn_1.spawnSync('powershell', ['-NoProfile', rustupPath], process.cwd())];\r\n }\r\n return [2 /*return*/, spawn_1.spawnSync('/bin/sh', [rustupPath], process.cwd())];\r\n }\r\n });\r\n });\r\n}\r\nfunction manageDependencies(managementType) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(get_script_version_1.default('rustup') === null)) return [3 /*break*/, 2];\r\n log('Installing rustup...');\r\n return [4 /*yield*/, installRustup()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (managementType === types_1.ManagementType.Update) {\r\n spawn_1.spawnSync('rustup', ['update'], process.cwd());\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction install() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Install)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.install = install;\r\nfunction update() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, manageDependencies(types_1.ManagementType.Update)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.update = update;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ManagementType = void 0;\r\nvar ManagementType;\r\n(function (ManagementType) {\r\n ManagementType[ManagementType[\"Install\"] = 0] = \"Install\";\r\n ManagementType[ManagementType[\"InstallDev\"] = 1] = \"InstallDev\";\r\n ManagementType[ManagementType[\"Update\"] = 2] = \"Update\";\r\n})(ManagementType = exports.ManagementType || (exports.ManagementType = {}));\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.semverLt = exports.padVersion = exports.updateNpmPackage = exports.installNpmDevPackage = exports.installNpmPackage = exports.getNpmPackageVersion = exports.getNpmLatestVersion = exports.getCrateLatestVersion = exports.getManager = void 0;\r\nvar cross_spawn_1 = require(\"cross-spawn\");\r\nvar app_paths_1 = require(\"../../helpers/app-paths\");\r\nvar fs_1 = require(\"fs\");\r\n// import semver from 'semver'\r\nvar managers_1 = require(\"./managers\");\r\nvar getManager = function () {\r\n if (fs_1.existsSync(app_paths_1.resolve.app('yarn.lock'))) {\r\n return new managers_1.YarnManager();\r\n }\r\n else if (fs_1.existsSync(app_paths_1.resolve.app('pnpm-lock.yaml'))) {\r\n return new managers_1.PnpmManager();\r\n }\r\n else {\r\n return new managers_1.NpmManager();\r\n }\r\n};\r\nexports.getManager = getManager;\r\nfunction getCrateLatestVersion(crateName) {\r\n var child = cross_spawn_1.sync('cargo', ['search', crateName, '--limit', '1']);\r\n var output = String(child.output[1]);\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n var matches = new RegExp(crateName + ' = \"(\\\\S+)\"', 'g').exec(output);\r\n if (matches === null || matches === void 0 ? void 0 : matches[1]) {\r\n return matches[1];\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\nexports.getCrateLatestVersion = getCrateLatestVersion;\r\nfunction getNpmLatestVersion(packageName) {\r\n return getManager().getLatestVersion(packageName);\r\n}\r\nexports.getNpmLatestVersion = getNpmLatestVersion;\r\nfunction getNpmPackageVersion(packageName) {\r\n return getManager().getPackageVersion(packageName);\r\n}\r\nexports.getNpmPackageVersion = getNpmPackageVersion;\r\nfunction installNpmPackage(packageName) {\r\n return getManager().installPackage(packageName);\r\n}\r\nexports.installNpmPackage = installNpmPackage;\r\nfunction installNpmDevPackage(packageName) {\r\n return getManager().installDevPackage(packageName);\r\n}\r\nexports.installNpmDevPackage = installNpmDevPackage;\r\nfunction updateNpmPackage(packageName) {\r\n return getManager().updatePackage(packageName);\r\n}\r\nexports.updateNpmPackage = updateNpmPackage;\r\nfunction padVersion(version) {\r\n var _a;\r\n var count = ((_a = version.match(/\\./g)) !== null && _a !== void 0 ? _a : []).length;\r\n while (count < 2) {\r\n count++;\r\n version += '.0';\r\n }\r\n return version;\r\n}\r\nexports.padVersion = padVersion;\r\nfunction semverLt(first, second) {\r\n return first !== second;\r\n // TODO: When version 1.0.0 is released this code should work again\r\n // return semver.lt(padVersion(first), padVersion(second))\r\n}\r\nexports.semverLt = semverLt;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.resolve = exports.tauriDir = exports.appDir = void 0;\r\nvar fs_1 = require(\"fs\");\r\nvar path_1 = require(\"path\");\r\nvar logger_1 = __importDefault(require(\"./logger\"));\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar warn = logger_1.default('tauri', chalk_1.default.red);\r\nfunction resolvePath(basePath, dir) {\r\n return dir && path_1.isAbsolute(dir) ? dir : path_1.resolve(basePath, dir);\r\n}\r\nvar getAppDir = function () {\r\n var dir = process.cwd();\r\n var count = 0;\r\n // only go up three folders max\r\n while (dir.length > 0 && !dir.endsWith(path_1.sep) && count <= 2) {\r\n if (fs_1.existsSync(path_1.join(dir, 'src-tauri', 'tauri.conf.json'))) {\r\n return dir;\r\n }\r\n count++;\r\n dir = path_1.normalize(path_1.join(dir, '..'));\r\n }\r\n warn(\"Couldn't find recognize the current folder as a part of a Tauri project\");\r\n process.exit(1);\r\n};\r\nvar appDir = getAppDir();\r\nexports.appDir = appDir;\r\nvar tauriDir = path_1.resolve(appDir, 'src-tauri');\r\nexports.tauriDir = tauriDir;\r\nvar resolveDir = {\r\n app: function (dir) { return resolvePath(appDir, dir); },\r\n tauri: function (dir) { return resolvePath(tauriDir, dir); }\r\n};\r\nexports.resolve = resolveDir;\r\n","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.downloadRustup = exports.downloadCli = void 0;\r\nvar stream_1 = __importDefault(require(\"stream\"));\r\nvar util_1 = require(\"util\");\r\nvar fs_1 = __importDefault(require(\"fs\"));\r\nvar got_1 = __importDefault(require(\"got\"));\r\nvar path_1 = __importDefault(require(\"path\"));\r\nvar pipeline = util_1.promisify(stream_1.default.pipeline);\r\n// Webpack reads the file at build-time, so this becomes a static var\r\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access\r\nvar tauriCliManifest = require('../../../cli.rs/Cargo.toml');\r\nvar downloads = {};\r\nfunction downloadBinaryRelease(tag, asset, outPath) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, removeDownloadedCliIfNeeded;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = \"https://github.com/tauri-apps/binary-releases/releases/download/\" + tag + \"/\" + asset;\r\n removeDownloadedCliIfNeeded = function () {\r\n try {\r\n if (!(url in downloads)) {\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.unlinkSync(outPath);\r\n }\r\n }\r\n finally {\r\n process.exit();\r\n }\r\n };\r\n // on exit, we remove the `tauri-cli` file if the download didn't complete\r\n process.on('exit', removeDownloadedCliIfNeeded);\r\n process.on('SIGINT', removeDownloadedCliIfNeeded);\r\n process.on('SIGTERM', removeDownloadedCliIfNeeded);\r\n process.on('SIGHUP', removeDownloadedCliIfNeeded);\r\n process.on('SIGBREAK', removeDownloadedCliIfNeeded);\r\n // TODO: Check hash of download\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename\r\n return [4 /*yield*/, pipeline(got_1.default.stream(url), fs_1.default.createWriteStream(outPath)).catch(function (e) {\r\n try {\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.unlinkSync(outPath);\r\n }\r\n catch (_a) { }\r\n throw e;\r\n })\r\n // eslint-disable-next-line security/detect-object-injection\r\n ];\r\n case 1:\r\n // TODO: Check hash of download\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename\r\n _a.sent();\r\n // eslint-disable-next-line security/detect-object-injection\r\n downloads[url] = true;\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.chmodSync(outPath, 448);\r\n console.log('Download Complete');\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction downloadCli() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var version, platform, extension, outPath;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n version = tauriCliManifest.package.version;\r\n platform = process.platform;\r\n if (platform === 'win32') {\r\n platform = 'windows';\r\n }\r\n else if (platform === 'linux') {\r\n platform = 'linux';\r\n }\r\n else if (platform === 'darwin') {\r\n platform = 'macos';\r\n }\r\n else {\r\n throw Error('Unsupported platform');\r\n }\r\n extension = platform === 'windows' ? '.exe' : '';\r\n outPath = path_1.default.join(__dirname, \"../../bin/tauri-cli\" + extension);\r\n console.log('Downloading Rust CLI...');\r\n return [4 /*yield*/, downloadBinaryRelease(\"tauri-cli-v\" + version, \"tauri-cli_\" + platform + extension, outPath)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nexports.downloadCli = downloadCli;\r\nfunction downloadRustup() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var assetName;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n assetName = process.platform === 'win32' ? 'rustup-init.exe' : 'rustup-init.sh';\r\n console.log('Downloading Rustup...');\r\n return [4 /*yield*/, downloadBinaryRelease('rustup', assetName, path_1.default.join(__dirname, \"../../bin/\" + assetName))];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.downloadRustup = downloadRustup;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar cross_spawn_1 = require(\"cross-spawn\");\r\nfunction getVersion(command, args) {\r\n if (args === void 0) { args = []; }\r\n try {\r\n var child = cross_spawn_1.sync(command, __spreadArray(__spreadArray([], args), ['--version']));\r\n if (child.status === 0) {\r\n var output = String(child.output[1]);\r\n return output.replace(/\\n/g, '');\r\n }\r\n return null;\r\n }\r\n catch (err) {\r\n return null;\r\n }\r\n}\r\nexports.default = getVersion;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar ms_1 = __importDefault(require(\"ms\"));\r\nvar prevTime;\r\nexports.default = (function (banner, color) {\r\n if (color === void 0) { color = chalk_1.default.green; }\r\n return function (msg) {\r\n var curr = +new Date();\r\n var diff = curr - (prevTime || curr);\r\n prevTime = curr;\r\n if (msg) {\r\n console.log(\r\n // TODO: proper typings for color and banner\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call\r\n \" \" + color(String(banner)) + \" \" + msg + \" \" + chalk_1.default.green(\"+\" + ms_1.default(diff)));\r\n }\r\n else {\r\n console.log();\r\n }\r\n };\r\n});\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.spawnSync = exports.spawn = void 0;\r\nvar cross_spawn_1 = __importDefault(require(\"cross-spawn\"));\r\nvar logger_1 = __importDefault(require(\"./logger\"));\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar log = logger_1.default('app:spawn');\r\nvar warn = logger_1.default('app:spawn', chalk_1.default.red);\r\n/*\r\n Returns pid, takes onClose\r\n */\r\nvar spawn = function (cmd, params, cwd, onClose) {\r\n var _a;\r\n log(\"Running \\\"\" + cmd + \" \" + params.join(' ') + \"\\\"\");\r\n log();\r\n // TODO: move to execa?\r\n var runner = cross_spawn_1.default(cmd, params, {\r\n stdio: 'inherit',\r\n cwd: cwd,\r\n env: process.env\r\n });\r\n runner.on('close', function (code) {\r\n var _a;\r\n log();\r\n if (code) {\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\r\n log(\"Command \\\"\" + cmd + \"\\\" failed with exit code: \" + code);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\r\n onClose && onClose(code !== null && code !== void 0 ? code : 0, (_a = runner.pid) !== null && _a !== void 0 ? _a : 0);\r\n });\r\n return (_a = runner.pid) !== null && _a !== void 0 ? _a : 0;\r\n};\r\nexports.spawn = spawn;\r\n/*\r\n Returns nothing, takes onFail\r\n */\r\nvar spawnSync = function (cmd, params, cwd, onFail) {\r\n log(\"[sync] Running \\\"\" + cmd + \" \" + params.join(' ') + \"\\\"\");\r\n log();\r\n var runner = cross_spawn_1.default.sync(cmd, params, {\r\n stdio: 'inherit',\r\n cwd: cwd\r\n });\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\r\n if (runner.status || runner.error) {\r\n warn();\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\r\n warn(\"\\u26A0\\uFE0F Command \\\"\" + cmd + \"\\\" failed with exit code: \" + runner.status);\r\n if (runner.status === null) {\r\n warn(\"\\u26A0\\uFE0F Please globally install \\\"\" + cmd + \"\\\"\");\r\n }\r\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\r\n onFail && onFail();\r\n process.exit(1);\r\n }\r\n};\r\nexports.spawnSync = spawnSync;\r\n","module.exports = require(\"@tauri-apps/toml\");;","module.exports = require(\"chalk\");;","module.exports = require(\"cross-spawn\");;","module.exports = require(\"fs\");;","module.exports = require(\"got\");;","module.exports = require(\"https\");;","module.exports = require(\"inquirer\");;","module.exports = require(\"ms\");;","module.exports = require(\"os\");;","module.exports = require(\"path\");;","module.exports = require(\"stream\");;","module.exports = require(\"util\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/api/dependency-manager/index.ts\");\n"],"sourceRoot":""} \ No newline at end of file diff --git a/tooling/cli.js/dist/api/tauricon.js b/tooling/cli.js/dist/api/tauricon.js new file mode 100644 index 000000000..4470071e4 --- /dev/null +++ b/tooling/cli.js/dist/api/tauricon.js @@ -0,0 +1,3106 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["tauri"] = factory(); + else + root["tauri"] = factory(); +})(this, function() { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/imagemin/index.js": +/*!****************************************!*\ + !*** ./node_modules/imagemin/index.js ***! + \****************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ imagemin) +/* harmony export */ }); +/* harmony import */ var util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! util */ "util"); +/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ "path"); +/* harmony import */ var graceful_fs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! graceful-fs */ "graceful-fs"); +/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! fs */ "fs"); +/* harmony import */ var file_type__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! file-type */ "./node_modules/imagemin/node_modules/file-type/index.js"); +/* harmony import */ var globby__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! globby */ "globby"); +/* harmony import */ var p_pipe__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! p-pipe */ "./node_modules/p-pipe/index.js"); +/* harmony import */ var replace_ext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! replace-ext */ "replace-ext"); +/* harmony import */ var junk__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! junk */ "junk"); + + + + + + + + + + +const readFile = (0,util__WEBPACK_IMPORTED_MODULE_0__.promisify)(graceful_fs__WEBPACK_IMPORTED_MODULE_2__.readFile); +const writeFile = (0,util__WEBPACK_IMPORTED_MODULE_0__.promisify)(graceful_fs__WEBPACK_IMPORTED_MODULE_2__.writeFile); + +const handleFile = async (sourcePath, {destination, plugins = []}) => { + if (plugins && !Array.isArray(plugins)) { + throw new TypeError('The `plugins` option should be an `Array`'); + } + + let data = await readFile(sourcePath); + data = await (plugins.length > 0 ? (0,p_pipe__WEBPACK_IMPORTED_MODULE_6__.default)(...plugins)(data) : data); + + const {ext} = await file_type__WEBPACK_IMPORTED_MODULE_4__.fromBuffer(data); + let destinationPath = destination ? path__WEBPACK_IMPORTED_MODULE_1__.join(destination, path__WEBPACK_IMPORTED_MODULE_1__.basename(sourcePath)) : undefined; + destinationPath = ext === 'webp' ? replace_ext__WEBPACK_IMPORTED_MODULE_7__(destinationPath, '.webp') : destinationPath; + + const returnValue = { + data, + sourcePath, + destinationPath + }; + + if (!destinationPath) { + return returnValue; + } + + await fs__WEBPACK_IMPORTED_MODULE_3__.promises.mkdir(path__WEBPACK_IMPORTED_MODULE_1__.dirname(returnValue.destinationPath), {recursive: true}); + await writeFile(returnValue.destinationPath, returnValue.data); + + return returnValue; +}; + +async function imagemin(input, {glob = true, ...options} = {}) { + if (!Array.isArray(input)) { + throw new TypeError(`Expected an \`Array\`, got \`${typeof input}\``); + } + + const filePaths = glob ? await globby__WEBPACK_IMPORTED_MODULE_5__(input, {onlyFiles: true}) : input; + + return Promise.all( + filePaths + .filter(filePath => junk__WEBPACK_IMPORTED_MODULE_8__.not(path__WEBPACK_IMPORTED_MODULE_1__.basename(filePath))) + .map(async filePath => { + try { + return await handleFile(filePath, options); + } catch (error) { + error.message = `Error occurred when handling file: ${input}\n\n${error.stack}`; + throw error; + } + }) + ); +} + +imagemin.buffer = async (input, {plugins = []} = {}) => { + if (!Buffer.isBuffer(input)) { + throw new TypeError(`Expected a \`Buffer\`, got \`${typeof input}\``); + } + + if (plugins.length === 0) { + return input; + } + + return (0,p_pipe__WEBPACK_IMPORTED_MODULE_6__.default)(...plugins)(input); +}; + + +/***/ }), + +/***/ "./node_modules/imagemin/node_modules/file-type/core.js": +/*!**************************************************************!*\ + !*** ./node_modules/imagemin/node_modules/file-type/core.js ***! + \**************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + +const Token = __webpack_require__(/*! token-types */ "token-types"); +const strtok3 = __webpack_require__(/*! strtok3/lib/core */ "strtok3/lib/core"); +const { + stringToBytes, + tarHeaderChecksumMatches, + uint32SyncSafeToken +} = __webpack_require__(/*! ./util */ "./node_modules/imagemin/node_modules/file-type/util.js"); +const supported = __webpack_require__(/*! ./supported */ "./node_modules/imagemin/node_modules/file-type/supported.js"); + +const minimumBytes = 4100; // A fair amount of file-types are detectable within this range + +async function fromStream(stream) { + const tokenizer = await strtok3.fromStream(stream); + try { + return await fromTokenizer(tokenizer); + } finally { + await tokenizer.close(); + } +} + +async function fromBuffer(input) { + if (!(input instanceof Uint8Array || input instanceof ArrayBuffer || Buffer.isBuffer(input))) { + throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`Buffer\` or \`ArrayBuffer\`, got \`${typeof input}\``); + } + + const buffer = input instanceof Buffer ? input : Buffer.from(input); + + if (!(buffer && buffer.length > 1)) { + return; + } + + const tokenizer = strtok3.fromBuffer(buffer); + return fromTokenizer(tokenizer); +} + +function _check(buffer, headers, options) { + options = { + offset: 0, + ...options + }; + + for (const [index, header] of headers.entries()) { + // If a bitmask is set + if (options.mask) { + // If header doesn't equal `buf` with bits masked off + if (header !== (options.mask[index] & buffer[index + options.offset])) { + return false; + } + } else if (header !== buffer[index + options.offset]) { + return false; + } + } + + return true; +} + +async function _checkSequence(sequence, tokenizer, ignoreBytes) { + const buffer = Buffer.alloc(minimumBytes); + await tokenizer.ignore(ignoreBytes); + + await tokenizer.peekBuffer(buffer, {mayBeLess: true}); + + return buffer.includes(Buffer.from(sequence)); +} + +async function fromTokenizer(tokenizer) { + try { + return _fromTokenizer(tokenizer); + } catch (error) { + if (!(error instanceof strtok3.EndOfStreamError)) { + throw error; + } + } +} + +async function _fromTokenizer(tokenizer) { + let buffer = Buffer.alloc(minimumBytes); + const bytesRead = 12; + const check = (header, options) => _check(buffer, header, options); + const checkString = (header, options) => check(stringToBytes(header), options); + const checkSequence = (sequence, ignoreBytes) => _checkSequence(sequence, tokenizer, ignoreBytes); + + // Keep reading until EOF if the file size is unknown. + if (!tokenizer.fileInfo.size) { + tokenizer.fileInfo.size = Number.MAX_SAFE_INTEGER; + } + + await tokenizer.peekBuffer(buffer, {length: bytesRead, mayBeLess: true}); + + // -- 2-byte signatures -- + + if (check([0x42, 0x4D])) { + return { + ext: 'bmp', + mime: 'image/bmp' + }; + } + + if (check([0x0B, 0x77])) { + return { + ext: 'ac3', + mime: 'audio/vnd.dolby.dd-raw' + }; + } + + if (check([0x78, 0x01])) { + return { + ext: 'dmg', + mime: 'application/x-apple-diskimage' + }; + } + + if (check([0x4D, 0x5A])) { + return { + ext: 'exe', + mime: 'application/x-msdownload' + }; + } + + if (check([0x25, 0x21])) { + await tokenizer.peekBuffer(buffer, {length: 24, mayBeLess: true}); + + if (checkString('PS-Adobe-', {offset: 2}) && + checkString(' EPSF-', {offset: 14})) { + return { + ext: 'eps', + mime: 'application/eps' + }; + } + + return { + ext: 'ps', + mime: 'application/postscript' + }; + } + + if ( + check([0x1F, 0xA0]) || + check([0x1F, 0x9D]) + ) { + return { + ext: 'Z', + mime: 'application/x-compress' + }; + } + + // -- 3-byte signatures -- + + if (check([0xFF, 0xD8, 0xFF])) { + return { + ext: 'jpg', + mime: 'image/jpeg' + }; + } + + if (check([0x49, 0x49, 0xBC])) { + return { + ext: 'jxr', + mime: 'image/vnd.ms-photo' + }; + } + + if (check([0x1F, 0x8B, 0x8])) { + return { + ext: 'gz', + mime: 'application/gzip' + }; + } + + if (check([0x42, 0x5A, 0x68])) { + return { + ext: 'bz2', + mime: 'application/x-bzip2' + }; + } + + if (checkString('ID3')) { + await tokenizer.ignore(6); // Skip ID3 header until the header size + const id3HeaderLen = await tokenizer.readToken(uint32SyncSafeToken); + if (tokenizer.position + id3HeaderLen > tokenizer.fileInfo.size) { + // Guess file type based on ID3 header for backward compatibility + return { + ext: 'mp3', + mime: 'audio/mpeg' + }; + } + + await tokenizer.ignore(id3HeaderLen); + return fromTokenizer(tokenizer); // Skip ID3 header, recursion + } + + // Musepack, SV7 + if (checkString('MP+')) { + return { + ext: 'mpc', + mime: 'audio/x-musepack' + }; + } + + if ( + (buffer[0] === 0x43 || buffer[0] === 0x46) && + check([0x57, 0x53], {offset: 1}) + ) { + return { + ext: 'swf', + mime: 'application/x-shockwave-flash' + }; + } + + // -- 4-byte signatures -- + + if (check([0x47, 0x49, 0x46])) { + return { + ext: 'gif', + mime: 'image/gif' + }; + } + + if (checkString('FLIF')) { + return { + ext: 'flif', + mime: 'image/flif' + }; + } + + if (checkString('8BPS')) { + return { + ext: 'psd', + mime: 'image/vnd.adobe.photoshop' + }; + } + + if (checkString('WEBP', {offset: 8})) { + return { + ext: 'webp', + mime: 'image/webp' + }; + } + + // Musepack, SV8 + if (checkString('MPCK')) { + return { + ext: 'mpc', + mime: 'audio/x-musepack' + }; + } + + if (checkString('FORM')) { + return { + ext: 'aif', + mime: 'audio/aiff' + }; + } + + if (checkString('icns', {offset: 0})) { + return { + ext: 'icns', + mime: 'image/icns' + }; + } + + // Zip-based file formats + // Need to be before the `zip` check + if (check([0x50, 0x4B, 0x3, 0x4])) { // Local file header signature + try { + while (tokenizer.position + 30 < tokenizer.fileInfo.size) { + await tokenizer.readBuffer(buffer, {length: 30}); + + // https://en.wikipedia.org/wiki/Zip_(file_format)#File_headers + const zipHeader = { + compressedSize: buffer.readUInt32LE(18), + uncompressedSize: buffer.readUInt32LE(22), + filenameLength: buffer.readUInt16LE(26), + extraFieldLength: buffer.readUInt16LE(28) + }; + + zipHeader.filename = await tokenizer.readToken(new Token.StringType(zipHeader.filenameLength, 'utf-8')); + await tokenizer.ignore(zipHeader.extraFieldLength); + + // Assumes signed `.xpi` from addons.mozilla.org + if (zipHeader.filename === 'META-INF/mozilla.rsa') { + return { + ext: 'xpi', + mime: 'application/x-xpinstall' + }; + } + + if (zipHeader.filename.endsWith('.rels') || zipHeader.filename.endsWith('.xml')) { + const type = zipHeader.filename.split('/')[0]; + switch (type) { + case '_rels': + break; + case 'word': + return { + ext: 'docx', + mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' + }; + case 'ppt': + return { + ext: 'pptx', + mime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' + }; + case 'xl': + return { + ext: 'xlsx', + mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + }; + default: + break; + } + } + + if (zipHeader.filename.startsWith('xl/')) { + return { + ext: 'xlsx', + mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + }; + } + + // The docx, xlsx and pptx file types extend the Office Open XML file format: + // https://en.wikipedia.org/wiki/Office_Open_XML_file_formats + // We look for: + // - one entry named '[Content_Types].xml' or '_rels/.rels', + // - one entry indicating specific type of file. + // MS Office, OpenOffice and LibreOffice may put the parts in different order, so the check should not rely on it. + if (zipHeader.filename === 'mimetype' && zipHeader.compressedSize === zipHeader.uncompressedSize) { + const mimeType = await tokenizer.readToken(new Token.StringType(zipHeader.compressedSize, 'utf-8')); + + switch (mimeType) { + case 'application/epub+zip': + return { + ext: 'epub', + mime: 'application/epub+zip' + }; + case 'application/vnd.oasis.opendocument.text': + return { + ext: 'odt', + mime: 'application/vnd.oasis.opendocument.text' + }; + case 'application/vnd.oasis.opendocument.spreadsheet': + return { + ext: 'ods', + mime: 'application/vnd.oasis.opendocument.spreadsheet' + }; + case 'application/vnd.oasis.opendocument.presentation': + return { + ext: 'odp', + mime: 'application/vnd.oasis.opendocument.presentation' + }; + default: + } + } + + // Try to find next header manually when current one is corrupted + if (zipHeader.compressedSize === 0) { + let nextHeaderIndex = -1; + + while (nextHeaderIndex < 0 && (tokenizer.position < tokenizer.fileInfo.size)) { + await tokenizer.peekBuffer(buffer, {mayBeLess: true}); + + nextHeaderIndex = buffer.indexOf('504B0304', 0, 'hex'); + // Move position to the next header if found, skip the whole buffer otherwise + await tokenizer.ignore(nextHeaderIndex >= 0 ? nextHeaderIndex : buffer.length); + } + } else { + await tokenizer.ignore(zipHeader.compressedSize); + } + } + } catch (error) { + if (!(error instanceof strtok3.EndOfStreamError)) { + throw error; + } + } + + return { + ext: 'zip', + mime: 'application/zip' + }; + } + + if (checkString('OggS')) { + // This is an OGG container + await tokenizer.ignore(28); + const type = Buffer.alloc(8); + await tokenizer.readBuffer(type); + + // Needs to be before `ogg` check + if (_check(type, [0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64])) { + return { + ext: 'opus', + mime: 'audio/opus' + }; + } + + // If ' theora' in header. + if (_check(type, [0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61])) { + return { + ext: 'ogv', + mime: 'video/ogg' + }; + } + + // If '\x01video' in header. + if (_check(type, [0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00])) { + return { + ext: 'ogm', + mime: 'video/ogg' + }; + } + + // If ' FLAC' in header https://xiph.org/flac/faq.html + if (_check(type, [0x7F, 0x46, 0x4C, 0x41, 0x43])) { + return { + ext: 'oga', + mime: 'audio/ogg' + }; + } + + // 'Speex ' in header https://en.wikipedia.org/wiki/Speex + if (_check(type, [0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20])) { + return { + ext: 'spx', + mime: 'audio/ogg' + }; + } + + // If '\x01vorbis' in header + if (_check(type, [0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73])) { + return { + ext: 'ogg', + mime: 'audio/ogg' + }; + } + + // Default OGG container https://www.iana.org/assignments/media-types/application/ogg + return { + ext: 'ogx', + mime: 'application/ogg' + }; + } + + if ( + check([0x50, 0x4B]) && + (buffer[2] === 0x3 || buffer[2] === 0x5 || buffer[2] === 0x7) && + (buffer[3] === 0x4 || buffer[3] === 0x6 || buffer[3] === 0x8) + ) { + return { + ext: 'zip', + mime: 'application/zip' + }; + } + + // + + // File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format) + // It's not required to be first, but it's recommended to be. Almost all ISO base media files start with `ftyp` box. + // `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters. + // Here we check for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character). + if ( + checkString('ftyp', {offset: 4}) && + (buffer[8] & 0x60) !== 0x00 // Brand major, first character ASCII? + ) { + // They all can have MIME `video/mp4` except `application/mp4` special-case which is hard to detect. + // For some cases, we're specific, everything else falls to `video/mp4` with `mp4` extension. + const brandMajor = buffer.toString('binary', 8, 12).replace('\0', ' ').trim(); + switch (brandMajor) { + case 'avif': + return {ext: 'avif', mime: 'image/avif'}; + case 'mif1': + return {ext: 'heic', mime: 'image/heif'}; + case 'msf1': + return {ext: 'heic', mime: 'image/heif-sequence'}; + case 'heic': + case 'heix': + return {ext: 'heic', mime: 'image/heic'}; + case 'hevc': + case 'hevx': + return {ext: 'heic', mime: 'image/heic-sequence'}; + case 'qt': + return {ext: 'mov', mime: 'video/quicktime'}; + case 'M4V': + case 'M4VH': + case 'M4VP': + return {ext: 'm4v', mime: 'video/x-m4v'}; + case 'M4P': + return {ext: 'm4p', mime: 'video/mp4'}; + case 'M4B': + return {ext: 'm4b', mime: 'audio/mp4'}; + case 'M4A': + return {ext: 'm4a', mime: 'audio/x-m4a'}; + case 'F4V': + return {ext: 'f4v', mime: 'video/mp4'}; + case 'F4P': + return {ext: 'f4p', mime: 'video/mp4'}; + case 'F4A': + return {ext: 'f4a', mime: 'audio/mp4'}; + case 'F4B': + return {ext: 'f4b', mime: 'audio/mp4'}; + case 'crx': + return {ext: 'cr3', mime: 'image/x-canon-cr3'}; + default: + if (brandMajor.startsWith('3g')) { + if (brandMajor.startsWith('3g2')) { + return {ext: '3g2', mime: 'video/3gpp2'}; + } + + return {ext: '3gp', mime: 'video/3gpp'}; + } + + return {ext: 'mp4', mime: 'video/mp4'}; + } + } + + if (checkString('MThd')) { + return { + ext: 'mid', + mime: 'audio/midi' + }; + } + + if ( + checkString('wOFF') && + ( + check([0x00, 0x01, 0x00, 0x00], {offset: 4}) || + checkString('OTTO', {offset: 4}) + ) + ) { + return { + ext: 'woff', + mime: 'font/woff' + }; + } + + if ( + checkString('wOF2') && + ( + check([0x00, 0x01, 0x00, 0x00], {offset: 4}) || + checkString('OTTO', {offset: 4}) + ) + ) { + return { + ext: 'woff2', + mime: 'font/woff2' + }; + } + + if (check([0xD4, 0xC3, 0xB2, 0xA1]) || check([0xA1, 0xB2, 0xC3, 0xD4])) { + return { + ext: 'pcap', + mime: 'application/vnd.tcpdump.pcap' + }; + } + + // Sony DSD Stream File (DSF) + if (checkString('DSD ')) { + return { + ext: 'dsf', + mime: 'audio/x-dsf' // Non-standard + }; + } + + if (checkString('LZIP')) { + return { + ext: 'lz', + mime: 'application/x-lzip' + }; + } + + if (checkString('fLaC')) { + return { + ext: 'flac', + mime: 'audio/x-flac' + }; + } + + if (check([0x42, 0x50, 0x47, 0xFB])) { + return { + ext: 'bpg', + mime: 'image/bpg' + }; + } + + if (checkString('wvpk')) { + return { + ext: 'wv', + mime: 'audio/wavpack' + }; + } + + if (checkString('%PDF')) { + // Check if this is an Adobe Illustrator file + const isAiFile = await checkSequence('Adobe Illustrator', 1350); + if (isAiFile) { + return { + ext: 'ai', + mime: 'application/postscript' + }; + } + + // Assume this is just a normal PDF + return { + ext: 'pdf', + mime: 'application/pdf' + }; + } + + if (check([0x00, 0x61, 0x73, 0x6D])) { + return { + ext: 'wasm', + mime: 'application/wasm' + }; + } + + // TIFF, little-endian type + if (check([0x49, 0x49, 0x2A, 0x0])) { + if (checkString('CR', {offset: 8})) { + return { + ext: 'cr2', + mime: 'image/x-canon-cr2' + }; + } + + if (check([0x1C, 0x00, 0xFE, 0x00], {offset: 8}) || check([0x1F, 0x00, 0x0B, 0x00], {offset: 8})) { + return { + ext: 'nef', + mime: 'image/x-nikon-nef' + }; + } + + if ( + check([0x08, 0x00, 0x00, 0x00], {offset: 4}) && + (check([0x2D, 0x00, 0xFE, 0x00], {offset: 8}) || + check([0x27, 0x00, 0xFE, 0x00], {offset: 8})) + ) { + return { + ext: 'dng', + mime: 'image/x-adobe-dng' + }; + } + + buffer = Buffer.alloc(24); + await tokenizer.peekBuffer(buffer); + if ( + (check([0x10, 0xFB, 0x86, 0x01], {offset: 4}) || check([0x08, 0x00, 0x00, 0x00], {offset: 4})) && + // This pattern differentiates ARW from other TIFF-ish file types: + check([0x00, 0xFE, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x01], {offset: 9}) + ) { + return { + ext: 'arw', + mime: 'image/x-sony-arw' + }; + } + + return { + ext: 'tif', + mime: 'image/tiff' + }; + } + + // TIFF, big-endian type + if (check([0x4D, 0x4D, 0x0, 0x2A])) { + return { + ext: 'tif', + mime: 'image/tiff' + }; + } + + if (checkString('MAC ')) { + return { + ext: 'ape', + mime: 'audio/ape' + }; + } + + // https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska + if (check([0x1A, 0x45, 0xDF, 0xA3])) { // Root element: EBML + async function readField() { + const msb = await tokenizer.peekNumber(Token.UINT8); + let mask = 0x80; + let ic = 0; // 0 = A, 1 = B, 2 = C, 3 = D + + while ((msb & mask) === 0) { + ++ic; + mask >>= 1; + } + + const id = Buffer.alloc(ic + 1); + await tokenizer.readBuffer(id); + return id; + } + + async function readElement() { + const id = await readField(); + const lenField = await readField(); + lenField[0] ^= 0x80 >> (lenField.length - 1); + const nrLen = Math.min(6, lenField.length); // JavaScript can max read 6 bytes integer + return { + id: id.readUIntBE(0, id.length), + len: lenField.readUIntBE(lenField.length - nrLen, nrLen) + }; + } + + async function readChildren(level, children) { + while (children > 0) { + const e = await readElement(); + if (e.id === 0x4282) { + return tokenizer.readToken(new Token.StringType(e.len, 'utf-8')); // Return DocType + } + + await tokenizer.ignore(e.len); // ignore payload + --children; + } + } + + const re = await readElement(); + const docType = await readChildren(1, re.len); + + switch (docType) { + case 'webm': + return { + ext: 'webm', + mime: 'video/webm' + }; + + case 'matroska': + return { + ext: 'mkv', + mime: 'video/x-matroska' + }; + + default: + return; + } + } + + // RIFF file format which might be AVI, WAV, QCP, etc + if (check([0x52, 0x49, 0x46, 0x46])) { + if (check([0x41, 0x56, 0x49], {offset: 8})) { + return { + ext: 'avi', + mime: 'video/vnd.avi' + }; + } + + if (check([0x57, 0x41, 0x56, 0x45], {offset: 8})) { + return { + ext: 'wav', + mime: 'audio/vnd.wave' + }; + } + + // QLCM, QCP file + if (check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) { + return { + ext: 'qcp', + mime: 'audio/qcelp' + }; + } + } + + if (checkString('SQLi')) { + return { + ext: 'sqlite', + mime: 'application/x-sqlite3' + }; + } + + if (check([0x4E, 0x45, 0x53, 0x1A])) { + return { + ext: 'nes', + mime: 'application/x-nintendo-nes-rom' + }; + } + + if (checkString('Cr24')) { + return { + ext: 'crx', + mime: 'application/x-google-chrome-extension' + }; + } + + if ( + checkString('MSCF') || + checkString('ISc(') + ) { + return { + ext: 'cab', + mime: 'application/vnd.ms-cab-compressed' + }; + } + + if (check([0xED, 0xAB, 0xEE, 0xDB])) { + return { + ext: 'rpm', + mime: 'application/x-rpm' + }; + } + + if (check([0xC5, 0xD0, 0xD3, 0xC6])) { + return { + ext: 'eps', + mime: 'application/eps' + }; + } + + // -- 5-byte signatures -- + + if (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) { + return { + ext: 'otf', + mime: 'font/otf' + }; + } + + if (checkString('#!AMR')) { + return { + ext: 'amr', + mime: 'audio/amr' + }; + } + + if (checkString('{\\rtf')) { + return { + ext: 'rtf', + mime: 'application/rtf' + }; + } + + if (check([0x46, 0x4C, 0x56, 0x01])) { + return { + ext: 'flv', + mime: 'video/x-flv' + }; + } + + if (checkString('IMPM')) { + return { + ext: 'it', + mime: 'audio/x-it' + }; + } + + if ( + checkString('-lh0-', {offset: 2}) || + checkString('-lh1-', {offset: 2}) || + checkString('-lh2-', {offset: 2}) || + checkString('-lh3-', {offset: 2}) || + checkString('-lh4-', {offset: 2}) || + checkString('-lh5-', {offset: 2}) || + checkString('-lh6-', {offset: 2}) || + checkString('-lh7-', {offset: 2}) || + checkString('-lzs-', {offset: 2}) || + checkString('-lz4-', {offset: 2}) || + checkString('-lz5-', {offset: 2}) || + checkString('-lhd-', {offset: 2}) + ) { + return { + ext: 'lzh', + mime: 'application/x-lzh-compressed' + }; + } + + // MPEG program stream (PS or MPEG-PS) + if (check([0x00, 0x00, 0x01, 0xBA])) { + // MPEG-PS, MPEG-1 Part 1 + if (check([0x21], {offset: 4, mask: [0xF1]})) { + return { + ext: 'mpg', // May also be .ps, .mpeg + mime: 'video/MP1S' + }; + } + + // MPEG-PS, MPEG-2 Part 1 + if (check([0x44], {offset: 4, mask: [0xC4]})) { + return { + ext: 'mpg', // May also be .mpg, .m2p, .vob or .sub + mime: 'video/MP2P' + }; + } + } + + // -- 6-byte signatures -- + + if (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) { + return { + ext: 'xz', + mime: 'application/x-xz' + }; + } + + if (checkString('')) { + await tokenizer.ignore(8); + const str = await tokenizer.readToken(new Token.StringType(13, 'ascii')); + if (str === 'debian-binary') { + return { + ext: 'deb', + mime: 'application/x-deb' + }; + } + + return { + ext: 'ar', + mime: 'application/x-unix-archive' + }; + } + + // -- 8-byte signatures -- + + if (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) { + // APNG format (https://wiki.mozilla.org/APNG_Specification) + // 1. Find the first IDAT (image data) chunk (49 44 41 54) + // 2. Check if there is an "acTL" chunk before the IDAT one (61 63 54 4C) + + // Offset calculated as follows: + // - 8 bytes: PNG signature + // - 4 (length) + 4 (chunk type) + 13 (chunk data) + 4 (CRC): IHDR chunk + + await tokenizer.ignore(8); // ignore PNG signature + + async function readChunkHeader() { + return { + length: await tokenizer.readToken(Token.INT32_BE), + type: await tokenizer.readToken(new Token.StringType(4, 'binary')) + }; + } + + do { + const chunk = await readChunkHeader(); + switch (chunk.type) { + case 'IDAT': + return { + ext: 'png', + mime: 'image/png' + }; + case 'acTL': + return { + ext: 'apng', + mime: 'image/apng' + }; + default: + await tokenizer.ignore(chunk.length + 4); // Ignore chunk-data + CRC + } + } while (tokenizer.position < tokenizer.fileInfo.size); + + return { + ext: 'png', + mime: 'image/png' + }; + } + + if (check([0x41, 0x52, 0x52, 0x4F, 0x57, 0x31, 0x00, 0x00])) { + return { + ext: 'arrow', + mime: 'application/x-apache-arrow' + }; + } + + if (check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) { + return { + ext: 'glb', + mime: 'model/gltf-binary' + }; + } + + // `mov` format variants + if ( + check([0x66, 0x72, 0x65, 0x65], {offset: 4}) || // `free` + check([0x6D, 0x64, 0x61, 0x74], {offset: 4}) || // `mdat` MJPEG + check([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) || // `moov` + check([0x77, 0x69, 0x64, 0x65], {offset: 4}) // `wide` + ) { + return { + ext: 'mov', + mime: 'video/quicktime' + }; + } + + // -- 9-byte signatures -- + + if (check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) { + return { + ext: 'orf', + mime: 'image/x-olympus-orf' + }; + } + + // -- 12-byte signatures -- + + if (check([0x49, 0x49, 0x55, 0x00, 0x18, 0x00, 0x00, 0x00, 0x88, 0xE7, 0x74, 0xD8])) { + return { + ext: 'rw2', + mime: 'image/x-panasonic-rw2' + }; + } + + // ASF_Header_Object first 80 bytes + if (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) { + async function readHeader() { + const guid = Buffer.alloc(16); + await tokenizer.readBuffer(guid); + return { + id: guid, + size: await tokenizer.readToken(Token.UINT64_LE) + }; + } + + await tokenizer.ignore(30); + // Search for header should be in first 1KB of file. + while (tokenizer.position + 24 < tokenizer.fileInfo.size) { + const header = await readHeader(); + let payload = header.size - 24; + if (_check(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) { + // Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365) + const typeId = Buffer.alloc(16); + payload -= await tokenizer.readBuffer(typeId); + + if (_check(typeId, [0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) { + // Found audio: + return { + ext: 'wma', + mime: 'audio/x-ms-wma' + }; + } + + if (_check(typeId, [0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) { + // Found video: + return { + ext: 'wmv', + mime: 'video/x-ms-asf' + }; + } + + break; + } + + await tokenizer.ignore(payload); + } + + // Default to ASF generic extension + return { + ext: 'asf', + mime: 'application/vnd.ms-asf' + }; + } + + if (check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) { + return { + ext: 'ktx', + mime: 'image/ktx' + }; + } + + if ((check([0x7E, 0x10, 0x04]) || check([0x7E, 0x18, 0x04])) && check([0x30, 0x4D, 0x49, 0x45], {offset: 4})) { + return { + ext: 'mie', + mime: 'application/x-mie' + }; + } + + if (check([0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], {offset: 2})) { + return { + ext: 'shp', + mime: 'application/x-esri-shape' + }; + } + + if (check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) { + // JPEG-2000 family + + await tokenizer.ignore(20); + const type = await tokenizer.readToken(new Token.StringType(4, 'ascii')); + switch (type) { + case 'jp2 ': + return { + ext: 'jp2', + mime: 'image/jp2' + }; + case 'jpx ': + return { + ext: 'jpx', + mime: 'image/jpx' + }; + case 'jpm ': + return { + ext: 'jpm', + mime: 'image/jpm' + }; + case 'mjp2': + return { + ext: 'mj2', + mime: 'image/mj2' + }; + default: + return; + } + } + + // -- Unsafe signatures -- + + if ( + check([0x0, 0x0, 0x1, 0xBA]) || + check([0x0, 0x0, 0x1, 0xB3]) + ) { + return { + ext: 'mpg', + mime: 'video/mpeg' + }; + } + + if (check([0x00, 0x01, 0x00, 0x00, 0x00])) { + return { + ext: 'ttf', + mime: 'font/ttf' + }; + } + + if (check([0x00, 0x00, 0x01, 0x00])) { + return { + ext: 'ico', + mime: 'image/x-icon' + }; + } + + if (check([0x00, 0x00, 0x02, 0x00])) { + return { + ext: 'cur', + mime: 'image/x-icon' + }; + } + + // Increase sample size from 12 to 256. + await tokenizer.peekBuffer(buffer, {length: Math.min(256, tokenizer.fileInfo.size), mayBeLess: true}); + + // `raf` is here just to keep all the raw image detectors together. + if (checkString('FUJIFILMCCD-RAW')) { + return { + ext: 'raf', + mime: 'image/x-fujifilm-raf' + }; + } + + if (checkString('Extended Module:')) { + return { + ext: 'xm', + mime: 'audio/x-xm' + }; + } + + if (checkString('Creative Voice File')) { + return { + ext: 'voc', + mime: 'audio/x-voc' + }; + } + + if (check([0x04, 0x00, 0x00, 0x00]) && buffer.length >= 16) { // Rough & quick check Pickle/ASAR + const jsonSize = buffer.readUInt32LE(12); + if (jsonSize > 12 && jsonSize < 240 && buffer.length >= jsonSize + 16) { + try { + const header = buffer.slice(16, jsonSize + 16).toString(); + const json = JSON.parse(header); + // Check if Pickle is ASAR + if (json.files) { // Final check, assuring Pickle/ASAR format + return { + ext: 'asar', + mime: 'application/x-asar' + }; + } + } catch (_) { + } + } + } + + if (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E])) { + return { + ext: 'msi', + mime: 'application/x-msi' + }; + } + + if (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) { + return { + ext: 'mxf', + mime: 'application/mxf' + }; + } + + if (checkString('SCRM', {offset: 44})) { + return { + ext: 's3m', + mime: 'audio/x-s3m' + }; + } + + if (check([0x47], {offset: 4}) && (check([0x47], {offset: 192}) || check([0x47], {offset: 196}))) { + return { + ext: 'mts', + mime: 'video/mp2t' + }; + } + + if (check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {offset: 60})) { + return { + ext: 'mobi', + mime: 'application/x-mobipocket-ebook' + }; + } + + if (check([0x44, 0x49, 0x43, 0x4D], {offset: 128})) { + return { + ext: 'dcm', + mime: 'application/dicom' + }; + } + + if (check([0x4C, 0x00, 0x00, 0x00, 0x01, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46])) { + return { + ext: 'lnk', + mime: 'application/x.ms.shortcut' // Invented by us + }; + } + + if (check([0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00])) { + return { + ext: 'alias', + mime: 'application/x.apple.alias' // Invented by us + }; + } + + if ( + check([0x4C, 0x50], {offset: 34}) && + ( + check([0x00, 0x00, 0x01], {offset: 8}) || + check([0x01, 0x00, 0x02], {offset: 8}) || + check([0x02, 0x00, 0x02], {offset: 8}) + ) + ) { + return { + ext: 'eot', + mime: 'application/vnd.ms-fontobject' + }; + } + + if (check([0x06, 0x06, 0xED, 0xF5, 0xD8, 0x1D, 0x46, 0xE5, 0xBD, 0x31, 0xEF, 0xE7, 0xFE, 0x74, 0xB7, 0x1D])) { + return { + ext: 'indd', + mime: 'application/x-indesign' + }; + } + + // Increase sample size from 256 to 512 + await tokenizer.peekBuffer(buffer, {length: Math.min(512, tokenizer.fileInfo.size), mayBeLess: true}); + + // Requires a buffer size of 512 bytes + if (tarHeaderChecksumMatches(buffer)) { + return { + ext: 'tar', + mime: 'application/x-tar' + }; + } + + if (check([0xFF, 0xFE, 0xFF, 0x0E, 0x53, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x74, 0x00, 0x63, 0x00, 0x68, 0x00, 0x55, 0x00, 0x70, 0x00, 0x20, 0x00, 0x4D, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6C, 0x00])) { + return { + ext: 'skp', + mime: 'application/vnd.sketchup.skp' + }; + } + + if (checkString('-----BEGIN PGP MESSAGE-----')) { + return { + ext: 'pgp', + mime: 'application/pgp-encrypted' + }; + } + + // Check for MPEG header at different starting offsets + for (let start = 0; start < 2 && start < (buffer.length - 16); start++) { + // Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE) + if (buffer.length >= start + 2 && check([0xFF, 0xE0], {offset: start, mask: [0xFF, 0xE0]})) { + if (check([0x10], {offset: start + 1, mask: [0x16]})) { + // Check for (ADTS) MPEG-2 + if (check([0x08], {offset: start + 1, mask: [0x08]})) { + return { + ext: 'aac', + mime: 'audio/aac' + }; + } + + // Must be (ADTS) MPEG-4 + return { + ext: 'aac', + mime: 'audio/aac' + }; + } + + // MPEG 1 or 2 Layer 3 header + // Check for MPEG layer 3 + if (check([0x02], {offset: start + 1, mask: [0x06]})) { + return { + ext: 'mp3', + mime: 'audio/mpeg' + }; + } + + // Check for MPEG layer 2 + if (check([0x04], {offset: start + 1, mask: [0x06]})) { + return { + ext: 'mp2', + mime: 'audio/mpeg' + }; + } + + // Check for MPEG layer 1 + if (check([0x06], {offset: start + 1, mask: [0x06]})) { + return { + ext: 'mp1', + mime: 'audio/mpeg' + }; + } + } + } +} + +const stream = readableStream => new Promise((resolve, reject) => { + // Using `eval` to work around issues when bundling with Webpack + const stream = eval('require')('stream'); // eslint-disable-line no-eval + + readableStream.on('error', reject); + readableStream.once('readable', async () => { + // Set up output stream + const pass = new stream.PassThrough(); + let outputStream; + if (stream.pipeline) { + outputStream = stream.pipeline(readableStream, pass, () => { + }); + } else { + outputStream = readableStream.pipe(pass); + } + + // Read the input stream and detect the filetype + const chunk = readableStream.read(minimumBytes) || readableStream.read() || Buffer.alloc(0); + try { + const fileType = await fromBuffer(chunk); + pass.fileType = fileType; + } catch (error) { + reject(error); + } + + resolve(outputStream); + }); +}); + +const fileType = { + fromStream, + fromTokenizer, + fromBuffer, + stream +}; + +Object.defineProperty(fileType, 'extensions', { + get() { + return new Set(supported.extensions); + } +}); + +Object.defineProperty(fileType, 'mimeTypes', { + get() { + return new Set(supported.mimeTypes); + } +}); + +module.exports = fileType; + + +/***/ }), + +/***/ "./node_modules/imagemin/node_modules/file-type/index.js": +/*!***************************************************************!*\ + !*** ./node_modules/imagemin/node_modules/file-type/index.js ***! + \***************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + + +const strtok3 = __webpack_require__(/*! strtok3 */ "strtok3"); +const core = __webpack_require__(/*! ./core */ "./node_modules/imagemin/node_modules/file-type/core.js"); + +async function fromFile(path) { + const tokenizer = await strtok3.fromFile(path); + try { + return await core.fromTokenizer(tokenizer); + } finally { + await tokenizer.close(); + } +} + +const fileType = { + fromFile +}; + +Object.assign(fileType, core); + +Object.defineProperty(fileType, 'extensions', { + get() { + return core.extensions; + } +}); + +Object.defineProperty(fileType, 'mimeTypes', { + get() { + return core.mimeTypes; + } +}); + +module.exports = fileType; + + +/***/ }), + +/***/ "./node_modules/imagemin/node_modules/file-type/supported.js": +/*!*******************************************************************!*\ + !*** ./node_modules/imagemin/node_modules/file-type/supported.js ***! + \*******************************************************************/ +/***/ ((module) => { + + + +module.exports = { + extensions: [ + 'jpg', + 'png', + 'apng', + 'gif', + 'webp', + 'flif', + 'cr2', + 'cr3', + 'orf', + 'arw', + 'dng', + 'nef', + 'rw2', + 'raf', + 'tif', + 'bmp', + 'icns', + 'jxr', + 'psd', + 'indd', + 'zip', + 'tar', + 'rar', + 'gz', + 'bz2', + '7z', + 'dmg', + 'mp4', + 'mid', + 'mkv', + 'webm', + 'mov', + 'avi', + 'mpg', + 'mp2', + 'mp3', + 'm4a', + 'oga', + 'ogg', + 'ogv', + 'opus', + 'flac', + 'wav', + 'spx', + 'amr', + 'pdf', + 'epub', + 'exe', + 'swf', + 'rtf', + 'wasm', + 'woff', + 'woff2', + 'eot', + 'ttf', + 'otf', + 'ico', + 'flv', + 'ps', + 'xz', + 'sqlite', + 'nes', + 'crx', + 'xpi', + 'cab', + 'deb', + 'ar', + 'rpm', + 'Z', + 'lz', + 'msi', + 'mxf', + 'mts', + 'blend', + 'bpg', + 'docx', + 'pptx', + 'xlsx', + '3gp', + '3g2', + 'jp2', + 'jpm', + 'jpx', + 'mj2', + 'aif', + 'qcp', + 'odt', + 'ods', + 'odp', + 'xml', + 'mobi', + 'heic', + 'cur', + 'ktx', + 'ape', + 'wv', + 'wmv', + 'wma', + 'dcm', + 'ics', + 'glb', + 'pcap', + 'dsf', + 'lnk', + 'alias', + 'voc', + 'ac3', + 'm4v', + 'm4p', + 'm4b', + 'f4v', + 'f4p', + 'f4b', + 'f4a', + 'mie', + 'asf', + 'ogm', + 'ogx', + 'mpc', + 'arrow', + 'shp', + 'aac', + 'mp1', + 'it', + 's3m', + 'xm', + 'ai', + 'skp', + 'avif', + 'eps', + 'lzh', + 'pgp', + 'asar' + ], + mimeTypes: [ + 'image/jpeg', + 'image/png', + 'image/gif', + 'image/webp', + 'image/flif', + 'image/x-canon-cr2', + 'image/x-canon-cr3', + 'image/tiff', + 'image/bmp', + 'image/vnd.ms-photo', + 'image/vnd.adobe.photoshop', + 'application/x-indesign', + 'application/epub+zip', + 'application/x-xpinstall', + 'application/vnd.oasis.opendocument.text', + 'application/vnd.oasis.opendocument.spreadsheet', + 'application/vnd.oasis.opendocument.presentation', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'application/zip', + 'application/x-tar', + 'application/x-rar-compressed', + 'application/gzip', + 'application/x-bzip2', + 'application/x-7z-compressed', + 'application/x-apple-diskimage', + 'application/x-apache-arrow', + 'video/mp4', + 'audio/midi', + 'video/x-matroska', + 'video/webm', + 'video/quicktime', + 'video/vnd.avi', + 'audio/vnd.wave', + 'audio/qcelp', + 'audio/x-ms-wma', + 'video/x-ms-asf', + 'application/vnd.ms-asf', + 'video/mpeg', + 'video/3gpp', + 'audio/mpeg', + 'audio/mp4', // RFC 4337 + 'audio/opus', + 'video/ogg', + 'audio/ogg', + 'application/ogg', + 'audio/x-flac', + 'audio/ape', + 'audio/wavpack', + 'audio/amr', + 'application/pdf', + 'application/x-msdownload', + 'application/x-shockwave-flash', + 'application/rtf', + 'application/wasm', + 'font/woff', + 'font/woff2', + 'application/vnd.ms-fontobject', + 'font/ttf', + 'font/otf', + 'image/x-icon', + 'video/x-flv', + 'application/postscript', + 'application/eps', + 'application/x-xz', + 'application/x-sqlite3', + 'application/x-nintendo-nes-rom', + 'application/x-google-chrome-extension', + 'application/vnd.ms-cab-compressed', + 'application/x-deb', + 'application/x-unix-archive', + 'application/x-rpm', + 'application/x-compress', + 'application/x-lzip', + 'application/x-msi', + 'application/x-mie', + 'application/mxf', + 'video/mp2t', + 'application/x-blender', + 'image/bpg', + 'image/jp2', + 'image/jpx', + 'image/jpm', + 'image/mj2', + 'audio/aiff', + 'application/xml', + 'application/x-mobipocket-ebook', + 'image/heif', + 'image/heif-sequence', + 'image/heic', + 'image/heic-sequence', + 'image/icns', + 'image/ktx', + 'application/dicom', + 'audio/x-musepack', + 'text/calendar', + 'model/gltf-binary', + 'application/vnd.tcpdump.pcap', + 'audio/x-dsf', // Non-standard + 'application/x.ms.shortcut', // Invented by us + 'application/x.apple.alias', // Invented by us + 'audio/x-voc', + 'audio/vnd.dolby.dd-raw', + 'audio/x-m4a', + 'image/apng', + 'image/x-olympus-orf', + 'image/x-sony-arw', + 'image/x-adobe-dng', + 'image/x-nikon-nef', + 'image/x-panasonic-rw2', + 'image/x-fujifilm-raf', + 'video/x-m4v', + 'video/3gpp2', + 'application/x-esri-shape', + 'audio/aac', + 'audio/x-it', + 'audio/x-s3m', + 'audio/x-xm', + 'video/MP1S', + 'video/MP2P', + 'application/vnd.sketchup.skp', + 'image/avif', + 'application/x-lzh-compressed', + 'application/pgp-encrypted', + 'application/x-asar' + ] +}; + + +/***/ }), + +/***/ "./node_modules/imagemin/node_modules/file-type/util.js": +/*!**************************************************************!*\ + !*** ./node_modules/imagemin/node_modules/file-type/util.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + + + +exports.stringToBytes = string => [...string].map(character => character.charCodeAt(0)); + +exports.tarHeaderChecksumMatches = buffer => { // Does not check if checksum field characters are valid + if (buffer.length < 512) { // `tar` header size, cannot compute checksum without it + return false; + } + + const readSum = parseInt(buffer.toString('utf8', 148, 154).replace(/\0.*$/, '').trim(), 8); // Read sum in header + if (isNaN(readSum)) { + return false; + } + + const MASK_8TH_BIT = 0x80; + + let sum = 256; // Initialize sum, with 256 as sum of 8 spaces in checksum field + let signedBitSum = 0; // Initialize signed bit sum + + for (let i = 0; i < 148; i++) { + const byte = buffer[i]; + sum += byte; + signedBitSum += byte & MASK_8TH_BIT; // Add signed bit to signed bit sum + } + + // Skip checksum field + + for (let i = 156; i < 512; i++) { + const byte = buffer[i]; + sum += byte; + signedBitSum += byte & MASK_8TH_BIT; // Add signed bit to signed bit sum + } + + // Some implementations compute checksum incorrectly using signed bytes + return ( + // Checksum in header equals the sum we calculated + readSum === sum || + + // Checksum in header equals sum we calculated plus signed-to-unsigned delta + readSum === (sum - (signedBitSum << 1)) + ); +}; + +/** +ID3 UINT32 sync-safe tokenizer token. +28 bits (representing up to 256MB) integer, the msb is 0 to avoid "false syncsignals". +*/ +exports.uint32SyncSafeToken = { + get: (buffer, offset) => { + return (buffer[offset + 3] & 0x7F) | ((buffer[offset + 2]) << 7) | ((buffer[offset + 1]) << 14) | ((buffer[offset]) << 21); + }, + len: 4 +}; + + +/***/ }), + +/***/ "./node_modules/is-png/index.js": +/*!**************************************!*\ + !*** ./node_modules/is-png/index.js ***! + \**************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ isPng) +/* harmony export */ }); +function isPng(buffer) { + if (!buffer || buffer.length < 8) { + return false; + } + + return ( + buffer[0] === 0x89 && + buffer[1] === 0x50 && + buffer[2] === 0x4E && + buffer[3] === 0x47 && + buffer[4] === 0x0D && + buffer[5] === 0x0A && + buffer[6] === 0x1A && + buffer[7] === 0x0A + ); +} + + +/***/ }), + +/***/ "./node_modules/p-pipe/index.js": +/*!**************************************!*\ + !*** ./node_modules/p-pipe/index.js ***! + \**************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ pPipe) +/* harmony export */ }); +function pPipe(...functions) { + if (functions.length === 0) { + throw new Error('Expected at least one argument'); + } + + return async input => { + let currentValue = input; + + for (const function_ of functions) { + currentValue = await function_(currentValue); // eslint-disable-line no-await-in-loop + } + + return currentValue; + }; +} + + +/***/ }), + +/***/ "./src/api/tauricon.ts": +/*!*****************************!*\ + !*** ./src/api/tauricon.ts ***! + \*****************************/ +/***/ (function(module, exports, __webpack_require__) { + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +/* eslint-disable @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call */ +/** + * This is a module that takes an original image and resizes + * it to common icon sizes and will put them in a folder. + * It will retain transparency and can make special file + * types. You can control the settings. + * + * @module tauricon + * @exports tauricon + * @author Daniel Thompson-Yvetot + * @license MIT + */ +var fs_extra_1 = __webpack_require__(/*! fs-extra */ "fs-extra"); +var imagemin_1 = __importDefault(__webpack_require__(/*! imagemin */ "./node_modules/imagemin/index.js")); +var imagemin_optipng_1 = __importDefault(__webpack_require__(/*! imagemin-optipng */ "imagemin-optipng")); +var imagemin_zopfli_1 = __importDefault(__webpack_require__(/*! imagemin-zopfli */ "imagemin-zopfli")); +var is_png_1 = __importDefault(__webpack_require__(/*! is-png */ "./node_modules/is-png/index.js")); +var path_1 = __importDefault(__webpack_require__(/*! path */ "path")); +var png2icons = __importStar(__webpack_require__(/*! png2icons */ "png2icons")); +var read_chunk_1 = __importDefault(__webpack_require__(/*! read-chunk */ "read-chunk")); +var sharp_1 = __importDefault(__webpack_require__(/*! sharp */ "sharp")); +var app_paths_1 = __webpack_require__(/*! ../helpers/app-paths */ "./src/helpers/app-paths.ts"); +var logger_1 = __importDefault(__webpack_require__(/*! ../helpers/logger */ "./src/helpers/logger.ts")); +var settings = __importStar(__webpack_require__(/*! ../helpers/tauricon.config */ "./src/helpers/tauricon.config.ts")); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var package_json_1 = __webpack_require__(/*! ../../package.json */ "./package.json"); +var log = logger_1.default('app:spawn'); +var warn = logger_1.default('app:spawn', chalk_1.default.red); +var image = false; +var spinnerInterval = null; +var exists = function (file) { + return __awaiter(this, void 0, void 0, function () { + var err_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]); + return [4 /*yield*/, fs_extra_1.access(file)]; + case 1: + _a.sent(); + return [2 /*return*/, true]; + case 2: + err_1 = _a.sent(); + return [2 /*return*/, false]; + case 3: return [2 /*return*/]; + } + }); + }); +}; +/** + * This is the first call that attempts to memoize the sharp(src). + * If the source image cannot be found or if it is not a png, it + * is a failsafe that will exit or throw. + * + * @param {string} src - a folder to target + * @exits {error} if not a png, if not an image + */ +var checkSrc = function (src) { return __awaiter(void 0, void 0, void 0, function () { + var srcExists, buffer, meta, stats; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!(image !== false)) return [3 /*break*/, 1]; + return [2 /*return*/, image]; + case 1: return [4 /*yield*/, exists(src)]; + case 2: + srcExists = _a.sent(); + if (!!srcExists) return [3 /*break*/, 3]; + image = false; + if (spinnerInterval) + clearInterval(spinnerInterval); + warn('[ERROR] Source image for tauricon not found'); + process.exit(1); + return [3 /*break*/, 8]; + case 3: return [4 /*yield*/, read_chunk_1.default(src, 0, 8)]; + case 4: + buffer = _a.sent(); + if (!is_png_1.default(buffer)) return [3 /*break*/, 7]; + image = sharp_1.default(src); + return [4 /*yield*/, image.metadata()]; + case 5: + meta = _a.sent(); + if (!meta.hasAlpha || meta.channels !== 4) { + if (spinnerInterval) + clearInterval(spinnerInterval); + warn('[ERROR] Source png for tauricon is not transparent'); + process.exit(1); + } + return [4 /*yield*/, image.stats()]; + case 6: + stats = _a.sent(); + if (stats.isOpaque) { + if (spinnerInterval) + clearInterval(spinnerInterval); + warn('[ERROR] Source png for tauricon could not be detected as transparent'); + process.exit(1); + } + return [2 /*return*/, image]; + case 7: + image = false; + if (spinnerInterval) + clearInterval(spinnerInterval); + warn('[ERROR] Source image for tauricon is not a png'); + process.exit(1); + _a.label = 8; + case 8: return [2 /*return*/]; + } + }); +}); }; +/** + * Sort the folders in the current job for unique folders. + * + * @param {object} options - a subset of the settings + * @returns {array} folders + */ +// TODO: proper type of options and folders +var uniqueFolders = function (options) { + var folders = []; + for (var type in options) { + var option = options[String(type)]; + if (option.folder) { + folders.push(option.folder); + } + } + // TODO: is compare argument required? + // eslint-disable-next-line @typescript-eslint/require-array-sort-compare + folders = folders.sort().filter(function (x, i, a) { return !i || x !== a[i - 1]; }); + return folders; +}; +/** + * Turn a hex color (like #212342) into r,g,b values + * + * @param {string} hex - hex colour + * @returns {array} r,g,b + */ +var hexToRgb = function (hex) { + // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb + // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") + var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + hex = hex.replace(shorthandRegex, function (m, r, g, b) { + return r + r + g + g + b + b; + }); + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result + ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } + : undefined; +}; +/** + * validate image and directory + */ +var validate = function (src, target) { return __awaiter(void 0, void 0, void 0, function () { + var res; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!(target !== undefined)) return [3 /*break*/, 2]; + return [4 /*yield*/, fs_extra_1.ensureDir(target)]; + case 1: + _a.sent(); + _a.label = 2; + case 2: return [4 /*yield*/, checkSrc(src)]; + case 3: + res = _a.sent(); + return [2 /*return*/, res]; + } + }); +}); }; +// TODO: should take end param? +/** + * Log progress in the command line + * + * @param {boolean} end + */ +var progress = function (msg) { + process.stdout.write(" " + msg + " \r"); +}; +/** + * Create a spinner on the command line + * + * @example + * + * const spinnerInterval = spinner() + * // later + * clearInterval(spinnerInterval) + */ +var spinner = function () { + if ('CI' in process.env || process.argv.some(function (arg) { return arg === '--ci'; })) { + return null; + } + return setInterval(function () { + process.stdout.write('/ \r'); + setTimeout(function () { + process.stdout.write('- \r'); + setTimeout(function () { + process.stdout.write('\\ \r'); + setTimeout(function () { + process.stdout.write('| \r'); + }, 100); + }, 100); + }, 100); + }, 500); +}; +var tauricon = (exports.tauricon = { + validate: function (src, target) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, validate(src, target)]; + case 1: + _a.sent(); + return [2 /*return*/, typeof image === 'object']; + } + }); + }); + }, + version: function () { + return package_json_1.version; + }, + make: function (src, target, strategy, + // TODO: proper type for options + options) { + if (target === void 0) { target = path_1.default.resolve(app_paths_1.tauriDir, 'icons'); } + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!src) { + src = path_1.default.resolve(app_paths_1.appDir, 'app-icon.png'); + } + spinnerInterval = spinner(); + options = options || settings.options.tauri; + progress("Building Tauri icns and ico from \"" + src + "\""); + return [4 /*yield*/, this.validate(src, target)]; + case 1: + _a.sent(); + return [4 /*yield*/, this.icns(src, target, options, strategy)]; + case 2: + _a.sent(); + progress('Building Tauri png icons'); + return [4 /*yield*/, this.build(src, target, options)]; + case 3: + _a.sent(); + if (!strategy) return [3 /*break*/, 5]; + progress("Minifying assets with " + strategy); + return [4 /*yield*/, this.minify(target, options, strategy, 'batch')]; + case 4: + _a.sent(); + return [3 /*break*/, 6]; + case 5: + log('no minify strategy'); + _a.label = 6; + case 6: + progress('Tauricon Finished'); + if (spinnerInterval) + clearInterval(spinnerInterval); + return [2 /*return*/, true]; + } + }); + }); + }, + /** + * Creates a set of images according to the subset of options it knows about. + * + * @param {string} src - image location + * @param {string} target - where to drop the images + * @param {object} options - js object that defines path and sizes + */ + build: function (src, target, + // TODO: proper type for options + options) { + return __awaiter(this, void 0, void 0, function () { + var sharpSrc, buildify2, output, folders, n, folder, _a, _b, _i, optionKey, option, _c, _d, _e, sizeKey, size, dest, pvar; + return __generator(this, function (_f) { + switch (_f.label) { + case 0: return [4 /*yield*/, this.validate(src, target)]; + case 1: + _f.sent(); + sharpSrc = sharp_1.default(src) // creates the image object + ; + buildify2 = function (pvar) { + return __awaiter(this, void 0, void 0, function () { + var pngImage, rgb, err_2; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]); + pngImage = sharpSrc.resize(pvar[1], pvar[1]); + if (pvar[2]) { + rgb = hexToRgb(options.background_color) || { + r: undefined, + g: undefined, + b: undefined + }; + pngImage.flatten({ + background: { r: rgb.r, g: rgb.g, b: rgb.b, alpha: 1 } + }); + } + pngImage.png(); + return [4 /*yield*/, pngImage.toFile(pvar[0])]; + case 1: + _a.sent(); + return [3 /*break*/, 3]; + case 2: + err_2 = _a.sent(); + warn(err_2); + return [3 /*break*/, 3]; + case 3: return [2 /*return*/]; + } + }); + }); + }; + folders = uniqueFolders(options); + // eslint-disable-next-line @typescript-eslint/no-for-in-array + for (n in folders) { + folder = folders[Number(n)]; + // make the folders first + // TODO: should this be ensureDirSync? + // eslint-disable-next-line @typescript-eslint/no-floating-promises + fs_extra_1.ensureDir("" + target + path_1.default.sep + folder); + } + _a = []; + for (_b in options) + _a.push(_b); + _i = 0; + _f.label = 2; + case 2: + if (!(_i < _a.length)) return [3 /*break*/, 7]; + optionKey = _a[_i]; + option = options[String(optionKey)]; + _c = []; + for (_d in option.sizes) + _c.push(_d); + _e = 0; + _f.label = 3; + case 3: + if (!(_e < _c.length)) return [3 /*break*/, 6]; + sizeKey = _c[_e]; + size = option.sizes[String(sizeKey)]; + if (!!option.splash) return [3 /*break*/, 5]; + dest = target + "/" + option.folder; + if (option.infix === true) { + output = "" + dest + path_1.default.sep + option.prefix + size + "x" + size + option.suffix; + } + else { + output = "" + dest + path_1.default.sep + option.prefix + option.suffix; + } + pvar = [ + output, + size, + option.background + ]; + return [4 /*yield*/, buildify2(pvar)]; + case 4: + _f.sent(); + _f.label = 5; + case 5: + _e++; + return [3 /*break*/, 3]; + case 6: + _i++; + return [3 /*break*/, 2]; + case 7: return [2 /*return*/]; + } + }); + }); + }, + /** + * Creates a set of splash images (COMING SOON!!!) + * + * @param {string} src - icon location + * @param {string} splashSrc - splashscreen location + * @param {string} target - where to drop the images + * @param {object} options - js object that defines path and sizes + */ + splash: function (src, splashSrc, target, + // TODO: proper type for options + options) { + return __awaiter(this, void 0, void 0, function () { + var output, block, rgb, sharpSrc, data, _a, _b, _i, optionKey, option, _c, _d, _e, sizeKey, size, dest, pvar, sharpData; + return __generator(this, function (_f) { + switch (_f.label) { + case 0: + block = false; + rgb = hexToRgb(options.background_color) || { + r: undefined, + g: undefined, + b: undefined + }; + if (splashSrc === src) { + // prevent overlay or pure + block = true; + } + if (!(block || options.splashscreen_type === 'generate')) return [3 /*break*/, 2]; + return [4 /*yield*/, this.validate(src, target)]; + case 1: + _f.sent(); + if (!image) { + process.exit(1); + } + sharpSrc = sharp_1.default(src); + sharpSrc + .extend({ + top: 726, + bottom: 726, + left: 726, + right: 726, + background: { + r: rgb.r, + g: rgb.g, + b: rgb.b, + alpha: 1 + } + }) + .flatten({ background: { r: rgb.r, g: rgb.g, b: rgb.b, alpha: 1 } }); + return [3 /*break*/, 3]; + case 2: + if (options.splashscreen_type === 'overlay') { + sharpSrc = sharp_1.default(splashSrc) + .flatten({ background: { r: rgb.r, g: rgb.g, b: rgb.b, alpha: 1 } }) + .composite([ + { + input: src + // blend: 'multiply' <= future work, maybe just a gag + } + ]); + } + else if (options.splashscreen_type === 'pure') { + sharpSrc = sharp_1.default(splashSrc).flatten({ + background: { r: rgb.r, g: rgb.g, b: rgb.b, alpha: 1 } + }); + } + else { + throw new Error("unknown options.splashscreen_type: " + options.splashscreen_type); + } + _f.label = 3; + case 3: return [4 /*yield*/, sharpSrc.toBuffer()]; + case 4: + data = _f.sent(); + _a = []; + for (_b in options) + _a.push(_b); + _i = 0; + _f.label = 5; + case 5: + if (!(_i < _a.length)) return [3 /*break*/, 11]; + optionKey = _a[_i]; + option = options[String(optionKey)]; + _c = []; + for (_d in option.sizes) + _c.push(_d); + _e = 0; + _f.label = 6; + case 6: + if (!(_e < _c.length)) return [3 /*break*/, 10]; + sizeKey = _c[_e]; + size = option.sizes[String(sizeKey)]; + if (!option.splash) return [3 /*break*/, 9]; + dest = "" + target + path_1.default.sep + option.folder; + return [4 /*yield*/, fs_extra_1.ensureDir(dest)]; + case 7: + _f.sent(); + if (option.infix === true) { + output = "" + dest + path_1.default.sep + option.prefix + size + "x" + size + option.suffix; + } + else { + output = "" + dest + path_1.default.sep + option.prefix + option.suffix; + } + pvar = [output, size]; + sharpData = sharp_1.default(data); + sharpData = sharpData.resize(pvar[1][0], pvar[1][1]); + return [4 /*yield*/, sharpData.toFile(pvar[0])]; + case 8: + _f.sent(); + _f.label = 9; + case 9: + _e++; + return [3 /*break*/, 6]; + case 10: + _i++; + return [3 /*break*/, 5]; + case 11: return [2 /*return*/]; + } + }); + }); + }, + /** + * Minifies a set of images + * + * @param {string} target - image location + * @param {object} options - where to drop the images + * @param {string} strategy - which minify strategy to use + * @param {string} mode - singlefile or batch + */ + minify: function (target, + // TODO: proper type for options + options, strategy, mode) { + return __awaiter(this, void 0, void 0, function () { + var cmd, minify, minifier, _a, folders, _b, _c, _i, n, folder; + var _this = this; + return __generator(this, function (_d) { + switch (_d.label) { + case 0: + minify = settings.options.minify; + if (!minify.available.find(function (x) { return x === strategy; })) { + strategy = minify.type; + } + switch (strategy) { + case 'optipng': + cmd = imagemin_optipng_1.default(minify.optipngOptions); + break; + case 'zopfli': + cmd = imagemin_zopfli_1.default(minify.zopfliOptions); + break; + default: + throw new Error('unknown strategy' + strategy); + } + minifier = function (pvar, cmd) { return __awaiter(_this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, imagemin_1.default([pvar[0]], { + destination: pvar[1], + plugins: [cmd] + }).catch(function (err) { + warn(err); + })]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); }; + _a = mode; + switch (_a) { + case 'singlefile': return [3 /*break*/, 1]; + case 'batch': return [3 /*break*/, 3]; + } + return [3 /*break*/, 8]; + case 1: return [4 /*yield*/, minifier([target, path_1.default.dirname(target)], cmd)]; + case 2: + _d.sent(); + return [3 /*break*/, 9]; + case 3: + folders = uniqueFolders(options); + _b = []; + for (_c in folders) + _b.push(_c); + _i = 0; + _d.label = 4; + case 4: + if (!(_i < _b.length)) return [3 /*break*/, 7]; + n = _b[_i]; + folder = folders[Number(n)]; + log('batch minify:' + String(folder)); + return [4 /*yield*/, minifier([ + "" + target + path_1.default.sep + folder + path_1.default.sep + "*.png", + "" + target + path_1.default.sep + folder + ], cmd)]; + case 5: + _d.sent(); + _d.label = 6; + case 6: + _i++; + return [3 /*break*/, 4]; + case 7: return [3 /*break*/, 9]; + case 8: + warn('[ERROR] Minify mode must be one of [ singlefile | batch]'); + process.exit(1); + _d.label = 9; + case 9: return [2 /*return*/, 'minified']; + } + }); + }); + }, + /** + * Creates special icns and ico filetypes + * + * @param {string} src - image location + * @param {string} target - where to drop the images + * @param {object} options + * @param {string} strategy + */ + icns: function (src, target, + // TODO: proper type for options + options, strategy) { + return __awaiter(this, void 0, void 0, function () { + var sharpSrc, buf, out, out2, err_3; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 3, , 4]); + if (!image) { + process.exit(1); + } + return [4 /*yield*/, this.validate(src, target)]; + case 1: + _a.sent(); + sharpSrc = sharp_1.default(src); + return [4 /*yield*/, sharpSrc.toBuffer()]; + case 2: + buf = _a.sent(); + out = png2icons.createICNS(buf, png2icons.BICUBIC, 0); + if (out === null) { + throw new Error('Failed to create icon.icns'); + } + fs_extra_1.ensureFileSync(path_1.default.join(target, '/icon.icns')); + fs_extra_1.writeFileSync(path_1.default.join(target, '/icon.icns'), out); + out2 = png2icons.createICO(buf, png2icons.BICUBIC, 0, true); + if (out2 === null) { + throw new Error('Failed to create icon.ico'); + } + fs_extra_1.ensureFileSync(path_1.default.join(target, '/icon.ico')); + fs_extra_1.writeFileSync(path_1.default.join(target, '/icon.ico'), out2); + return [3 /*break*/, 4]; + case 3: + err_3 = _a.sent(); + console.error(err_3); + throw err_3; + case 4: return [2 /*return*/]; + } + }); + }); + } +}); +/* eslint-enable @typescript-eslint/restrict-template-expressions */ +if (true) { + if ( true && module.exports) { + exports = module.exports = tauricon; + } + exports.tauricon = tauricon; +} + + +/***/ }), + +/***/ "./src/helpers/app-paths.ts": +/*!**********************************!*\ + !*** ./src/helpers/app-paths.ts ***! + \**********************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.resolve = exports.tauriDir = exports.appDir = void 0; +var fs_1 = __webpack_require__(/*! fs */ "fs"); +var path_1 = __webpack_require__(/*! path */ "path"); +var logger_1 = __importDefault(__webpack_require__(/*! ./logger */ "./src/helpers/logger.ts")); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var warn = logger_1.default('tauri', chalk_1.default.red); +function resolvePath(basePath, dir) { + return dir && path_1.isAbsolute(dir) ? dir : path_1.resolve(basePath, dir); +} +var getAppDir = function () { + var dir = process.cwd(); + var count = 0; + // only go up three folders max + while (dir.length > 0 && !dir.endsWith(path_1.sep) && count <= 2) { + if (fs_1.existsSync(path_1.join(dir, 'src-tauri', 'tauri.conf.json'))) { + return dir; + } + count++; + dir = path_1.normalize(path_1.join(dir, '..')); + } + warn("Couldn't find recognize the current folder as a part of a Tauri project"); + process.exit(1); +}; +var appDir = getAppDir(); +exports.appDir = appDir; +var tauriDir = path_1.resolve(appDir, 'src-tauri'); +exports.tauriDir = tauriDir; +var resolveDir = { + app: function (dir) { return resolvePath(appDir, dir); }, + tauri: function (dir) { return resolvePath(tauriDir, dir); } +}; +exports.resolve = resolveDir; + + +/***/ }), + +/***/ "./src/helpers/logger.ts": +/*!*******************************!*\ + !*** ./src/helpers/logger.ts ***! + \*******************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var ms_1 = __importDefault(__webpack_require__(/*! ms */ "ms")); +var prevTime; +exports.default = (function (banner, color) { + if (color === void 0) { color = chalk_1.default.green; } + return function (msg) { + var curr = +new Date(); + var diff = curr - (prevTime || curr); + prevTime = curr; + if (msg) { + console.log( + // TODO: proper typings for color and banner + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call + " " + color(String(banner)) + " " + msg + " " + chalk_1.default.green("+" + ms_1.default(diff))); + } + else { + console.log(); + } + }; +}); + + +/***/ }), + +/***/ "./src/helpers/tauricon.config.ts": +/*!****************************************!*\ + !*** ./src/helpers/tauricon.config.ts ***! + \****************************************/ +/***/ ((__unused_webpack_module, exports) => { + + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.options = void 0; +exports.options = { + // folder determines in which path to drop the generated file + // prefix is the first part of the generated file's name + // infix adds e.g. '44x44' based on the size in sizes to the generated file's name + // suffix adds a file-ending to the generated file's name + // sizes determines the pixel width and height to use + background_color: '#000074', + theme_color: '#02aa9b', + sharp: 'kernel: sharp.kernel.lanczos3', + minify: { + batch: false, + overwrite: true, + available: ['optipng', 'zopfli'], + type: 'optipng', + optipngOptions: { + optimizationLevel: 4, + paletteReduction: true + }, + zopfliOptions: { + transparent: true, + more: true + } + }, + splash_type: 'generate', + tauri: { + linux: { + folder: '.', + prefix: '', + infix: true, + suffix: '.png', + sizes: [32, 128] + }, + linux_2x: { + folder: '.', + prefix: '128x128@2x', + infix: false, + suffix: '.png', + sizes: [256] + }, + defaults: { + folder: '.', + prefix: 'icon', + infix: false, + suffix: '.png', + sizes: [512] + }, + appx_logo: { + folder: '.', + prefix: 'StoreLogo', + infix: false, + suffix: '.png', + sizes: [50] + }, + appx_square: { + folder: '.', + prefix: 'Square', + infix: true, + suffix: 'Logo.png', + sizes: [30, 44, 71, 89, 107, 142, 150, 284, 310] + } + // todo: look at capacitor and cordova for insight into what icons + // we need for those distribution targets + } +}; + + +/***/ }), + +/***/ "./package.json": +/*!**********************!*\ + !*** ./package.json ***! + \**********************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"name":"@tauri-apps/cli","version":"1.0.0-beta.6","description":"Command line interface for building Tauri apps","bin":{"tauri":"./bin/tauri.js"},"files":["bin","dist","scripts"],"funding":{"type":"opencollective","url":"https://opencollective.com/tauri"},"scripts":{"build":"rimraf ./dist && webpack --progress","build-release":"rimraf ./dist && cross-env NODE_ENV=production webpack","test":"jest --runInBand --no-cache --testPathIgnorePatterns=\\"(build|dev)\\"","pretest":"yarn build","prepublishOnly":"yarn build-release","test:local":"jest --runInBand","lint":"eslint --ext ts \\"./src/**/*.ts\\"","lint-fix":"eslint --fix --ext ts \\"./src/**/*.ts\\"","lint:lockfile":"lockfile-lint --path yarn.lock --type yarn --validate-https --allowed-hosts npm yarn","format":"prettier --write --end-of-line=auto \\"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\\" --ignore-path .gitignore","format:check":"prettier --check --end-of-line=auto \\"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\\" --ignore-path .gitignore"},"repository":{"type":"git","url":"git+https://github.com/tauri-apps/tauri.git"},"contributors":["Tauri Team (https://tauri.studio)"],"license":"Apache-2.0 OR MIT","bugs":{"url":"https://github.com/tauri-apps/tauri/issues"},"homepage":"https://github.com/tauri-apps/tauri#readme","publishConfig":{"access":"public"},"engines":{"node":">= 12.13.0","npm":">= 6.6.0","yarn":">= 1.19.1"},"dependencies":{"@tauri-apps/toml":"2.2.4","chalk":"4.1.1","cross-env":"7.0.3","cross-spawn":"7.0.3","fs-extra":"10.0.0","got":"11.8.2","imagemin":"8.0.0","imagemin-optipng":"8.0.0","imagemin-zopfli":"7.0.0","inquirer":"8.1.1","is-png":"3.0.0","minimist":"1.2.5","ms":"2.1.3","png2icons":"2.0.1","read-chunk":"3.2.0","semver":"7.3.5","sharp":"0.28.3","update-notifier":"5.1.0"},"devDependencies":{"@babel/core":"7.14.6","@babel/preset-env":"7.14.7","@babel/preset-typescript":"7.14.5","@types/cross-spawn":"6.0.2","@types/fs-extra":"9.0.12","@types/imagemin":"7.0.1","@types/imagemin-optipng":"5.2.1","@types/inquirer":"7.3.3","@types/ms":"0.7.31","@types/semver":"7.3.7","@types/sharp":"0.28.4","@typescript-eslint/eslint-plugin":"4.28.3","@typescript-eslint/parser":"4.28.3","babel-jest":"27.0.6","eslint":"7.30.0","eslint-config-prettier":"8.3.0","eslint-config-standard-with-typescript":"20.0.0","eslint-plugin-import":"2.23.4","eslint-plugin-lodash-template":"0.19.0","eslint-plugin-node":"11.1.0","eslint-plugin-promise":"5.1.0","eslint-plugin-security":"1.4.0","is-running":"2.1.0","jest":"27.0.6","jest-transform-toml":"1.0.0","lockfile-lint":"4.6.2","prettier":"2.3.2","promise":"8.1.0","raw-loader":"4.0.2","rimraf":"3.0.2","toml-loader":"1.0.0","ts-loader":"9.2.3","typescript":"4.3.5","webpack":"5.44.0","webpack-cli":"4.7.2","webpack-node-externals":"3.0.0"},"resolutions":{"**/lodash":"4.17.21","**/hosted-git-info":"4.0.2","**/normalize-url":"6.1.0","**/trim-newlines":"4.0.2"}}'); + +/***/ }), + +/***/ "chalk": +/*!************************!*\ + !*** external "chalk" ***! + \************************/ +/***/ ((module) => { + +module.exports = require("chalk");; + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/***/ ((module) => { + +module.exports = require("fs");; + +/***/ }), + +/***/ "fs-extra": +/*!***************************!*\ + !*** external "fs-extra" ***! + \***************************/ +/***/ ((module) => { + +module.exports = require("fs-extra");; + +/***/ }), + +/***/ "globby": +/*!*************************!*\ + !*** external "globby" ***! + \*************************/ +/***/ ((module) => { + +module.exports = require("globby");; + +/***/ }), + +/***/ "graceful-fs": +/*!******************************!*\ + !*** external "graceful-fs" ***! + \******************************/ +/***/ ((module) => { + +module.exports = require("graceful-fs");; + +/***/ }), + +/***/ "imagemin-optipng": +/*!***********************************!*\ + !*** external "imagemin-optipng" ***! + \***********************************/ +/***/ ((module) => { + +module.exports = require("imagemin-optipng");; + +/***/ }), + +/***/ "imagemin-zopfli": +/*!**********************************!*\ + !*** external "imagemin-zopfli" ***! + \**********************************/ +/***/ ((module) => { + +module.exports = require("imagemin-zopfli");; + +/***/ }), + +/***/ "junk": +/*!***********************!*\ + !*** external "junk" ***! + \***********************/ +/***/ ((module) => { + +module.exports = require("junk");; + +/***/ }), + +/***/ "ms": +/*!*********************!*\ + !*** external "ms" ***! + \*********************/ +/***/ ((module) => { + +module.exports = require("ms");; + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +module.exports = require("path");; + +/***/ }), + +/***/ "png2icons": +/*!****************************!*\ + !*** external "png2icons" ***! + \****************************/ +/***/ ((module) => { + +module.exports = require("png2icons");; + +/***/ }), + +/***/ "read-chunk": +/*!*****************************!*\ + !*** external "read-chunk" ***! + \*****************************/ +/***/ ((module) => { + +module.exports = require("read-chunk");; + +/***/ }), + +/***/ "replace-ext": +/*!******************************!*\ + !*** external "replace-ext" ***! + \******************************/ +/***/ ((module) => { + +module.exports = require("replace-ext");; + +/***/ }), + +/***/ "sharp": +/*!************************!*\ + !*** external "sharp" ***! + \************************/ +/***/ ((module) => { + +module.exports = require("sharp");; + +/***/ }), + +/***/ "strtok3": +/*!**************************!*\ + !*** external "strtok3" ***! + \**************************/ +/***/ ((module) => { + +module.exports = require("strtok3");; + +/***/ }), + +/***/ "strtok3/lib/core": +/*!***********************************!*\ + !*** external "strtok3/lib/core" ***! + \***********************************/ +/***/ ((module) => { + +module.exports = require("strtok3/lib/core");; + +/***/ }), + +/***/ "token-types": +/*!******************************!*\ + !*** external "token-types" ***! + \******************************/ +/***/ ((module) => { + +module.exports = require("token-types");; + +/***/ }), + +/***/ "util": +/*!***********************!*\ + !*** external "util" ***! + \***********************/ +/***/ ((module) => { + +module.exports = require("util");; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__("./src/api/tauricon.ts"); +/******/ +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=tauricon.js.map \ No newline at end of file diff --git a/tooling/cli.js/dist/api/tauricon.js.map b/tooling/cli.js/dist/api/tauricon.js.map new file mode 100644 index 000000000..4473ef2f0 --- /dev/null +++ b/tooling/cli.js/dist/api/tauricon.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://tauri/webpack/universalModuleDefinition","webpack://tauri/./node_modules/imagemin/index.js","webpack://tauri/./node_modules/imagemin/node_modules/file-type/core.js","webpack://tauri/./node_modules/imagemin/node_modules/file-type/index.js","webpack://tauri/./node_modules/imagemin/node_modules/file-type/supported.js","webpack://tauri/./node_modules/imagemin/node_modules/file-type/util.js","webpack://tauri/./node_modules/is-png/index.js","webpack://tauri/./node_modules/p-pipe/index.js","webpack://tauri/./src/api/tauricon.ts","webpack://tauri/./src/helpers/app-paths.ts","webpack://tauri/./src/helpers/logger.ts","webpack://tauri/./src/helpers/tauricon.config.ts","webpack://tauri/external \"chalk\"","webpack://tauri/external \"fs\"","webpack://tauri/external \"fs-extra\"","webpack://tauri/external \"globby\"","webpack://tauri/external \"graceful-fs\"","webpack://tauri/external \"imagemin-optipng\"","webpack://tauri/external \"imagemin-zopfli\"","webpack://tauri/external \"junk\"","webpack://tauri/external \"ms\"","webpack://tauri/external \"path\"","webpack://tauri/external \"png2icons\"","webpack://tauri/external \"read-chunk\"","webpack://tauri/external \"replace-ext\"","webpack://tauri/external \"sharp\"","webpack://tauri/external \"strtok3\"","webpack://tauri/external \"strtok3/lib/core\"","webpack://tauri/external \"token-types\"","webpack://tauri/external \"util\"","webpack://tauri/webpack/bootstrap","webpack://tauri/webpack/runtime/define property getters","webpack://tauri/webpack/runtime/hasOwnProperty shorthand","webpack://tauri/webpack/runtime/make namespace object","webpack://tauri/webpack/startup"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;;;;;;;;ACV+B;AACP;AACK;AACa;AACT;AACL;AACD;AACU;AACb;;AAExB,iBAAiB,+CAAS,CAAC,iDAAW;AACtC,kBAAkB,+CAAS,CAAC,kDAAY;;AAExC,uCAAuC,0BAA0B;AACjE;AACA;AACA;;AAEA;AACA,oCAAoC,+CAAK;;AAEzC,QAAQ,IAAI,SAAS,iDAAmB;AACxC,qCAAqC,sCAAS,cAAc,0CAAa;AACzE,oCAAoC,wCAAU;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO,8CAAgB,CAAC,yCAAY,gCAAgC,gBAAgB;AACpF;;AAEA;AACA;;AAEe,gCAAgC,wBAAwB,KAAK;AAC5E;AACA,sDAAsD,aAAa;AACnE;;AAEA,gCAAgC,mCAAM,SAAS,gBAAgB;;AAE/D;AACA;AACA,uBAAuB,qCAAQ,CAAC,0CAAa;AAC7C;AACA;AACA;AACA,KAAK;AACL,2DAA2D,MAAM,MAAM,YAAY;AACnF;AACA;AACA,IAAI;AACJ;AACA;;AAEA,iCAAiC,aAAa,KAAK;AACnD;AACA,sDAAsD,aAAa;AACnE;;AAEA;AACA;AACA;;AAEA,QAAQ,+CAAK;AACb;;;;;;;;;;;ACxEa;AACb,cAAc,mBAAO,CAAC,gCAAa;AACnC,gBAAgB,mBAAO,CAAC,0CAAkB;AAC1C;AACA;AACA;AACA;AACA,CAAC,GAAG,mBAAO,CAAC,sEAAQ;AACpB,kBAAkB,mBAAO,CAAC,gFAAa;;AAEvC,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA,8HAA8H,aAAa;AAC3I;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC,gBAAgB;;AAErD;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,mCAAmC;;AAExE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,4BAA4B;;AAElE,gCAAgC,UAAU;AAC1C,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,UAAU;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,UAAU;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,wCAAwC,WAAW;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C,gBAAgB;;AAE1D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA,cAAc;AACd;;AAEA,aAAa;AACb;;AAEA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C,wBAAwB,UAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C,wBAAwB,UAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,UAAU,sCAAsC,UAAU;AACjG;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,UAAU;AAC9C,qCAAqC,UAAU;AAC/C,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qCAAqC,UAAU,sCAAsC,UAAU;AAC/F;AACA,sGAAsG,UAAU;AAChH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;;AAEA,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,UAAU;AAC3C;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,UAAU;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,UAAU;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC,wBAAwB,UAAU;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,UAAU;AAC7C,mCAAmC,UAAU;AAC7C,mCAAmC,UAAU;AAC7C,mCAAmC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kGAAkG,UAAU;AAC5G;AACA;AACA;AACA;AACA;;AAEA,sFAAsF,UAAU;AAChG;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,gEAAgE;;AAErG;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,UAAU,qBAAqB,YAAY,oBAAoB,YAAY;AAC/F;AACA;AACA;AACA;AACA;;AAEA,8DAA8D,WAAW;AACzE;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,WAAW;AAClC;AACA,8BAA8B,UAAU;AACxC,8BAA8B,UAAU;AACxC,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,gEAAgE;;AAErG;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,2CAA2C;AAC/D;AACA,yDAAyD,kCAAkC;AAC3F,sBAAsB,gCAAgC;AACtD;AACA,uBAAuB,gCAAgC;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,gCAAgC;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,gCAAgC;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,gCAAgC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;ACp4Ca;AACb,gBAAgB,mBAAO,CAAC,wBAAS;AACjC,aAAa,mBAAO,CAAC,sEAAQ;;AAE7B;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;AC/Ba;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC1Qa;;AAEb,qBAAqB;;AAErB,gCAAgC,cAAc;AAC9C,2BAA2B;AAC3B;AACA;;AAEA,4FAA4F;AAC5F;AACA;AACA;;AAEA;;AAEA,eAAe;AACf,sBAAsB;;AAEtB,gBAAgB,SAAS;AACzB;AACA;AACA,sCAAsC;AACtC;;AAEA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA,sCAAsC;AACtC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,EAAE;AACF;AACA;;;;;;;;;;;;;;;ACpDe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACfe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;;;;;;;;;;;ACdA;AACA;AACA;AACa;AACb;AACA;AACA,kCAAkC,oCAAoC,aAAa,EAAE,EAAE;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,yCAAyC,6BAA6B;AACtE,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,0BAAU;AACnC,iCAAiC,mBAAO,CAAC,kDAAU;AACnD,yCAAyC,mBAAO,CAAC,0CAAkB;AACnE,wCAAwC,mBAAO,CAAC,wCAAiB;AACjE,+BAA+B,mBAAO,CAAC,8CAAQ;AAC/C,6BAA6B,mBAAO,CAAC,kBAAM;AAC3C,6BAA6B,mBAAO,CAAC,4BAAW;AAChD,mCAAmC,mBAAO,CAAC,8BAAY;AACvD,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C,kBAAkB,mBAAO,CAAC,wDAAsB;AAChD,+BAA+B,mBAAO,CAAC,kDAAmB;AAC1D,4BAA4B,mBAAO,CAAC,oEAA4B;AAChE,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C,qBAAqB,mBAAO,CAAC,0CAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC,EAAE;AACH;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,6BAA6B,EAAE;AACvF;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,8BAA8B,EAAE,UAAU,EAAE,UAAU,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC,EAAE;AACH;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,uBAAuB,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gCAAgC,gEAAgE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,sCAAsC,cAAc,yCAAyC,EAAE;AAC/F;AACA;AACA;AACA;AACA,0CAA0C,cAAc,yCAAyC,EAAE;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,uBAAuB,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,CAAC;AACD;AACA,IAAI,IAA8B;AAClC,QAAQ,KAA6B;AACrC;AACA;AACA,IAAI,gBAAgB;AACpB;;;;;;;;;;;ACxrBa;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,eAAe,GAAG,gBAAgB,GAAG,cAAc;AACnD,WAAW,mBAAO,CAAC,cAAI;AACvB,aAAa,mBAAO,CAAC,kBAAM;AAC3B,+BAA+B,mBAAO,CAAC,yCAAU;AACjD,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,gBAAgB;AAChB;AACA,yBAAyB,iCAAiC,EAAE;AAC5D,2BAA2B,mCAAmC;AAC9D;AACA,eAAe;;;;;;;;;;;ACvCF;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C,2BAA2B,mBAAO,CAAC,cAAI;AACvC;AACA,eAAe;AACf,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;AC3BY;AACb;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,eAAe;AACf,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACrEA,mC;;;;;;;;;;ACAA,gC;;;;;;;;;;ACAA,sC;;;;;;;;;;ACAA,oC;;;;;;;;;;ACAA,yC;;;;;;;;;;ACAA,8C;;;;;;;;;;ACAA,6C;;;;;;;;;;ACAA,kC;;;;;;;;;;ACAA,gC;;;;;;;;;;ACAA,kC;;;;;;;;;;ACAA,uC;;;;;;;;;;ACAA,wC;;;;;;;;;;ACAA,yC;;;;;;;;;;ACAA,mC;;;;;;;;;;ACAA,qC;;;;;;;;;;ACAA,8C;;;;;;;;;;ACAA,yC;;;;;;;;;;ACAA,kC;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA,wF;;;;;WCAA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;UCNA;UACA;UACA;UACA","file":"api/tauricon.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tauri\"] = factory();\n\telse\n\t\troot[\"tauri\"] = factory();\n})(this, function() {\nreturn ","import {promisify} from 'util';\nimport path from 'path';\nimport fs from 'graceful-fs';\nimport {promises as fsPromises} from 'fs';\nimport FileType from 'file-type';\nimport globby from 'globby';\nimport pPipe from 'p-pipe';\nimport replaceExt from 'replace-ext';\nimport junk from 'junk';\n\nconst readFile = promisify(fs.readFile);\nconst writeFile = promisify(fs.writeFile);\n\nconst handleFile = async (sourcePath, {destination, plugins = []}) => {\n\tif (plugins && !Array.isArray(plugins)) {\n\t\tthrow new TypeError('The `plugins` option should be an `Array`');\n\t}\n\n\tlet data = await readFile(sourcePath);\n\tdata = await (plugins.length > 0 ? pPipe(...plugins)(data) : data);\n\n\tconst {ext} = await FileType.fromBuffer(data);\n\tlet destinationPath = destination ? path.join(destination, path.basename(sourcePath)) : undefined;\n\tdestinationPath = ext === 'webp' ? replaceExt(destinationPath, '.webp') : destinationPath;\n\n\tconst returnValue = {\n\t\tdata,\n\t\tsourcePath,\n\t\tdestinationPath\n\t};\n\n\tif (!destinationPath) {\n\t\treturn returnValue;\n\t}\n\n\tawait fsPromises.mkdir(path.dirname(returnValue.destinationPath), {recursive: true});\n\tawait writeFile(returnValue.destinationPath, returnValue.data);\n\n\treturn returnValue;\n};\n\nexport default async function imagemin(input, {glob = true, ...options} = {}) {\n\tif (!Array.isArray(input)) {\n\t\tthrow new TypeError(`Expected an \\`Array\\`, got \\`${typeof input}\\``);\n\t}\n\n\tconst filePaths = glob ? await globby(input, {onlyFiles: true}) : input;\n\n\treturn Promise.all(\n\t\tfilePaths\n\t\t\t.filter(filePath => junk.not(path.basename(filePath)))\n\t\t\t.map(async filePath => {\n\t\t\t\ttry {\n\t\t\t\t\treturn await handleFile(filePath, options);\n\t\t\t\t} catch (error) {\n\t\t\t\t\terror.message = `Error occurred when handling file: ${input}\\n\\n${error.stack}`;\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t})\n\t);\n}\n\nimagemin.buffer = async (input, {plugins = []} = {}) => {\n\tif (!Buffer.isBuffer(input)) {\n\t\tthrow new TypeError(`Expected a \\`Buffer\\`, got \\`${typeof input}\\``);\n\t}\n\n\tif (plugins.length === 0) {\n\t\treturn input;\n\t}\n\n\treturn pPipe(...plugins)(input);\n};\n","'use strict';\nconst Token = require('token-types');\nconst strtok3 = require('strtok3/lib/core');\nconst {\n\tstringToBytes,\n\ttarHeaderChecksumMatches,\n\tuint32SyncSafeToken\n} = require('./util');\nconst supported = require('./supported');\n\nconst minimumBytes = 4100; // A fair amount of file-types are detectable within this range\n\nasync function fromStream(stream) {\n\tconst tokenizer = await strtok3.fromStream(stream);\n\ttry {\n\t\treturn await fromTokenizer(tokenizer);\n\t} finally {\n\t\tawait tokenizer.close();\n\t}\n}\n\nasync function fromBuffer(input) {\n\tif (!(input instanceof Uint8Array || input instanceof ArrayBuffer || Buffer.isBuffer(input))) {\n\t\tthrow new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`Buffer\\` or \\`ArrayBuffer\\`, got \\`${typeof input}\\``);\n\t}\n\n\tconst buffer = input instanceof Buffer ? input : Buffer.from(input);\n\n\tif (!(buffer && buffer.length > 1)) {\n\t\treturn;\n\t}\n\n\tconst tokenizer = strtok3.fromBuffer(buffer);\n\treturn fromTokenizer(tokenizer);\n}\n\nfunction _check(buffer, headers, options) {\n\toptions = {\n\t\toffset: 0,\n\t\t...options\n\t};\n\n\tfor (const [index, header] of headers.entries()) {\n\t\t// If a bitmask is set\n\t\tif (options.mask) {\n\t\t\t// If header doesn't equal `buf` with bits masked off\n\t\t\tif (header !== (options.mask[index] & buffer[index + options.offset])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (header !== buffer[index + options.offset]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nasync function _checkSequence(sequence, tokenizer, ignoreBytes) {\n\tconst buffer = Buffer.alloc(minimumBytes);\n\tawait tokenizer.ignore(ignoreBytes);\n\n\tawait tokenizer.peekBuffer(buffer, {mayBeLess: true});\n\n\treturn buffer.includes(Buffer.from(sequence));\n}\n\nasync function fromTokenizer(tokenizer) {\n\ttry {\n\t\treturn _fromTokenizer(tokenizer);\n\t} catch (error) {\n\t\tif (!(error instanceof strtok3.EndOfStreamError)) {\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n\nasync function _fromTokenizer(tokenizer) {\n\tlet buffer = Buffer.alloc(minimumBytes);\n\tconst bytesRead = 12;\n\tconst check = (header, options) => _check(buffer, header, options);\n\tconst checkString = (header, options) => check(stringToBytes(header), options);\n\tconst checkSequence = (sequence, ignoreBytes) => _checkSequence(sequence, tokenizer, ignoreBytes);\n\n\t// Keep reading until EOF if the file size is unknown.\n\tif (!tokenizer.fileInfo.size) {\n\t\ttokenizer.fileInfo.size = Number.MAX_SAFE_INTEGER;\n\t}\n\n\tawait tokenizer.peekBuffer(buffer, {length: bytesRead, mayBeLess: true});\n\n\t// -- 2-byte signatures --\n\n\tif (check([0x42, 0x4D])) {\n\t\treturn {\n\t\t\text: 'bmp',\n\t\t\tmime: 'image/bmp'\n\t\t};\n\t}\n\n\tif (check([0x0B, 0x77])) {\n\t\treturn {\n\t\t\text: 'ac3',\n\t\t\tmime: 'audio/vnd.dolby.dd-raw'\n\t\t};\n\t}\n\n\tif (check([0x78, 0x01])) {\n\t\treturn {\n\t\t\text: 'dmg',\n\t\t\tmime: 'application/x-apple-diskimage'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x5A])) {\n\t\treturn {\n\t\t\text: 'exe',\n\t\t\tmime: 'application/x-msdownload'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x21])) {\n\t\tawait tokenizer.peekBuffer(buffer, {length: 24, mayBeLess: true});\n\n\t\tif (checkString('PS-Adobe-', {offset: 2}) &&\n\t\t\tcheckString(' EPSF-', {offset: 14})) {\n\t\t\treturn {\n\t\t\t\text: 'eps',\n\t\t\t\tmime: 'application/eps'\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\text: 'ps',\n\t\t\tmime: 'application/postscript'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x1F, 0xA0]) ||\n\t\tcheck([0x1F, 0x9D])\n\t) {\n\t\treturn {\n\t\t\text: 'Z',\n\t\t\tmime: 'application/x-compress'\n\t\t};\n\t}\n\n\t// -- 3-byte signatures --\n\n\tif (check([0xFF, 0xD8, 0xFF])) {\n\t\treturn {\n\t\t\text: 'jpg',\n\t\t\tmime: 'image/jpeg'\n\t\t};\n\t}\n\n\tif (check([0x49, 0x49, 0xBC])) {\n\t\treturn {\n\t\t\text: 'jxr',\n\t\t\tmime: 'image/vnd.ms-photo'\n\t\t};\n\t}\n\n\tif (check([0x1F, 0x8B, 0x8])) {\n\t\treturn {\n\t\t\text: 'gz',\n\t\t\tmime: 'application/gzip'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x5A, 0x68])) {\n\t\treturn {\n\t\t\text: 'bz2',\n\t\t\tmime: 'application/x-bzip2'\n\t\t};\n\t}\n\n\tif (checkString('ID3')) {\n\t\tawait tokenizer.ignore(6); // Skip ID3 header until the header size\n\t\tconst id3HeaderLen = await tokenizer.readToken(uint32SyncSafeToken);\n\t\tif (tokenizer.position + id3HeaderLen > tokenizer.fileInfo.size) {\n\t\t\t// Guess file type based on ID3 header for backward compatibility\n\t\t\treturn {\n\t\t\t\text: 'mp3',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tawait tokenizer.ignore(id3HeaderLen);\n\t\treturn fromTokenizer(tokenizer); // Skip ID3 header, recursion\n\t}\n\n\t// Musepack, SV7\n\tif (checkString('MP+')) {\n\t\treturn {\n\t\t\text: 'mpc',\n\t\t\tmime: 'audio/x-musepack'\n\t\t};\n\t}\n\n\tif (\n\t\t(buffer[0] === 0x43 || buffer[0] === 0x46) &&\n\t\tcheck([0x57, 0x53], {offset: 1})\n\t) {\n\t\treturn {\n\t\t\text: 'swf',\n\t\t\tmime: 'application/x-shockwave-flash'\n\t\t};\n\t}\n\n\t// -- 4-byte signatures --\n\n\tif (check([0x47, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'gif',\n\t\t\tmime: 'image/gif'\n\t\t};\n\t}\n\n\tif (checkString('FLIF')) {\n\t\treturn {\n\t\t\text: 'flif',\n\t\t\tmime: 'image/flif'\n\t\t};\n\t}\n\n\tif (checkString('8BPS')) {\n\t\treturn {\n\t\t\text: 'psd',\n\t\t\tmime: 'image/vnd.adobe.photoshop'\n\t\t};\n\t}\n\n\tif (checkString('WEBP', {offset: 8})) {\n\t\treturn {\n\t\t\text: 'webp',\n\t\t\tmime: 'image/webp'\n\t\t};\n\t}\n\n\t// Musepack, SV8\n\tif (checkString('MPCK')) {\n\t\treturn {\n\t\t\text: 'mpc',\n\t\t\tmime: 'audio/x-musepack'\n\t\t};\n\t}\n\n\tif (checkString('FORM')) {\n\t\treturn {\n\t\t\text: 'aif',\n\t\t\tmime: 'audio/aiff'\n\t\t};\n\t}\n\n\tif (checkString('icns', {offset: 0})) {\n\t\treturn {\n\t\t\text: 'icns',\n\t\t\tmime: 'image/icns'\n\t\t};\n\t}\n\n\t// Zip-based file formats\n\t// Need to be before the `zip` check\n\tif (check([0x50, 0x4B, 0x3, 0x4])) { // Local file header signature\n\t\ttry {\n\t\t\twhile (tokenizer.position + 30 < tokenizer.fileInfo.size) {\n\t\t\t\tawait tokenizer.readBuffer(buffer, {length: 30});\n\n\t\t\t\t// https://en.wikipedia.org/wiki/Zip_(file_format)#File_headers\n\t\t\t\tconst zipHeader = {\n\t\t\t\t\tcompressedSize: buffer.readUInt32LE(18),\n\t\t\t\t\tuncompressedSize: buffer.readUInt32LE(22),\n\t\t\t\t\tfilenameLength: buffer.readUInt16LE(26),\n\t\t\t\t\textraFieldLength: buffer.readUInt16LE(28)\n\t\t\t\t};\n\n\t\t\t\tzipHeader.filename = await tokenizer.readToken(new Token.StringType(zipHeader.filenameLength, 'utf-8'));\n\t\t\t\tawait tokenizer.ignore(zipHeader.extraFieldLength);\n\n\t\t\t\t// Assumes signed `.xpi` from addons.mozilla.org\n\t\t\t\tif (zipHeader.filename === 'META-INF/mozilla.rsa') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'xpi',\n\t\t\t\t\t\tmime: 'application/x-xpinstall'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (zipHeader.filename.endsWith('.rels') || zipHeader.filename.endsWith('.xml')) {\n\t\t\t\t\tconst type = zipHeader.filename.split('/')[0];\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase '_rels':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'word':\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\text: 'docx',\n\t\t\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\tcase 'ppt':\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\text: 'pptx',\n\t\t\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\tcase 'xl':\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\text: 'xlsx',\n\t\t\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (zipHeader.filename.startsWith('xl/')) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'xlsx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// The docx, xlsx and pptx file types extend the Office Open XML file format:\n\t\t\t\t// https://en.wikipedia.org/wiki/Office_Open_XML_file_formats\n\t\t\t\t// We look for:\n\t\t\t\t// - one entry named '[Content_Types].xml' or '_rels/.rels',\n\t\t\t\t// - one entry indicating specific type of file.\n\t\t\t\t// MS Office, OpenOffice and LibreOffice may put the parts in different order, so the check should not rely on it.\n\t\t\t\tif (zipHeader.filename === 'mimetype' && zipHeader.compressedSize === zipHeader.uncompressedSize) {\n\t\t\t\t\tconst mimeType = await tokenizer.readToken(new Token.StringType(zipHeader.compressedSize, 'utf-8'));\n\n\t\t\t\t\tswitch (mimeType) {\n\t\t\t\t\t\tcase 'application/epub+zip':\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\text: 'epub',\n\t\t\t\t\t\t\t\tmime: 'application/epub+zip'\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\tcase 'application/vnd.oasis.opendocument.text':\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\text: 'odt',\n\t\t\t\t\t\t\t\tmime: 'application/vnd.oasis.opendocument.text'\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\tcase 'application/vnd.oasis.opendocument.spreadsheet':\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\text: 'ods',\n\t\t\t\t\t\t\t\tmime: 'application/vnd.oasis.opendocument.spreadsheet'\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\tcase 'application/vnd.oasis.opendocument.presentation':\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\text: 'odp',\n\t\t\t\t\t\t\t\tmime: 'application/vnd.oasis.opendocument.presentation'\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Try to find next header manually when current one is corrupted\n\t\t\t\tif (zipHeader.compressedSize === 0) {\n\t\t\t\t\tlet nextHeaderIndex = -1;\n\n\t\t\t\t\twhile (nextHeaderIndex < 0 && (tokenizer.position < tokenizer.fileInfo.size)) {\n\t\t\t\t\t\tawait tokenizer.peekBuffer(buffer, {mayBeLess: true});\n\n\t\t\t\t\t\tnextHeaderIndex = buffer.indexOf('504B0304', 0, 'hex');\n\t\t\t\t\t\t// Move position to the next header if found, skip the whole buffer otherwise\n\t\t\t\t\t\tawait tokenizer.ignore(nextHeaderIndex >= 0 ? nextHeaderIndex : buffer.length);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tawait tokenizer.ignore(zipHeader.compressedSize);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (!(error instanceof strtok3.EndOfStreamError)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\text: 'zip',\n\t\t\tmime: 'application/zip'\n\t\t};\n\t}\n\n\tif (checkString('OggS')) {\n\t\t// This is an OGG container\n\t\tawait tokenizer.ignore(28);\n\t\tconst type = Buffer.alloc(8);\n\t\tawait tokenizer.readBuffer(type);\n\n\t\t// Needs to be before `ogg` check\n\t\tif (_check(type, [0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64])) {\n\t\t\treturn {\n\t\t\t\text: 'opus',\n\t\t\t\tmime: 'audio/opus'\n\t\t\t};\n\t\t}\n\n\t\t// If ' theora' in header.\n\t\tif (_check(type, [0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61])) {\n\t\t\treturn {\n\t\t\t\text: 'ogv',\n\t\t\t\tmime: 'video/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If '\\x01video' in header.\n\t\tif (_check(type, [0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00])) {\n\t\t\treturn {\n\t\t\t\text: 'ogm',\n\t\t\t\tmime: 'video/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If ' FLAC' in header https://xiph.org/flac/faq.html\n\t\tif (_check(type, [0x7F, 0x46, 0x4C, 0x41, 0x43])) {\n\t\t\treturn {\n\t\t\t\text: 'oga',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// 'Speex ' in header https://en.wikipedia.org/wiki/Speex\n\t\tif (_check(type, [0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20])) {\n\t\t\treturn {\n\t\t\t\text: 'spx',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If '\\x01vorbis' in header\n\t\tif (_check(type, [0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73])) {\n\t\t\treturn {\n\t\t\t\text: 'ogg',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n\t\treturn {\n\t\t\text: 'ogx',\n\t\t\tmime: 'application/ogg'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x50, 0x4B]) &&\n\t\t(buffer[2] === 0x3 || buffer[2] === 0x5 || buffer[2] === 0x7) &&\n\t\t(buffer[3] === 0x4 || buffer[3] === 0x6 || buffer[3] === 0x8)\n\t) {\n\t\treturn {\n\t\t\text: 'zip',\n\t\t\tmime: 'application/zip'\n\t\t};\n\t}\n\n\t//\n\n\t// File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)\n\t// It's not required to be first, but it's recommended to be. Almost all ISO base media files start with `ftyp` box.\n\t// `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.\n\t// Here we check for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).\n\tif (\n\t\tcheckString('ftyp', {offset: 4}) &&\n\t\t(buffer[8] & 0x60) !== 0x00 // Brand major, first character ASCII?\n\t) {\n\t\t// They all can have MIME `video/mp4` except `application/mp4` special-case which is hard to detect.\n\t\t// For some cases, we're specific, everything else falls to `video/mp4` with `mp4` extension.\n\t\tconst brandMajor = buffer.toString('binary', 8, 12).replace('\\0', ' ').trim();\n\t\tswitch (brandMajor) {\n\t\t\tcase 'avif':\n\t\t\t\treturn {ext: 'avif', mime: 'image/avif'};\n\t\t\tcase 'mif1':\n\t\t\t\treturn {ext: 'heic', mime: 'image/heif'};\n\t\t\tcase 'msf1':\n\t\t\t\treturn {ext: 'heic', mime: 'image/heif-sequence'};\n\t\t\tcase 'heic':\n\t\t\tcase 'heix':\n\t\t\t\treturn {ext: 'heic', mime: 'image/heic'};\n\t\t\tcase 'hevc':\n\t\t\tcase 'hevx':\n\t\t\t\treturn {ext: 'heic', mime: 'image/heic-sequence'};\n\t\t\tcase 'qt':\n\t\t\t\treturn {ext: 'mov', mime: 'video/quicktime'};\n\t\t\tcase 'M4V':\n\t\t\tcase 'M4VH':\n\t\t\tcase 'M4VP':\n\t\t\t\treturn {ext: 'm4v', mime: 'video/x-m4v'};\n\t\t\tcase 'M4P':\n\t\t\t\treturn {ext: 'm4p', mime: 'video/mp4'};\n\t\t\tcase 'M4B':\n\t\t\t\treturn {ext: 'm4b', mime: 'audio/mp4'};\n\t\t\tcase 'M4A':\n\t\t\t\treturn {ext: 'm4a', mime: 'audio/x-m4a'};\n\t\t\tcase 'F4V':\n\t\t\t\treturn {ext: 'f4v', mime: 'video/mp4'};\n\t\t\tcase 'F4P':\n\t\t\t\treturn {ext: 'f4p', mime: 'video/mp4'};\n\t\t\tcase 'F4A':\n\t\t\t\treturn {ext: 'f4a', mime: 'audio/mp4'};\n\t\t\tcase 'F4B':\n\t\t\t\treturn {ext: 'f4b', mime: 'audio/mp4'};\n\t\t\tcase 'crx':\n\t\t\t\treturn {ext: 'cr3', mime: 'image/x-canon-cr3'};\n\t\t\tdefault:\n\t\t\t\tif (brandMajor.startsWith('3g')) {\n\t\t\t\t\tif (brandMajor.startsWith('3g2')) {\n\t\t\t\t\t\treturn {ext: '3g2', mime: 'video/3gpp2'};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {ext: '3gp', mime: 'video/3gpp'};\n\t\t\t\t}\n\n\t\t\t\treturn {ext: 'mp4', mime: 'video/mp4'};\n\t\t}\n\t}\n\n\tif (checkString('MThd')) {\n\t\treturn {\n\t\t\text: 'mid',\n\t\t\tmime: 'audio/midi'\n\t\t};\n\t}\n\n\tif (\n\t\tcheckString('wOFF') &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheckString('OTTO', {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff',\n\t\t\tmime: 'font/woff'\n\t\t};\n\t}\n\n\tif (\n\t\tcheckString('wOF2') &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheckString('OTTO', {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff2',\n\t\t\tmime: 'font/woff2'\n\t\t};\n\t}\n\n\tif (check([0xD4, 0xC3, 0xB2, 0xA1]) || check([0xA1, 0xB2, 0xC3, 0xD4])) {\n\t\treturn {\n\t\t\text: 'pcap',\n\t\t\tmime: 'application/vnd.tcpdump.pcap'\n\t\t};\n\t}\n\n\t// Sony DSD Stream File (DSF)\n\tif (checkString('DSD ')) {\n\t\treturn {\n\t\t\text: 'dsf',\n\t\t\tmime: 'audio/x-dsf' // Non-standard\n\t\t};\n\t}\n\n\tif (checkString('LZIP')) {\n\t\treturn {\n\t\t\text: 'lz',\n\t\t\tmime: 'application/x-lzip'\n\t\t};\n\t}\n\n\tif (checkString('fLaC')) {\n\t\treturn {\n\t\t\text: 'flac',\n\t\t\tmime: 'audio/x-flac'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x50, 0x47, 0xFB])) {\n\t\treturn {\n\t\t\text: 'bpg',\n\t\t\tmime: 'image/bpg'\n\t\t};\n\t}\n\n\tif (checkString('wvpk')) {\n\t\treturn {\n\t\t\text: 'wv',\n\t\t\tmime: 'audio/wavpack'\n\t\t};\n\t}\n\n\tif (checkString('%PDF')) {\n\t\t// Check if this is an Adobe Illustrator file\n\t\tconst isAiFile = await checkSequence('Adobe Illustrator', 1350);\n\t\tif (isAiFile) {\n\t\t\treturn {\n\t\t\t\text: 'ai',\n\t\t\t\tmime: 'application/postscript'\n\t\t\t};\n\t\t}\n\n\t\t// Assume this is just a normal PDF\n\t\treturn {\n\t\t\text: 'pdf',\n\t\t\tmime: 'application/pdf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x61, 0x73, 0x6D])) {\n\t\treturn {\n\t\t\text: 'wasm',\n\t\t\tmime: 'application/wasm'\n\t\t};\n\t}\n\n\t// TIFF, little-endian type\n\tif (check([0x49, 0x49, 0x2A, 0x0])) {\n\t\tif (checkString('CR', {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'cr2',\n\t\t\t\tmime: 'image/x-canon-cr2'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x1C, 0x00, 0xFE, 0x00], {offset: 8}) || check([0x1F, 0x00, 0x0B, 0x00], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'nef',\n\t\t\t\tmime: 'image/x-nikon-nef'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0x08, 0x00, 0x00, 0x00], {offset: 4}) &&\n\t\t\t(check([0x2D, 0x00, 0xFE, 0x00], {offset: 8}) ||\n\t\t\t\tcheck([0x27, 0x00, 0xFE, 0x00], {offset: 8}))\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'dng',\n\t\t\t\tmime: 'image/x-adobe-dng'\n\t\t\t};\n\t\t}\n\n\t\tbuffer = Buffer.alloc(24);\n\t\tawait tokenizer.peekBuffer(buffer);\n\t\tif (\n\t\t\t(check([0x10, 0xFB, 0x86, 0x01], {offset: 4}) || check([0x08, 0x00, 0x00, 0x00], {offset: 4})) &&\n\t\t\t// This pattern differentiates ARW from other TIFF-ish file types:\n\t\t\tcheck([0x00, 0xFE, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x01], {offset: 9})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'arw',\n\t\t\t\tmime: 'image/x-sony-arw'\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\text: 'tif',\n\t\t\tmime: 'image/tiff'\n\t\t};\n\t}\n\n\t// TIFF, big-endian type\n\tif (check([0x4D, 0x4D, 0x0, 0x2A])) {\n\t\treturn {\n\t\t\text: 'tif',\n\t\t\tmime: 'image/tiff'\n\t\t};\n\t}\n\n\tif (checkString('MAC ')) {\n\t\treturn {\n\t\t\text: 'ape',\n\t\t\tmime: 'audio/ape'\n\t\t};\n\t}\n\n\t// https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska\n\tif (check([0x1A, 0x45, 0xDF, 0xA3])) { // Root element: EBML\n\t\tasync function readField() {\n\t\t\tconst msb = await tokenizer.peekNumber(Token.UINT8);\n\t\t\tlet mask = 0x80;\n\t\t\tlet ic = 0; // 0 = A, 1 = B, 2 = C, 3 = D\n\n\t\t\twhile ((msb & mask) === 0) {\n\t\t\t\t++ic;\n\t\t\t\tmask >>= 1;\n\t\t\t}\n\n\t\t\tconst id = Buffer.alloc(ic + 1);\n\t\t\tawait tokenizer.readBuffer(id);\n\t\t\treturn id;\n\t\t}\n\n\t\tasync function readElement() {\n\t\t\tconst id = await readField();\n\t\t\tconst lenField = await readField();\n\t\t\tlenField[0] ^= 0x80 >> (lenField.length - 1);\n\t\t\tconst nrLen = Math.min(6, lenField.length); // JavaScript can max read 6 bytes integer\n\t\t\treturn {\n\t\t\t\tid: id.readUIntBE(0, id.length),\n\t\t\t\tlen: lenField.readUIntBE(lenField.length - nrLen, nrLen)\n\t\t\t};\n\t\t}\n\n\t\tasync function readChildren(level, children) {\n\t\t\twhile (children > 0) {\n\t\t\t\tconst e = await readElement();\n\t\t\t\tif (e.id === 0x4282) {\n\t\t\t\t\treturn tokenizer.readToken(new Token.StringType(e.len, 'utf-8')); // Return DocType\n\t\t\t\t}\n\n\t\t\t\tawait tokenizer.ignore(e.len); // ignore payload\n\t\t\t\t--children;\n\t\t\t}\n\t\t}\n\n\t\tconst re = await readElement();\n\t\tconst docType = await readChildren(1, re.len);\n\n\t\tswitch (docType) {\n\t\t\tcase 'webm':\n\t\t\t\treturn {\n\t\t\t\t\text: 'webm',\n\t\t\t\t\tmime: 'video/webm'\n\t\t\t\t};\n\n\t\t\tcase 'matroska':\n\t\t\t\treturn {\n\t\t\t\t\text: 'mkv',\n\t\t\t\t\tmime: 'video/x-matroska'\n\t\t\t\t};\n\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t}\n\n\t// RIFF file format which might be AVI, WAV, QCP, etc\n\tif (check([0x52, 0x49, 0x46, 0x46])) {\n\t\tif (check([0x41, 0x56, 0x49], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'avi',\n\t\t\t\tmime: 'video/vnd.avi'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x57, 0x41, 0x56, 0x45], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'wav',\n\t\t\t\tmime: 'audio/vnd.wave'\n\t\t\t};\n\t\t}\n\n\t\t// QLCM, QCP file\n\t\tif (check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'qcp',\n\t\t\t\tmime: 'audio/qcelp'\n\t\t\t};\n\t\t}\n\t}\n\n\tif (checkString('SQLi')) {\n\t\treturn {\n\t\t\text: 'sqlite',\n\t\t\tmime: 'application/x-sqlite3'\n\t\t};\n\t}\n\n\tif (check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\treturn {\n\t\t\text: 'nes',\n\t\t\tmime: 'application/x-nintendo-nes-rom'\n\t\t};\n\t}\n\n\tif (checkString('Cr24')) {\n\t\treturn {\n\t\t\text: 'crx',\n\t\t\tmime: 'application/x-google-chrome-extension'\n\t\t};\n\t}\n\n\tif (\n\t\tcheckString('MSCF') ||\n\t\tcheckString('ISc(')\n\t) {\n\t\treturn {\n\t\t\text: 'cab',\n\t\t\tmime: 'application/vnd.ms-cab-compressed'\n\t\t};\n\t}\n\n\tif (check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\treturn {\n\t\t\text: 'rpm',\n\t\t\tmime: 'application/x-rpm'\n\t\t};\n\t}\n\n\tif (check([0xC5, 0xD0, 0xD3, 0xC6])) {\n\t\treturn {\n\t\t\text: 'eps',\n\t\t\tmime: 'application/eps'\n\t\t};\n\t}\n\n\t// -- 5-byte signatures --\n\n\tif (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\treturn {\n\t\t\text: 'otf',\n\t\t\tmime: 'font/otf'\n\t\t};\n\t}\n\n\tif (checkString('#!AMR')) {\n\t\treturn {\n\t\t\text: 'amr',\n\t\t\tmime: 'audio/amr'\n\t\t};\n\t}\n\n\tif (checkString('{\\\\rtf')) {\n\t\treturn {\n\t\t\text: 'rtf',\n\t\t\tmime: 'application/rtf'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x56, 0x01])) {\n\t\treturn {\n\t\t\text: 'flv',\n\t\t\tmime: 'video/x-flv'\n\t\t};\n\t}\n\n\tif (checkString('IMPM')) {\n\t\treturn {\n\t\t\text: 'it',\n\t\t\tmime: 'audio/x-it'\n\t\t};\n\t}\n\n\tif (\n\t\tcheckString('-lh0-', {offset: 2}) ||\n\t\tcheckString('-lh1-', {offset: 2}) ||\n\t\tcheckString('-lh2-', {offset: 2}) ||\n\t\tcheckString('-lh3-', {offset: 2}) ||\n\t\tcheckString('-lh4-', {offset: 2}) ||\n\t\tcheckString('-lh5-', {offset: 2}) ||\n\t\tcheckString('-lh6-', {offset: 2}) ||\n\t\tcheckString('-lh7-', {offset: 2}) ||\n\t\tcheckString('-lzs-', {offset: 2}) ||\n\t\tcheckString('-lz4-', {offset: 2}) ||\n\t\tcheckString('-lz5-', {offset: 2}) ||\n\t\tcheckString('-lhd-', {offset: 2})\n\t) {\n\t\treturn {\n\t\t\text: 'lzh',\n\t\t\tmime: 'application/x-lzh-compressed'\n\t\t};\n\t}\n\n\t// MPEG program stream (PS or MPEG-PS)\n\tif (check([0x00, 0x00, 0x01, 0xBA])) {\n\t\t// MPEG-PS, MPEG-1 Part 1\n\t\tif (check([0x21], {offset: 4, mask: [0xF1]})) {\n\t\t\treturn {\n\t\t\t\text: 'mpg', // May also be .ps, .mpeg\n\t\t\t\tmime: 'video/MP1S'\n\t\t\t};\n\t\t}\n\n\t\t// MPEG-PS, MPEG-2 Part 1\n\t\tif (check([0x44], {offset: 4, mask: [0xC4]})) {\n\t\t\treturn {\n\t\t\t\text: 'mpg', // May also be .mpg, .m2p, .vob or .sub\n\t\t\t\tmime: 'video/MP2P'\n\t\t\t};\n\t\t}\n\t}\n\n\t// -- 6-byte signatures --\n\n\tif (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\treturn {\n\t\t\text: 'xz',\n\t\t\tmime: 'application/x-xz'\n\t\t};\n\t}\n\n\tif (checkString('')) {\n\t\tawait tokenizer.ignore(8);\n\t\tconst str = await tokenizer.readToken(new Token.StringType(13, 'ascii'));\n\t\tif (str === 'debian-binary') {\n\t\t\treturn {\n\t\t\t\text: 'deb',\n\t\t\t\tmime: 'application/x-deb'\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\text: 'ar',\n\t\t\tmime: 'application/x-unix-archive'\n\t\t};\n\t}\n\n\t// -- 8-byte signatures --\n\n\tif (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\t// APNG format (https://wiki.mozilla.org/APNG_Specification)\n\t\t// 1. Find the first IDAT (image data) chunk (49 44 41 54)\n\t\t// 2. Check if there is an \"acTL\" chunk before the IDAT one (61 63 54 4C)\n\n\t\t// Offset calculated as follows:\n\t\t// - 8 bytes: PNG signature\n\t\t// - 4 (length) + 4 (chunk type) + 13 (chunk data) + 4 (CRC): IHDR chunk\n\n\t\tawait tokenizer.ignore(8); // ignore PNG signature\n\n\t\tasync function readChunkHeader() {\n\t\t\treturn {\n\t\t\t\tlength: await tokenizer.readToken(Token.INT32_BE),\n\t\t\t\ttype: await tokenizer.readToken(new Token.StringType(4, 'binary'))\n\t\t\t};\n\t\t}\n\n\t\tdo {\n\t\t\tconst chunk = await readChunkHeader();\n\t\t\tswitch (chunk.type) {\n\t\t\t\tcase 'IDAT':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'png',\n\t\t\t\t\t\tmime: 'image/png'\n\t\t\t\t\t};\n\t\t\t\tcase 'acTL':\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'apng',\n\t\t\t\t\t\tmime: 'image/apng'\n\t\t\t\t\t};\n\t\t\t\tdefault:\n\t\t\t\t\tawait tokenizer.ignore(chunk.length + 4); // Ignore chunk-data + CRC\n\t\t\t}\n\t\t} while (tokenizer.position < tokenizer.fileInfo.size);\n\n\t\treturn {\n\t\t\text: 'png',\n\t\t\tmime: 'image/png'\n\t\t};\n\t}\n\n\tif (check([0x41, 0x52, 0x52, 0x4F, 0x57, 0x31, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'arrow',\n\t\t\tmime: 'application/x-apache-arrow'\n\t\t};\n\t}\n\n\tif (check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'glb',\n\t\t\tmime: 'model/gltf-binary'\n\t\t};\n\t}\n\n\t// `mov` format variants\n\tif (\n\t\tcheck([0x66, 0x72, 0x65, 0x65], {offset: 4}) || // `free`\n\t\tcheck([0x6D, 0x64, 0x61, 0x74], {offset: 4}) || // `mdat` MJPEG\n\t\tcheck([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) || // `moov`\n\t\tcheck([0x77, 0x69, 0x64, 0x65], {offset: 4}) // `wide`\n\t) {\n\t\treturn {\n\t\t\text: 'mov',\n\t\t\tmime: 'video/quicktime'\n\t\t};\n\t}\n\n\t// -- 9-byte signatures --\n\n\tif (check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) {\n\t\treturn {\n\t\t\text: 'orf',\n\t\t\tmime: 'image/x-olympus-orf'\n\t\t};\n\t}\n\n\t// -- 12-byte signatures --\n\n\tif (check([0x49, 0x49, 0x55, 0x00, 0x18, 0x00, 0x00, 0x00, 0x88, 0xE7, 0x74, 0xD8])) {\n\t\treturn {\n\t\t\text: 'rw2',\n\t\t\tmime: 'image/x-panasonic-rw2'\n\t\t};\n\t}\n\n\t// ASF_Header_Object first 80 bytes\n\tif (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\tasync function readHeader() {\n\t\t\tconst guid = Buffer.alloc(16);\n\t\t\tawait tokenizer.readBuffer(guid);\n\t\t\treturn {\n\t\t\t\tid: guid,\n\t\t\t\tsize: await tokenizer.readToken(Token.UINT64_LE)\n\t\t\t};\n\t\t}\n\n\t\tawait tokenizer.ignore(30);\n\t\t// Search for header should be in first 1KB of file.\n\t\twhile (tokenizer.position + 24 < tokenizer.fileInfo.size) {\n\t\t\tconst header = await readHeader();\n\t\t\tlet payload = header.size - 24;\n\t\t\tif (_check(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) {\n\t\t\t\t// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n\t\t\t\tconst typeId = Buffer.alloc(16);\n\t\t\t\tpayload -= await tokenizer.readBuffer(typeId);\n\n\t\t\t\tif (_check(typeId, [0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t// Found audio:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'wma',\n\t\t\t\t\t\tmime: 'audio/x-ms-wma'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (_check(typeId, [0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n\t\t\t\t\t// Found video:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'wmv',\n\t\t\t\t\t\tmime: 'video/x-ms-asf'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tawait tokenizer.ignore(payload);\n\t\t}\n\n\t\t// Default to ASF generic extension\n\t\treturn {\n\t\t\text: 'asf',\n\t\t\tmime: 'application/vnd.ms-asf'\n\t\t};\n\t}\n\n\tif (check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\treturn {\n\t\t\text: 'ktx',\n\t\t\tmime: 'image/ktx'\n\t\t};\n\t}\n\n\tif ((check([0x7E, 0x10, 0x04]) || check([0x7E, 0x18, 0x04])) && check([0x30, 0x4D, 0x49, 0x45], {offset: 4})) {\n\t\treturn {\n\t\t\text: 'mie',\n\t\t\tmime: 'application/x-mie'\n\t\t};\n\t}\n\n\tif (check([0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], {offset: 2})) {\n\t\treturn {\n\t\t\text: 'shp',\n\t\t\tmime: 'application/x-esri-shape'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n\t\t// JPEG-2000 family\n\n\t\tawait tokenizer.ignore(20);\n\t\tconst type = await tokenizer.readToken(new Token.StringType(4, 'ascii'));\n\t\tswitch (type) {\n\t\t\tcase 'jp2 ':\n\t\t\t\treturn {\n\t\t\t\t\text: 'jp2',\n\t\t\t\t\tmime: 'image/jp2'\n\t\t\t\t};\n\t\t\tcase 'jpx ':\n\t\t\t\treturn {\n\t\t\t\t\text: 'jpx',\n\t\t\t\t\tmime: 'image/jpx'\n\t\t\t\t};\n\t\t\tcase 'jpm ':\n\t\t\t\treturn {\n\t\t\t\t\text: 'jpm',\n\t\t\t\t\tmime: 'image/jpm'\n\t\t\t\t};\n\t\t\tcase 'mjp2':\n\t\t\t\treturn {\n\t\t\t\t\text: 'mj2',\n\t\t\t\t\tmime: 'image/mj2'\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t}\n\n\t// -- Unsafe signatures --\n\n\tif (\n\t\tcheck([0x0, 0x0, 0x1, 0xBA]) ||\n\t\tcheck([0x0, 0x0, 0x1, 0xB3])\n\t) {\n\t\treturn {\n\t\t\text: 'mpg',\n\t\t\tmime: 'video/mpeg'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'ttf',\n\t\t\tmime: 'font/ttf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x01, 0x00])) {\n\t\treturn {\n\t\t\text: 'ico',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x02, 0x00])) {\n\t\treturn {\n\t\t\text: 'cur',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\t// Increase sample size from 12 to 256.\n\tawait tokenizer.peekBuffer(buffer, {length: Math.min(256, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t// `raf` is here just to keep all the raw image detectors together.\n\tif (checkString('FUJIFILMCCD-RAW')) {\n\t\treturn {\n\t\t\text: 'raf',\n\t\t\tmime: 'image/x-fujifilm-raf'\n\t\t};\n\t}\n\n\tif (checkString('Extended Module:')) {\n\t\treturn {\n\t\t\text: 'xm',\n\t\t\tmime: 'audio/x-xm'\n\t\t};\n\t}\n\n\tif (checkString('Creative Voice File')) {\n\t\treturn {\n\t\t\text: 'voc',\n\t\t\tmime: 'audio/x-voc'\n\t\t};\n\t}\n\n\tif (check([0x04, 0x00, 0x00, 0x00]) && buffer.length >= 16) { // Rough & quick check Pickle/ASAR\n\t\tconst jsonSize = buffer.readUInt32LE(12);\n\t\tif (jsonSize > 12 && jsonSize < 240 && buffer.length >= jsonSize + 16) {\n\t\t\ttry {\n\t\t\t\tconst header = buffer.slice(16, jsonSize + 16).toString();\n\t\t\t\tconst json = JSON.parse(header);\n\t\t\t\t// Check if Pickle is ASAR\n\t\t\t\tif (json.files) { // Final check, assuring Pickle/ASAR format\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'asar',\n\t\t\t\t\t\tmime: 'application/x-asar'\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} catch (_) {\n\t\t\t}\n\t\t}\n\t}\n\n\tif (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E])) {\n\t\treturn {\n\t\t\text: 'msi',\n\t\t\tmime: 'application/x-msi'\n\t\t};\n\t}\n\n\tif (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\treturn {\n\t\t\text: 'mxf',\n\t\t\tmime: 'application/mxf'\n\t\t};\n\t}\n\n\tif (checkString('SCRM', {offset: 44})) {\n\t\treturn {\n\t\t\text: 's3m',\n\t\t\tmime: 'audio/x-s3m'\n\t\t};\n\t}\n\n\tif (check([0x47], {offset: 4}) && (check([0x47], {offset: 192}) || check([0x47], {offset: 196}))) {\n\t\treturn {\n\t\t\text: 'mts',\n\t\t\tmime: 'video/mp2t'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {offset: 60})) {\n\t\treturn {\n\t\t\text: 'mobi',\n\t\t\tmime: 'application/x-mobipocket-ebook'\n\t\t};\n\t}\n\n\tif (check([0x44, 0x49, 0x43, 0x4D], {offset: 128})) {\n\t\treturn {\n\t\t\text: 'dcm',\n\t\t\tmime: 'application/dicom'\n\t\t};\n\t}\n\n\tif (check([0x4C, 0x00, 0x00, 0x00, 0x01, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46])) {\n\t\treturn {\n\t\t\text: 'lnk',\n\t\t\tmime: 'application/x.ms.shortcut' // Invented by us\n\t\t};\n\t}\n\n\tif (check([0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'alias',\n\t\t\tmime: 'application/x.apple.alias' // Invented by us\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4C, 0x50], {offset: 34}) &&\n\t\t(\n\t\t\tcheck([0x00, 0x00, 0x01], {offset: 8}) ||\n\t\t\tcheck([0x01, 0x00, 0x02], {offset: 8}) ||\n\t\t\tcheck([0x02, 0x00, 0x02], {offset: 8})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'eot',\n\t\t\tmime: 'application/vnd.ms-fontobject'\n\t\t};\n\t}\n\n\tif (check([0x06, 0x06, 0xED, 0xF5, 0xD8, 0x1D, 0x46, 0xE5, 0xBD, 0x31, 0xEF, 0xE7, 0xFE, 0x74, 0xB7, 0x1D])) {\n\t\treturn {\n\t\t\text: 'indd',\n\t\t\tmime: 'application/x-indesign'\n\t\t};\n\t}\n\n\t// Increase sample size from 256 to 512\n\tawait tokenizer.peekBuffer(buffer, {length: Math.min(512, tokenizer.fileInfo.size), mayBeLess: true});\n\n\t// Requires a buffer size of 512 bytes\n\tif (tarHeaderChecksumMatches(buffer)) {\n\t\treturn {\n\t\t\text: 'tar',\n\t\t\tmime: 'application/x-tar'\n\t\t};\n\t}\n\n\tif (check([0xFF, 0xFE, 0xFF, 0x0E, 0x53, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x74, 0x00, 0x63, 0x00, 0x68, 0x00, 0x55, 0x00, 0x70, 0x00, 0x20, 0x00, 0x4D, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6C, 0x00])) {\n\t\treturn {\n\t\t\text: 'skp',\n\t\t\tmime: 'application/vnd.sketchup.skp'\n\t\t};\n\t}\n\n\tif (checkString('-----BEGIN PGP MESSAGE-----')) {\n\t\treturn {\n\t\t\text: 'pgp',\n\t\t\tmime: 'application/pgp-encrypted'\n\t\t};\n\t}\n\n\t// Check for MPEG header at different starting offsets\n\tfor (let start = 0; start < 2 && start < (buffer.length - 16); start++) {\n\t\t// Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE)\n\t\tif (buffer.length >= start + 2 && check([0xFF, 0xE0], {offset: start, mask: [0xFF, 0xE0]})) {\n\t\t\tif (check([0x10], {offset: start + 1, mask: [0x16]})) {\n\t\t\t\t// Check for (ADTS) MPEG-2\n\t\t\t\tif (check([0x08], {offset: start + 1, mask: [0x08]})) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'aac',\n\t\t\t\t\t\tmime: 'audio/aac'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Must be (ADTS) MPEG-4\n\t\t\t\treturn {\n\t\t\t\t\text: 'aac',\n\t\t\t\t\tmime: 'audio/aac'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// MPEG 1 or 2 Layer 3 header\n\t\t\t// Check for MPEG layer 3\n\t\t\tif (check([0x02], {offset: start + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp3',\n\t\t\t\t\tmime: 'audio/mpeg'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 2\n\t\t\tif (check([0x04], {offset: start + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp2',\n\t\t\t\t\tmime: 'audio/mpeg'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Check for MPEG layer 1\n\t\t\tif (check([0x06], {offset: start + 1, mask: [0x06]})) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mp1',\n\t\t\t\t\tmime: 'audio/mpeg'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst stream = readableStream => new Promise((resolve, reject) => {\n\t// Using `eval` to work around issues when bundling with Webpack\n\tconst stream = eval('require')('stream'); // eslint-disable-line no-eval\n\n\treadableStream.on('error', reject);\n\treadableStream.once('readable', async () => {\n\t\t// Set up output stream\n\t\tconst pass = new stream.PassThrough();\n\t\tlet outputStream;\n\t\tif (stream.pipeline) {\n\t\t\toutputStream = stream.pipeline(readableStream, pass, () => {\n\t\t\t});\n\t\t} else {\n\t\t\toutputStream = readableStream.pipe(pass);\n\t\t}\n\n\t\t// Read the input stream and detect the filetype\n\t\tconst chunk = readableStream.read(minimumBytes) || readableStream.read() || Buffer.alloc(0);\n\t\ttry {\n\t\t\tconst fileType = await fromBuffer(chunk);\n\t\t\tpass.fileType = fileType;\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\n\t\tresolve(outputStream);\n\t});\n});\n\nconst fileType = {\n\tfromStream,\n\tfromTokenizer,\n\tfromBuffer,\n\tstream\n};\n\nObject.defineProperty(fileType, 'extensions', {\n\tget() {\n\t\treturn new Set(supported.extensions);\n\t}\n});\n\nObject.defineProperty(fileType, 'mimeTypes', {\n\tget() {\n\t\treturn new Set(supported.mimeTypes);\n\t}\n});\n\nmodule.exports = fileType;\n","'use strict';\nconst strtok3 = require('strtok3');\nconst core = require('./core');\n\nasync function fromFile(path) {\n\tconst tokenizer = await strtok3.fromFile(path);\n\ttry {\n\t\treturn await core.fromTokenizer(tokenizer);\n\t} finally {\n\t\tawait tokenizer.close();\n\t}\n}\n\nconst fileType = {\n\tfromFile\n};\n\nObject.assign(fileType, core);\n\nObject.defineProperty(fileType, 'extensions', {\n\tget() {\n\t\treturn core.extensions;\n\t}\n});\n\nObject.defineProperty(fileType, 'mimeTypes', {\n\tget() {\n\t\treturn core.mimeTypes;\n\t}\n});\n\nmodule.exports = fileType;\n","'use strict';\n\nmodule.exports = {\n\textensions: [\n\t\t'jpg',\n\t\t'png',\n\t\t'apng',\n\t\t'gif',\n\t\t'webp',\n\t\t'flif',\n\t\t'cr2',\n\t\t'cr3',\n\t\t'orf',\n\t\t'arw',\n\t\t'dng',\n\t\t'nef',\n\t\t'rw2',\n\t\t'raf',\n\t\t'tif',\n\t\t'bmp',\n\t\t'icns',\n\t\t'jxr',\n\t\t'psd',\n\t\t'indd',\n\t\t'zip',\n\t\t'tar',\n\t\t'rar',\n\t\t'gz',\n\t\t'bz2',\n\t\t'7z',\n\t\t'dmg',\n\t\t'mp4',\n\t\t'mid',\n\t\t'mkv',\n\t\t'webm',\n\t\t'mov',\n\t\t'avi',\n\t\t'mpg',\n\t\t'mp2',\n\t\t'mp3',\n\t\t'm4a',\n\t\t'oga',\n\t\t'ogg',\n\t\t'ogv',\n\t\t'opus',\n\t\t'flac',\n\t\t'wav',\n\t\t'spx',\n\t\t'amr',\n\t\t'pdf',\n\t\t'epub',\n\t\t'exe',\n\t\t'swf',\n\t\t'rtf',\n\t\t'wasm',\n\t\t'woff',\n\t\t'woff2',\n\t\t'eot',\n\t\t'ttf',\n\t\t'otf',\n\t\t'ico',\n\t\t'flv',\n\t\t'ps',\n\t\t'xz',\n\t\t'sqlite',\n\t\t'nes',\n\t\t'crx',\n\t\t'xpi',\n\t\t'cab',\n\t\t'deb',\n\t\t'ar',\n\t\t'rpm',\n\t\t'Z',\n\t\t'lz',\n\t\t'msi',\n\t\t'mxf',\n\t\t'mts',\n\t\t'blend',\n\t\t'bpg',\n\t\t'docx',\n\t\t'pptx',\n\t\t'xlsx',\n\t\t'3gp',\n\t\t'3g2',\n\t\t'jp2',\n\t\t'jpm',\n\t\t'jpx',\n\t\t'mj2',\n\t\t'aif',\n\t\t'qcp',\n\t\t'odt',\n\t\t'ods',\n\t\t'odp',\n\t\t'xml',\n\t\t'mobi',\n\t\t'heic',\n\t\t'cur',\n\t\t'ktx',\n\t\t'ape',\n\t\t'wv',\n\t\t'wmv',\n\t\t'wma',\n\t\t'dcm',\n\t\t'ics',\n\t\t'glb',\n\t\t'pcap',\n\t\t'dsf',\n\t\t'lnk',\n\t\t'alias',\n\t\t'voc',\n\t\t'ac3',\n\t\t'm4v',\n\t\t'm4p',\n\t\t'm4b',\n\t\t'f4v',\n\t\t'f4p',\n\t\t'f4b',\n\t\t'f4a',\n\t\t'mie',\n\t\t'asf',\n\t\t'ogm',\n\t\t'ogx',\n\t\t'mpc',\n\t\t'arrow',\n\t\t'shp',\n\t\t'aac',\n\t\t'mp1',\n\t\t'it',\n\t\t's3m',\n\t\t'xm',\n\t\t'ai',\n\t\t'skp',\n\t\t'avif',\n\t\t'eps',\n\t\t'lzh',\n\t\t'pgp',\n\t\t'asar'\n\t],\n\tmimeTypes: [\n\t\t'image/jpeg',\n\t\t'image/png',\n\t\t'image/gif',\n\t\t'image/webp',\n\t\t'image/flif',\n\t\t'image/x-canon-cr2',\n\t\t'image/x-canon-cr3',\n\t\t'image/tiff',\n\t\t'image/bmp',\n\t\t'image/vnd.ms-photo',\n\t\t'image/vnd.adobe.photoshop',\n\t\t'application/x-indesign',\n\t\t'application/epub+zip',\n\t\t'application/x-xpinstall',\n\t\t'application/vnd.oasis.opendocument.text',\n\t\t'application/vnd.oasis.opendocument.spreadsheet',\n\t\t'application/vnd.oasis.opendocument.presentation',\n\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t'application/zip',\n\t\t'application/x-tar',\n\t\t'application/x-rar-compressed',\n\t\t'application/gzip',\n\t\t'application/x-bzip2',\n\t\t'application/x-7z-compressed',\n\t\t'application/x-apple-diskimage',\n\t\t'application/x-apache-arrow',\n\t\t'video/mp4',\n\t\t'audio/midi',\n\t\t'video/x-matroska',\n\t\t'video/webm',\n\t\t'video/quicktime',\n\t\t'video/vnd.avi',\n\t\t'audio/vnd.wave',\n\t\t'audio/qcelp',\n\t\t'audio/x-ms-wma',\n\t\t'video/x-ms-asf',\n\t\t'application/vnd.ms-asf',\n\t\t'video/mpeg',\n\t\t'video/3gpp',\n\t\t'audio/mpeg',\n\t\t'audio/mp4', // RFC 4337\n\t\t'audio/opus',\n\t\t'video/ogg',\n\t\t'audio/ogg',\n\t\t'application/ogg',\n\t\t'audio/x-flac',\n\t\t'audio/ape',\n\t\t'audio/wavpack',\n\t\t'audio/amr',\n\t\t'application/pdf',\n\t\t'application/x-msdownload',\n\t\t'application/x-shockwave-flash',\n\t\t'application/rtf',\n\t\t'application/wasm',\n\t\t'font/woff',\n\t\t'font/woff2',\n\t\t'application/vnd.ms-fontobject',\n\t\t'font/ttf',\n\t\t'font/otf',\n\t\t'image/x-icon',\n\t\t'video/x-flv',\n\t\t'application/postscript',\n\t\t'application/eps',\n\t\t'application/x-xz',\n\t\t'application/x-sqlite3',\n\t\t'application/x-nintendo-nes-rom',\n\t\t'application/x-google-chrome-extension',\n\t\t'application/vnd.ms-cab-compressed',\n\t\t'application/x-deb',\n\t\t'application/x-unix-archive',\n\t\t'application/x-rpm',\n\t\t'application/x-compress',\n\t\t'application/x-lzip',\n\t\t'application/x-msi',\n\t\t'application/x-mie',\n\t\t'application/mxf',\n\t\t'video/mp2t',\n\t\t'application/x-blender',\n\t\t'image/bpg',\n\t\t'image/jp2',\n\t\t'image/jpx',\n\t\t'image/jpm',\n\t\t'image/mj2',\n\t\t'audio/aiff',\n\t\t'application/xml',\n\t\t'application/x-mobipocket-ebook',\n\t\t'image/heif',\n\t\t'image/heif-sequence',\n\t\t'image/heic',\n\t\t'image/heic-sequence',\n\t\t'image/icns',\n\t\t'image/ktx',\n\t\t'application/dicom',\n\t\t'audio/x-musepack',\n\t\t'text/calendar',\n\t\t'model/gltf-binary',\n\t\t'application/vnd.tcpdump.pcap',\n\t\t'audio/x-dsf', // Non-standard\n\t\t'application/x.ms.shortcut', // Invented by us\n\t\t'application/x.apple.alias', // Invented by us\n\t\t'audio/x-voc',\n\t\t'audio/vnd.dolby.dd-raw',\n\t\t'audio/x-m4a',\n\t\t'image/apng',\n\t\t'image/x-olympus-orf',\n\t\t'image/x-sony-arw',\n\t\t'image/x-adobe-dng',\n\t\t'image/x-nikon-nef',\n\t\t'image/x-panasonic-rw2',\n\t\t'image/x-fujifilm-raf',\n\t\t'video/x-m4v',\n\t\t'video/3gpp2',\n\t\t'application/x-esri-shape',\n\t\t'audio/aac',\n\t\t'audio/x-it',\n\t\t'audio/x-s3m',\n\t\t'audio/x-xm',\n\t\t'video/MP1S',\n\t\t'video/MP2P',\n\t\t'application/vnd.sketchup.skp',\n\t\t'image/avif',\n\t\t'application/x-lzh-compressed',\n\t\t'application/pgp-encrypted',\n\t\t'application/x-asar'\n\t]\n};\n","'use strict';\n\nexports.stringToBytes = string => [...string].map(character => character.charCodeAt(0));\n\nexports.tarHeaderChecksumMatches = buffer => { // Does not check if checksum field characters are valid\n\tif (buffer.length < 512) { // `tar` header size, cannot compute checksum without it\n\t\treturn false;\n\t}\n\n\tconst readSum = parseInt(buffer.toString('utf8', 148, 154).replace(/\\0.*$/, '').trim(), 8); // Read sum in header\n\tif (isNaN(readSum)) {\n\t\treturn false;\n\t}\n\n\tconst MASK_8TH_BIT = 0x80;\n\n\tlet sum = 256; // Initialize sum, with 256 as sum of 8 spaces in checksum field\n\tlet signedBitSum = 0; // Initialize signed bit sum\n\n\tfor (let i = 0; i < 148; i++) {\n\t\tconst byte = buffer[i];\n\t\tsum += byte;\n\t\tsignedBitSum += byte & MASK_8TH_BIT; // Add signed bit to signed bit sum\n\t}\n\n\t// Skip checksum field\n\n\tfor (let i = 156; i < 512; i++) {\n\t\tconst byte = buffer[i];\n\t\tsum += byte;\n\t\tsignedBitSum += byte & MASK_8TH_BIT; // Add signed bit to signed bit sum\n\t}\n\n\t// Some implementations compute checksum incorrectly using signed bytes\n\treturn (\n\t\t// Checksum in header equals the sum we calculated\n\t\treadSum === sum ||\n\n\t\t// Checksum in header equals sum we calculated plus signed-to-unsigned delta\n\t\treadSum === (sum - (signedBitSum << 1))\n\t);\n};\n\n/**\nID3 UINT32 sync-safe tokenizer token.\n28 bits (representing up to 256MB) integer, the msb is 0 to avoid \"false syncsignals\".\n*/\nexports.uint32SyncSafeToken = {\n\tget: (buffer, offset) => {\n\t\treturn (buffer[offset + 3] & 0x7F) | ((buffer[offset + 2]) << 7) | ((buffer[offset + 1]) << 14) | ((buffer[offset]) << 21);\n\t},\n\tlen: 4\n};\n","export default function isPng(buffer) {\n\tif (!buffer || buffer.length < 8) {\n\t\treturn false;\n\t}\n\n\treturn (\n\t\tbuffer[0] === 0x89 &&\n\t\tbuffer[1] === 0x50 &&\n\t\tbuffer[2] === 0x4E &&\n\t\tbuffer[3] === 0x47 &&\n\t\tbuffer[4] === 0x0D &&\n\t\tbuffer[5] === 0x0A &&\n\t\tbuffer[6] === 0x1A &&\n\t\tbuffer[7] === 0x0A\n\t);\n}\n","export default function pPipe(...functions) {\n\tif (functions.length === 0) {\n\t\tthrow new Error('Expected at least one argument');\n\t}\n\n\treturn async input => {\n\t\tlet currentValue = input;\n\n\t\tfor (const function_ of functions) {\n\t\t\tcurrentValue = await function_(currentValue); // eslint-disable-line no-await-in-loop\n\t\t}\n\n\t\treturn currentValue;\n\t};\n}\n","// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\n'use strict';\r\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}));\r\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n});\r\nvar __importStar = (this && this.__importStar) || function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/* eslint-disable @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call */\r\n/**\r\n * This is a module that takes an original image and resizes\r\n * it to common icon sizes and will put them in a folder.\r\n * It will retain transparency and can make special file\r\n * types. You can control the settings.\r\n *\r\n * @module tauricon\r\n * @exports tauricon\r\n * @author Daniel Thompson-Yvetot\r\n * @license MIT\r\n */\r\nvar fs_extra_1 = require(\"fs-extra\");\r\nvar imagemin_1 = __importDefault(require(\"imagemin\"));\r\nvar imagemin_optipng_1 = __importDefault(require(\"imagemin-optipng\"));\r\nvar imagemin_zopfli_1 = __importDefault(require(\"imagemin-zopfli\"));\r\nvar is_png_1 = __importDefault(require(\"is-png\"));\r\nvar path_1 = __importDefault(require(\"path\"));\r\nvar png2icons = __importStar(require(\"png2icons\"));\r\nvar read_chunk_1 = __importDefault(require(\"read-chunk\"));\r\nvar sharp_1 = __importDefault(require(\"sharp\"));\r\nvar app_paths_1 = require(\"../helpers/app-paths\");\r\nvar logger_1 = __importDefault(require(\"../helpers/logger\"));\r\nvar settings = __importStar(require(\"../helpers/tauricon.config\"));\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar package_json_1 = require(\"../../package.json\");\r\nvar log = logger_1.default('app:spawn');\r\nvar warn = logger_1.default('app:spawn', chalk_1.default.red);\r\nvar image = false;\r\nvar spinnerInterval = null;\r\nvar exists = function (file) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var err_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, fs_extra_1.access(file)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, true];\r\n case 2:\r\n err_1 = _a.sent();\r\n return [2 /*return*/, false];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n};\r\n/**\r\n * This is the first call that attempts to memoize the sharp(src).\r\n * If the source image cannot be found or if it is not a png, it\r\n * is a failsafe that will exit or throw.\r\n *\r\n * @param {string} src - a folder to target\r\n * @exits {error} if not a png, if not an image\r\n */\r\nvar checkSrc = function (src) { return __awaiter(void 0, void 0, void 0, function () {\r\n var srcExists, buffer, meta, stats;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(image !== false)) return [3 /*break*/, 1];\r\n return [2 /*return*/, image];\r\n case 1: return [4 /*yield*/, exists(src)];\r\n case 2:\r\n srcExists = _a.sent();\r\n if (!!srcExists) return [3 /*break*/, 3];\r\n image = false;\r\n if (spinnerInterval)\r\n clearInterval(spinnerInterval);\r\n warn('[ERROR] Source image for tauricon not found');\r\n process.exit(1);\r\n return [3 /*break*/, 8];\r\n case 3: return [4 /*yield*/, read_chunk_1.default(src, 0, 8)];\r\n case 4:\r\n buffer = _a.sent();\r\n if (!is_png_1.default(buffer)) return [3 /*break*/, 7];\r\n image = sharp_1.default(src);\r\n return [4 /*yield*/, image.metadata()];\r\n case 5:\r\n meta = _a.sent();\r\n if (!meta.hasAlpha || meta.channels !== 4) {\r\n if (spinnerInterval)\r\n clearInterval(spinnerInterval);\r\n warn('[ERROR] Source png for tauricon is not transparent');\r\n process.exit(1);\r\n }\r\n return [4 /*yield*/, image.stats()];\r\n case 6:\r\n stats = _a.sent();\r\n if (stats.isOpaque) {\r\n if (spinnerInterval)\r\n clearInterval(spinnerInterval);\r\n warn('[ERROR] Source png for tauricon could not be detected as transparent');\r\n process.exit(1);\r\n }\r\n return [2 /*return*/, image];\r\n case 7:\r\n image = false;\r\n if (spinnerInterval)\r\n clearInterval(spinnerInterval);\r\n warn('[ERROR] Source image for tauricon is not a png');\r\n process.exit(1);\r\n _a.label = 8;\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\n/**\r\n * Sort the folders in the current job for unique folders.\r\n *\r\n * @param {object} options - a subset of the settings\r\n * @returns {array} folders\r\n */\r\n// TODO: proper type of options and folders\r\nvar uniqueFolders = function (options) {\r\n var folders = [];\r\n for (var type in options) {\r\n var option = options[String(type)];\r\n if (option.folder) {\r\n folders.push(option.folder);\r\n }\r\n }\r\n // TODO: is compare argument required?\r\n // eslint-disable-next-line @typescript-eslint/require-array-sort-compare\r\n folders = folders.sort().filter(function (x, i, a) { return !i || x !== a[i - 1]; });\r\n return folders;\r\n};\r\n/**\r\n * Turn a hex color (like #212342) into r,g,b values\r\n *\r\n * @param {string} hex - hex colour\r\n * @returns {array} r,g,b\r\n */\r\nvar hexToRgb = function (hex) {\r\n // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\r\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\r\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n hex = hex.replace(shorthandRegex, function (m, r, g, b) {\r\n return r + r + g + g + b + b;\r\n });\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n }\r\n : undefined;\r\n};\r\n/**\r\n * validate image and directory\r\n */\r\nvar validate = function (src, target) { return __awaiter(void 0, void 0, void 0, function () {\r\n var res;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(target !== undefined)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, fs_extra_1.ensureDir(target)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [4 /*yield*/, checkSrc(src)];\r\n case 3:\r\n res = _a.sent();\r\n return [2 /*return*/, res];\r\n }\r\n });\r\n}); };\r\n// TODO: should take end param?\r\n/**\r\n * Log progress in the command line\r\n *\r\n * @param {boolean} end\r\n */\r\nvar progress = function (msg) {\r\n process.stdout.write(\" \" + msg + \" \\r\");\r\n};\r\n/**\r\n * Create a spinner on the command line\r\n *\r\n * @example\r\n *\r\n * const spinnerInterval = spinner()\r\n * // later\r\n * clearInterval(spinnerInterval)\r\n */\r\nvar spinner = function () {\r\n if ('CI' in process.env || process.argv.some(function (arg) { return arg === '--ci'; })) {\r\n return null;\r\n }\r\n return setInterval(function () {\r\n process.stdout.write('/ \\r');\r\n setTimeout(function () {\r\n process.stdout.write('- \\r');\r\n setTimeout(function () {\r\n process.stdout.write('\\\\ \\r');\r\n setTimeout(function () {\r\n process.stdout.write('| \\r');\r\n }, 100);\r\n }, 100);\r\n }, 100);\r\n }, 500);\r\n};\r\nvar tauricon = (exports.tauricon = {\r\n validate: function (src, target) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, validate(src, target)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, typeof image === 'object'];\r\n }\r\n });\r\n });\r\n },\r\n version: function () {\r\n return package_json_1.version;\r\n },\r\n make: function (src, target, strategy, \r\n // TODO: proper type for options\r\n options) {\r\n if (target === void 0) { target = path_1.default.resolve(app_paths_1.tauriDir, 'icons'); }\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!src) {\r\n src = path_1.default.resolve(app_paths_1.appDir, 'app-icon.png');\r\n }\r\n spinnerInterval = spinner();\r\n options = options || settings.options.tauri;\r\n progress(\"Building Tauri icns and ico from \\\"\" + src + \"\\\"\");\r\n return [4 /*yield*/, this.validate(src, target)];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, this.icns(src, target, options, strategy)];\r\n case 2:\r\n _a.sent();\r\n progress('Building Tauri png icons');\r\n return [4 /*yield*/, this.build(src, target, options)];\r\n case 3:\r\n _a.sent();\r\n if (!strategy) return [3 /*break*/, 5];\r\n progress(\"Minifying assets with \" + strategy);\r\n return [4 /*yield*/, this.minify(target, options, strategy, 'batch')];\r\n case 4:\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n log('no minify strategy');\r\n _a.label = 6;\r\n case 6:\r\n progress('Tauricon Finished');\r\n if (spinnerInterval)\r\n clearInterval(spinnerInterval);\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n },\r\n /**\r\n * Creates a set of images according to the subset of options it knows about.\r\n *\r\n * @param {string} src - image location\r\n * @param {string} target - where to drop the images\r\n * @param {object} options - js object that defines path and sizes\r\n */\r\n build: function (src, target, \r\n // TODO: proper type for options\r\n options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var sharpSrc, buildify2, output, folders, n, folder, _a, _b, _i, optionKey, option, _c, _d, _e, sizeKey, size, dest, pvar;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0: return [4 /*yield*/, this.validate(src, target)];\r\n case 1:\r\n _f.sent();\r\n sharpSrc = sharp_1.default(src) // creates the image object\r\n ;\r\n buildify2 = function (pvar) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pngImage, rgb, err_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n pngImage = sharpSrc.resize(pvar[1], pvar[1]);\r\n if (pvar[2]) {\r\n rgb = hexToRgb(options.background_color) || {\r\n r: undefined,\r\n g: undefined,\r\n b: undefined\r\n };\r\n pngImage.flatten({\r\n background: { r: rgb.r, g: rgb.g, b: rgb.b, alpha: 1 }\r\n });\r\n }\r\n pngImage.png();\r\n return [4 /*yield*/, pngImage.toFile(pvar[0])];\r\n case 1:\r\n _a.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n err_2 = _a.sent();\r\n warn(err_2);\r\n return [3 /*break*/, 3];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n folders = uniqueFolders(options);\r\n // eslint-disable-next-line @typescript-eslint/no-for-in-array\r\n for (n in folders) {\r\n folder = folders[Number(n)];\r\n // make the folders first\r\n // TODO: should this be ensureDirSync?\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n fs_extra_1.ensureDir(\"\" + target + path_1.default.sep + folder);\r\n }\r\n _a = [];\r\n for (_b in options)\r\n _a.push(_b);\r\n _i = 0;\r\n _f.label = 2;\r\n case 2:\r\n if (!(_i < _a.length)) return [3 /*break*/, 7];\r\n optionKey = _a[_i];\r\n option = options[String(optionKey)];\r\n _c = [];\r\n for (_d in option.sizes)\r\n _c.push(_d);\r\n _e = 0;\r\n _f.label = 3;\r\n case 3:\r\n if (!(_e < _c.length)) return [3 /*break*/, 6];\r\n sizeKey = _c[_e];\r\n size = option.sizes[String(sizeKey)];\r\n if (!!option.splash) return [3 /*break*/, 5];\r\n dest = target + \"/\" + option.folder;\r\n if (option.infix === true) {\r\n output = \"\" + dest + path_1.default.sep + option.prefix + size + \"x\" + size + option.suffix;\r\n }\r\n else {\r\n output = \"\" + dest + path_1.default.sep + option.prefix + option.suffix;\r\n }\r\n pvar = [\r\n output,\r\n size,\r\n option.background\r\n ];\r\n return [4 /*yield*/, buildify2(pvar)];\r\n case 4:\r\n _f.sent();\r\n _f.label = 5;\r\n case 5:\r\n _e++;\r\n return [3 /*break*/, 3];\r\n case 6:\r\n _i++;\r\n return [3 /*break*/, 2];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n },\r\n /**\r\n * Creates a set of splash images (COMING SOON!!!)\r\n *\r\n * @param {string} src - icon location\r\n * @param {string} splashSrc - splashscreen location\r\n * @param {string} target - where to drop the images\r\n * @param {object} options - js object that defines path and sizes\r\n */\r\n splash: function (src, splashSrc, target, \r\n // TODO: proper type for options\r\n options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var output, block, rgb, sharpSrc, data, _a, _b, _i, optionKey, option, _c, _d, _e, sizeKey, size, dest, pvar, sharpData;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0:\r\n block = false;\r\n rgb = hexToRgb(options.background_color) || {\r\n r: undefined,\r\n g: undefined,\r\n b: undefined\r\n };\r\n if (splashSrc === src) {\r\n // prevent overlay or pure\r\n block = true;\r\n }\r\n if (!(block || options.splashscreen_type === 'generate')) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.validate(src, target)];\r\n case 1:\r\n _f.sent();\r\n if (!image) {\r\n process.exit(1);\r\n }\r\n sharpSrc = sharp_1.default(src);\r\n sharpSrc\r\n .extend({\r\n top: 726,\r\n bottom: 726,\r\n left: 726,\r\n right: 726,\r\n background: {\r\n r: rgb.r,\r\n g: rgb.g,\r\n b: rgb.b,\r\n alpha: 1\r\n }\r\n })\r\n .flatten({ background: { r: rgb.r, g: rgb.g, b: rgb.b, alpha: 1 } });\r\n return [3 /*break*/, 3];\r\n case 2:\r\n if (options.splashscreen_type === 'overlay') {\r\n sharpSrc = sharp_1.default(splashSrc)\r\n .flatten({ background: { r: rgb.r, g: rgb.g, b: rgb.b, alpha: 1 } })\r\n .composite([\r\n {\r\n input: src\r\n // blend: 'multiply' <= future work, maybe just a gag\r\n }\r\n ]);\r\n }\r\n else if (options.splashscreen_type === 'pure') {\r\n sharpSrc = sharp_1.default(splashSrc).flatten({\r\n background: { r: rgb.r, g: rgb.g, b: rgb.b, alpha: 1 }\r\n });\r\n }\r\n else {\r\n throw new Error(\"unknown options.splashscreen_type: \" + options.splashscreen_type);\r\n }\r\n _f.label = 3;\r\n case 3: return [4 /*yield*/, sharpSrc.toBuffer()];\r\n case 4:\r\n data = _f.sent();\r\n _a = [];\r\n for (_b in options)\r\n _a.push(_b);\r\n _i = 0;\r\n _f.label = 5;\r\n case 5:\r\n if (!(_i < _a.length)) return [3 /*break*/, 11];\r\n optionKey = _a[_i];\r\n option = options[String(optionKey)];\r\n _c = [];\r\n for (_d in option.sizes)\r\n _c.push(_d);\r\n _e = 0;\r\n _f.label = 6;\r\n case 6:\r\n if (!(_e < _c.length)) return [3 /*break*/, 10];\r\n sizeKey = _c[_e];\r\n size = option.sizes[String(sizeKey)];\r\n if (!option.splash) return [3 /*break*/, 9];\r\n dest = \"\" + target + path_1.default.sep + option.folder;\r\n return [4 /*yield*/, fs_extra_1.ensureDir(dest)];\r\n case 7:\r\n _f.sent();\r\n if (option.infix === true) {\r\n output = \"\" + dest + path_1.default.sep + option.prefix + size + \"x\" + size + option.suffix;\r\n }\r\n else {\r\n output = \"\" + dest + path_1.default.sep + option.prefix + option.suffix;\r\n }\r\n pvar = [output, size];\r\n sharpData = sharp_1.default(data);\r\n sharpData = sharpData.resize(pvar[1][0], pvar[1][1]);\r\n return [4 /*yield*/, sharpData.toFile(pvar[0])];\r\n case 8:\r\n _f.sent();\r\n _f.label = 9;\r\n case 9:\r\n _e++;\r\n return [3 /*break*/, 6];\r\n case 10:\r\n _i++;\r\n return [3 /*break*/, 5];\r\n case 11: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n },\r\n /**\r\n * Minifies a set of images\r\n *\r\n * @param {string} target - image location\r\n * @param {object} options - where to drop the images\r\n * @param {string} strategy - which minify strategy to use\r\n * @param {string} mode - singlefile or batch\r\n */\r\n minify: function (target, \r\n // TODO: proper type for options\r\n options, strategy, mode) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cmd, minify, minifier, _a, folders, _b, _c, _i, n, folder;\r\n var _this = this;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n minify = settings.options.minify;\r\n if (!minify.available.find(function (x) { return x === strategy; })) {\r\n strategy = minify.type;\r\n }\r\n switch (strategy) {\r\n case 'optipng':\r\n cmd = imagemin_optipng_1.default(minify.optipngOptions);\r\n break;\r\n case 'zopfli':\r\n cmd = imagemin_zopfli_1.default(minify.zopfliOptions);\r\n break;\r\n default:\r\n throw new Error('unknown strategy' + strategy);\r\n }\r\n minifier = function (pvar, cmd) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, imagemin_1.default([pvar[0]], {\r\n destination: pvar[1],\r\n plugins: [cmd]\r\n }).catch(function (err) {\r\n warn(err);\r\n })];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n _a = mode;\r\n switch (_a) {\r\n case 'singlefile': return [3 /*break*/, 1];\r\n case 'batch': return [3 /*break*/, 3];\r\n }\r\n return [3 /*break*/, 8];\r\n case 1: return [4 /*yield*/, minifier([target, path_1.default.dirname(target)], cmd)];\r\n case 2:\r\n _d.sent();\r\n return [3 /*break*/, 9];\r\n case 3:\r\n folders = uniqueFolders(options);\r\n _b = [];\r\n for (_c in folders)\r\n _b.push(_c);\r\n _i = 0;\r\n _d.label = 4;\r\n case 4:\r\n if (!(_i < _b.length)) return [3 /*break*/, 7];\r\n n = _b[_i];\r\n folder = folders[Number(n)];\r\n log('batch minify:' + String(folder));\r\n return [4 /*yield*/, minifier([\r\n \"\" + target + path_1.default.sep + folder + path_1.default.sep + \"*.png\",\r\n \"\" + target + path_1.default.sep + folder\r\n ], cmd)];\r\n case 5:\r\n _d.sent();\r\n _d.label = 6;\r\n case 6:\r\n _i++;\r\n return [3 /*break*/, 4];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n warn('[ERROR] Minify mode must be one of [ singlefile | batch]');\r\n process.exit(1);\r\n _d.label = 9;\r\n case 9: return [2 /*return*/, 'minified'];\r\n }\r\n });\r\n });\r\n },\r\n /**\r\n * Creates special icns and ico filetypes\r\n *\r\n * @param {string} src - image location\r\n * @param {string} target - where to drop the images\r\n * @param {object} options\r\n * @param {string} strategy\r\n */\r\n icns: function (src, target, \r\n // TODO: proper type for options\r\n options, strategy) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var sharpSrc, buf, out, out2, err_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 4]);\r\n if (!image) {\r\n process.exit(1);\r\n }\r\n return [4 /*yield*/, this.validate(src, target)];\r\n case 1:\r\n _a.sent();\r\n sharpSrc = sharp_1.default(src);\r\n return [4 /*yield*/, sharpSrc.toBuffer()];\r\n case 2:\r\n buf = _a.sent();\r\n out = png2icons.createICNS(buf, png2icons.BICUBIC, 0);\r\n if (out === null) {\r\n throw new Error('Failed to create icon.icns');\r\n }\r\n fs_extra_1.ensureFileSync(path_1.default.join(target, '/icon.icns'));\r\n fs_extra_1.writeFileSync(path_1.default.join(target, '/icon.icns'), out);\r\n out2 = png2icons.createICO(buf, png2icons.BICUBIC, 0, true);\r\n if (out2 === null) {\r\n throw new Error('Failed to create icon.ico');\r\n }\r\n fs_extra_1.ensureFileSync(path_1.default.join(target, '/icon.ico'));\r\n fs_extra_1.writeFileSync(path_1.default.join(target, '/icon.ico'), out2);\r\n return [3 /*break*/, 4];\r\n case 3:\r\n err_3 = _a.sent();\r\n console.error(err_3);\r\n throw err_3;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n }\r\n});\r\n/* eslint-enable @typescript-eslint/restrict-template-expressions */\r\nif (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = tauricon;\r\n }\r\n exports.tauricon = tauricon;\r\n}\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.resolve = exports.tauriDir = exports.appDir = void 0;\r\nvar fs_1 = require(\"fs\");\r\nvar path_1 = require(\"path\");\r\nvar logger_1 = __importDefault(require(\"./logger\"));\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar warn = logger_1.default('tauri', chalk_1.default.red);\r\nfunction resolvePath(basePath, dir) {\r\n return dir && path_1.isAbsolute(dir) ? dir : path_1.resolve(basePath, dir);\r\n}\r\nvar getAppDir = function () {\r\n var dir = process.cwd();\r\n var count = 0;\r\n // only go up three folders max\r\n while (dir.length > 0 && !dir.endsWith(path_1.sep) && count <= 2) {\r\n if (fs_1.existsSync(path_1.join(dir, 'src-tauri', 'tauri.conf.json'))) {\r\n return dir;\r\n }\r\n count++;\r\n dir = path_1.normalize(path_1.join(dir, '..'));\r\n }\r\n warn(\"Couldn't find recognize the current folder as a part of a Tauri project\");\r\n process.exit(1);\r\n};\r\nvar appDir = getAppDir();\r\nexports.appDir = appDir;\r\nvar tauriDir = path_1.resolve(appDir, 'src-tauri');\r\nexports.tauriDir = tauriDir;\r\nvar resolveDir = {\r\n app: function (dir) { return resolvePath(appDir, dir); },\r\n tauri: function (dir) { return resolvePath(tauriDir, dir); }\r\n};\r\nexports.resolve = resolveDir;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar ms_1 = __importDefault(require(\"ms\"));\r\nvar prevTime;\r\nexports.default = (function (banner, color) {\r\n if (color === void 0) { color = chalk_1.default.green; }\r\n return function (msg) {\r\n var curr = +new Date();\r\n var diff = curr - (prevTime || curr);\r\n prevTime = curr;\r\n if (msg) {\r\n console.log(\r\n // TODO: proper typings for color and banner\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call\r\n \" \" + color(String(banner)) + \" \" + msg + \" \" + chalk_1.default.green(\"+\" + ms_1.default(diff)));\r\n }\r\n else {\r\n console.log();\r\n }\r\n };\r\n});\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.options = void 0;\r\nexports.options = {\r\n // folder determines in which path to drop the generated file\r\n // prefix is the first part of the generated file's name\r\n // infix adds e.g. '44x44' based on the size in sizes to the generated file's name\r\n // suffix adds a file-ending to the generated file's name\r\n // sizes determines the pixel width and height to use\r\n background_color: '#000074',\r\n theme_color: '#02aa9b',\r\n sharp: 'kernel: sharp.kernel.lanczos3',\r\n minify: {\r\n batch: false,\r\n overwrite: true,\r\n available: ['optipng', 'zopfli'],\r\n type: 'optipng',\r\n optipngOptions: {\r\n optimizationLevel: 4,\r\n paletteReduction: true\r\n },\r\n zopfliOptions: {\r\n transparent: true,\r\n more: true\r\n }\r\n },\r\n splash_type: 'generate',\r\n tauri: {\r\n linux: {\r\n folder: '.',\r\n prefix: '',\r\n infix: true,\r\n suffix: '.png',\r\n sizes: [32, 128]\r\n },\r\n linux_2x: {\r\n folder: '.',\r\n prefix: '128x128@2x',\r\n infix: false,\r\n suffix: '.png',\r\n sizes: [256]\r\n },\r\n defaults: {\r\n folder: '.',\r\n prefix: 'icon',\r\n infix: false,\r\n suffix: '.png',\r\n sizes: [512]\r\n },\r\n appx_logo: {\r\n folder: '.',\r\n prefix: 'StoreLogo',\r\n infix: false,\r\n suffix: '.png',\r\n sizes: [50]\r\n },\r\n appx_square: {\r\n folder: '.',\r\n prefix: 'Square',\r\n infix: true,\r\n suffix: 'Logo.png',\r\n sizes: [30, 44, 71, 89, 107, 142, 150, 284, 310]\r\n }\r\n // todo: look at capacitor and cordova for insight into what icons\r\n // we need for those distribution targets\r\n }\r\n};\r\n","module.exports = require(\"chalk\");;","module.exports = require(\"fs\");;","module.exports = require(\"fs-extra\");;","module.exports = require(\"globby\");;","module.exports = require(\"graceful-fs\");;","module.exports = require(\"imagemin-optipng\");;","module.exports = require(\"imagemin-zopfli\");;","module.exports = require(\"junk\");;","module.exports = require(\"ms\");;","module.exports = require(\"path\");;","module.exports = require(\"png2icons\");;","module.exports = require(\"read-chunk\");;","module.exports = require(\"replace-ext\");;","module.exports = require(\"sharp\");;","module.exports = require(\"strtok3\");;","module.exports = require(\"strtok3/lib/core\");;","module.exports = require(\"token-types\");;","module.exports = require(\"util\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/api/tauricon.ts\");\n"],"sourceRoot":""} \ No newline at end of file diff --git a/tooling/cli.js/dist/helpers/download-binary.js b/tooling/cli.js/dist/helpers/download-binary.js new file mode 100644 index 000000000..01b51abfd --- /dev/null +++ b/tooling/cli.js/dist/helpers/download-binary.js @@ -0,0 +1,384 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["tauri"] = factory(); + else + root["tauri"] = factory(); +})(this, function() { +return /******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../cli.rs/Cargo.toml": +/*!****************************!*\ + !*** ../cli.rs/Cargo.toml ***! + \****************************/ +/***/ ((module) => { + +module.exports = { + "workspace": {}, + "package": { + "name": "tauri-cli", + "version": "1.0.0-beta.5", + "authors": [ + "Tauri Programme within The Commons Conservancy" + ], + "edition": "2018", + "categories": [ + "gui", + "web-programming" + ], + "license": "Apache-2.0 OR MIT", + "homepage": "https://tauri.studio", + "repository": "https://github.com/tauri-apps/tauri", + "description": "Command line interface for building Tauri apps", + "include": [ + "src/", + "/templates", + "MergeModules/", + "*.json", + "*.rs" + ] + }, + "bin": [ + { + "name": "cargo-tauri", + "path": "src/main.rs" + } + ], + "dependencies": { + "clap": { + "version": "3.0.0-beta.2", + "features": [ + "yaml" + ] + }, + "anyhow": "1.0", + "tauri-bundler": { + "version": "1.0.0-beta.3", + "path": "../bundler" + }, + "colored": "2.0", + "once_cell": "1.8", + "serde": { + "version": "1.0", + "features": [ + "derive" + ] + }, + "serde_json": "1.0", + "serde_with": "1.9", + "notify": "4.0", + "shared_child": "0.3", + "toml_edit": "0.2", + "json-patch": "0.2", + "schemars": "0.8", + "toml": "0.5", + "valico": "3.6", + "handlebars": "4.1", + "include_dir": "0.6", + "minisign": "0.6", + "base64": "0.13.0", + "ureq": "2.1", + "os_info": "3.0", + "semver": "1.0", + "regex": "1.5", + "lazy_static": "1", + "libc": "0.2", + "terminal_size": "0.1", + "unicode-width": "0.1", + "tempfile": "3", + "zeroize": "1.3" + }, + "target": { + "cfg(windows)": { + "dependencies": { + "winapi": { + "version": "0.3", + "features": [ + "winbase", + "winuser", + "consoleapi", + "processenv", + "wincon" + ] + }, + "encode_unicode": "0.3" + } + }, + "cfg(target_os = \"linux\")": { + "dependencies": { + "heck": "0.3" + } + } + }, + "build-dependencies": { + "schemars": "0.8", + "serde": { + "version": "1.0", + "features": [ + "derive" + ] + }, + "serde_json": "1.0", + "serde_with": "1.9" + } +} + +/***/ }), + +/***/ "./src/helpers/download-binary.ts": +/*!****************************************!*\ + !*** ./src/helpers/download-binary.ts ***! + \****************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.downloadRustup = exports.downloadCli = void 0; +var stream_1 = __importDefault(__webpack_require__(/*! stream */ "stream")); +var util_1 = __webpack_require__(/*! util */ "util"); +var fs_1 = __importDefault(__webpack_require__(/*! fs */ "fs")); +var got_1 = __importDefault(__webpack_require__(/*! got */ "got")); +var path_1 = __importDefault(__webpack_require__(/*! path */ "path")); +var pipeline = util_1.promisify(stream_1.default.pipeline); +// Webpack reads the file at build-time, so this becomes a static var +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access +var tauriCliManifest = __webpack_require__(/*! ../../../cli.rs/Cargo.toml */ "../cli.rs/Cargo.toml"); +var downloads = {}; +function downloadBinaryRelease(tag, asset, outPath) { + return __awaiter(this, void 0, void 0, function () { + var url, removeDownloadedCliIfNeeded; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + url = "https://github.com/tauri-apps/binary-releases/releases/download/" + tag + "/" + asset; + removeDownloadedCliIfNeeded = function () { + try { + if (!(url in downloads)) { + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.unlinkSync(outPath); + } + } + finally { + process.exit(); + } + }; + // on exit, we remove the `tauri-cli` file if the download didn't complete + process.on('exit', removeDownloadedCliIfNeeded); + process.on('SIGINT', removeDownloadedCliIfNeeded); + process.on('SIGTERM', removeDownloadedCliIfNeeded); + process.on('SIGHUP', removeDownloadedCliIfNeeded); + process.on('SIGBREAK', removeDownloadedCliIfNeeded); + // TODO: Check hash of download + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename + return [4 /*yield*/, pipeline(got_1.default.stream(url), fs_1.default.createWriteStream(outPath)).catch(function (e) { + try { + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.unlinkSync(outPath); + } + catch (_a) { } + throw e; + }) + // eslint-disable-next-line security/detect-object-injection + ]; + case 1: + // TODO: Check hash of download + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename + _a.sent(); + // eslint-disable-next-line security/detect-object-injection + downloads[url] = true; + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.chmodSync(outPath, 448); + console.log('Download Complete'); + return [2 /*return*/]; + } + }); + }); +} +function downloadCli() { + return __awaiter(this, void 0, void 0, function () { + var version, platform, extension, outPath; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + version = tauriCliManifest.package.version; + platform = process.platform; + if (platform === 'win32') { + platform = 'windows'; + } + else if (platform === 'linux') { + platform = 'linux'; + } + else if (platform === 'darwin') { + platform = 'macos'; + } + else { + throw Error('Unsupported platform'); + } + extension = platform === 'windows' ? '.exe' : ''; + outPath = path_1.default.join(__dirname, "../../bin/tauri-cli" + extension); + console.log('Downloading Rust CLI...'); + return [4 /*yield*/, downloadBinaryRelease("tauri-cli-v" + version, "tauri-cli_" + platform + extension, outPath)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); +} +exports.downloadCli = downloadCli; +function downloadRustup() { + return __awaiter(this, void 0, void 0, function () { + var assetName; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + assetName = process.platform === 'win32' ? 'rustup-init.exe' : 'rustup-init.sh'; + console.log('Downloading Rustup...'); + return [4 /*yield*/, downloadBinaryRelease('rustup', assetName, path_1.default.join(__dirname, "../../bin/" + assetName))]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.downloadRustup = downloadRustup; + + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("fs");; + +/***/ }), + +/***/ "got": +/*!**********************!*\ + !*** external "got" ***! + \**********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("got");; + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("path");; + +/***/ }), + +/***/ "stream": +/*!*************************!*\ + !*** external "stream" ***! + \*************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("stream");; + +/***/ }), + +/***/ "util": +/*!***********************!*\ + !*** external "util" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("util");; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__("./src/helpers/download-binary.ts"); +/******/ +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=download-binary.js.map \ No newline at end of file diff --git a/tooling/cli.js/dist/helpers/download-binary.js.map b/tooling/cli.js/dist/helpers/download-binary.js.map new file mode 100644 index 000000000..8f76ad8f4 --- /dev/null +++ b/tooling/cli.js/dist/helpers/download-binary.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://tauri/webpack/universalModuleDefinition","webpack://tauri/../cli.rs/Cargo.toml","webpack://tauri/./src/helpers/download-binary.ts","webpack://tauri/external \"fs\"","webpack://tauri/external \"got\"","webpack://tauri/external \"path\"","webpack://tauri/external \"stream\"","webpack://tauri/external \"util\"","webpack://tauri/webpack/bootstrap","webpack://tauri/webpack/startup"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;ACVA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,C;;;;;;;;;;;AC5Ga;AACb;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,sBAAsB,GAAG,mBAAmB;AAC5C,+BAA+B,mBAAO,CAAC,sBAAQ;AAC/C,aAAa,mBAAO,CAAC,kBAAM;AAC3B,2BAA2B,mBAAO,CAAC,cAAI;AACvC,4BAA4B,mBAAO,CAAC,gBAAK;AACzC,6BAA6B,mBAAO,CAAC,kBAAM;AAC3C;AACA;AACA;AACA,uBAAuB,mBAAO,CAAC,wDAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,sBAAsB;;;;;;;;;;;;ACpJtB,gC;;;;;;;;;;;ACAA,iC;;;;;;;;;;;ACAA,kC;;;;;;;;;;;ACAA,oC;;;;;;;;;;;ACAA,kC;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UCtBA;UACA;UACA;UACA","file":"helpers/download-binary.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tauri\"] = factory();\n\telse\n\t\troot[\"tauri\"] = factory();\n})(this, function() {\nreturn ","module.exports = {\n\t\"workspace\": {},\n\t\"package\": {\n\t\t\"name\": \"tauri-cli\",\n\t\t\"version\": \"1.0.0-beta.5\",\n\t\t\"authors\": [\n\t\t\t\"Tauri Programme within The Commons Conservancy\"\n\t\t],\n\t\t\"edition\": \"2018\",\n\t\t\"categories\": [\n\t\t\t\"gui\",\n\t\t\t\"web-programming\"\n\t\t],\n\t\t\"license\": \"Apache-2.0 OR MIT\",\n\t\t\"homepage\": \"https://tauri.studio\",\n\t\t\"repository\": \"https://github.com/tauri-apps/tauri\",\n\t\t\"description\": \"Command line interface for building Tauri apps\",\n\t\t\"include\": [\n\t\t\t\"src/\",\n\t\t\t\"/templates\",\n\t\t\t\"MergeModules/\",\n\t\t\t\"*.json\",\n\t\t\t\"*.rs\"\n\t\t]\n\t},\n\t\"bin\": [\n\t\t{\n\t\t\t\"name\": \"cargo-tauri\",\n\t\t\t\"path\": \"src/main.rs\"\n\t\t}\n\t],\n\t\"dependencies\": {\n\t\t\"clap\": {\n\t\t\t\"version\": \"3.0.0-beta.2\",\n\t\t\t\"features\": [\n\t\t\t\t\"yaml\"\n\t\t\t]\n\t\t},\n\t\t\"anyhow\": \"1.0\",\n\t\t\"tauri-bundler\": {\n\t\t\t\"version\": \"1.0.0-beta.3\",\n\t\t\t\"path\": \"../bundler\"\n\t\t},\n\t\t\"colored\": \"2.0\",\n\t\t\"once_cell\": \"1.8\",\n\t\t\"serde\": {\n\t\t\t\"version\": \"1.0\",\n\t\t\t\"features\": [\n\t\t\t\t\"derive\"\n\t\t\t]\n\t\t},\n\t\t\"serde_json\": \"1.0\",\n\t\t\"serde_with\": \"1.9\",\n\t\t\"notify\": \"4.0\",\n\t\t\"shared_child\": \"0.3\",\n\t\t\"toml_edit\": \"0.2\",\n\t\t\"json-patch\": \"0.2\",\n\t\t\"schemars\": \"0.8\",\n\t\t\"toml\": \"0.5\",\n\t\t\"valico\": \"3.6\",\n\t\t\"handlebars\": \"4.1\",\n\t\t\"include_dir\": \"0.6\",\n\t\t\"minisign\": \"0.6\",\n\t\t\"base64\": \"0.13.0\",\n\t\t\"ureq\": \"2.1\",\n\t\t\"os_info\": \"3.0\",\n\t\t\"semver\": \"1.0\",\n\t\t\"regex\": \"1.5\",\n\t\t\"lazy_static\": \"1\",\n\t\t\"libc\": \"0.2\",\n\t\t\"terminal_size\": \"0.1\",\n\t\t\"unicode-width\": \"0.1\",\n\t\t\"tempfile\": \"3\",\n\t\t\"zeroize\": \"1.3\"\n\t},\n\t\"target\": {\n\t\t\"cfg(windows)\": {\n\t\t\t\"dependencies\": {\n\t\t\t\t\"winapi\": {\n\t\t\t\t\t\"version\": \"0.3\",\n\t\t\t\t\t\"features\": [\n\t\t\t\t\t\t\"winbase\",\n\t\t\t\t\t\t\"winuser\",\n\t\t\t\t\t\t\"consoleapi\",\n\t\t\t\t\t\t\"processenv\",\n\t\t\t\t\t\t\"wincon\"\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"encode_unicode\": \"0.3\"\n\t\t\t}\n\t\t},\n\t\t\"cfg(target_os = \\\"linux\\\")\": {\n\t\t\t\"dependencies\": {\n\t\t\t\t\"heck\": \"0.3\"\n\t\t\t}\n\t\t}\n\t},\n\t\"build-dependencies\": {\n\t\t\"schemars\": \"0.8\",\n\t\t\"serde\": {\n\t\t\t\"version\": \"1.0\",\n\t\t\t\"features\": [\n\t\t\t\t\"derive\"\n\t\t\t]\n\t\t},\n\t\t\"serde_json\": \"1.0\",\n\t\t\"serde_with\": \"1.9\"\n\t}\n}","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.downloadRustup = exports.downloadCli = void 0;\r\nvar stream_1 = __importDefault(require(\"stream\"));\r\nvar util_1 = require(\"util\");\r\nvar fs_1 = __importDefault(require(\"fs\"));\r\nvar got_1 = __importDefault(require(\"got\"));\r\nvar path_1 = __importDefault(require(\"path\"));\r\nvar pipeline = util_1.promisify(stream_1.default.pipeline);\r\n// Webpack reads the file at build-time, so this becomes a static var\r\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access\r\nvar tauriCliManifest = require('../../../cli.rs/Cargo.toml');\r\nvar downloads = {};\r\nfunction downloadBinaryRelease(tag, asset, outPath) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, removeDownloadedCliIfNeeded;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = \"https://github.com/tauri-apps/binary-releases/releases/download/\" + tag + \"/\" + asset;\r\n removeDownloadedCliIfNeeded = function () {\r\n try {\r\n if (!(url in downloads)) {\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.unlinkSync(outPath);\r\n }\r\n }\r\n finally {\r\n process.exit();\r\n }\r\n };\r\n // on exit, we remove the `tauri-cli` file if the download didn't complete\r\n process.on('exit', removeDownloadedCliIfNeeded);\r\n process.on('SIGINT', removeDownloadedCliIfNeeded);\r\n process.on('SIGTERM', removeDownloadedCliIfNeeded);\r\n process.on('SIGHUP', removeDownloadedCliIfNeeded);\r\n process.on('SIGBREAK', removeDownloadedCliIfNeeded);\r\n // TODO: Check hash of download\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename\r\n return [4 /*yield*/, pipeline(got_1.default.stream(url), fs_1.default.createWriteStream(outPath)).catch(function (e) {\r\n try {\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.unlinkSync(outPath);\r\n }\r\n catch (_a) { }\r\n throw e;\r\n })\r\n // eslint-disable-next-line security/detect-object-injection\r\n ];\r\n case 1:\r\n // TODO: Check hash of download\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename\r\n _a.sent();\r\n // eslint-disable-next-line security/detect-object-injection\r\n downloads[url] = true;\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.chmodSync(outPath, 448);\r\n console.log('Download Complete');\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction downloadCli() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var version, platform, extension, outPath;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n version = tauriCliManifest.package.version;\r\n platform = process.platform;\r\n if (platform === 'win32') {\r\n platform = 'windows';\r\n }\r\n else if (platform === 'linux') {\r\n platform = 'linux';\r\n }\r\n else if (platform === 'darwin') {\r\n platform = 'macos';\r\n }\r\n else {\r\n throw Error('Unsupported platform');\r\n }\r\n extension = platform === 'windows' ? '.exe' : '';\r\n outPath = path_1.default.join(__dirname, \"../../bin/tauri-cli\" + extension);\r\n console.log('Downloading Rust CLI...');\r\n return [4 /*yield*/, downloadBinaryRelease(\"tauri-cli-v\" + version, \"tauri-cli_\" + platform + extension, outPath)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nexports.downloadCli = downloadCli;\r\nfunction downloadRustup() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var assetName;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n assetName = process.platform === 'win32' ? 'rustup-init.exe' : 'rustup-init.sh';\r\n console.log('Downloading Rustup...');\r\n return [4 /*yield*/, downloadBinaryRelease('rustup', assetName, path_1.default.join(__dirname, \"../../bin/\" + assetName))];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.downloadRustup = downloadRustup;\r\n","module.exports = require(\"fs\");;","module.exports = require(\"got\");;","module.exports = require(\"path\");;","module.exports = require(\"stream\");;","module.exports = require(\"util\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/helpers/download-binary.ts\");\n"],"sourceRoot":""} \ No newline at end of file diff --git a/tooling/cli.js/dist/helpers/rust-cli.js b/tooling/cli.js/dist/helpers/rust-cli.js new file mode 100644 index 000000000..bcce812f9 --- /dev/null +++ b/tooling/cli.js/dist/helpers/rust-cli.js @@ -0,0 +1,655 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["tauri"] = factory(); + else + root["tauri"] = factory(); +})(this, function() { +return /******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../cli.rs/Cargo.toml": +/*!****************************!*\ + !*** ../cli.rs/Cargo.toml ***! + \****************************/ +/***/ ((module) => { + +module.exports = { + "workspace": {}, + "package": { + "name": "tauri-cli", + "version": "1.0.0-beta.5", + "authors": [ + "Tauri Programme within The Commons Conservancy" + ], + "edition": "2018", + "categories": [ + "gui", + "web-programming" + ], + "license": "Apache-2.0 OR MIT", + "homepage": "https://tauri.studio", + "repository": "https://github.com/tauri-apps/tauri", + "description": "Command line interface for building Tauri apps", + "include": [ + "src/", + "/templates", + "MergeModules/", + "*.json", + "*.rs" + ] + }, + "bin": [ + { + "name": "cargo-tauri", + "path": "src/main.rs" + } + ], + "dependencies": { + "clap": { + "version": "3.0.0-beta.2", + "features": [ + "yaml" + ] + }, + "anyhow": "1.0", + "tauri-bundler": { + "version": "1.0.0-beta.3", + "path": "../bundler" + }, + "colored": "2.0", + "once_cell": "1.8", + "serde": { + "version": "1.0", + "features": [ + "derive" + ] + }, + "serde_json": "1.0", + "serde_with": "1.9", + "notify": "4.0", + "shared_child": "0.3", + "toml_edit": "0.2", + "json-patch": "0.2", + "schemars": "0.8", + "toml": "0.5", + "valico": "3.6", + "handlebars": "4.1", + "include_dir": "0.6", + "minisign": "0.6", + "base64": "0.13.0", + "ureq": "2.1", + "os_info": "3.0", + "semver": "1.0", + "regex": "1.5", + "lazy_static": "1", + "libc": "0.2", + "terminal_size": "0.1", + "unicode-width": "0.1", + "tempfile": "3", + "zeroize": "1.3" + }, + "target": { + "cfg(windows)": { + "dependencies": { + "winapi": { + "version": "0.3", + "features": [ + "winbase", + "winuser", + "consoleapi", + "processenv", + "wincon" + ] + }, + "encode_unicode": "0.3" + } + }, + "cfg(target_os = \"linux\")": { + "dependencies": { + "heck": "0.3" + } + } + }, + "build-dependencies": { + "schemars": "0.8", + "serde": { + "version": "1.0", + "features": [ + "derive" + ] + }, + "serde_json": "1.0", + "serde_with": "1.9" + } +} + +/***/ }), + +/***/ "./src/helpers/download-binary.ts": +/*!****************************************!*\ + !*** ./src/helpers/download-binary.ts ***! + \****************************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.downloadRustup = exports.downloadCli = void 0; +var stream_1 = __importDefault(__webpack_require__(/*! stream */ "stream")); +var util_1 = __webpack_require__(/*! util */ "util"); +var fs_1 = __importDefault(__webpack_require__(/*! fs */ "fs")); +var got_1 = __importDefault(__webpack_require__(/*! got */ "got")); +var path_1 = __importDefault(__webpack_require__(/*! path */ "path")); +var pipeline = util_1.promisify(stream_1.default.pipeline); +// Webpack reads the file at build-time, so this becomes a static var +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access +var tauriCliManifest = __webpack_require__(/*! ../../../cli.rs/Cargo.toml */ "../cli.rs/Cargo.toml"); +var downloads = {}; +function downloadBinaryRelease(tag, asset, outPath) { + return __awaiter(this, void 0, void 0, function () { + var url, removeDownloadedCliIfNeeded; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + url = "https://github.com/tauri-apps/binary-releases/releases/download/" + tag + "/" + asset; + removeDownloadedCliIfNeeded = function () { + try { + if (!(url in downloads)) { + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.unlinkSync(outPath); + } + } + finally { + process.exit(); + } + }; + // on exit, we remove the `tauri-cli` file if the download didn't complete + process.on('exit', removeDownloadedCliIfNeeded); + process.on('SIGINT', removeDownloadedCliIfNeeded); + process.on('SIGTERM', removeDownloadedCliIfNeeded); + process.on('SIGHUP', removeDownloadedCliIfNeeded); + process.on('SIGBREAK', removeDownloadedCliIfNeeded); + // TODO: Check hash of download + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename + return [4 /*yield*/, pipeline(got_1.default.stream(url), fs_1.default.createWriteStream(outPath)).catch(function (e) { + try { + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.unlinkSync(outPath); + } + catch (_a) { } + throw e; + }) + // eslint-disable-next-line security/detect-object-injection + ]; + case 1: + // TODO: Check hash of download + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename + _a.sent(); + // eslint-disable-next-line security/detect-object-injection + downloads[url] = true; + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs_1.default.chmodSync(outPath, 448); + console.log('Download Complete'); + return [2 /*return*/]; + } + }); + }); +} +function downloadCli() { + return __awaiter(this, void 0, void 0, function () { + var version, platform, extension, outPath; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + version = tauriCliManifest.package.version; + platform = process.platform; + if (platform === 'win32') { + platform = 'windows'; + } + else if (platform === 'linux') { + platform = 'linux'; + } + else if (platform === 'darwin') { + platform = 'macos'; + } + else { + throw Error('Unsupported platform'); + } + extension = platform === 'windows' ? '.exe' : ''; + outPath = path_1.default.join(__dirname, "../../bin/tauri-cli" + extension); + console.log('Downloading Rust CLI...'); + return [4 /*yield*/, downloadBinaryRelease("tauri-cli-v" + version, "tauri-cli_" + platform + extension, outPath)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); +} +exports.downloadCli = downloadCli; +function downloadRustup() { + return __awaiter(this, void 0, void 0, function () { + var assetName; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + assetName = process.platform === 'win32' ? 'rustup-init.exe' : 'rustup-init.sh'; + console.log('Downloading Rustup...'); + return [4 /*yield*/, downloadBinaryRelease('rustup', assetName, path_1.default.join(__dirname, "../../bin/" + assetName))]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.downloadRustup = downloadRustup; + + +/***/ }), + +/***/ "./src/helpers/logger.ts": +/*!*******************************!*\ + !*** ./src/helpers/logger.ts ***! + \*******************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var ms_1 = __importDefault(__webpack_require__(/*! ms */ "ms")); +var prevTime; +exports.default = (function (banner, color) { + if (color === void 0) { color = chalk_1.default.green; } + return function (msg) { + var curr = +new Date(); + var diff = curr - (prevTime || curr); + prevTime = curr; + if (msg) { + console.log( + // TODO: proper typings for color and banner + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call + " " + color(String(banner)) + " " + msg + " " + chalk_1.default.green("+" + ms_1.default(diff))); + } + else { + console.log(); + } + }; +}); + + +/***/ }), + +/***/ "./src/helpers/rust-cli.ts": +/*!*********************************!*\ + !*** ./src/helpers/rust-cli.ts ***! + \*********************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __spreadArray = (this && this.__spreadArray) || function (to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.runOnRustCli = void 0; +var fs_1 = __webpack_require__(/*! fs */ "fs"); +var path_1 = __webpack_require__(/*! path */ "path"); +var spawn_1 = __webpack_require__(/*! ./spawn */ "./src/helpers/spawn.ts"); +var download_binary_1 = __webpack_require__(/*! ./download-binary */ "./src/helpers/download-binary.ts"); +var currentTauriCliVersion = function () { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access + var tauriCliManifest = + // eslint-disable-next-line @typescript-eslint/no-var-requires + __webpack_require__(/*! ../../../cli.rs/Cargo.toml */ "../cli.rs/Cargo.toml"); + return tauriCliManifest.package.version; +}; +function runOnRustCli(command, args) { + return __awaiter(this, void 0, void 0, function () { + var targetPath, targetCliPath, resolveCb, rejectCb, pid, promise, onClose, cliPath, localCliPath; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + targetPath = path_1.resolve(__dirname, '../..'); + targetCliPath = path_1.join(targetPath, 'bin/tauri-cli' + (process.platform === 'win32' ? '.exe' : '')); + promise = new Promise(function (resolve, reject) { + resolveCb = resolve; + rejectCb = function () { return reject(new Error()); }; + }); + onClose = function (code, pid) { + if (code === 0) { + resolveCb(); + } + else { + rejectCb(); + } + }; + if (!fs_1.existsSync(targetCliPath)) return [3 /*break*/, 1]; + pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose); + return [3 /*break*/, 4]; + case 1: + if (true) return [3 /*break*/, 3]; + return [4 /*yield*/, download_binary_1.downloadCli()]; + case 2: + _a.sent(); + pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose); + return [3 /*break*/, 4]; + case 3: + if (fs_1.existsSync(path_1.resolve(targetPath, '../bundler'))) { + cliPath = path_1.resolve(targetPath, '../cli.rs'); + spawn_1.spawnSync('cargo', ['build', '--release'], cliPath); + localCliPath = path_1.resolve(targetPath, '../cli.rs/target/release/cargo-tauri'); + pid = spawn_1.spawn(localCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose); + } + else { + spawn_1.spawnSync('cargo', [ + 'install', + '--root', + targetPath, + 'tauri-cli', + '--version', + currentTauriCliVersion() + ], process.cwd()); + pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose); + } + _a.label = 4; + case 4: return [2 /*return*/, { pid: pid, promise: promise }]; + } + }); + }); +} +exports.runOnRustCli = runOnRustCli; + + +/***/ }), + +/***/ "./src/helpers/spawn.ts": +/*!******************************!*\ + !*** ./src/helpers/spawn.ts ***! + \******************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +"use strict"; + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.spawnSync = exports.spawn = void 0; +var cross_spawn_1 = __importDefault(__webpack_require__(/*! cross-spawn */ "cross-spawn")); +var logger_1 = __importDefault(__webpack_require__(/*! ./logger */ "./src/helpers/logger.ts")); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var log = logger_1.default('app:spawn'); +var warn = logger_1.default('app:spawn', chalk_1.default.red); +/* + Returns pid, takes onClose + */ +var spawn = function (cmd, params, cwd, onClose) { + var _a; + log("Running \"" + cmd + " " + params.join(' ') + "\""); + log(); + // TODO: move to execa? + var runner = cross_spawn_1.default(cmd, params, { + stdio: 'inherit', + cwd: cwd, + env: process.env + }); + runner.on('close', function (code) { + var _a; + log(); + if (code) { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + log("Command \"" + cmd + "\" failed with exit code: " + code); + } + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain + onClose && onClose(code !== null && code !== void 0 ? code : 0, (_a = runner.pid) !== null && _a !== void 0 ? _a : 0); + }); + return (_a = runner.pid) !== null && _a !== void 0 ? _a : 0; +}; +exports.spawn = spawn; +/* + Returns nothing, takes onFail + */ +var spawnSync = function (cmd, params, cwd, onFail) { + log("[sync] Running \"" + cmd + " " + params.join(' ') + "\""); + log(); + var runner = cross_spawn_1.default.sync(cmd, params, { + stdio: 'inherit', + cwd: cwd + }); + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + if (runner.status || runner.error) { + warn(); + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + warn("\u26A0\uFE0F Command \"" + cmd + "\" failed with exit code: " + runner.status); + if (runner.status === null) { + warn("\u26A0\uFE0F Please globally install \"" + cmd + "\""); + } + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain + onFail && onFail(); + process.exit(1); + } +}; +exports.spawnSync = spawnSync; + + +/***/ }), + +/***/ "chalk": +/*!************************!*\ + !*** external "chalk" ***! + \************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("chalk");; + +/***/ }), + +/***/ "cross-spawn": +/*!******************************!*\ + !*** external "cross-spawn" ***! + \******************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("cross-spawn");; + +/***/ }), + +/***/ "fs": +/*!*********************!*\ + !*** external "fs" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("fs");; + +/***/ }), + +/***/ "got": +/*!**********************!*\ + !*** external "got" ***! + \**********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("got");; + +/***/ }), + +/***/ "ms": +/*!*********************!*\ + !*** external "ms" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("ms");; + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("path");; + +/***/ }), + +/***/ "stream": +/*!*************************!*\ + !*** external "stream" ***! + \*************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("stream");; + +/***/ }), + +/***/ "util": +/*!***********************!*\ + !*** external "util" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("util");; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__("./src/helpers/rust-cli.ts"); +/******/ +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=rust-cli.js.map \ No newline at end of file diff --git a/tooling/cli.js/dist/helpers/rust-cli.js.map b/tooling/cli.js/dist/helpers/rust-cli.js.map new file mode 100644 index 000000000..00a68c675 --- /dev/null +++ b/tooling/cli.js/dist/helpers/rust-cli.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://tauri/webpack/universalModuleDefinition","webpack://tauri/../cli.rs/Cargo.toml","webpack://tauri/./src/helpers/download-binary.ts","webpack://tauri/./src/helpers/logger.ts","webpack://tauri/./src/helpers/rust-cli.ts","webpack://tauri/./src/helpers/spawn.ts","webpack://tauri/external \"chalk\"","webpack://tauri/external \"cross-spawn\"","webpack://tauri/external \"fs\"","webpack://tauri/external \"got\"","webpack://tauri/external \"ms\"","webpack://tauri/external \"path\"","webpack://tauri/external \"stream\"","webpack://tauri/external \"util\"","webpack://tauri/webpack/bootstrap","webpack://tauri/webpack/startup"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;ACVA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,C;;;;;;;;;;;AC5Ga;AACb;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,sBAAsB,GAAG,mBAAmB;AAC5C,+BAA+B,mBAAO,CAAC,sBAAQ;AAC/C,aAAa,mBAAO,CAAC,kBAAM;AAC3B,2BAA2B,mBAAO,CAAC,cAAI;AACvC,4BAA4B,mBAAO,CAAC,gBAAK;AACzC,6BAA6B,mBAAO,CAAC,kBAAM;AAC3C;AACA;AACA;AACA,uBAAuB,mBAAO,CAAC,wDAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,sBAAsB;;;;;;;;;;;;ACpJT;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C,2BAA2B,mBAAO,CAAC,cAAI;AACvC;AACA,eAAe;AACf,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AC3BY;AACb;AACA;AACA;AACA;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,oDAAoD,QAAQ;AAC5D;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,oBAAoB;AACpB,WAAW,mBAAO,CAAC,cAAI;AACvB,aAAa,mBAAO,CAAC,kBAAM;AAC3B,cAAc,mBAAO,CAAC,uCAAS;AAC/B,wBAAwB,mBAAO,CAAC,2DAAmB;AACnD;AACA;AACA;AACA;AACA,IAAI,mBAAO,CAAC,wDAA4B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,4BAA4B;AAC5E,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,IAAwC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,6BAA6B;AAC5E;AACA,SAAS;AACT,KAAK;AACL;AACA,oBAAoB;;;;;;;;;;;;AChHP;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,GAAG,aAAa;AACjC,oCAAoC,mBAAO,CAAC,gCAAa;AACzD,+BAA+B,mBAAO,CAAC,yCAAU;AACjD,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;;AC/DjB,mC;;;;;;;;;;;ACAA,yC;;;;;;;;;;;ACAA,gC;;;;;;;;;;;ACAA,iC;;;;;;;;;;;ACAA,gC;;;;;;;;;;;ACAA,kC;;;;;;;;;;;ACAA,oC;;;;;;;;;;;ACAA,kC;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UCtBA;UACA;UACA;UACA","file":"helpers/rust-cli.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tauri\"] = factory();\n\telse\n\t\troot[\"tauri\"] = factory();\n})(this, function() {\nreturn ","module.exports = {\n\t\"workspace\": {},\n\t\"package\": {\n\t\t\"name\": \"tauri-cli\",\n\t\t\"version\": \"1.0.0-beta.5\",\n\t\t\"authors\": [\n\t\t\t\"Tauri Programme within The Commons Conservancy\"\n\t\t],\n\t\t\"edition\": \"2018\",\n\t\t\"categories\": [\n\t\t\t\"gui\",\n\t\t\t\"web-programming\"\n\t\t],\n\t\t\"license\": \"Apache-2.0 OR MIT\",\n\t\t\"homepage\": \"https://tauri.studio\",\n\t\t\"repository\": \"https://github.com/tauri-apps/tauri\",\n\t\t\"description\": \"Command line interface for building Tauri apps\",\n\t\t\"include\": [\n\t\t\t\"src/\",\n\t\t\t\"/templates\",\n\t\t\t\"MergeModules/\",\n\t\t\t\"*.json\",\n\t\t\t\"*.rs\"\n\t\t]\n\t},\n\t\"bin\": [\n\t\t{\n\t\t\t\"name\": \"cargo-tauri\",\n\t\t\t\"path\": \"src/main.rs\"\n\t\t}\n\t],\n\t\"dependencies\": {\n\t\t\"clap\": {\n\t\t\t\"version\": \"3.0.0-beta.2\",\n\t\t\t\"features\": [\n\t\t\t\t\"yaml\"\n\t\t\t]\n\t\t},\n\t\t\"anyhow\": \"1.0\",\n\t\t\"tauri-bundler\": {\n\t\t\t\"version\": \"1.0.0-beta.3\",\n\t\t\t\"path\": \"../bundler\"\n\t\t},\n\t\t\"colored\": \"2.0\",\n\t\t\"once_cell\": \"1.8\",\n\t\t\"serde\": {\n\t\t\t\"version\": \"1.0\",\n\t\t\t\"features\": [\n\t\t\t\t\"derive\"\n\t\t\t]\n\t\t},\n\t\t\"serde_json\": \"1.0\",\n\t\t\"serde_with\": \"1.9\",\n\t\t\"notify\": \"4.0\",\n\t\t\"shared_child\": \"0.3\",\n\t\t\"toml_edit\": \"0.2\",\n\t\t\"json-patch\": \"0.2\",\n\t\t\"schemars\": \"0.8\",\n\t\t\"toml\": \"0.5\",\n\t\t\"valico\": \"3.6\",\n\t\t\"handlebars\": \"4.1\",\n\t\t\"include_dir\": \"0.6\",\n\t\t\"minisign\": \"0.6\",\n\t\t\"base64\": \"0.13.0\",\n\t\t\"ureq\": \"2.1\",\n\t\t\"os_info\": \"3.0\",\n\t\t\"semver\": \"1.0\",\n\t\t\"regex\": \"1.5\",\n\t\t\"lazy_static\": \"1\",\n\t\t\"libc\": \"0.2\",\n\t\t\"terminal_size\": \"0.1\",\n\t\t\"unicode-width\": \"0.1\",\n\t\t\"tempfile\": \"3\",\n\t\t\"zeroize\": \"1.3\"\n\t},\n\t\"target\": {\n\t\t\"cfg(windows)\": {\n\t\t\t\"dependencies\": {\n\t\t\t\t\"winapi\": {\n\t\t\t\t\t\"version\": \"0.3\",\n\t\t\t\t\t\"features\": [\n\t\t\t\t\t\t\"winbase\",\n\t\t\t\t\t\t\"winuser\",\n\t\t\t\t\t\t\"consoleapi\",\n\t\t\t\t\t\t\"processenv\",\n\t\t\t\t\t\t\"wincon\"\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t\"encode_unicode\": \"0.3\"\n\t\t\t}\n\t\t},\n\t\t\"cfg(target_os = \\\"linux\\\")\": {\n\t\t\t\"dependencies\": {\n\t\t\t\t\"heck\": \"0.3\"\n\t\t\t}\n\t\t}\n\t},\n\t\"build-dependencies\": {\n\t\t\"schemars\": \"0.8\",\n\t\t\"serde\": {\n\t\t\t\"version\": \"1.0\",\n\t\t\t\"features\": [\n\t\t\t\t\"derive\"\n\t\t\t]\n\t\t},\n\t\t\"serde_json\": \"1.0\",\n\t\t\"serde_with\": \"1.9\"\n\t}\n}","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.downloadRustup = exports.downloadCli = void 0;\r\nvar stream_1 = __importDefault(require(\"stream\"));\r\nvar util_1 = require(\"util\");\r\nvar fs_1 = __importDefault(require(\"fs\"));\r\nvar got_1 = __importDefault(require(\"got\"));\r\nvar path_1 = __importDefault(require(\"path\"));\r\nvar pipeline = util_1.promisify(stream_1.default.pipeline);\r\n// Webpack reads the file at build-time, so this becomes a static var\r\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access\r\nvar tauriCliManifest = require('../../../cli.rs/Cargo.toml');\r\nvar downloads = {};\r\nfunction downloadBinaryRelease(tag, asset, outPath) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, removeDownloadedCliIfNeeded;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = \"https://github.com/tauri-apps/binary-releases/releases/download/\" + tag + \"/\" + asset;\r\n removeDownloadedCliIfNeeded = function () {\r\n try {\r\n if (!(url in downloads)) {\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.unlinkSync(outPath);\r\n }\r\n }\r\n finally {\r\n process.exit();\r\n }\r\n };\r\n // on exit, we remove the `tauri-cli` file if the download didn't complete\r\n process.on('exit', removeDownloadedCliIfNeeded);\r\n process.on('SIGINT', removeDownloadedCliIfNeeded);\r\n process.on('SIGTERM', removeDownloadedCliIfNeeded);\r\n process.on('SIGHUP', removeDownloadedCliIfNeeded);\r\n process.on('SIGBREAK', removeDownloadedCliIfNeeded);\r\n // TODO: Check hash of download\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename\r\n return [4 /*yield*/, pipeline(got_1.default.stream(url), fs_1.default.createWriteStream(outPath)).catch(function (e) {\r\n try {\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.unlinkSync(outPath);\r\n }\r\n catch (_a) { }\r\n throw e;\r\n })\r\n // eslint-disable-next-line security/detect-object-injection\r\n ];\r\n case 1:\r\n // TODO: Check hash of download\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, security/detect-non-literal-fs-filename\r\n _a.sent();\r\n // eslint-disable-next-line security/detect-object-injection\r\n downloads[url] = true;\r\n // eslint-disable-next-line security/detect-non-literal-fs-filename\r\n fs_1.default.chmodSync(outPath, 448);\r\n console.log('Download Complete');\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction downloadCli() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var version, platform, extension, outPath;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n version = tauriCliManifest.package.version;\r\n platform = process.platform;\r\n if (platform === 'win32') {\r\n platform = 'windows';\r\n }\r\n else if (platform === 'linux') {\r\n platform = 'linux';\r\n }\r\n else if (platform === 'darwin') {\r\n platform = 'macos';\r\n }\r\n else {\r\n throw Error('Unsupported platform');\r\n }\r\n extension = platform === 'windows' ? '.exe' : '';\r\n outPath = path_1.default.join(__dirname, \"../../bin/tauri-cli\" + extension);\r\n console.log('Downloading Rust CLI...');\r\n return [4 /*yield*/, downloadBinaryRelease(\"tauri-cli-v\" + version, \"tauri-cli_\" + platform + extension, outPath)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nexports.downloadCli = downloadCli;\r\nfunction downloadRustup() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var assetName;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n assetName = process.platform === 'win32' ? 'rustup-init.exe' : 'rustup-init.sh';\r\n console.log('Downloading Rustup...');\r\n return [4 /*yield*/, downloadBinaryRelease('rustup', assetName, path_1.default.join(__dirname, \"../../bin/\" + assetName))];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n}\r\nexports.downloadRustup = downloadRustup;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar ms_1 = __importDefault(require(\"ms\"));\r\nvar prevTime;\r\nexports.default = (function (banner, color) {\r\n if (color === void 0) { color = chalk_1.default.green; }\r\n return function (msg) {\r\n var curr = +new Date();\r\n var diff = curr - (prevTime || curr);\r\n prevTime = curr;\r\n if (msg) {\r\n console.log(\r\n // TODO: proper typings for color and banner\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call\r\n \" \" + color(String(banner)) + \" \" + msg + \" \" + chalk_1.default.green(\"+\" + ms_1.default(diff)));\r\n }\r\n else {\r\n console.log();\r\n }\r\n };\r\n});\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.runOnRustCli = void 0;\r\nvar fs_1 = require(\"fs\");\r\nvar path_1 = require(\"path\");\r\nvar spawn_1 = require(\"./spawn\");\r\nvar download_binary_1 = require(\"./download-binary\");\r\nvar currentTauriCliVersion = function () {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\r\n var tauriCliManifest = \r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n require('../../../cli.rs/Cargo.toml');\r\n return tauriCliManifest.package.version;\r\n};\r\nfunction runOnRustCli(command, args) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var targetPath, targetCliPath, resolveCb, rejectCb, pid, promise, onClose, cliPath, localCliPath;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n targetPath = path_1.resolve(__dirname, '../..');\r\n targetCliPath = path_1.join(targetPath, 'bin/tauri-cli' + (process.platform === 'win32' ? '.exe' : ''));\r\n promise = new Promise(function (resolve, reject) {\r\n resolveCb = resolve;\r\n rejectCb = function () { return reject(new Error()); };\r\n });\r\n onClose = function (code, pid) {\r\n if (code === 0) {\r\n resolveCb();\r\n }\r\n else {\r\n rejectCb();\r\n }\r\n };\r\n if (!fs_1.existsSync(targetCliPath)) return [3 /*break*/, 1];\r\n pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose);\r\n return [3 /*break*/, 4];\r\n case 1:\r\n if (!(process.env.NODE_ENV === 'production')) return [3 /*break*/, 3];\r\n return [4 /*yield*/, download_binary_1.downloadCli()];\r\n case 2:\r\n _a.sent();\r\n pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose);\r\n return [3 /*break*/, 4];\r\n case 3:\r\n if (fs_1.existsSync(path_1.resolve(targetPath, '../bundler'))) {\r\n cliPath = path_1.resolve(targetPath, '../cli.rs');\r\n spawn_1.spawnSync('cargo', ['build', '--release'], cliPath);\r\n localCliPath = path_1.resolve(targetPath, '../cli.rs/target/release/cargo-tauri');\r\n pid = spawn_1.spawn(localCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose);\r\n }\r\n else {\r\n spawn_1.spawnSync('cargo', [\r\n 'install',\r\n '--root',\r\n targetPath,\r\n 'tauri-cli',\r\n '--version',\r\n currentTauriCliVersion()\r\n ], process.cwd());\r\n pid = spawn_1.spawn(targetCliPath, __spreadArray(['tauri', command], args), process.cwd(), onClose);\r\n }\r\n _a.label = 4;\r\n case 4: return [2 /*return*/, { pid: pid, promise: promise }];\r\n }\r\n });\r\n });\r\n}\r\nexports.runOnRustCli = runOnRustCli;\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.spawnSync = exports.spawn = void 0;\r\nvar cross_spawn_1 = __importDefault(require(\"cross-spawn\"));\r\nvar logger_1 = __importDefault(require(\"./logger\"));\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar log = logger_1.default('app:spawn');\r\nvar warn = logger_1.default('app:spawn', chalk_1.default.red);\r\n/*\r\n Returns pid, takes onClose\r\n */\r\nvar spawn = function (cmd, params, cwd, onClose) {\r\n var _a;\r\n log(\"Running \\\"\" + cmd + \" \" + params.join(' ') + \"\\\"\");\r\n log();\r\n // TODO: move to execa?\r\n var runner = cross_spawn_1.default(cmd, params, {\r\n stdio: 'inherit',\r\n cwd: cwd,\r\n env: process.env\r\n });\r\n runner.on('close', function (code) {\r\n var _a;\r\n log();\r\n if (code) {\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\r\n log(\"Command \\\"\" + cmd + \"\\\" failed with exit code: \" + code);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\r\n onClose && onClose(code !== null && code !== void 0 ? code : 0, (_a = runner.pid) !== null && _a !== void 0 ? _a : 0);\r\n });\r\n return (_a = runner.pid) !== null && _a !== void 0 ? _a : 0;\r\n};\r\nexports.spawn = spawn;\r\n/*\r\n Returns nothing, takes onFail\r\n */\r\nvar spawnSync = function (cmd, params, cwd, onFail) {\r\n log(\"[sync] Running \\\"\" + cmd + \" \" + params.join(' ') + \"\\\"\");\r\n log();\r\n var runner = cross_spawn_1.default.sync(cmd, params, {\r\n stdio: 'inherit',\r\n cwd: cwd\r\n });\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\r\n if (runner.status || runner.error) {\r\n warn();\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\r\n warn(\"\\u26A0\\uFE0F Command \\\"\" + cmd + \"\\\" failed with exit code: \" + runner.status);\r\n if (runner.status === null) {\r\n warn(\"\\u26A0\\uFE0F Please globally install \\\"\" + cmd + \"\\\"\");\r\n }\r\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\r\n onFail && onFail();\r\n process.exit(1);\r\n }\r\n};\r\nexports.spawnSync = spawnSync;\r\n","module.exports = require(\"chalk\");;","module.exports = require(\"cross-spawn\");;","module.exports = require(\"fs\");;","module.exports = require(\"got\");;","module.exports = require(\"ms\");;","module.exports = require(\"path\");;","module.exports = require(\"stream\");;","module.exports = require(\"util\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/helpers/rust-cli.ts\");\n"],"sourceRoot":""} \ No newline at end of file diff --git a/tooling/cli.js/dist/helpers/spawn.js b/tooling/cli.js/dist/helpers/spawn.js new file mode 100644 index 000000000..ec1c8021e --- /dev/null +++ b/tooling/cli.js/dist/helpers/spawn.js @@ -0,0 +1,194 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["tauri"] = factory(); + else + root["tauri"] = factory(); +})(this, function() { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./src/helpers/logger.ts": +/*!*******************************!*\ + !*** ./src/helpers/logger.ts ***! + \*******************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var ms_1 = __importDefault(__webpack_require__(/*! ms */ "ms")); +var prevTime; +exports.default = (function (banner, color) { + if (color === void 0) { color = chalk_1.default.green; } + return function (msg) { + var curr = +new Date(); + var diff = curr - (prevTime || curr); + prevTime = curr; + if (msg) { + console.log( + // TODO: proper typings for color and banner + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call + " " + color(String(banner)) + " " + msg + " " + chalk_1.default.green("+" + ms_1.default(diff))); + } + else { + console.log(); + } + }; +}); + + +/***/ }), + +/***/ "./src/helpers/spawn.ts": +/*!******************************!*\ + !*** ./src/helpers/spawn.ts ***! + \******************************/ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +// Copyright 2019-2021 Tauri Programme within The Commons Conservancy +// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.spawnSync = exports.spawn = void 0; +var cross_spawn_1 = __importDefault(__webpack_require__(/*! cross-spawn */ "cross-spawn")); +var logger_1 = __importDefault(__webpack_require__(/*! ./logger */ "./src/helpers/logger.ts")); +var chalk_1 = __importDefault(__webpack_require__(/*! chalk */ "chalk")); +var log = logger_1.default('app:spawn'); +var warn = logger_1.default('app:spawn', chalk_1.default.red); +/* + Returns pid, takes onClose + */ +var spawn = function (cmd, params, cwd, onClose) { + var _a; + log("Running \"" + cmd + " " + params.join(' ') + "\""); + log(); + // TODO: move to execa? + var runner = cross_spawn_1.default(cmd, params, { + stdio: 'inherit', + cwd: cwd, + env: process.env + }); + runner.on('close', function (code) { + var _a; + log(); + if (code) { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + log("Command \"" + cmd + "\" failed with exit code: " + code); + } + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain + onClose && onClose(code !== null && code !== void 0 ? code : 0, (_a = runner.pid) !== null && _a !== void 0 ? _a : 0); + }); + return (_a = runner.pid) !== null && _a !== void 0 ? _a : 0; +}; +exports.spawn = spawn; +/* + Returns nothing, takes onFail + */ +var spawnSync = function (cmd, params, cwd, onFail) { + log("[sync] Running \"" + cmd + " " + params.join(' ') + "\""); + log(); + var runner = cross_spawn_1.default.sync(cmd, params, { + stdio: 'inherit', + cwd: cwd + }); + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + if (runner.status || runner.error) { + warn(); + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + warn("\u26A0\uFE0F Command \"" + cmd + "\" failed with exit code: " + runner.status); + if (runner.status === null) { + warn("\u26A0\uFE0F Please globally install \"" + cmd + "\""); + } + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain + onFail && onFail(); + process.exit(1); + } +}; +exports.spawnSync = spawnSync; + + +/***/ }), + +/***/ "chalk": +/*!************************!*\ + !*** external "chalk" ***! + \************************/ +/***/ ((module) => { + +module.exports = require("chalk");; + +/***/ }), + +/***/ "cross-spawn": +/*!******************************!*\ + !*** external "cross-spawn" ***! + \******************************/ +/***/ ((module) => { + +module.exports = require("cross-spawn");; + +/***/ }), + +/***/ "ms": +/*!*********************!*\ + !*** external "ms" ***! + \*********************/ +/***/ ((module) => { + +module.exports = require("ms");; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__("./src/helpers/spawn.ts"); +/******/ +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=spawn.js.map \ No newline at end of file diff --git a/tooling/cli.js/dist/helpers/spawn.js.map b/tooling/cli.js/dist/helpers/spawn.js.map new file mode 100644 index 000000000..8c8f9e5c9 --- /dev/null +++ b/tooling/cli.js/dist/helpers/spawn.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://tauri/webpack/universalModuleDefinition","webpack://tauri/./src/helpers/logger.ts","webpack://tauri/./src/helpers/spawn.ts","webpack://tauri/external \"chalk\"","webpack://tauri/external \"cross-spawn\"","webpack://tauri/external \"ms\"","webpack://tauri/webpack/bootstrap","webpack://tauri/webpack/startup"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;ACVa;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C,2BAA2B,mBAAO,CAAC,cAAI;AACvC;AACA,eAAe;AACf,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;AC3BY;AACb;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,GAAG,aAAa;AACjC,oCAAoC,mBAAO,CAAC,gCAAa;AACzD,+BAA+B,mBAAO,CAAC,yCAAU;AACjD,8BAA8B,mBAAO,CAAC,oBAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;;;;;;;;;;AC/DjB,mC;;;;;;;;;;ACAA,yC;;;;;;;;;;ACAA,gC;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UCtBA;UACA;UACA;UACA","file":"helpers/spawn.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tauri\"] = factory();\n\telse\n\t\troot[\"tauri\"] = factory();\n})(this, function() {\nreturn ","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar ms_1 = __importDefault(require(\"ms\"));\r\nvar prevTime;\r\nexports.default = (function (banner, color) {\r\n if (color === void 0) { color = chalk_1.default.green; }\r\n return function (msg) {\r\n var curr = +new Date();\r\n var diff = curr - (prevTime || curr);\r\n prevTime = curr;\r\n if (msg) {\r\n console.log(\r\n // TODO: proper typings for color and banner\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-call\r\n \" \" + color(String(banner)) + \" \" + msg + \" \" + chalk_1.default.green(\"+\" + ms_1.default(diff)));\r\n }\r\n else {\r\n console.log();\r\n }\r\n };\r\n});\r\n","\"use strict\";\r\n// Copyright 2019-2021 Tauri Programme within The Commons Conservancy\r\n// SPDX-License-Identifier: Apache-2.0\r\n// SPDX-License-Identifier: MIT\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.spawnSync = exports.spawn = void 0;\r\nvar cross_spawn_1 = __importDefault(require(\"cross-spawn\"));\r\nvar logger_1 = __importDefault(require(\"./logger\"));\r\nvar chalk_1 = __importDefault(require(\"chalk\"));\r\nvar log = logger_1.default('app:spawn');\r\nvar warn = logger_1.default('app:spawn', chalk_1.default.red);\r\n/*\r\n Returns pid, takes onClose\r\n */\r\nvar spawn = function (cmd, params, cwd, onClose) {\r\n var _a;\r\n log(\"Running \\\"\" + cmd + \" \" + params.join(' ') + \"\\\"\");\r\n log();\r\n // TODO: move to execa?\r\n var runner = cross_spawn_1.default(cmd, params, {\r\n stdio: 'inherit',\r\n cwd: cwd,\r\n env: process.env\r\n });\r\n runner.on('close', function (code) {\r\n var _a;\r\n log();\r\n if (code) {\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\r\n log(\"Command \\\"\" + cmd + \"\\\" failed with exit code: \" + code);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\r\n onClose && onClose(code !== null && code !== void 0 ? code : 0, (_a = runner.pid) !== null && _a !== void 0 ? _a : 0);\r\n });\r\n return (_a = runner.pid) !== null && _a !== void 0 ? _a : 0;\r\n};\r\nexports.spawn = spawn;\r\n/*\r\n Returns nothing, takes onFail\r\n */\r\nvar spawnSync = function (cmd, params, cwd, onFail) {\r\n log(\"[sync] Running \\\"\" + cmd + \" \" + params.join(' ') + \"\\\"\");\r\n log();\r\n var runner = cross_spawn_1.default.sync(cmd, params, {\r\n stdio: 'inherit',\r\n cwd: cwd\r\n });\r\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\r\n if (runner.status || runner.error) {\r\n warn();\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\r\n warn(\"\\u26A0\\uFE0F Command \\\"\" + cmd + \"\\\" failed with exit code: \" + runner.status);\r\n if (runner.status === null) {\r\n warn(\"\\u26A0\\uFE0F Please globally install \\\"\" + cmd + \"\\\"\");\r\n }\r\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\r\n onFail && onFail();\r\n process.exit(1);\r\n }\r\n};\r\nexports.spawnSync = spawnSync;\r\n","module.exports = require(\"chalk\");;","module.exports = require(\"cross-spawn\");;","module.exports = require(\"ms\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/helpers/spawn.ts\");\n"],"sourceRoot":""} \ No newline at end of file diff --git a/tooling/create-tauri-app/.eslintrc.js b/tooling/create-tauri-app/.eslintrc.js deleted file mode 100644 index 3e72aec2f..000000000 --- a/tooling/create-tauri-app/.eslintrc.js +++ /dev/null @@ -1,55 +0,0 @@ -module.exports = { - root: true, - - env: { - node: true, - jest: true - }, - - parser: '@typescript-eslint/parser', - ignorePatterns: ['.eslintrc.js', '*.config.js', 'test', 'bin'], - extends: [ - 'standard-with-typescript', - 'plugin:@typescript-eslint/recommended-requiring-type-checking', - 'plugin:lodash-template/recommended', - // TODO: make this work with typescript - // 'plugin:node/recommended' - 'prettier' - ], - - plugins: ['@typescript-eslint', 'node', 'security'], - - parserOptions: { - tsconfigRootDir: __dirname, - project: './tsconfig.json' - }, - - globals: { - __statics: true, - process: true - }, - - // add your custom rules here - rules: { - // allow console.log during development only - 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', - // allow debugger during development only - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', - 'no-process-exit': 'off', - 'security/detect-non-literal-fs-filename': 'warn', - 'security/detect-unsafe-regex': 'error', - 'security/detect-buffer-noassert': 'error', - 'security/detect-child-process': 'warn', - 'security/detect-disable-mustache-escape': 'error', - 'security/detect-eval-with-expression': 'error', - 'security/detect-no-csrf-before-method-override': 'error', - 'security/detect-non-literal-regexp': 'error', - 'security/detect-non-literal-require': 'warn', - 'security/detect-object-injection': 'warn', - 'security/detect-possible-timing-attacks': 'error', - 'security/detect-pseudoRandomBytes': 'error', - 'space-before-function-paren': 'off', - '@typescript-eslint/default-param-last': 'off', - '@typescript-eslint/strict-boolean-expressions': 0 - } -} diff --git a/tooling/create-tauri-app/.gitignore b/tooling/create-tauri-app/.gitignore deleted file mode 100644 index 6bf9e033f..000000000 --- a/tooling/create-tauri-app/.gitignore +++ /dev/null @@ -1,64 +0,0 @@ -# Build output -/dist - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Typescript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env - -/.vs -.DS_Store -.Thumbs.db -*.sublime* -.idea/ -debug.log -package-lock.json -.vscode/settings.json diff --git a/tooling/create-tauri-app/.prettierrc.js b/tooling/create-tauri-app/.prettierrc.js deleted file mode 100644 index 2be2f9327..000000000 --- a/tooling/create-tauri-app/.prettierrc.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - singleQuote: true, - semi: false, - trailingComma: 'none' -} diff --git a/tooling/create-tauri-app/CHANGELOG.md b/tooling/create-tauri-app/CHANGELOG.md deleted file mode 100644 index db5854b84..000000000 --- a/tooling/create-tauri-app/CHANGELOG.md +++ /dev/null @@ -1,101 +0,0 @@ -# Changelog - -## \[1.0.0-rc.2] - -- Fix crash when using `create-react-app` recipe. - - [c0103604](https://www.github.com/tauri-apps/tauri/commit/c01036043dcec52ba360fc38268b8b4ae4c470a1) fix(cta): fix cli install with other deps, fixes [#3417](https://www.github.com/tauri-apps/tauri/pull/3417) ([#3420](https://www.github.com/tauri-apps/tauri/pull/3420)) on 2022-02-12 - -## \[1.0.0-rc.1] - -- Fix `create-tauri-app` failing to bootstrap projects. - - [536c0cd7](https://www.github.com/tauri-apps/tauri/commit/536c0cd7d40b838765016e1554901dea8720d9af) fix(cta): filter out empty args, fixes [#3393](https://www.github.com/tauri-apps/tauri/pull/3393) ([#3396](https://www.github.com/tauri-apps/tauri/pull/3396)) on 2022-02-11 - -## \[1.0.0-rc.0] - -- Add empty description to Cargo.toml in dominator recipe. - - [97edb3ac](https://www.github.com/tauri-apps/tauri/commit/97edb3ac49d59c5c95ad8486c17b3c333f4f86a2) Fix: [#2508](https://www.github.com/tauri-apps/tauri/pull/2508). Update dominator recipe description. ([#2514](https://www.github.com/tauri-apps/tauri/pull/2514)) on 2021-08-24 -- `create-tauri-app` should now be fully compatiable with CI environments. - - [f5e77ff4](https://www.github.com/tauri-apps/tauri/commit/f5e77ff48f00e14476f95cce257d091377ba987c) refactor(cta): use `commander` instead of `minimst` ([#2551](https://www.github.com/tauri-apps/tauri/pull/2551)) on 2022-01-01 -- Stop react recipe from opening in browser by default. - - [ea51504e](https://www.github.com/tauri-apps/tauri/commit/ea51504e3a57eedc28e40573fbcc899b8a5c358c) fix(cta): stop react recipe from opening in browser, closes [#2793](https://www.github.com/tauri-apps/tauri/pull/2793) ([#2988](https://www.github.com/tauri-apps/tauri/pull/2988)) on 2021-11-30 -- Add SolidJS recipe using the official template. - - [71ea86a4](https://www.github.com/tauri-apps/tauri/commit/71ea86a443f2585fa98edd79f2361bd85b380f0c) feat(cta): add SolidJS recipe ([#2619](https://www.github.com/tauri-apps/tauri/pull/2619)) on 2021-09-22 - -## \[1.0.0-beta.4] - -- [`pnpm`](https://pnpm.io) package manager is now officially supported, either run `pnpx create-tauri-app` or explicitly specifiy it `npx create-tauri-app --manager pnpm`. - - [235e0f67](https://www.github.com/tauri-apps/tauri/commit/235e0f6785b87dc83cc6ebb6f5b022a82fa18eec) feat(CTA): add official support for `pnpm` package manager ([#2348](https://www.github.com/tauri-apps/tauri/pull/2348)) on 2021-08-06 -- `create-tauri-app` will prompt users to install `@tauri-apps/api` npm package. - - [c0f42ad0](https://www.github.com/tauri-apps/tauri/commit/c0f42ad0e3d30623b83cfcd692eb1bcb4c4391a2) feat(cta): prompt users to install `@tauri-apps/api` package ([#2251](https://www.github.com/tauri-apps/tauri/pull/2251)) on 2021-07-29 -- Add Svelte recipe using the official template. - - [151c3157](https://www.github.com/tauri-apps/tauri/commit/151c3157bef28c267592ebdf717e4ff66a5b27e1) Add svelte recipe to create-tauri-app ([#2276](https://www.github.com/tauri-apps/tauri/pull/2276)) ([#2279](https://www.github.com/tauri-apps/tauri/pull/2279)) on 2021-07-22 -- Adjust check for `dev` mode and switch CTA test to a script runner. The script gives us more control and better output into any failures. - - [c410e034](https://www.github.com/tauri-apps/tauri/commit/c410e034f74d0624c8465b1f30bb7af58eb98b34) convert jest tests to child_process run script ([#2308](https://www.github.com/tauri-apps/tauri/pull/2308)) on 2021-08-08 -- Update vite recipe to use the new vite npm [package](https://github.com/vitejs/vite/tree/main/packages/create-vite). - - [718d9513](https://www.github.com/tauri-apps/tauri/commit/718d9513ce8013594a21c7fedb2dcb3dcd7bbad8) refactor(cta): update `vite` recipe to use their new npm package ([#2220](https://www.github.com/tauri-apps/tauri/pull/2220)) on 2021-07-29 - -## \[1.0.0-beta.3] - -- Added Angular CLI recipe. - - [489fad55](https://www.github.com/tauri-apps/tauri/commit/489fad55242b3489c7c551fdfdd031ebad2d9b9c) Angular create tauri app \[[#1934](https://www.github.com/tauri-apps/tauri/pull/1934)] ([#2203](https://www.github.com/tauri-apps/tauri/pull/2203)) on 2021-07-14 - -## \[1.0.0-beta.2] - -- Fixes the `beforeDevCommand` on vite recipe. - - [3c21ddc7](https://www.github.com/tauri-apps/tauri/commit/3c21ddc73cd7ab8141b730ceade46fc2dfadd996) fix(cta): use correct `beforeDevCommand` for vite recipe ([#1931](https://www.github.com/tauri-apps/tauri/pull/1931)) on 2021-06-01 - -## \[1.0.0-beta.1] - -- Work around bugs between esbuild and npm by installing directly at the end of the sequence. Also default to using the latest on all of the installs instead of npx's cache. - - [8a164d0](https://www.github.com/tauri-apps/tauri/commit/8a164d0a1f8eb69bdcec7ae4362d26b2f3c7ff55) fix: CTA cache and vite build ([#1806](https://www.github.com/tauri-apps/tauri/pull/1806)) on 2021-05-12 - -## \[1.0.0-beta.0] - -- Explicitly install deps after a vite recipe. - - [397b7af](https://www.github.com/tauri-apps/tauri/commit/397b7af395a213bf826aa52398467b7b3352b666) chore: CTA defaults in CI mode ([#1671](https://www.github.com/tauri-apps/tauri/pull/1671)) on 2021-05-05 -- Shift everything out of the `bin` and into `.ts` so we can apply Typescript types. - - [c3acbd6](https://www.github.com/tauri-apps/tauri/commit/c3acbd68ec169188c782cbaf7d100d80b3a4f39a) chore: shift CTA from bin to .ts ([#1651](https://www.github.com/tauri-apps/tauri/pull/1651)) on 2021-04-29 -- We setup an e2e type test suite for CTA. It is mostly an internal change, but should help with stability moving forward. - - [af6411d](https://www.github.com/tauri-apps/tauri/commit/af6411d5f8c9fd1c3d9b4f3c2d79e8f1bd0efbf2) feat: setup testing for CTA ([#1615](https://www.github.com/tauri-apps/tauri/pull/1615)) on 2021-04-27 -- Add support for all vite templates - - [cea3ba9](https://www.github.com/tauri-apps/tauri/commit/cea3ba9f97de9d0181a84ad085a852517bd33a65) feat(cta): add support for all vite templates ([#1670](https://www.github.com/tauri-apps/tauri/pull/1670)) on 2021-05-07 -- Add a welcome prompt to let the user know about the process and links to more info including prerequisite setup steps. Also add links to each of the templates to give the user more context what they are getting into. - - [ea28d01](https://www.github.com/tauri-apps/tauri/commit/ea28d0169168953e11416231e50b08061413a27e) create-tauri-app welcome prompt and recipes links ([#1748](https://www.github.com/tauri-apps/tauri/pull/1748)) on 2021-05-09 - -## \[1.0.0-beta-rc.4] - -- Manually set `tauri` script instead of using `npm set-script` for compatabilty with older npm versions - - [f708ff8](https://www.github.com/tauri-apps/tauri/commit/f708ff824e7933341536aecb49f6ee35eea621da) fix(CTA): [#1569](https://www.github.com/tauri-apps/tauri/pull/1569), manually set tauri script for compatability with older npm ([#1572](https://www.github.com/tauri-apps/tauri/pull/1572)) on 2021-04-22 - -## \[1.0.0-beta-rc.3] - -- Remove `lodash` dependency and replace with es6 builtins - - [edab7a6](https://www.github.com/tauri-apps/tauri/commit/edab7a66864d21b51694bf8771d21627b526c2b9) chore(deps): remove lodash from create-tauri-app ([#1532](https://www.github.com/tauri-apps/tauri/pull/1532)) on 2021-04-18 -- Remove `tauri` dependency from vanilla recipe - - [3998046](https://www.github.com/tauri-apps/tauri/commit/399804648924139c6240351a76812a3071b51f65) fix(cta): remove `tauri` dep from vanilla recipe ([#1502](https://www.github.com/tauri-apps/tauri/pull/1502)) on 2021-04-15 -- Fix adding `tauri` script to package.json - - [6c00e88](https://www.github.com/tauri-apps/tauri/commit/6c00e88e0ffa10eb7eecc312d66c5dde7dc03d0b) fix(cta): fix adding `tauri` script to package.json ([#1501](https://www.github.com/tauri-apps/tauri/pull/1501)) on 2021-04-15 - - [345f2db](https://www.github.com/tauri-apps/tauri/commit/345f2dbfc545427750c08351d1b98e966b2436c0) Apply Version Updates From Current Changes ([#1499](https://www.github.com/tauri-apps/tauri/pull/1499)) on 2021-04-14 - - [098b729](https://www.github.com/tauri-apps/tauri/commit/098b729e677dc5dc322f22a6cbd5a652a8dfa1b0) chore: CTA version was decremented, fix and adjust changelog to compensate ([#1530](https://www.github.com/tauri-apps/tauri/pull/1530)) on 2021-04-18 - -## \[1.0.0-beta-rc.2] - -- CTA also needs the template directory published as it doesn't get bundled into the `dist` directory. - - [7b6108e](https://www.github.com/tauri-apps/tauri/commit/7b6108e37be652a1efa4018fc1908aa0a2cdacd6) fix: cta templates dir missing ([#1496](https://www.github.com/tauri-apps/tauri/pull/1496)) on 2021-04-14 - -## \[1.0.0-beta-rc.1] - -- CTA was missing the `files` property in the package.json which mean that the `dist` directory was not published and used. - - [414f9a7](https://www.github.com/tauri-apps/tauri/commit/414f9a78c9b636933fd741d1b6fe7f097f496fc9) fix: cta dist publish ([#1493](https://www.github.com/tauri-apps/tauri/pull/1493)) on 2021-04-14 - -## \[1.0.0-beta-rc.0] - -- Add vanilla javascript option to `create-tauri-app` through templating. - - [c580338](https://www.github.com/tauri-apps/tauri/commit/c580338f07b71551f7fd2712e13ad0acef100095) feat(cli): add create-tauri-app ([#1106](https://www.github.com/tauri-apps/tauri/pull/1106)) on 2021-03-07 -- Use a test based on an npm env var to determine which package manager to use. - - [6e0598c](https://www.github.com/tauri-apps/tauri/commit/6e0598c807ce02a3964788c06ec1025abc1fb250) feat: derive package manager from env var on 2021-04-12 -- Add initial `vite` support starting with `vue` and `vue-ts` - - [80b7bd7](https://www.github.com/tauri-apps/tauri/commit/80b7bd7de86f59e0cafaa0efdc6e82a0db7d7ba2) feat(CTA): add initial vite support with `vue` and `vue-ts` ([#1467](https://www.github.com/tauri-apps/tauri/pull/1467)) on 2021-04-13 -- Revert `tauri create` deletion and shift remaining pieces that weren't deleted to `create-tauri-app`. - - [4ec20a4](https://www.github.com/tauri-apps/tauri/commit/4ec20a4a28823614186365c5a90512d77170cff2) feat: shift tauri create \[not wired up] ([#1330](https://www.github.com/tauri-apps/tauri/pull/1330)) on 2021-03-07 - - [aea6145](https://www.github.com/tauri-apps/tauri/commit/aea614587bddab930d552512b54e18624fbf573e) refactor(repo): add /tooling folder ([#1457](https://www.github.com/tauri-apps/tauri/pull/1457)) on 2021-04-12 diff --git a/tooling/create-tauri-app/bin/create-tauri-app.js b/tooling/create-tauri-app/bin/create-tauri-app.js deleted file mode 100755 index e9b6cf624..000000000 --- a/tooling/create-tauri-app/bin/create-tauri-app.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -const { createTauriApp } = require('../dist/') - -createTauriApp(process.argv.slice(2)).catch((err) => { - console.error(err) -}) diff --git a/tooling/create-tauri-app/jest.config.js b/tooling/create-tauri-app/jest.config.js deleted file mode 100644 index c435bfffc..000000000 --- a/tooling/create-tauri-app/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - modulePathIgnorePatterns: ['__fixtures__'], - globals: { - 'ts-jest': { - tsconfig: 'tsconfig.json' - } - } -} diff --git a/tooling/create-tauri-app/package.json b/tooling/create-tauri-app/package.json deleted file mode 100644 index 30631a224..000000000 --- a/tooling/create-tauri-app/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "create-tauri-app", - "version": "1.0.0-rc.2", - "description": "Jump right into a Tauri App!", - "bin": { - "create-tauri-app": "./bin/create-tauri-app.js" - }, - "repository": "git+https://github.com/tauri-apps/tauri.git", - "license": "MIT OR Apache-2.0", - "bugs": { - "url": "https://github.com/tauri-apps/tauri/issues" - }, - "homepage": "https://github.com/tauri-apps/tauri#readme", - "contributors": [ - "Tauri Programme within The Commons Conservancy" - ], - "main": "bin/create-tauri-app.js", - "files": [ - "bin", - "dist", - "src/templates" - ], - "scripts": { - "create-tauri-app": "create-tauri-app", - "build": "rollup --config", - "prepublishOnly": "yarn build", - "lint": "eslint --ext ts \"./src/**/*.ts\"", - "lint-fix": "eslint --fix --ext ts \"./src/**/*.ts\"", - "lint:lockfile": "lockfile-lint --path yarn.lock --type yarn --validate-https --allowed-hosts npm yarn", - "format": "prettier --write --end-of-line=auto \"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore", - "format:check": "prettier --check --end-of-line=auto \"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore", - "test": "node ./test/spawn.test.mjs" - }, - "dependencies": { - "chalk": "4.1.2", - "commander": "8.3.0", - "execa": "5.1.1", - "inquirer": "8.2.0", - "scaffe": "1.2.0" - }, - "devDependencies": { - "@effection/process": "2.0.4", - "@rollup/plugin-commonjs": "21.0.1", - "@rollup/plugin-node-resolve": "13.1.3", - "@rollup/plugin-typescript": "8.3.0", - "@types/cross-spawn": "6.0.2", - "@types/inquirer": "8.2.0", - "@types/semver": "7.3.9", - "@typescript-eslint/eslint-plugin": "5.12.0", - "@typescript-eslint/parser": "5.12.0", - "effection": "2.0.4", - "eslint": "8.9.0", - "eslint-config-prettier": "8.3.0", - "eslint-config-standard-with-typescript": "21.0.1", - "eslint-plugin-import": "2.25.4", - "eslint-plugin-lodash-template": "0.19.0", - "eslint-plugin-node": "11.1.0", - "eslint-plugin-promise": "5.2.0", - "eslint-plugin-security": "1.4.0", - "prettier": "2.5.1", - "rollup": "2.67.2", - "temp-dir": "2.0.0", - "tslib": "2.3.1", - "typescript": "4.5.5" - } -} diff --git a/tooling/create-tauri-app/readme.md b/tooling/create-tauri-app/readme.md deleted file mode 100644 index ebcd4a51f..000000000 --- a/tooling/create-tauri-app/readme.md +++ /dev/null @@ -1,57 +0,0 @@ -# create-tauri-app - - - -[![status](https://img.shields.io/badge/Status-Beta-green.svg)](https://github.com/tauri-apps/tauri) -[![Chat Server](https://img.shields.io/badge/chat-on%20discord-7289da.svg)](https://discord.gg/SpmNs4S) -[![devto](https://img.shields.io/badge/blog-dev.to-black.svg)](https://dev.to/tauri) - -![](https://img.shields.io/github/workflow/status/tauri-apps/tauri/test%20library?label=test%20library -) -[![devto](https://img.shields.io/badge/documentation-site-purple.svg)](https://tauri.studio) - -[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation) -[![support](https://img.shields.io/badge/sponsor-Opencollective-blue.svg)](https://opencollective.com/tauri) - -| Component | Version | -| --------- | ------------------------------------------- | -| create-tauri-app | ![](https://img.shields.io/npm/v/create-tauri-app.svg) | - -## About Tauri -Tauri is a polyglot and generic system that is very composable and allows engineers to make a wide variety of applications. It is used for building applications for Desktop Computers using a combination of Rust tools and HTML rendered in a Webview. Apps built with Tauri can ship with any number of pieces of an optional JS API / Rust API so that webviews can control the system via message passing. In fact, developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily. - -Tauri apps can have custom menus and have tray-type interfaces. They can be updated, and are managed by the user's operating system as expected. They are very small, because they use the system's webview. They do not ship a runtime, since the final binary is compiled from rust. This makes the reversing of Tauri apps not a trivial task. - -## This module -This is a toolkit that will enable engineering teams to rapidly scaffold out a new tauri-apps project using the frontend framework of their choice (as long as it has been configured). - -To learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document. - -## Usage -Run and answer the prompts to get started with your first Tauri app! - -With npx: - -```shell -npx create-tauri-app -``` - -With npm: -```shell -npm x create-tauri-app -``` - -With yarn: -```shell -yarn create tauri-app -``` - -## Semver -**tauri** is following [Semantic Versioning 2.0](https://semver.org/). -## Licenses -Code: (c) 2021 - The Tauri Programme within The Commons Conservancy. - -MIT or MIT/Apache 2.0 where applicable. - -Logo: CC-BY-NC-ND -- Original Tauri Logo Designs by [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum) diff --git a/tooling/create-tauri-app/rollup.config.js b/tooling/create-tauri-app/rollup.config.js deleted file mode 100644 index 6ec249be3..000000000 --- a/tooling/create-tauri-app/rollup.config.js +++ /dev/null @@ -1,28 +0,0 @@ -import typescript from '@rollup/plugin-typescript' -import commonjs from '@rollup/plugin-commonjs' -import pkg from './package.json' - -export default { - treeshake: true, - perf: true, - input: 'src/index.ts', - output: { - dir: 'dist', - format: 'cjs', - entryFileNames: '[name].js', - exports: 'named' - }, - plugins: [typescript(), commonjs({ extensions: ['.js'] })], - external: [ - 'fs', - 'path', - 'os', - ...Object.keys(pkg.dependencies || {}), - ...Object.keys(pkg.peerDependencies || {}) - ], - watch: { - chokidar: true, - include: 'src/**', - exclude: 'node_modules/**' - } -} diff --git a/tooling/create-tauri-app/src/dependency-manager.ts b/tooling/create-tauri-app/src/dependency-manager.ts deleted file mode 100644 index d0e3fbd66..000000000 --- a/tooling/create-tauri-app/src/dependency-manager.ts +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { ManagementType, Result } from './types/deps' -import { shell } from './shell' - -export type PackageManager = 'npm' | 'yarn' | 'pnpm' - -export async function install({ - appDir, - dependencies, - devDependencies, - packageManager -}: { - appDir: string - dependencies: string[] - devDependencies: string[] - packageManager: PackageManager -}): Promise { - const result: Result = new Map() - await installNpmDevPackage(devDependencies, packageManager, appDir) - result.set(ManagementType.Install, devDependencies) - - await installNpmPackage(dependencies, packageManager, appDir) - result.set(ManagementType.Install, dependencies) - - return result -} - -export async function checkPackageManager({ - cwd, - packageManager -}: { - cwd: string - packageManager: PackageManager -}): Promise { - try { - await shell(packageManager, ['--version'], { stdio: 'pipe', cwd }) - return true - } catch (error) { - throw new Error( - `Must have ${packageManager} installed to manage dependencies. Is either in your PATH? We tried running in ${cwd}` - ) - } -} - -async function installNpmPackage( - packageNames: string[], - packageManager: PackageManager, - appDir: string -): Promise { - const packages = packageNames.filter((p) => p !== '') - if (packages.length !== 0) { - console.log(`- Installing ${packages.join(', ')}...`) - switch (packageManager) { - case 'pnpm': - case 'yarn': - await shell(packageManager, ['add', packageNames.join(' ')], { - cwd: appDir - }) - break - case 'npm': - await shell('npm', ['install', packageNames.join(' ')], { - cwd: appDir - }) - break - } - } -} - -async function installNpmDevPackage( - packageNames: string[], - packageManager: PackageManager, - appDir: string -): Promise { - const packages = packageNames.filter((p) => p !== '') - if (packages.length !== 0) { - console.log(`- Installing ${packages.join(', ')}...`) - - switch (packageManager) { - case 'pnpm': - case 'yarn': - await shell( - packageManager, - ['add', '-D', '--ignore-scripts', ...packages], - { - cwd: appDir - } - ) - break - case 'npm': - await shell( - 'npm', - ['install', '--save-dev', '--ignore-scripts', ...packages], - { - cwd: appDir - } - ) - break - } - } -} diff --git a/tooling/create-tauri-app/src/helpers/empty-dir.ts b/tooling/create-tauri-app/src/helpers/empty-dir.ts deleted file mode 100644 index 459bf390f..000000000 --- a/tooling/create-tauri-app/src/helpers/empty-dir.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { existsSync, readdirSync, lstatSync, rmdirSync, unlinkSync } from 'fs' -import { resolve } from 'path' - -export function emptyDir(dir: string): void { - if (!existsSync(dir)) return - - for (const file of readdirSync(dir)) { - const abs = resolve(dir, file) - // baseline is Node 12 so can't use rmSync :( - if (lstatSync(abs).isDirectory()) { - emptyDir(abs) - rmdirSync(abs) - } else { - unlinkSync(abs) - } - } -} diff --git a/tooling/create-tauri-app/src/helpers/package-manager.ts b/tooling/create-tauri-app/src/helpers/package-manager.ts deleted file mode 100644 index dd931dcae..000000000 --- a/tooling/create-tauri-app/src/helpers/package-manager.ts +++ /dev/null @@ -1,14 +0,0 @@ -export function pkgManagerFromUserAgent(userAgent: string | undefined): - | { - name: string - version: string - } - | undefined { - if (!userAgent) return undefined - const pkgSpec = userAgent.split(' ')[0] - const pkgSpecArr = pkgSpec.split('/') - return { - name: pkgSpecArr[0], - version: pkgSpecArr[1] - } -} diff --git a/tooling/create-tauri-app/src/helpers/update-package-json.ts b/tooling/create-tauri-app/src/helpers/update-package-json.ts deleted file mode 100644 index 25311805a..000000000 --- a/tooling/create-tauri-app/src/helpers/update-package-json.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { readFileSync, writeFileSync } from 'fs' -import { join } from 'path' - -interface PackageJSON { - name?: string - scripts?: Record -} - -export function updatePackageJson( - f: (pkg: PackageJSON) => PackageJSON, - cwd: string = process.cwd() -): void { - const pkgPath = join(cwd, 'package.json') - const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as PackageJSON - const output = f(pkg) - writeFileSync(pkgPath, JSON.stringify(output, undefined, 2)) -} diff --git a/tooling/create-tauri-app/src/helpers/update-tauri-conf.ts b/tooling/create-tauri-app/src/helpers/update-tauri-conf.ts deleted file mode 100644 index 8fcdb235f..000000000 --- a/tooling/create-tauri-app/src/helpers/update-tauri-conf.ts +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { readFileSync, writeFileSync } from 'fs' -import { join } from 'path' - -interface TauriConfJSON { - build?: { - beforeDevCommand?: string - beforeBuildCommand?: string - distDir?: string - devPath?: string - withGlobalTauri?: boolean - } -} - -export function updateTauriConf( - f: (tauriConf: TauriConfJSON) => TauriConfJSON, - cwd: string = process.cwd() -): void { - const tauriConfPath = join(cwd, 'src-tauri', 'tauri.conf.json') - const tauriConf = JSON.parse( - readFileSync(tauriConfPath, 'utf8') - ) as TauriConfJSON - const output = f(tauriConf) - writeFileSync(tauriConfPath, JSON.stringify(output, undefined, 2)) -} diff --git a/tooling/create-tauri-app/src/index.ts b/tooling/create-tauri-app/src/index.ts deleted file mode 100644 index 7b6d5744d..000000000 --- a/tooling/create-tauri-app/src/index.ts +++ /dev/null @@ -1,404 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import inquirer from 'inquirer' -import { program, createOption } from 'commander' -import { bold, cyan, green, reset, yellow } from 'chalk' -import { platform } from 'os' -import { resolve, join, relative } from 'path' -import { cra } from './recipes/react' -import { vuecli } from './recipes/vue-cli' -import { vanillajs } from './recipes/vanilla' -import { vite } from './recipes/vite' -import { dominator } from './recipes/dominator' -import { ngcli } from './recipes/ng-cli' -import { svelte } from './recipes/svelte' -import { solid } from './recipes/solid' -import { cljs } from './recipes/cljs' -import { - install, - checkPackageManager, - PackageManager -} from './dependency-manager' -import { shell } from './shell' -import { updatePackageJson } from './helpers/update-package-json' -import { Recipe } from './types/recipe' -import { updateTauriConf } from './helpers/update-tauri-conf' -import { pkgManagerFromUserAgent } from './helpers/package-manager' - -const allRecipes: Recipe[] = [ - vanillajs, - cra, - vite, - vuecli, - ngcli, - svelte, - solid, - dominator, - cljs -] -const recipeShortNames = allRecipes.map((r) => r.shortName) -const recipeDescriptiveNames = allRecipes.map((r) => r.descriptiveName) -const recipeByShortName = (name: string): Recipe | undefined => - allRecipes.find((r) => r.shortName === name) -const recipeByDescriptiveName = (name: string): Recipe | undefined => - allRecipes.find((r) => r.descriptiveName.value === name) - -interface Argv { - help: boolean - version: string - ci: boolean - dev: boolean - binary: string - force: string - log: boolean - manager: string - directory: string - appName: string - windowTitle: string - distDir: string - devPath: string - recipe: string -} - -export const createTauriApp = async (cliArgs: string[]): Promise => { - program - .description( - 'Bootstrap a new tauri app from a "recipe" or a pre-built template.' - ) - .addOption( - createOption( - '-r, --recipe ', - 'Specify UI framework recipe' - ).choices(recipeShortNames) - ) - .option(' --ci', 'Skip prompts') - .option(' --dev', 'Use local development packages') - .addOption( - createOption('-f, --force [option]', 'Force init to overwrite') - .choices(['conf', 'template', 'all']) - .default('all') - ) - .option('-d, --directory ', 'Set target directory for init') - .option('-A, --app-name ', 'Name of your Tauri application') - .option( - '-W, --window-title ', - 'Title of your Tauri application window' - ) - .option( - '-D, --dist-dir <path>', - 'Web assets location, relative to "<project-dir>/src-tauri/tauri.conf.json"' - ) - .option('-p, --dev-path <path>', 'Url of your dev server') - .addOption( - createOption( - '-m, --manager <package-manager>', - 'Set package manager to use' - ).choices(['npm', 'yarn', 'pnpm']) - ) - .addOption( - createOption('-b, --binary <path>', 'Use a prebuilt Tauri CLI binary') - ) - .option('-l, --log', 'Add log messages') - .version( - // eslint-disable-next-line - require('../package.json').version, - '-v, --version', - 'Displays create-tauri-app version' - ) - .helpOption('-h, --help', 'Displays this message') - .showHelpAfterError('For more information try --help') - .configureHelp({ - optionTerm: (option) => cyan(option.flags), - commandUsage: (command) => cyan(command.name()) + ' [options]', - commandDescription: (command) => yellow(command.description()) - }) - .parse(process.argv) - - const argv = program.opts() - return await runInit(argv as Argv) -} - -interface Responses { - appName: string - tauri: { window: { title: string } } - recipeName: string - installApi: boolean -} - -const keypress = async (skip: boolean): Promise<void> => { - if (skip) return - process.stdin.setRawMode(true) - return await new Promise((resolve, reject) => { - console.log('Press any key to continue...') - process.stdin.once('data', (data) => { - const byteArray = [...data] - if (byteArray.length > 0 && byteArray[0] === 3) { - console.log('^C') - process.exit(1) - } - process.stdin.setRawMode(false) - resolve() - }) - }) -} - -const runInit = async (argv: Argv): Promise<void> => { - const setupLink = - platform() === 'win32' - ? 'https://tauri.studio/en/docs/get-started/setup-windows/' - : platform() === 'darwin' - ? 'https://tauri.studio/en/docs/get-started/setup-macos/' - : 'https://tauri.studio/en/docs/get-started/setup-linux/' - - // prettier-ignore - console.log( - ` -We hope to help you create something special with ${bold(yellow('Tauri'))}! -You will have a choice of one of the UI frameworks supported by the greater web tech community. -This tool should get you quickly started. See our docs at ${cyan('https://tauri.studio/')} - -If you haven't already, please take a moment to setup your system. -You may find the requirements here: ${cyan(setupLink)} - ` - ) - - await keypress(argv.ci) - - const defaults = { - appName: 'tauri-app', - tauri: { window: { title: 'Tauri App' } }, - recipeName: 'Vanilla.js', - installApi: true - } - - // prompt initial questions - const answers = (await inquirer - .prompt([ - { - type: 'input', - name: 'appName', - message: 'What is your app name?', - default: defaults.appName, - when: !argv.ci && !argv.appName - }, - { - type: 'input', - name: 'tauri.window.title', - message: 'What should the window title be?', - default: defaults.tauri.window.title, - when: !argv.ci && !argv.windowTitle - }, - { - type: 'list', - name: 'recipeName', - message: 'What UI recipe would you like to add?', - choices: recipeDescriptiveNames, - default: defaults.recipeName, - when: !argv.ci && !argv.recipe - }, - { - type: 'confirm', - name: 'installApi', - message: 'Add "@tauri-apps/api" npm package?', - default: true, - when: !argv.ci - } - ]) - .catch((error: { isTtyError: boolean }) => { - if (error.isTtyError) { - // Prompt couldn't be rendered in the current environment - console.warn( - 'It appears your terminal does not support interactive prompts. Using default values.' - ) - } else { - // Something else went wrong - console.error('An unknown error occurred:', error) - } - })) as Responses - - const { - appName, - recipeName, - installApi, - tauri: { - window: { title } - } - } = { ...defaults, ...answers } - - let recipe: Recipe | undefined - if (argv.recipe) { - recipe = recipeByShortName(argv.recipe) - } else if (recipeName !== undefined) { - recipe = recipeByDescriptiveName(recipeName) - } - - // throw if recipe is not set - if (!recipe) { - throw new Error('Could not find the recipe specified.') - } - - const pkgManagerInfo = pkgManagerFromUserAgent( - process.env.npm_config_user_agent - ) - const packageManager = (pkgManagerInfo?.name ?? 'npm') as PackageManager - - const buildConfig = { - distDir: argv.distDir, - devPath: argv.devPath, - appName: argv.appName || appName, - windowTitle: argv.windowTitle || title - } - - const directory = argv.directory || process.cwd() - - // prompt additional recipe questions - let recipeAnswers - if (recipe.extraQuestions) { - recipeAnswers = await inquirer - .prompt( - recipe.extraQuestions({ - cfg: buildConfig, - packageManager, - ci: argv.ci, - cwd: directory - }) - ) - .catch((error: { isTtyError: boolean }) => { - if (error.isTtyError) { - // Prompt couldn't be rendered in the current environment - console.warn( - 'It appears your terminal does not support interactive prompts. Using default values.' - ) - } else { - // Something else went wrong - console.error('An unknown error occurred:', error) - } - }) - } - - let updatedConfig - if (recipe.configUpdate) { - updatedConfig = recipe.configUpdate({ - cfg: buildConfig, - packageManager, - ci: argv.ci, - cwd: directory, - answers: recipeAnswers ?? {} - }) - } - const cfg = { - ...buildConfig, - ...(updatedConfig ?? {}) - } - - // note that our app directory is reliant on the appName and - // generally there are issues if the path has spaces (see Windows) - // TODO: prevent app names with spaces or escape here? - const appDirectory = join(directory, cfg.appName) - - // this throws an error if we can't run the package manager they requested - await checkPackageManager({ cwd: directory, packageManager }) - - if (recipe.preInit) { - logStep('Running initial command(s)') - await recipe.preInit({ - cwd: directory, - cfg, - packageManager, - ci: argv.ci, - answers: recipeAnswers ?? {} - }) - } - - const initArgs = [ - ['--app-name', cfg.appName], - ['--window-title', cfg.windowTitle], - ['--dist-dir', cfg.distDir], - ['--dev-path', cfg.devPath] - ].reduce((final: string[], argSet) => { - if (argSet[1]) { - return final.concat(argSet) - } else { - return final - } - }, []) - // TODO: const tauriCLIVersion = !argv.dev ? - // 'latest' - // :`file:${relative(appDirectory, join(__dirname, '../../cli.js'))}` - const tauriCLIVersion = 'latest' - const apiVersion = !argv.dev - ? 'latest' - : `file:${relative(appDirectory, join(__dirname, '../../api/dist'))}` - - // Vue CLI plugin automatically runs these - if (recipe.shortName !== 'vuecli') { - logStep('Installing any additional needed dependencies') - await install({ - appDir: appDirectory, - dependencies: [installApi ? `@tauri-apps/api@${apiVersion}` : ''].concat( - recipe.extraNpmDependencies - ), - devDependencies: [`@tauri-apps/cli@${tauriCLIVersion}`].concat( - recipe.extraNpmDevDependencies - ), - packageManager - }) - - logStep(`Updating ${reset(yellow('"package.json"'))}`) - updatePackageJson((pkg) => { - return { - ...pkg, - name: appName, - scripts: { - ...pkg.scripts, - tauri: 'tauri' - } - } - }, appDirectory) - - logStep(`Running ${reset(yellow('"tauri init"'))}`) - const binary = !argv.binary - ? packageManager - : resolve(appDirectory, argv.binary) - // "pnpm" is mostly interchangable with "yarn" but due to this bug https://github.com/pnpm/pnpm/issues/2764 - // we need to pass "--" to pnpm or arguments won't be parsed correctly so we treat "pnpm" here like "npm" - const runTauriArgs = - packageManager === 'yarn' || argv.binary - ? ['tauri', 'init'] - : ['run', 'tauri', '--', 'init'] - - await shell(binary, [...runTauriArgs, ...initArgs, '--ci'], { - cwd: appDirectory - }) - - logStep(`Updating ${reset(yellow('"tauri.conf.json"'))}`) - updateTauriConf((tauriConf) => { - return { - ...tauriConf, - build: { - ...tauriConf.build, - beforeDevCommand: cfg.beforeDevCommand, - beforeBuildCommand: cfg.beforeBuildCommand - } - } - }, appDirectory) - } - - if (recipe.postInit) { - logStep('Running final command(s)') - await recipe.postInit({ - cwd: appDirectory, - cfg, - packageManager, - ci: argv.ci, - answers: recipeAnswers ?? {} - }) - } -} - -function logStep(msg: string): void { - const out = `${green('>>')} ${bold(cyan(msg))}` - console.log(out) -} diff --git a/tooling/create-tauri-app/src/recipes/cljs.ts b/tooling/create-tauri-app/src/recipes/cljs.ts deleted file mode 100644 index 8ac2d8f87..000000000 --- a/tooling/create-tauri-app/src/recipes/cljs.ts +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { join } from 'path' -import { shell } from '../shell' -import { Recipe } from '../types/recipe' -import { unlinkSync, existsSync } from 'fs' -import { emptyDir } from '../helpers/empty-dir' - -const cljs: Recipe = { - descriptiveName: { - name: 'ClojureScript (https://github.com/filipesilva/create-cljs-app)', - value: 'cljs' - }, - shortName: 'cljs', - extraNpmDevDependencies: [], - extraNpmDependencies: [], - configUpdate: ({ cfg, packageManager }) => ({ - ...cfg, - distDir: `../public`, - devPath: 'http://localhost:3000', - beforeDevCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } start`, - beforeBuildCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } build` - }), - preInit: async ({ cwd, cfg, packageManager, ci }) => { - const npmLock = join(cwd, cfg.appName, 'package-lock.json') - const yarnLock = join(cwd, cfg.appName, 'yarn.lock') - const nodeModules = join(cwd, cfg.appName, 'node_modules') - - switch (packageManager) { - case 'yarn': - await shell('yarn', ['create', 'cljs-app', `${cfg.appName}`], { - cwd - }) - - // `create-cljs-app` has both a `package-lock.json` and a `yarn.lock` - // so it is better to remove conflicting lock files and install fresh node_modules - if (existsSync(npmLock)) unlinkSync(npmLock) - emptyDir(nodeModules) - - await shell('yarn', ['install'], { cwd: join(cwd, cfg.appName) }) - break - - case 'npm': - await shell( - 'npx', - [ci ? '--yes' : '', 'create-cljs-app@latest', `${cfg.appName}`], - { - cwd - } - ) - - if (existsSync(yarnLock)) unlinkSync(yarnLock) - emptyDir(nodeModules) - - await shell('npm', ['install'], { cwd: join(cwd, cfg.appName) }) - break - - case 'pnpm': - await shell( - 'npx', - [ci ? '--yes' : '', 'create-cljs-app@latest', `${cfg.appName}`], - { - cwd - } - ) - - if (existsSync(npmLock)) unlinkSync(npmLock) - emptyDir(nodeModules) - - await shell('pnpm', ['install'], { cwd: join(cwd, cfg.appName) }) - break - } - }, - postInit: async ({ cfg, packageManager }) => { - console.log(` - Your installation completed. - - $ cd ${cfg.appName} - $ ${packageManager === 'npm' ? 'npm run' : packageManager} tauri dev - `) - return await Promise.resolve() - } -} - -export { cljs } diff --git a/tooling/create-tauri-app/src/recipes/dominator.ts b/tooling/create-tauri-app/src/recipes/dominator.ts deleted file mode 100644 index 06707ad2b..000000000 --- a/tooling/create-tauri-app/src/recipes/dominator.ts +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { join } from 'path' -// @ts-expect-error -import scaffe from 'scaffe' -import { Recipe } from '../types/recipe' - -export const dominator: Recipe = { - descriptiveName: { - name: 'Dominator (https://crates.io/crates/dominator/)', - value: 'Dominator' - }, - shortName: 'dominator', - configUpdate: ({ cfg, packageManager }) => ({ - ...cfg, - distDir: `../dist`, - devPath: 'http://localhost:10001/', - beforeDevCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } start`, - beforeBuildCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } build` - }), - extraNpmDevDependencies: [], - extraNpmDependencies: [], - preInit: async ({ cwd, cfg }) => { - const { appName, windowTitle } = cfg - const templateDir = join(__dirname, '../src/templates/dominator') - const variables = { - name: appName, - title: windowTitle - } - - try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call - await scaffe.generate(templateDir, join(cwd, appName), { - overwrite: true, - variables - }) - } catch (err) { - console.log(err) - } - }, - postInit: async ({ cfg, packageManager }) => { - console.log(` - Your installation completed. - - $ cd ${cfg.appName} - $ ${packageManager} install - $ ${packageManager === 'npm' ? 'npm run' : packageManager} tauri dev - `) - return await Promise.resolve() - } -} diff --git a/tooling/create-tauri-app/src/recipes/ng-cli.ts b/tooling/create-tauri-app/src/recipes/ng-cli.ts deleted file mode 100644 index 44a8c5082..000000000 --- a/tooling/create-tauri-app/src/recipes/ng-cli.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { PackageManager } from '../dependency-manager' -import { shell } from '../shell' -import { Recipe } from '../types/recipe' -import { join } from 'path' - -const addAdditionalPackage = async ( - packageManager: PackageManager, - cwd: string, - appName: string, - packageName: string -): Promise<void> => { - const ngCommand = ['ng', 'add', packageName, '--skip-confirmation'] - - switch (packageManager) { - case 'pnpm': - case 'yarn': - await shell(packageManager, ngCommand, { - cwd: join(cwd, appName) - }) - break - - case 'npm': - await shell('npm', ['run', ...ngCommand], { - cwd: join(cwd, appName) - }) - break - } -} - -const ngcli: Recipe = { - descriptiveName: { - name: 'Angular CLI (https://angular.io/cli)', - value: 'ng-cli' - }, - shortName: 'ngcli', - extraNpmDependencies: [], - extraNpmDevDependencies: [], - configUpdate: ({ cfg, packageManager }) => ({ - ...cfg, - distDir: `../dist/${cfg.appName}`, - devPath: 'http://localhost:4200', - beforeDevCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } start`, - beforeBuildCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } build` - }), - extraQuestions: ({ ci }) => { - return [ - { - type: 'confirm', - name: 'material', - message: 'Add Angular Material (https://material.angular.io/)?', - when: !ci - }, - { - type: 'confirm', - name: 'eslint', - message: - 'Add Angular ESLint (https://github.com/angular-eslint/angular-eslint)?', - when: !ci - } - ] - }, - preInit: async ({ cwd, cfg, answers, packageManager, ci }) => { - await shell( - 'npx', - [ - ci ? '--yes' : '', - '-p', - '@angular/cli', - 'ng', - 'new', - `${cfg.appName}`, - `--package-manager=${packageManager}` - ], - { - cwd - } - ) - - if (answers?.material) { - await addAdditionalPackage( - packageManager, - cwd, - cfg.appName, - '@angular/material' - ) - } - - if (answers?.eslint) { - await addAdditionalPackage( - packageManager, - cwd, - cfg.appName, - '@angular-eslint/schematics' - ) - } - }, - postInit: async ({ packageManager, cfg }) => { - console.log(` - Your installation completed. - - $ cd ${cfg.appName} - $ ${packageManager === 'npm' ? 'npm run' : packageManager} tauri dev - `) - - return await Promise.resolve() - } -} - -export { ngcli } diff --git a/tooling/create-tauri-app/src/recipes/react.ts b/tooling/create-tauri-app/src/recipes/react.ts deleted file mode 100644 index 208a6719a..000000000 --- a/tooling/create-tauri-app/src/recipes/react.ts +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { join } from 'path' -// @ts-expect-error -import scaffe from 'scaffe' -import { shell } from '../shell' -import { Recipe } from '../types/recipe' -import { unlinkSync, existsSync } from 'fs' -import { emptyDir } from '../helpers/empty-dir' -import { updatePackageJson } from '../helpers/update-package-json' - -const afterCra = async ( - cwd: string, - appName: string, - typescript: boolean = false -): Promise<void> => { - const templateDir = join( - __dirname, - `../src/templates/react/${typescript ? 'react-ts' : 'react'}` - ) - - try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call - await scaffe.generate(templateDir, join(cwd, appName), { - overwrite: true - }) - updatePackageJson((pkg) => { - return { - ...pkg, - scripts: { - ...pkg.scripts, - start: `${'cross-env BROWSER=none '}${pkg.scripts?.start as string}` - } - } - }, join(cwd, appName)) - } catch (err) { - console.log(err) - } -} - -export const cra: Recipe = { - descriptiveName: { - name: 'create-react-app (https://create-react-app.dev/)', - value: 'create-react-app' - }, - shortName: 'cra', - configUpdate: ({ cfg, packageManager }) => ({ - ...cfg, - distDir: `../build`, - devPath: 'http://localhost:3000', - beforeDevCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } start`, - beforeBuildCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } build` - }), - extraNpmDevDependencies: ['cross-env'], - extraNpmDependencies: [], - extraQuestions: ({ ci }) => { - return [ - { - type: 'list', - name: 'template', - message: 'Which create-react-app template would you like to use?', - choices: [ - { name: 'create-react-app (JavaScript)', value: 'cra.js' }, - { name: 'create-react-app (Typescript)', value: 'cra.ts' } - ], - default: 'cra.js', - loop: false, - when: !ci - } - ] - }, - preInit: async ({ cwd, cfg, packageManager, answers, ci }) => { - const template = (answers?.template as string) ?? 'cra.js' - switch (packageManager) { - case 'yarn': - await shell( - 'yarn', - [ - ci ? '--non-interactive' : '', - 'create', - 'react-app', - ...(template === 'cra.ts' ? ['--template', 'typescript'] : []), - `${cfg.appName}` - ], - { - cwd - } - ) - break - case 'npm': - case 'pnpm': - await shell( - 'npx', - [ - ci ? '--yes' : '', - 'create-react-app@latest', - ...(template === 'cra.ts' ? ['--template', 'typescript'] : []), - `${cfg.appName}`, - '--use-npm' - ], - { - cwd - } - ) - - // create-react-app doesn't support pnpm, so we remove `node_modules` and any lock files then install them again using pnpm - if (packageManager === 'pnpm') { - const npmLock = join(cwd, cfg.appName, 'package-lock.json') - const yarnLock = join(cwd, cfg.appName, 'yarn.lock') - const nodeModules = join(cwd, cfg.appName, 'node_modules') - if (existsSync(npmLock)) unlinkSync(npmLock) - if (existsSync(yarnLock)) unlinkSync(yarnLock) - emptyDir(nodeModules) - await shell('pnpm', ['install'], { cwd: join(cwd, cfg.appName) }) - } - - break - } - - await afterCra(cwd, cfg.appName, template === 'cra.ts') - }, - postInit: async ({ packageManager, cfg }) => { - console.log(` - Your installation completed. - - $ cd ${cfg.appName} - $ ${packageManager === 'npm' ? 'npm run' : packageManager} tauri dev - `) - return await Promise.resolve() - } -} diff --git a/tooling/create-tauri-app/src/recipes/solid.ts b/tooling/create-tauri-app/src/recipes/solid.ts deleted file mode 100644 index 60632c462..000000000 --- a/tooling/create-tauri-app/src/recipes/solid.ts +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { shell } from '../shell' -import { Recipe } from '../types/recipe' - -const solid: Recipe = { - descriptiveName: { - name: 'Solid (https://github.com/solidjs/templates)', - value: 'solid' - }, - shortName: 'solid', - extraNpmDevDependencies: [], - extraNpmDependencies: [], - extraQuestions: ({ ci }) => { - return [ - { - type: 'list', - name: 'template', - message: 'Which Solid template would you like to use?', - choices: [ - 'js', - 'ts-bootstrap', - 'ts-minimal', - 'ts-router', - 'ts-windicss', - 'ts' - ], - default: 'ts', - loop: false, - when: !ci - } - ] - }, - configUpdate: ({ cfg, packageManager }) => ({ - ...cfg, - distDir: `../public`, - devPath: 'http://localhost:3000', - beforeDevCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } dev`, - beforeBuildCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } build` - }), - preInit: async ({ cwd, cfg, answers, ci }) => { - await shell( - 'npx', - [ - ci ? '--yes' : '', - 'degit', - `solidjs/templates/${(answers?.template as string) ?? 'js'}`, - cfg.appName - ], - { cwd } - ) - }, - postInit: async ({ cfg, packageManager }) => { - console.log(` - Your installation completed. - - $ cd ${cfg.appName} - $ ${packageManager} install - $ ${packageManager === 'npm' ? 'npm run' : packageManager} tauri dev - `) - - return await Promise.resolve() - } -} - -export { solid } diff --git a/tooling/create-tauri-app/src/recipes/svelte.ts b/tooling/create-tauri-app/src/recipes/svelte.ts deleted file mode 100644 index 9b9250dc3..000000000 --- a/tooling/create-tauri-app/src/recipes/svelte.ts +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { join } from 'path' -import { shell } from '../shell' -import { Recipe } from '../types/recipe' - -const svelte: Recipe = { - descriptiveName: { - name: 'Svelte (https://github.com/sveltejs/template)', - value: 'svelte' - }, - shortName: 'svelte', - extraNpmDevDependencies: [], - extraNpmDependencies: [], - extraQuestions: ({ ci }) => { - return [ - { - type: 'confirm', - name: 'typescript', - message: 'Enable Typescript?', - default: true, - loop: false, - when: !ci - } - ] - }, - configUpdate: ({ cfg, packageManager }) => ({ - ...cfg, - distDir: `../public`, - devPath: 'http://localhost:8080', - beforeDevCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } dev`, - beforeBuildCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } build` - }), - preInit: async ({ cwd, cfg, answers, ci }) => { - let typescript = false - if (answers) { - typescript = !!answers.typescript - } - - await shell( - 'npx', - [ci ? '--yes' : '', 'degit', 'sveltejs/template', `${cfg.appName}`], - { - cwd - } - ) - - if (typescript) { - await shell('node', ['scripts/setupTypeScript.js'], { - cwd: join(cwd, cfg.appName) - }) - } - }, - postInit: async ({ cfg, packageManager }) => { - console.log(` - Your installation completed. - - $ cd ${cfg.appName} - $ ${packageManager} install - $ ${packageManager === 'npm' ? 'npm run' : packageManager} tauri dev - `) - - return await Promise.resolve() - } -} - -export { svelte } diff --git a/tooling/create-tauri-app/src/recipes/vanilla.ts b/tooling/create-tauri-app/src/recipes/vanilla.ts deleted file mode 100644 index 6c77820c2..000000000 --- a/tooling/create-tauri-app/src/recipes/vanilla.ts +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { join } from 'path' -// @ts-expect-error -import scaffe from 'scaffe' -import { Recipe } from '../types/recipe' - -export const vanillajs: Recipe = { - descriptiveName: { - name: 'Vanilla.js (html, css, and js without the bundlers)', - value: 'Vanilla.js' - }, - shortName: 'vanillajs', - configUpdate: ({ cfg }) => ({ - ...cfg, - distDir: `../dist`, - devPath: `../dist`, - beforeDevCommand: '', - beforeBuildCommand: '' - }), - extraNpmDevDependencies: [], - extraNpmDependencies: [], - preInit: async ({ cwd, cfg }) => { - const { appName } = cfg - const templateDir = join(__dirname, '../src/templates/vanilla') - const variables = { - name: appName - } - - try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call - await scaffe.generate(templateDir, join(cwd, appName), { - overwrite: true, - variables - }) - } catch (err) { - console.log(err) - } - }, - postInit: async ({ cfg, packageManager }) => { - console.log(` - Your installation completed. - - $ cd ${cfg.appName} - $ ${packageManager} install - $ ${packageManager === 'npm' ? 'npm run' : packageManager} tauri dev - `) - return await Promise.resolve() - } -} diff --git a/tooling/create-tauri-app/src/recipes/vite.ts b/tooling/create-tauri-app/src/recipes/vite.ts deleted file mode 100644 index e9eab3752..000000000 --- a/tooling/create-tauri-app/src/recipes/vite.ts +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -/// import { join } from 'path' -/// import scaffe from 'scaffe' -import { shell } from '../shell' -import { Recipe } from '../types/recipe' - -const vite: Recipe = { - descriptiveName: { - name: 'create-vite (vanilla, vue, react, svelte, preact, lit) (https://vitejs.dev/guide/#scaffolding-your-first-vite-project)', - value: 'create-vite' - }, - shortName: 'vite', - configUpdate: ({ cfg, packageManager }) => ({ - ...cfg, - distDir: `../dist`, - devPath: 'http://localhost:3000', - beforeDevCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } dev`, - beforeBuildCommand: `${ - packageManager === 'npm' ? 'npm run' : packageManager - } build` - }), - extraNpmDevDependencies: [], - extraNpmDependencies: [], - extraQuestions: ({ ci }) => { - return [ - { - type: 'list', - name: 'template', - message: 'Which vite template would you like to use?', - choices: [ - 'vanilla', - 'vanilla-ts', - 'vue', - 'vue-ts', - 'react', - 'react-ts', - 'preact', - 'preact-ts', - 'lit-element', - 'lit-element-ts', - 'svelte', - 'svelte-ts' - ], - default: 'vue', - loop: false, - when: !ci - } - ] - }, - preInit: async ({ cwd, cfg, packageManager, answers, ci }) => { - const template = (answers?.template as string) ?? 'vue' - - switch (packageManager) { - case 'yarn': - await shell( - 'yarn', - [ - ci ? '--non-interactive' : '', - 'create', - 'vite', - `${cfg.appName}`, - '--template', - `${template}` - ], - { - cwd - } - ) - break - - case 'npm': - await shell( - 'npx', - [ - ci ? '--yes' : '', - 'create-vite@latest', - `${cfg.appName}`, - '--template', - `${template}` - ], - { - cwd - } - ) - break - - case 'pnpm': - await shell( - 'pnpm', - ['create', 'vite', `${cfg.appName}`, '--template', `${template}`], - { - cwd - } - ) - break - } - }, - postInit: async ({ cwd, packageManager, cfg }) => { - // we don't have a consistent way to rebuild and - // esbuild has hit all the bugs and struggles to install on the postinstall - await shell('node', ['./node_modules/esbuild/install.js'], { cwd }) - switch (packageManager) { - case 'pnpm': - case 'yarn': - await shell(packageManager, ['build'], { cwd }) - break - case 'npm': - await shell('npm', ['run', 'build'], { cwd }) - break - } - - console.log(` - Your installation completed. - - $ cd ${cfg.appName} - $ ${packageManager === 'npm' ? 'npm run' : packageManager} tauri dev - `) - return await Promise.resolve() - } -} - -export { vite } diff --git a/tooling/create-tauri-app/src/recipes/vue-cli.ts b/tooling/create-tauri-app/src/recipes/vue-cli.ts deleted file mode 100644 index ed9b5de64..000000000 --- a/tooling/create-tauri-app/src/recipes/vue-cli.ts +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { join } from 'path' -import { shell } from '../shell' -import { Recipe } from '../types/recipe' - -const vuecli: Recipe = { - descriptiveName: { - name: 'Vue CLI (https://cli.vuejs.org/)', - value: 'vue-cli' - }, - shortName: 'vuecli', - extraNpmDevDependencies: [], - extraNpmDependencies: [], - configUpdate: ({ cfg }) => cfg, - preInit: async ({ cwd, cfg, ci, packageManager }) => { - await shell( - 'npx', - [ - ci ? '--yes' : '', - '@vue/cli@latest', - 'create', - `${cfg.appName}`, - '--packageManager', - packageManager, - ci ? '--default' : '' - ], - { cwd } - ) - await shell( - 'npx', - [ - ci ? '--yes' : '', - '@vue/cli', - 'add', - 'tauri', - '--appName', - `${cfg.appName}`, - '--windowTitle', - `${cfg.windowTitle}` - ], - { - cwd: join(cwd, cfg.appName) - } - ) - }, - postInit: async ({ cfg, packageManager }) => { - console.log(` - Your installation completed. - - $ cd ${cfg.appName} - $ ${packageManager === 'npm' ? 'npm run' : packageManager} tauri:serve - `) - return await Promise.resolve() - } -} - -export { vuecli } diff --git a/tooling/create-tauri-app/src/shell.ts b/tooling/create-tauri-app/src/shell.ts deleted file mode 100644 index d076d49d4..000000000 --- a/tooling/create-tauri-app/src/shell.ts +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import execa, { Options, ExecaChildProcess } from 'execa' - -export const shell = async ( - command: string, - args?: string[], - options?: Options, - log: boolean = false -): Promise<ExecaChildProcess> => { - try { - if (options && options.shell === true) { - const stringCommand = [command, ...(args ?? [])].join(' ') - if (log) console.log(`[running]: ${stringCommand}`) - return await execa(stringCommand, { - stdio: 'inherit', - cwd: process.cwd(), - env: process.env, - ...options - }) - } else { - if (log) console.log(`[running]: ${command}`) - return await execa( - command, - (args ?? []).filter((e) => e !== ''), - { - stdio: 'inherit', - cwd: process.cwd(), - env: process.env, - ...options - } - ) - } - } catch (error) { - console.error('Error with command: %s', command) - throw new Error(error) - } -} diff --git a/tooling/create-tauri-app/src/templates/dominator/_.gitignore b/tooling/create-tauri-app/src/templates/dominator/_.gitignore deleted file mode 100644 index 5008655a9..000000000 --- a/tooling/create-tauri-app/src/templates/dominator/_.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules -/dist/js -/target -/wasm-pack.log -/yarn-error.log diff --git a/tooling/create-tauri-app/src/templates/dominator/_Cargo.toml b/tooling/create-tauri-app/src/templates/dominator/_Cargo.toml deleted file mode 100644 index f9e45337e..000000000 --- a/tooling/create-tauri-app/src/templates/dominator/_Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "<%= name %>" -version = "1.0.0" -categories = ["wasm"] -edition = "2021" -rust-version = "1.57" -description = "" - -[profile.release] -lto = true - -[lib] -crate-type = ["cdylib"] - -[workspace] -members = [ - "src-tauri" -] - -[dependencies] -console_error_panic_hook = "0.1.6" -dominator = "0.5.17" -wasm-bindgen = "0.2.74" -futures-signals = "0.3.20" -once_cell = "1.7.2" diff --git a/tooling/create-tauri-app/src/templates/dominator/_package.json b/tooling/create-tauri-app/src/templates/dominator/_package.json deleted file mode 100644 index 4c7dc31df..000000000 --- a/tooling/create-tauri-app/src/templates/dominator/_package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "<%= name %>", - "scripts": { - "tauri": "tauri", - "build": "rimraf dist/js && rollup --config", - "start": "rimraf dist/js && rollup --config --watch" - }, - "devDependencies": { - "@wasm-tool/rollup-plugin-rust": "^1.0.6", - "rimraf": "^3.0.2", - "rollup": "^2.50.2", - "rollup-plugin-livereload": "^2.0.0", - "rollup-plugin-serve": "^1.1.0", - "rollup-plugin-terser": "^7.0.2" - } -} diff --git a/tooling/create-tauri-app/src/templates/dominator/dist/_index.html b/tooling/create-tauri-app/src/templates/dominator/dist/_index.html deleted file mode 100644 index 15d374677..000000000 --- a/tooling/create-tauri-app/src/templates/dominator/dist/_index.html +++ /dev/null @@ -1,27 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta charset="UTF-8" /> - <title><%= title %> - - - -

<%= name %>

- - - diff --git a/tooling/create-tauri-app/src/templates/dominator/rollup.config.js b/tooling/create-tauri-app/src/templates/dominator/rollup.config.js deleted file mode 100644 index 09ffd2894..000000000 --- a/tooling/create-tauri-app/src/templates/dominator/rollup.config.js +++ /dev/null @@ -1,32 +0,0 @@ -import rust from '@wasm-tool/rollup-plugin-rust' -import serve from 'rollup-plugin-serve' -import livereload from 'rollup-plugin-livereload' -import { terser } from 'rollup-plugin-terser' - -const is_watch = !!process.env.ROLLUP_WATCH - -export default { - input: { - index: './Cargo.toml' - }, - output: { - dir: 'dist/js', - format: 'iife', - sourcemap: true - }, - plugins: [ - rust({ - serverPath: 'js/' - }), - - is_watch && - serve({ - contentBase: 'dist', - open: true - }), - - is_watch && livereload('dist'), - - !is_watch && terser() - ] -} diff --git a/tooling/create-tauri-app/src/templates/dominator/src/lib.rs b/tooling/create-tauri-app/src/templates/dominator/src/lib.rs deleted file mode 100644 index 9811f6050..000000000 --- a/tooling/create-tauri-app/src/templates/dominator/src/lib.rs +++ /dev/null @@ -1,52 +0,0 @@ -use wasm_bindgen::prelude::*; -use std::sync::Arc; -use once_cell::sync::Lazy; -use futures_signals::signal::{Mutable, SignalExt}; -use dominator::{Dom, html, class, clone, events}; - - -#[derive(Debug)] -struct App { - message: Mutable, -} - -impl App { - fn new() -> Arc { - Arc::new(Self { - message: Mutable::new("Hello world!".to_string()), - }) - } - - fn render(app: Arc) -> Dom { - // Define CSS styles - static CLASS: Lazy = Lazy::new(|| class! { - .style("font-size", "20px") - .style("color", "hsl(110, 70%, 70%)") - }); - - // Create the DOM nodes - html!("div", { - .class(&*CLASS) - - .text_signal(app.message.signal_cloned().map(|message| { - format!("Message: {}", message) - })) - - .event(clone!(app => move |_: events::Click| { - app.message.set_neq("Goodbye!".to_string()); - })) - }) - } -} - - -#[wasm_bindgen(start)] -pub fn main_js() -> Result<(), JsValue> { - #[cfg(debug_assertions)] - console_error_panic_hook::set_once(); - - let app = App::new(); - dominator::append_dom(&dominator::body(), App::render(app)); - - Ok(()) -} diff --git a/tooling/create-tauri-app/src/templates/react/react-ts/src/App.css b/tooling/create-tauri-app/src/templates/react/react-ts/src/App.css deleted file mode 100644 index eeb936385..000000000 --- a/tooling/create-tauri-app/src/templates/react/react-ts/src/App.css +++ /dev/null @@ -1,54 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 20vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo.rotate { - animation: App-logo-spin infinite 20s linear; - } -} - -div.inline-logo { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; -} - -div.inline-logo > img { - margin-right: 3vw; -} - -div.inline-logo .smaller { - height: 10vh; -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; - margin-bottom: 5vh; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/tooling/create-tauri-app/src/templates/react/react-ts/src/App.tsx b/tooling/create-tauri-app/src/templates/react/react-ts/src/App.tsx deleted file mode 100644 index 1bf762a25..000000000 --- a/tooling/create-tauri-app/src/templates/react/react-ts/src/App.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' -import logo from './logo.svg' -import tauriCircles from './tauri.svg' -import tauriWord from './wordmark.svg' -import './App.css' - -function App() { - return ( -
-
-
- logo - logo -
- - Learn Tauri - - logo - - Learn React - -

- Edit src/App.tsx and save to reload. -

-
-
- ) -} - -export default App diff --git a/tooling/create-tauri-app/src/templates/react/react-ts/src/tauri.svg b/tooling/create-tauri-app/src/templates/react/react-ts/src/tauri.svg deleted file mode 100644 index 489ac6971..000000000 --- a/tooling/create-tauri-app/src/templates/react/react-ts/src/tauri.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tooling/create-tauri-app/src/templates/react/react-ts/src/wordmark.svg b/tooling/create-tauri-app/src/templates/react/react-ts/src/wordmark.svg deleted file mode 100644 index 47c3165ae..000000000 --- a/tooling/create-tauri-app/src/templates/react/react-ts/src/wordmark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tooling/create-tauri-app/src/templates/react/react/src/App.css b/tooling/create-tauri-app/src/templates/react/react/src/App.css deleted file mode 100644 index eeb936385..000000000 --- a/tooling/create-tauri-app/src/templates/react/react/src/App.css +++ /dev/null @@ -1,54 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 20vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo.rotate { - animation: App-logo-spin infinite 20s linear; - } -} - -div.inline-logo { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; -} - -div.inline-logo > img { - margin-right: 3vw; -} - -div.inline-logo .smaller { - height: 10vh; -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; - margin-bottom: 5vh; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/tooling/create-tauri-app/src/templates/react/react/src/App.js b/tooling/create-tauri-app/src/templates/react/react/src/App.js deleted file mode 100644 index 2236bfbb8..000000000 --- a/tooling/create-tauri-app/src/templates/react/react/src/App.js +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' -import logo from './logo.svg' -import tauriCircles from './tauri.svg' -import tauriWord from './wordmark.svg' -import './App.css' - -function App() { - return ( -
-
-
- logo - logo -
- - Learn Tauri - - logo - - Learn React - -

- Edit src/App.js and save to reload. -

-
-
- ) -} - -export default App diff --git a/tooling/create-tauri-app/src/templates/react/react/src/tauri.svg b/tooling/create-tauri-app/src/templates/react/react/src/tauri.svg deleted file mode 100644 index 489ac6971..000000000 --- a/tooling/create-tauri-app/src/templates/react/react/src/tauri.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tooling/create-tauri-app/src/templates/react/react/src/wordmark.svg b/tooling/create-tauri-app/src/templates/react/react/src/wordmark.svg deleted file mode 100644 index 47c3165ae..000000000 --- a/tooling/create-tauri-app/src/templates/react/react/src/wordmark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tooling/create-tauri-app/src/templates/vanilla/_package.json b/tooling/create-tauri-app/src/templates/vanilla/_package.json deleted file mode 100644 index 8e9baa17e..000000000 --- a/tooling/create-tauri-app/src/templates/vanilla/_package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "<%= name %>", - "scripts": { - "tauri": "tauri" - } -} diff --git a/tooling/create-tauri-app/src/templates/vanilla/dist/_index.html b/tooling/create-tauri-app/src/templates/vanilla/dist/_index.html deleted file mode 100644 index 969758564..000000000 --- a/tooling/create-tauri-app/src/templates/vanilla/dist/_index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - -

<%= name %>

- - diff --git a/tooling/create-tauri-app/src/types/config.ts b/tooling/create-tauri-app/src/types/config.ts deleted file mode 100644 index 2795d7d60..000000000 --- a/tooling/create-tauri-app/src/types/config.ts +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -export interface TauriBuildConfig { - appName: string - windowTitle: string - /** - * the path to the app's dist dir - * this path must contain your index.html file - */ - distDir: string - /** - * the app's dev server URL, or the path to the directory containing an index.html to open - */ - devPath: string - /** - * a shell command to run before `tauri dev` kicks in - */ - beforeDevCommand?: string - /** - * a shell command to run before `tauri build` kicks in - */ - beforeBuildCommand?: string - withGlobalTauri?: boolean -} diff --git a/tooling/create-tauri-app/src/types/deps.ts b/tooling/create-tauri-app/src/types/deps.ts deleted file mode 100644 index 15a525bae..000000000 --- a/tooling/create-tauri-app/src/types/deps.ts +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -export enum ManagementType { - Install, - InstallDev, - Update -} - -export type Result = Map diff --git a/tooling/create-tauri-app/src/types/recipe.ts b/tooling/create-tauri-app/src/types/recipe.ts deleted file mode 100644 index 1ee99108b..000000000 --- a/tooling/create-tauri-app/src/types/recipe.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Answers, QuestionCollection } from 'inquirer' -import { PackageManager } from '../dependency-manager' -import { TauriBuildConfig } from './config' - -export interface RecipeArgs { - cwd: string - cfg: TauriBuildConfig - packageManager: PackageManager - ci: boolean - answers?: Answers -} - -export interface Recipe { - descriptiveName: { name: string; value: string } - shortName: string - configUpdate?: (args: RecipeArgs) => TauriBuildConfig - extraNpmDependencies: string[] - extraNpmDevDependencies: string[] - extraQuestions?: (args: RecipeArgs) => QuestionCollection[] - preInit?: (args: RecipeArgs) => Promise - postInit?: (args: RecipeArgs) => Promise -} diff --git a/tooling/create-tauri-app/test/spawn.test.mjs b/tooling/create-tauri-app/test/spawn.test.mjs deleted file mode 100644 index 082a18916..000000000 --- a/tooling/create-tauri-app/test/spawn.test.mjs +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2019-2021 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT - -import { main, spawn, sleep } from 'effection' -import { exec } from '@effection/process' -import fs from 'fs/promises' -import path from 'path' -import crypto from 'crypto' -import tempDirectory from 'temp-dir' - -let assert -const nodeVersion = process.versions.node.split('.')[0] -if (nodeVersion === '14') { - assert = await import('assert') -} else { - assert = await import('assert/strict') -} - -const ctaBinary = path.resolve('./bin/create-tauri-app.js') -//const clijs = path.resolve('../cli.js/') -//const api = path.resolve('../api/') - -const manager = process.env.TAURI_RUN_MANAGER || 'yarn' -const recipes = process.env.TAURI_RECIPE - ? process.env.TAURI_RECIPE.split(',') - : ['vanillajs', 'cra', 'vite', 'ngcli', 'solid', 'cljs'] -const parallelize = process.env.TAURI_RECIPE_PARALLELIZE || false - -main(function* start() { - const tauriTemp = path.join( - tempDirectory, - `tauri_${crypto.randomBytes(16).toString('hex')}` - ) - - try { - const appName = 'tauri-app' - let output = {} - for (let i = 0; i < recipes.length; i++) { - const recipe = recipes[i] - console.log(`::group::recipe ${recipe}`) - console.log(`------------------ ${recipe} started -------------------`) - const recipeFolder = path.join(tauriTemp, recipe) - const appFolder = path.join(recipeFolder, appName) - yield fs.mkdir(recipeFolder, { recursive: true }) - console.log(`${recipeFolder} created.`) - - // runs CTA with all args set to avoid any prompts - const run = `node '${ctaBinary}' --manager ${manager} --recipe ${recipe} --ci --dev` - console.log(`[running] ${run}`) - - let opts = [] - if (manager === 'npm') { - opts = - recipe == 'vuecli' - ? ['run', 'tauri:build'] - : ['run', 'tauri', '--', 'build'] - } else if (manager === 'yarn') { - opts = recipe == 'vuecli' ? ['tauri:build'] : ['tauri', 'build'] - } - - if (!parallelize) { - const cta = yield exec(run, { cwd: recipeFolder }) - yield streamLogs(cta) - // now it is finished, assert on some things - yield assertCTAState({ appFolder, appName }) - - const tauriBuild = yield exec(manager, { - arguments: opts, - cwd: appFolder - }) - yield streamLogs(tauriBuild) - // build is complete, assert on some things - yield assertTauriBuildState({ appFolder, appName }) - } else { - console.log('running CTA recipe in parallel') - output[recipe] = yield spawn(function* () { - const childCTA = yield exec(run, { cwd: recipeFolder }) - const cta = yield captureLogs(childCTA) - const childTauriBuild = yield exec(manager, { - arguments: opts, - cwd: appFolder - }) - const tauriBuild = yield captureLogs(childTauriBuild) - return { cta, tauriBuild } - }) - } - - console.log(`------------------ ${recipe} complete -------------------`) - console.log('::endgroup::') - // sometimes it takes a moment to flush all of the logs - // to the console, let things catch up here - yield sleep(1000) - } - - if (parallelize) { - for (let i = 0; i < recipes.length; i++) { - const recipe = recipes[i] - console.log(`::group::recipe ${recipe} logs`) - console.log( - `------------------ ${recipe} output start -------------------` - ) - const out = yield output[recipe] - console.log(out.cta) - console.log(out.tauriBuild) - console.log( - `------------------ ${recipe} output end -------------------` - ) - console.log('::endgroup::') - } - } - } catch (e) { - console.error(e) - throw Error(e) - } finally { - console.log('\nstopping process...') - // wait a tick for file locks to be release - yield sleep(5000) - yield fs.rm(tauriTemp, { recursive: true, force: true }) - console.log(`${tauriTemp} deleted.`) - } -}) - -function* streamLogs(child) { - yield child.stdout.forEach((data) => { - process.stdout.write(data) - }) - yield child.stderr.forEach((data) => { - process.stderr.write(data) - }) -} - -function* captureLogs(child) { - let log = '' - yield child.stdout.forEach((data) => { - log += data - }) - yield child.stderr.forEach((data) => { - log += data - }) - - return log -} - -function* assertCTAState({ appFolder, appName }) { - const packageFileInitial = JSON.parse( - yield fs.readFile(path.join(appFolder, 'package.json'), 'utf-8') - ) - assert.strictEqual( - packageFileInitial.name, - appName, - `The package.json did not have the name "${appName}".` - ) - assert.strictEqual( - packageFileInitial.scripts.tauri, - 'tauri', - `The package.json did not have the tauri script.` - ) -} - -function* assertTauriBuildState({ appFolder, appName }) { - const packageFileOutput = JSON.parse( - yield fs.readFile(path.join(appFolder, 'package.json'), 'utf-8') - ) - assert.strictEqual( - packageFileOutput.name, - appName, - `The package.json did not have the name "${appName}".` - ) - assert.strictEqual( - packageFileOutput.scripts.tauri, - 'tauri', - `The package.json did not have the tauri script.` - ) - - const cargoFileOutput = yield fs.readFile( - path.join(appFolder, 'src-tauri', 'Cargo.toml'), - 'utf-8' - ) - assert.strictEqual( - cargoFileOutput.startsWith(`[package]\nname = "app"`), - true, - `The Cargo.toml did not have the name "app".` - ) - - const tauriTarget = yield fs.readdir( - path.join(appFolder, 'src-tauri', 'target') - ) - assert.strictEqual( - tauriTarget.includes('release'), - true, - `The Tauri build does not have a target/release directory.` - ) -} diff --git a/tooling/create-tauri-app/tsconfig.json b/tooling/create-tauri-app/tsconfig.json deleted file mode 100644 index f0b018b0d..000000000 --- a/tooling/create-tauri-app/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compilerOptions": { - "strict": true, - "module": "esnext", - "target": "es6", - "allowJs": true, - "pretty": true, - "esModuleInterop": true, - "resolveJsonModule": true, - "moduleResolution": "node", - "checkJs": false, - "preserveSymlinks": true, - "skipLibCheck": true, - "typeRoots": ["types", "node_modules/@types"] - }, - "include": ["src"], - "exclude": ["src/templates", "types", "test", "__fixtures__"] -} diff --git a/tooling/create-tauri-app/types/fixturez/index.d.ts b/tooling/create-tauri-app/types/fixturez/index.d.ts deleted file mode 100644 index 3d7242c6a..000000000 --- a/tooling/create-tauri-app/types/fixturez/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module 'fixturez' diff --git a/tooling/create-tauri-app/yarn.lock b/tooling/create-tauri-app/yarn.lock deleted file mode 100644 index 8f7f98a30..000000000 --- a/tooling/create-tauri-app/yarn.lock +++ /dev/null @@ -1,2677 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@effection/channel@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@effection/channel/-/channel-2.0.3.tgz#825ade1a4a09b860efdf7077fc02f81d6c7614bb" - integrity sha512-HZE2q7dtErIur0g+BVMPqa+dVBgrIIaYMrzMBNM1UoIB6urMGgr+uPWXwgQb3Vzm4Il9SCiCzoM3RE3gDiV1Ig== - dependencies: - "@effection/core" "2.2.0" - "@effection/events" "2.0.3" - "@effection/stream" "2.0.3" - -"@effection/core@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@effection/core/-/core-2.2.0.tgz#4d11d7948144aecd70a26daf8abaa29ee89bc259" - integrity sha512-1RBMrDS0Ya02NEM0TQQRwzlGDSZmwoHhuD3qmWp9NLjZowhO1gJBZ16fQL2NbKvcpS71xho+oZsDedId+C1q8Q== - dependencies: - abort-controller "^3.0.0" - -"@effection/events@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@effection/events/-/events-2.0.3.tgz#cf212748f8e433dcf776e5e1dd0145716213a7bc" - integrity sha512-x8NBNXHZxI4SJ/db1zy7zs6BRtMIKu8NgymUMpbyrRdapPSIu6rmf4WgXyWrk1uvQPSViEkxOXPw8B2MLu/YnA== - dependencies: - "@effection/core" "2.2.0" - "@effection/stream" "2.0.3" - -"@effection/fetch@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@effection/fetch/-/fetch-2.0.4.tgz#8f76f0b630b3974ef267bd8803599448db956cda" - integrity sha512-IhUYqSAM0stEB6VCWK9Mz8F56jWFFpM9yQ4boxGs4F/sdoHnY/9KKW1zxAY05jyYPUHxuUky7sazZVFJm5xRmw== - dependencies: - "@effection/core" "2.2.0" - cross-fetch "3.1.5" - -"@effection/main@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@effection/main/-/main-2.0.3.tgz#10dceb9c8340fd98b7c6704db0b6e8f652f32802" - integrity sha512-UHMRECFMzX+OU6I0Mg2653MyxNTIT8qXpRtl0bZT4E0rSoYnxsV+gSCEbTZFkDIZWFakp0K6awYvtyYhCeugpg== - dependencies: - "@effection/core" "2.2.0" - chalk "^4.1.2" - stacktrace-parser "^0.1.10" - -"@effection/process@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@effection/process/-/process-2.0.4.tgz#de52485d19a46df9d8cfd91c94657f4bb6d5e03a" - integrity sha512-gKMI5j+OY7DshkO/u50xSP3ASCSYz2g4IwLaKLVQEOT5kIedApIEOYz9nChPps/mQ1PXgQr4OqKofvUkf6Mf1Q== - dependencies: - cross-spawn "^7.0.3" - ctrlc-windows "^2.0.0" - effection "2.0.4" - shellwords "^0.1.1" - -"@effection/stream@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@effection/stream/-/stream-2.0.3.tgz#c1610c63dfe6d10b0b6aeda6969fea24018364b0" - integrity sha512-l1A8PUfxR04eyUBOD1H5gdCu4U5OMwUh2TB/O/IeUlfVoP9tg64daTu7zpZGij9uDcDWV5IP9LJYoWe2lVGbKg== - dependencies: - "@effection/core" "2.2.0" - "@effection/subscription" "2.0.3" - -"@effection/subscription@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@effection/subscription/-/subscription-2.0.3.tgz#ab6e56bf52663b769eb00d0022195b2e753a127d" - integrity sha512-P+bAh0iqCduvzAM+0hbn29HJ+J4TT+lkJTDydw3tI6lSe/OVX9+FJhX/zx2QW3APjFpseMJphjRiEyzf21b/Xw== - dependencies: - "@effection/core" "2.2.0" - -"@eslint/eslintrc@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.1.0.tgz#583d12dbec5d4f22f333f9669f7d0b7c7815b4d3" - integrity sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.3.1" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@humanwhocodes/config-array@^0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" - integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@mapbox/node-pre-gyp@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" - integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA== - dependencies: - detect-libc "^1.0.3" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.1" - nopt "^5.0.0" - npmlog "^4.1.2" - rimraf "^3.0.2" - semver "^7.3.4" - tar "^6.1.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@rollup/plugin-commonjs@21.0.1": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz#1e57c81ae1518e4df0954d681c642e7d94588fee" - integrity sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - -"@rollup/plugin-node-resolve@13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz#2ed277fb3ad98745424c1d2ba152484508a92d79" - integrity sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/plugin-typescript@8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz#bc1077fa5897b980fc27e376c4e377882c63e68b" - integrity sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA== - dependencies: - "@rollup/pluginutils" "^3.1.0" - resolve "^1.17.0" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@types/cross-spawn@6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@types/cross-spawn/-/cross-spawn-6.0.2.tgz#168309de311cd30a2b8ae720de6475c2fbf33ac7" - integrity sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw== - dependencies: - "@types/node" "*" - -"@types/estree@*": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/inquirer@8.2.0": - version "8.2.0" - resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-8.2.0.tgz#b9566d048f5ff65159f2ed97aff45fe0f00b35ec" - integrity sha512-BNoMetRf3gmkpAlV5we+kxyZTle7YibdOntIZbU5pyIfMdcwy784KfeZDAcuyMznkh5OLa17RVXZOGA5LTlkgQ== - dependencies: - "@types/through" "*" - rxjs "^7.2.0" - -"@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/node@*": - version "16.6.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.0.tgz#0d5685f85066f94e97f19e8a67fe003c5fadacc4" - integrity sha512-OyiZPohMMjZEYqcVo/UJ04GyAxXOJEZO/FpzyXxcH4r/ArrVoXHf4MbUrkLp0Tz7/p1mMKpo5zJ6ZHl8XBNthQ== - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/semver@7.3.9": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc" - integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ== - -"@types/through@*": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" - integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@5.12.0": - version "5.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz#bb46dd7ce7015c0928b98af1e602118e97df6c70" - integrity sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ== - dependencies: - "@typescript-eslint/scope-manager" "5.12.0" - "@typescript-eslint/type-utils" "5.12.0" - "@typescript-eslint/utils" "5.12.0" - debug "^4.3.2" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.2.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/parser@5.12.0": - version "5.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.12.0.tgz#0ca669861813df99ce54916f66f524c625ed2434" - integrity sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog== - dependencies: - "@typescript-eslint/scope-manager" "5.12.0" - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/typescript-estree" "5.12.0" - debug "^4.3.2" - -"@typescript-eslint/parser@^4.0.0": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.29.1.tgz#17dfbb45c9032ffa0fe15881d20fbc2a4bdeb02d" - integrity sha512-3fL5iN20hzX3Q4OkG7QEPFjZV2qsVGiDhEwwh+EkmE/w7oteiOvUNzmpu5eSwGJX/anCryONltJ3WDmAzAoCMg== - dependencies: - "@typescript-eslint/scope-manager" "4.29.1" - "@typescript-eslint/types" "4.29.1" - "@typescript-eslint/typescript-estree" "4.29.1" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.29.1.tgz#f25da25bc6512812efa2ce5ebd36619d68e61358" - integrity sha512-Hzv/uZOa9zrD/W5mftZa54Jd5Fed3tL6b4HeaOpwVSabJK8CJ+2MkDasnX/XK4rqP5ZTWngK1ZDeCi6EnxPQ7A== - dependencies: - "@typescript-eslint/types" "4.29.1" - "@typescript-eslint/visitor-keys" "4.29.1" - -"@typescript-eslint/scope-manager@5.12.0": - version "5.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz#59619e6e5e2b1ce6cb3948b56014d3a24da83f5e" - integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== - dependencies: - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/visitor-keys" "5.12.0" - -"@typescript-eslint/type-utils@5.12.0": - version "5.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz#aaf45765de71c6d9707c66ccff76ec2b9aa31bb6" - integrity sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q== - dependencies: - "@typescript-eslint/utils" "5.12.0" - debug "^4.3.2" - tsutils "^3.21.0" - -"@typescript-eslint/types@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.29.1.tgz#94cce6cf7cc83451df03339cda99d326be2feaf5" - integrity sha512-Jj2yu78IRfw4nlaLtKjVaGaxh/6FhofmQ/j8v3NXmAiKafbIqtAPnKYrf0sbGjKdj0hS316J8WhnGnErbJ4RCA== - -"@typescript-eslint/types@5.12.0": - version "5.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.0.tgz#5b4030a28222ee01e851836562c07769eecda0b8" - integrity sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ== - -"@typescript-eslint/typescript-estree@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.1.tgz#7b32a25ff8e51f2671ccc6b26cdbee3b1e6c5e7f" - integrity sha512-lIkkrR9E4lwZkzPiRDNq0xdC3f2iVCUjw/7WPJ4S2Sl6C3nRWkeE1YXCQ0+KsiaQRbpY16jNaokdWnm9aUIsfw== - dependencies: - "@typescript-eslint/types" "4.29.1" - "@typescript-eslint/visitor-keys" "4.29.1" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@5.12.0": - version "5.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" - integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== - dependencies: - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/visitor-keys" "5.12.0" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.12.0": - version "5.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" - integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.12.0" - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/typescript-estree" "5.12.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/visitor-keys@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.1.tgz#0615be8b55721f5e854f3ee99f1a714f2d093e5d" - integrity sha512-zLqtjMoXvgdZY/PG6gqA73V8BjqPs4af1v2kiiETBObp+uC6gRYnJLmJHxC0QyUrrHDLJPIWNYxoBV3wbcRlag== - dependencies: - "@typescript-eslint/types" "4.29.1" - eslint-visitor-keys "^2.0.0" - -"@typescript-eslint/visitor-keys@5.12.0": - version "5.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" - integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== - dependencies: - "@typescript-eslint/types" "5.12.0" - eslint-visitor-keys "^3.0.0" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - -async@0.9.x: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -command-line-args@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.0.tgz#087b02748272169741f1fd7c785b295df079b9be" - integrity sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-commands@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/command-line-commands/-/command-line-commands-3.0.2.tgz#53872a1181db837f21906b1228e260a4eeb42ee4" - integrity sha512-ac6PdCtdR6q7S3HN+JiVLIWGHY30PRYIEl2qPo+FuEuzwAUk0UYyimrngrg7FvF/mCr4Jgoqv5ZnHZgads50rw== - dependencies: - array-back "^4.0.1" - -command-line-usage@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.1.tgz#c908e28686108917758a49f45efb4f02f76bc03f" - integrity sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA== - dependencies: - array-back "^4.0.1" - chalk "^2.4.2" - table-layout "^1.0.1" - typical "^5.2.0" - -commander@8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cross-fetch@3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -ctrlc-windows@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ctrlc-windows/-/ctrlc-windows-2.0.0.tgz#53eeb3cab0e15dc04233b5ef4c5828fd6bd67b85" - integrity sha512-bpZLqGGwJ/2uLIXmhBYC4TObQlpfEeCCzmJ1At6TWFIWcY4FydkJLTolABFPUxmDYHeC9y95wdYBLa4U4PSktA== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.5" - neon-cli "^0.8.1" - -debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -effection@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/effection/-/effection-2.0.4.tgz#2ca9defcebfa75b408f83f6a16ae10ec6c70b48a" - integrity sha512-8haobRaTJbwNM32GeSS5Do0WHB/Xev94SukFtQHEli+3TTDxYwW+NQcp0lAb8J4ISzvKjL+OyodGPMEyegbjog== - dependencies: - "@effection/channel" "2.0.3" - "@effection/core" "2.2.0" - "@effection/events" "2.0.3" - "@effection/fetch" "2.0.4" - "@effection/main" "2.0.3" - "@effection/stream" "2.0.3" - "@effection/subscription" "2.0.3" - -ejs@^3.1.5: - version "3.1.6" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" - integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== - dependencies: - jake "^10.6.1" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== - -eslint-config-standard-with-typescript@21.0.1: - version "21.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-21.0.1.tgz#f4c8bb883d8dfd634005239a54c3c222746e3c64" - integrity sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw== - dependencies: - "@typescript-eslint/parser" "^4.0.0" - eslint-config-standard "^16.0.0" - -eslint-config-standard@^16.0.0: - version "16.0.3" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" - integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" - integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - -eslint-plugin-es@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" - integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== - dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" - -eslint-plugin-import@2.25.4: - version "2.25.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" - integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.2" - has "^1.0.3" - is-core-module "^2.8.0" - is-glob "^4.0.3" - minimatch "^3.0.4" - object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.12.0" - -eslint-plugin-lodash-template@0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-lodash-template/-/eslint-plugin-lodash-template-0.19.0.tgz#4b2aafec4fc2a23bbbc08325fbcb946371479666" - integrity sha512-OWcxGOkJ87lflnFDeKAhYErN1F6SQ7qLisko4n/mK3iQPT747ft2EYlI+SSt2aYGSp8fhvidsrnR7hlK9TRi0w== - dependencies: - esquery "^1.0.1" - parse5 "^6.0.0" - -eslint-plugin-node@11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" - integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== - dependencies: - eslint-plugin-es "^3.0.0" - eslint-utils "^2.0.0" - ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" - -eslint-plugin-promise@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971" - integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== - -eslint-plugin-security@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-security/-/eslint-plugin-security-1.4.0.tgz#d4f314484a80b1b613b8c8886e84f52efe1526c2" - integrity sha512-xlS7P2PLMXeqfhyf3NpqbvbnW04kN8M9NtmhpR3XGyOvt/vNKS7XPXT5EDbwKW9vCjWH4PpfQvgD/+JgN0VJKA== - dependencies: - safe-regex "^1.1.0" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz#e32e99c6cdc2eb063f204eda5db67bfe58bb4186" - integrity sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@8.9.0: - version "8.9.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.9.0.tgz#a2a8227a99599adc4342fd9b854cb8d8d6412fdb" - integrity sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q== - dependencies: - "@eslint/eslintrc" "^1.1.0" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== - dependencies: - acorn "^8.7.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.3.0" - -esquery@^1.0.1, esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -execa@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.1.1, fast-glob@^3.2.5: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastq@^1.6.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" - integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== - dependencies: - reusify "^1.0.4" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -filelist@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" - integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== - dependencies: - minimatch "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" - integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -git-config@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/git-config/-/git-config-0.0.7.tgz#a9c8a3ef07a776c3d72261356d8b727b62202b28" - integrity sha1-qcij7wendsPXImE1bYtye2IgKyg= - dependencies: - iniparser "~1.0.5" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.1.3, glob@^7.1.6: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.6.0, globals@^13.9.0: - version "13.10.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.10.0.tgz#60ba56c3ac2ca845cfbf4faeca727ad9dd204676" - integrity sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.3, globby@^11.0.4: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -handlebars@^4.7.6: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -iniparser@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/iniparser/-/iniparser-1.0.5.tgz#836d6befe6dfbfcee0bccf1cf9f2acc7027f783d" - integrity sha1-g21r7+bfv87gvM8c+fKsxwJ/eD0= - -inquirer@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" - integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.2.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -is-bigint@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.3.tgz#fc9d9e364210480675653ddaea0518528d49a581" - integrity sha512-ZU538ajmYJmzysE5yU4Y7uIrPQ2j704u+hXFiIPQExpqzzUbpe5jCPdTfmz7jXRxZdvjY3KZ3ZNenoXQovX+Dg== - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-core-module@^2.2.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" - integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== - dependencies: - has "^1.0.3" - -is-core-module@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-reference@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== - dependencies: - call-bind "^1.0.0" - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -jake@^10.6.1: - version "10.8.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" - integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== - dependencies: - async "0.9.x" - chalk "^2.4.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.19, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-promises-safe@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/make-promises-safe/-/make-promises-safe-5.1.0.tgz#dd9d311f555bcaa144f12e225b3d37785f0aa8f2" - integrity sha512-AfdZ49rtyhQR/6cqVKGoH7y4ql7XkS5HJI1lZm0/5N6CQosy1eYbBJ/qbhkKHzo17UH7M918Bysf6XB9f3kS1g== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -neo-async@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -neon-cli@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/neon-cli/-/neon-cli-0.8.3.tgz#dea3a00021a07b9ef05e73464e45c94a2bf0fd3a" - integrity sha512-I44MB8PD0AEyFr/b5icR4sX1tsjdkb2T2uWEStG4Uf5C/jzalZPn7eazbQrW6KDyXNd8bc+LVuOr1v6CGTa1KQ== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-commands "^3.0.1" - command-line-usage "^6.1.0" - git-config "0.0.7" - handlebars "^4.7.6" - inquirer "^7.3.3" - make-promises-safe "^5.1.0" - rimraf "^3.0.2" - semver "^7.3.2" - toml "^3.0.0" - ts-typed-json "^0.3.2" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse5@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" - integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -readable-stream@^2.0.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -regexpp@^3.0.0, regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.10.1, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup@2.67.2: - version "2.67.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.67.2.tgz#d95e15f60932ad21e05a870bd0aa0b235d056f04" - integrity sha512-hoEiBWwZtf1QdK3jZIq59L0FJj4Fiv4RplCO4pvCRC86qsoFurWB4hKQIjoRf3WvJmk5UZ9b0y5ton+62fC7Tw== - optionalDependencies: - fsevents "~2.3.2" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.2.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.3.0.tgz#39fe4f3461dc1e50be1475b2b85a0a88c1e938c6" - integrity sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw== - dependencies: - tslib "~2.1.0" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -scaffe@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/scaffe/-/scaffe-1.2.0.tgz#0d1c0e1bf0d1ffacf275153190e45c5d57fe2da0" - integrity sha512-IHp+tYYVt7V0FDh5REd/EqydMUBaRSIB0iJgNi5+FZTvtDOePMc6tIn/h134cMQwYHonCYYnLg0eGjnr2dRzHA== - dependencies: - ejs "^3.1.5" - fast-glob "^3.2.5" - -semver@^6.0.0, semver@^6.1.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -signal-exit@^3.0.3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" - integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.10" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" - integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== - -stacktrace-parser@^0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" - integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== - dependencies: - type-fest "^0.7.1" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^4.1.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -table-layout@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -tar@^6.1.0: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toml@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" - integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -ts-typed-json@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ts-typed-json/-/ts-typed-json-0.3.2.tgz#f4f20f45950bae0a383857f7b0a94187eca1b56a" - integrity sha512-Tdu3BWzaer7R5RvBIJcg9r8HrTZgpJmsX+1meXMJzYypbkj8NK2oJN0yvm4Dp/Iv6tzFa/L5jKRmEVTga6K3nA== - -tsconfig-paths@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" - integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - -tslib@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - -typescript@4.5.5: - version "4.5.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" - integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -uglify-js@^3.1.4: - version "3.14.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.1.tgz#e2cb9fe34db9cb4cf7e35d1d26dfea28e09a7d06" - integrity sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g== - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==