diff --git a/.gitignore b/.gitignore index 7e381e0b21..1ca0b267c4 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -.vscode \ No newline at end of file +.vscode +examples diff --git a/README.md b/README.md index b825febb86..84837d5ebd 100644 --- a/README.md +++ b/README.md @@ -28,3 +28,4 @@ Copyright (c) 2020-2022 Tauri Programme within The Commons Conservancy [typescript]: https://github.com/tauri-apps/tauri/tree/dev/tooling/api [rust]: https://github.com/tauri-apps/tauri/tree/dev/core/tauri [contributing guide]: ./.github/CONTRIBUTING.md + diff --git a/crowdin.yaml b/crowdin.yaml index c7ee16dda0..922ae3e9bf 100644 --- a/crowdin.yaml +++ b/crowdin.yaml @@ -13,13 +13,12 @@ files: [ /docs/.templates, /docs/api, - /docs/guides/faq.md, - /docs/guides/architecture, - /docs/guides/building, - /docs/guides/debugging, + /docs/guides/architecture/recipes, /docs/guides/development, + /docs/guides/debugging, + /docs/guides/testing, + /docs/guides/building, /docs/guides/distribution, /docs/guides/features, - /docs/guides/getting-started, - /docs/guides/testing, + /docs/guides/faq.md, ] diff --git a/docs/guides/features/README.md b/docs/guides/features/README.md new file mode 100644 index 0000000000..b3b17aca4f --- /dev/null +++ b/docs/guides/features/README.md @@ -0,0 +1,6 @@ +import DocCardList from '@theme/DocCardList'; +import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; + +# Features + + diff --git a/docs/guides/features/icons.md b/docs/guides/features/icons.md index e8a998047a..7396285c77 100644 --- a/docs/guides/features/icons.md +++ b/docs/guides/features/icons.md @@ -4,7 +4,7 @@ Tauri ships with a default iconset based on its logo. This is probably NOT what ## Usage -```shell +```console npx @tauri-apps/tauricon --help Description diff --git a/docs/guides/getting-started/beginning-tutorial.md b/docs/guides/getting-started/beginning-tutorial.md deleted file mode 100644 index 849b20d404..0000000000 --- a/docs/guides/getting-started/beginning-tutorial.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -sidebar_position: 3 ---- - -import Command from '@theme/Command' -import Link from '@docusaurus/Link' -import Tabs from '@theme/Tabs' -import TabItem from '@theme/TabItem' - -# Your First Tauri App - -:::caution -You must have completed all the steps required for setting up the development environment on your machine. Please see the [setup page for your operating system][prerequisites] if you haven't done this yet. -::: - -There are two ways to integrate with Tauri depending on your needs: - -- [Start a new Tauri project](#1-start-a-new-tauri-project) -- Or [add Tauri to existing project](#1-add-tauri-to-existing-project) - -### 1. Start a New Tauri Project - - - - -```shell -yarn create tauri-app -``` - - - - -```shell -npx create-tauri-app -``` - - - - -Follow the instructions and choose the web front-end framework you prefer. `create-tauri-app` creates a template project depending on your inputs. You can go straight to [check `tauri info`](#3-check-tauri-info-to-make-sure-everything-is-set-up-properly) after this. - -### 1. Add Tauri to Existing Project: - -The Tauri CLI tool helps you build your project, so install it first. - -You can install Tauri CLI [using `Node.js`](#install-tauri-cli-package-as-a-dev-dependency) or [using `Rust`](#alternatively-install-tauri-cli-as-a-cargo-subcommand) - -#### Install Tauri CLI package as a dev dependency: - -```sh -cd project-folder - -# Not required if you already have a package.json: -# yarn init -# OR -# npm init - -yarn add -D @tauri-apps/cli -# OR -npm install -D @tauri-apps/cli -``` - -:::note -You can install Tauri as both a local and a global dependency, but we recommend installing it locally. -::: - -If you decide to use Tauri as a local package with npm (not yarn), you need to add a custom script to your package.json: - -```js title=package.json -{ - // This content is just a sample - "scripts": { - "tauri": "tauri" - } -} -``` - -#### Alternatively, install Tauri CLI as a cargo subcommand: - -The following command installs `tauri-cli` as a Cargo subcommand on the cargo binary folder (by default on `$HOME/.cargo/bin`): - -```shell -cargo install tauri-cli --locked --version "^1.0.0-rc" -``` - -For more installation options, see [`cargo install`]. - -#### Install Tauri API Package as a Dependency (optional): - -The `@tauri-apps/api` package is recommended for projects using ES modules or modern build tools such as Webpack or Vite. It is the most secure way to access the Tauri APIs. - - - - -```shell -yarn add @tauri-apps/api -``` - - - - -```shell -npm install @tauri-apps/api -``` - - - - -### 2. Initialize Tauri in Your App - - - -This command places a new folder in your current working directory, `src-tauri`. - -```shell -└── src-tauri - ├── .gitignore - ├── Cargo.toml - ├── rustfmt.toml - ├── tauri.conf.json - ├── icons - │ ├── 128x128.png - │ ├── 128x128@2x.png - │ ├── 32x32.png - │ ├── Square107x107Logo.png - │ ├── Square142x142Logo.png - │ ├── Square150x150Logo.png - │ ├── Square284x284Logo.png - │ ├── Square30x30Logo.png - │ ├── Square310x310Logo.png - │ ├── Square44x44Logo.png - │ ├── Square71x71Logo.png - │ ├── Square89x89Logo.png - │ ├── StoreLogo.png - │ ├── icon.icns - │ ├── icon.ico - │ └── icon.png - └── src - ├── build.rs - ├── cmd.rs - └── main.rs -``` - -### 3. Check `tauri info` to Make Sure Everything Is Set up Properly: - - - -Which should return something like: - -``` -Environment - › OS: Ubuntu 20.04 X64 - › Node.js: 16.14.2 - › npm: 8.5.0 - › pnpm: Not installed! - › yarn: 1.22.18 - › rustup: 1.24.3 - › rustc: 1.60.0 - › cargo: 1.60.0 - › Rust toolchain: stable-x86_64-unknown-linux-gnu - -Packages - › @tauri-apps/cli [NPM]: 1.0.0-rc.8 - › @tauri-apps/api [NPM]: 1.0.0-rc.3 - › tauri [RUST]: 1.0.0-rc.6, - › tauri-build [RUST]: 1.0.0-rc.5, - › tao [RUST]: 0.7.0, - › wry [RUST]: 0.14.0, - -App - › build-type: bundle - › CSP: unset - › distDir: ../dist - › devPath: http://localhost:3000/ - › framework: React - -App directory structure - ├─ public - ├─ node_modules - ├─ src - ├─ .git - └─ src-tauri -``` - -This information can be beneficial when triaging problems. - -## Vue CLI Plugin Tauri - -If you are using Vue CLI, it is recommended to use the official [Vue CLI plugin]. - -[prerequisites]: ./prerequisites.md -[`cargo install`]: https://doc.rust-lang.org/cargo/commands/cargo-install.html#description -[vue cli plugin]: https://github.com/tauri-apps/vue-cli-plugin-tauri diff --git a/docs/guides/getting-started/prerequisites.md b/docs/guides/getting-started/prerequisites.md index 49a2333ebd..044bad2efc 100644 --- a/docs/guides/getting-started/prerequisites.md +++ b/docs/guides/getting-started/prerequisites.md @@ -1,6 +1,5 @@ --- sidebar_position: 1 -pagination_next: guides/getting-started/beginning-tutorial --- import Tabs from '@theme/Tabs'; diff --git a/docs/guides/getting-started/setup/README.mdx b/docs/guides/getting-started/setup/README.mdx new file mode 100644 index 0000000000..f143d9c3d0 --- /dev/null +++ b/docs/guides/getting-started/setup/README.mdx @@ -0,0 +1,25 @@ +--- +sidebar_position: 3 +--- + +import DocCardList from '@theme/DocCardList' +import { useCurrentSidebarCategory } from '@docusaurus/theme-common' + +# Quick Start + +Tauri is compatible with **almost every frontend stack**. Select yours and get started! + + + +:::info Missing your favorite framework? + +If you miss your favorite frontend framework or build tool, we're always looking for Getting Started guides! Read our [contributing] guidelines and help us out! + +::: + +## Don't know where to start? + +If you're unfamiliar with web development or have no favorite frontend stack you might find the [HTML/CSS/JS] guide the most helpful. It guides you through getting started with the most minimal frontend setup possible: A single HTML file. + +[html/css/js]: ./html-css-js.mdx +[contributing]: https://github.com/tauri-apps/tauri/blob/dev/.github/CONTRIBUTING.md diff --git a/docs/guides/getting-started/setup/_commands.mdx b/docs/guides/getting-started/setup/_commands.mdx new file mode 100644 index 0000000000..48917e8288 --- /dev/null +++ b/docs/guides/getting-started/setup/_commands.mdx @@ -0,0 +1,28 @@ +Tauri lets you enhance your Frontend with native capabilities. We call these [Commands][command], essentially Rust functions that you can call from your frontend JavaScript. This enables you to handle heavy processing or calls to the OS in much more performant Rust code. + +Let's make a simple example: + +```rust +#[tauri::command] +fn greet(name: &str) -> String { + format!("Hello, {}!", name) +} +``` + +A Command is just like any regular Rust function, with the addition of the `#[tauri::command]` attribute macro that allows your function to communicate with the JavaScript context. + +Lastly, we also need to tell Tauri about our newly created command so that it can route calls accordingly. This is done with the combination of the `.invoke_handler()` function and the `generate_handler![]` macro you can see below: + +```rust +fn main() { + tauri::Builder::default() + // highlight-next-line + .invoke_handler(tauri::generate_handler![greet]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} +``` + +Now we're ready to call your Command from the JavaScript frontend! + +[command]: ../../features/command.md diff --git a/docs/guides/getting-started/setup/_intro.mdx b/docs/guides/getting-started/setup/_intro.mdx new file mode 100644 index 0000000000..39e37ac06c --- /dev/null +++ b/docs/guides/getting-started/setup/_intro.mdx @@ -0,0 +1,42 @@ +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' + +Tauri is a framework to build desktop applications with any Front-end framework and a Rust core. Each app consists of two parts: + +1. Rust binary that creates the windows and exposes native functionality to those windows +2. Frontend of your choice that produces the User Interface inside the window + +In the following, we will first scaffold the Frontend, then set up the Rust project and lastly show you how to communicate between the two. + +:::tip `create-tauri-app` + +The easiest way to scaffold a new project is the [`create-tauri-app`](https://github.com/tauri-apps/create-tauri-app) utility. It will ask you a series of questions and quickly bootstrap a Tauri project for you to begin developing with. It has support for vanilla HTML/CSS/JavaScript but also many frontend frameworks like React, Vue, or Svelte. + + + + +```shell +npx create-tauri-app +``` + + + + +```shell +yarn create tauri-app +``` + + + + +```shell +pnpm create tauri-app +``` + + + +::: + +[cargo]: https://doc.rust-lang.org/cargo/ +[prerequisites]: ../prerequisites.md +[tauri-cli]: ../tauri-cli.md \ No newline at end of file diff --git a/docs/guides/getting-started/setup/_tauri-init.mdx b/docs/guides/getting-started/setup/_tauri-init.mdx new file mode 100644 index 0000000000..5673e97557 --- /dev/null +++ b/docs/guides/getting-started/setup/_tauri-init.mdx @@ -0,0 +1,76 @@ +import Command from '@theme/Command' + +## Create the Rust Project + +At the heart of every Tauri app is a Rust binary that manages windows, the webview and calls to the operating system through a Rust crate called `tauri`. This project is managed by [Cargo], the official package manager and general-purpose build tool for Rust. Our Tauri CLI uses Cargo under the hood so you rarely need to interact with it directly. Cargo has many more useful features that are not exposed through our CLI, such as testing, linting, and formatting, so please refer to their [official docs][cargo commands] for more. + +To scaffold a minimal Rust project that is pre-configured to use Tauri, open a terminal and run the following command: + + + +It will walk you through a series of questions: + +1. **What is your app name?** + This will be the name of your final bundle and what the OS will call your app. You can use any name you want here. + +2. **What should the window title be?** + This will be the title of the default main window. You can use any title you want here. + +3. **Where are your web assets (HTML/CSS/JS) located relative to the "/src-tauri/tauri.conf.json" file that will be created?** + This is the path that Tauri will load your frontend assets from when building for **production**. + +

{props.webAssets}

+ +4. **What is the URL of your dev server?** + This can be either a URL or a file path that Tauri will load during **development**. + {props.devServer} + +:::info + +If you're familiar with Rust, you will notice that `tauri init` looks and works a lot like `cargo init`. You can just use `cargo init` and add the necessary Tauri dependencies if you prefer a fully manual setup. + +::: + +The `tauri init` command generates a folder called `src-tauri`. It's a convention for Tauri apps to place all core-related files into this folder. Let's quickly run through the contents of this folder: + +- **`Cargo.toml`** + + Cargo's manifest file. You can declare Rust crates your app depends on, metadata about your app, and much more. For the full reference see [Cargo's Manifest Format][manifest-format]. + +- **`tauri.conf.json`** + + This file lets you configure and customize aspects of your Tauri application from the name of your app to the list of allowed APIs. See [Tauri's API Configuration][api config] for the full list of supported options and in-depth explanations for each. + +- **`src/main.rs`** + + This is the entrypoint to your Rust program and the place where we bootstrap into Tauri. You will find two sections in it: + + ```rust title=src/main.rs + #![cfg_attr( + all(not(debug_assertions), target_os = "windows"), + windows_subsystem = "windows" + )] + + fn main() { + tauri::Builder::default() + .run(tauri::generate_context!()) + .expect("error while running tauri application"); + } + ``` + + The line beginning with [`cfg! macro`][cfg macro] serves just one purpose: it disables the command prompt window that would normally pop up on Windows if you run a bundled app. If you're on Windows, try to comment it out and see what happens. + + The `main` function is the entry point and the first function that gets invoked when your program runs. + +- **`icons`** + + Chances are you want a snazzy icon for your app! To get you going quickly, we included a set of default icons. You should switch these out before publishing your application. Learn more about the various icon formats in Tauri's [icons feature guide][icons]. + +[manifest-format]: https://doc.rust-lang.org/cargo/reference/manifest.html +[cfg macro]: https://doc.rust-lang.org/rust-by-example/attribute/cfg.html +[api config]: ../../../api/config +[icons]: ../../features/icons +[prerequisites]: ../prerequisites.md +[tauri-cli]: ../tauri-cli.md +[cargo]: https://doc.rust-lang.org/cargo/ +[cargo commands]: https://doc.rust-lang.org/cargo/commands/index.html diff --git a/docs/guides/getting-started/setup/html-css-js.mdx b/docs/guides/getting-started/setup/html-css-js.mdx new file mode 100644 index 0000000000..bacdcfdbf6 --- /dev/null +++ b/docs/guides/getting-started/setup/html-css-js.mdx @@ -0,0 +1,129 @@ +--- +description: Build a Tauri app from scratch using just HTML, CSS, and JavaScript +pagination_next: guides/architecture/README +--- + +import TauriInit from './_tauri-init.mdx' +import Commands from './_commands.mdx' +import Intro from './_intro.mdx' +import Command from '@theme/Command' +import Image from '@theme/IdealImage' + +# HTML/CSS/JavaScript + +This guide will walk you through creating your first Tauri app using just HTML, CSS, and JavaScript. This is probably the best place to start if you are new to web development. + + + +Here's a preview of what we will be building: + + + + +:::info + +Before we continue, make sure you have completed the [prerequisites] and installed the [Tauri CLI][tauri-cli] to have a working development environment. + +::: + +## Create the Frontend + +We will create a very minimal UI using an HTML file. To keep things tidy though, let's create a separate folder for it: + +```shell +mkdir ui +``` + +Next, create an `index.html` file inside of that folder with the following contents: + +```html title=index.html + + + + + + + Document + + +

Welcome from Tauri!

+ + +``` + +We will leave the UI at this for this Guide, but feel free to play around with more content or add styling through CSS. + + + +And that's it! Now you can run the following command in your terminal to start a development build of your app: + + + + + + +## Invoke Commands + + + +We would normally be recommending the [`@tauri-apps/api`] package here, but since we're not using a bundler for this guide, please enable [`withGlobalTauri`] in your `tauri.conf.json` file: + +```json +{ + "build": { + "beforeBuildCommand": "", + "beforeDevCommand": "", + "devPath": "..", + "distDir": "..", + // highlight-next-line + "withGlobalTauri": true + }, +``` + +This will inject a pre-bundled version of the API functions into your frontend. + +You can now modify your `index.html` file to call your Command: + +```html title=index.html + + + + + + + Document + + +

Welcome from Tauri!

+ // highlight-start + + // highlight-end + + +``` + +:::tip + +If you want to know more about the communication between Rust and JavaScript, please read the Tauri [Inter-Process Communication][inter-process-communication] guide. + +::: + +[inter-process-communication]: ../../architecture/inter-process-communication +[cargo]: https://doc.rust-lang.org/cargo/ +[prerequisites]: ../prerequisites.md +[tauri-cli]: ../tauri-cli.md +[`withglobaltauri`]: ../../../api/config#buildconfig.withglobaltauri +[`@tauri-apps/api`]: ../../../api/js/ diff --git a/docs/guides/getting-started/setup/vite.mdx b/docs/guides/getting-started/setup/vite.mdx new file mode 100644 index 0000000000..5f6223015d --- /dev/null +++ b/docs/guides/getting-started/setup/vite.mdx @@ -0,0 +1,187 @@ +--- +description: Build a Tauri app using Vite as the frontend build tool +pagination_next: guides/architecture/README +--- + +import TauriInit from './_tauri-init.mdx' +import Commands from './_commands.mdx' +import Intro from './_intro.mdx' +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' +import Command from '@theme/Command' +import Image from '@theme/IdealImage' + +# Vite + +This guide will walk you through creating your first Tauri app using the frontend build tool [Vite]. + + + +Here's a preview of what we will be building: + + + + +:::info + +Before we continue, make sure you have completed the [prerequisites] and installed the [Tauri CLI][tauri-cli] to have a working development environment. + +::: + +## Create the Frontend + +[Vite] is a frontend bundler and build tool meaning it provides various quality-of-life features such as _Hot Module Reloading_ (HMR) during development, but it also converts your source code into optimized HTML, CSS and JavaScript when building for production. We recommend Vite for it's speed, easy configurability and [large ecosystem of plugins][awesome-vite]. + +Vite comes with a scaffolding utility similar to `create-tauri-app` that can quickly setup a new project from a number of pre-defined templates. You can choose from many frontend frameworks like React, Svelte or Vue. For this guide we will select the `vanilla-ts` template to create a simple project _without_ any frontend framework. + + + + +```shell +npm create vite@latest +``` + + + + +```shell +yarn create vite +``` + + + + +```shell +pnpm create vite +``` + + + + +1. **Project name:** + This will be the name of your JavaScript project. Corresponds to the name of the folder this utility will create but has otherwise no effect on your app. You can use any name you want here. + +2. **Select a framework:** + If you plan on using a frontend framework later, this is where you can select it. For this guide, we assume you choose `vanilla`. + +3. **Select a variant:** + Vite offers [TypeScript] and vanilla JavaScript variants for all templates, and you can select the variant here. We **strongly** recommend TypeScript as it helps you write more secure, maintainable code faster and more efficiently. For this guide, we assume you choose `vanilla-ts`. + +Before we move on, let's quickly customize our `vite.config.ts` file, so you get the best compatibility with Tauri! + +```typescript title=vite.config.ts +import { defineConfig } from 'vite' + +export default defineConfig({ + // prevent vite from obscuring rust errors + clearScreen: false, + // Tauri expects a fixed port, fail if that port is not available + server: { + port: 3000, + strictPort: true, + }, + // to make use of `TAURI_PLATFORM`, `TAURI_ARCH`, `TAURI_FAMILY`, + // `TAURI_PLATFORM_VERSION`, `TAURI_PLATFORM_TYPE` and `TAURI_DEBUG` + // env variables + envPrefix: ['VITE_', 'TAURI_'], + build: { + // Tauri supports es2021 + target: ['es2021', 'chrome97', 'safari13'], + // don't minify for debug builds + minify: !process.env.TAURI_DEBUG && 'esbuild', + // produce sourcemaps for debug builds + sourcemap: !!process.env.TAURI_DEBUG, + }, +}) +``` + + + +Now that we have scaffolded our Frontend and initialized the Rust project you're almost ready to run your App. +But before you do, let's quickly configure Tauri so it **automatically** start's the vite development server when you type `tauri dev` and automatically runs the build script when you run `tauri build`: + +```json title=src-tauri/tauri.conf.json +{ + "build": { + // highlight-start + // The Tauri CLI will execute this command when you run `tauri build`. + // This is the place to bundle your frontend and place html,css, and js files into the `distDir`. + "beforeBuildCommand": "npm run build", + // The Tauri CLI will execute this command when you run `tauri dev`. + // This should start your development server. + "beforeDevCommand": "npm run dev", + // highlight-end + "devPath": "http://localhost:3000", + "distDir": "../dist" + }, +``` + +And that's it! Now you can run the following command in your terminal to start a development build of your app: + + + + + + +## Invoke Commands + + + +To call our newly created command we will use the [`@tauri-apps/api`] JavaScript library. It provides access to core functionality such as windows, the filesystem, and more through convenient JavaScript abstractions. You can install it using your favorite JavaScript package manager: + + + + +```shell +npm install @tauri-apps/api +``` + + + + +```shell +yarn add @tauri-apps/api +``` + + + + +```shell +pnpm add @tauri-apps/api +``` + + + + +With the library installed, you can modify your `index.html` file to call the Command: + +```typescript title=src/main.ts +import { invoke } from '@tauri-apps/api' + +// now we can call our Command! +// Right-click the application background and open the developer tools. +// You will see "Hello, World!" printed in the console! +invoke('greet', { name: 'World' }) + // `invoke` returns a Promise + .then((response) => console.log(response)) +``` + +:::tip + +If you want to know more about the communication between Rust and JavaScript, please read the Tauri [Inter-Process Communication][inter-process-communication] guide. + +::: + + + +[vite]: https://vitejs.dev +[cargo]: https://doc.rust-lang.org/cargo/ +[typescript]: https://www.typescriptlang.org +[prerequisites]: ../prerequisites.md +[tauri-cli]: ../tauri-cli.md +[awesome-vite]: https://github.com/vitejs/awesome-vite#plugins +[`@tauri-apps/api`]: ../../../api/js/ +[inter-process-communication]: ../../architecture/inter-process-communication diff --git a/docs/guides/getting-started/tauri-cli.md b/docs/guides/getting-started/tauri-cli.md new file mode 100644 index 0000000000..44c0b32c39 --- /dev/null +++ b/docs/guides/getting-started/tauri-cli.md @@ -0,0 +1,103 @@ +--- +sidebar_position: 2 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Install Tauri CLI + +The Tauri CLI is the heart of the developent process. It runs Cargo to compile the Rust core, starts your frontend development server, bundles all your assets, sidecars and resources when building for production, and even takes care of code-signing! + +The CLI is available from a number of sources, depending on your preference. + +## Cargo + +As the CLI is written in Rust, it is naturally available through [crates.io](https://crates.io/crates/tauri-cli) and installable with Cargo using the following command: + +```shell +cargo install tauri-cli --version "^1.0.0-rc" +``` + +After the installation has finished you can invoke it as a cargo subcommand: + +```shell +cargo tauri --help +``` + +:::note +Even though installing the CLI through Cargo is the preferred option, it has to compile the whole binary from scratch when you install it. If you're in a CI environment or on a very slow machine you're better off choosing another installation method! +::: + +## NPM + +We also compile the CLI as a native Node.js addon and distribute it [via NPM](https://www.npmjs.com/package/@tauri-apps/cli). This has a number of advantages compared to the Cargo installation method: + +1. The CLI is pre-compiled, leading to much faster install times +2. You can pin a specific version in your `package.json` file +3. If you develop custom tooling around Tauri, you can import the CLI as a regular JavaScript module + +You can install the CLI using a JavaScript manager: + + + + +```shell +npm install --save-dev @tauri-apps/cli +``` + + + + +```shell +yarn add -D @tauri-apps/cli +``` + + + + +```shell +pnpm add -D @tauri-apps/cli +``` + + + + +After the installation has finished you can invoke the CLI using your package manager: + + + + +When using npm, you first need to add `tauri` as a script to your `package.json`: + +```json title=package.json +{ + // This content is just a sample + "scripts": { + "tauri": "tauri" + } +} +``` + +then you can call the CLI like any regular script: + +```shell +npm run tauri -- --help +``` + + + + +```shell +yarn tauri --help +``` + + + + +```shell +pnpm tauri --help +``` + + + diff --git a/docusaurus.config.js b/docusaurus.config.js index b543aeb4f9..46e49866d2 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -323,6 +323,7 @@ const siteConfig = { ], }, ], + ['@docusaurus/plugin-ideal-image', {}], ], } diff --git a/package.json b/package.json index 4a7c96df9f..fc9fd95521 100644 --- a/package.json +++ b/package.json @@ -15,14 +15,15 @@ "dependencies": { "@crowdin/cli": "3.7.8", "@docusaurus/core": "2.0.0-beta.21", + "@docusaurus/plugin-ideal-image": "^2.0.0-beta.21", "@docusaurus/plugin-pwa": "2.0.0-beta.21", "@docusaurus/preset-classic": "2.0.0-beta.21", "@docusaurus/theme-common": "2.0.0-beta.21", "@fontsource/rubik": "4.5.10", "@lottiefiles/lottie-player": "1.5.7", "@mdx-js/react": "1.6.22", - "bootstrap-icons": "1.8.3", "apexcharts": "3.35.3", + "bootstrap-icons": "1.8.3", "classnames": "2.3.1", "docs-searchbar.js": "2.1.2", "mdx-mermaid": "1.2.3", diff --git a/src/css/custom.css b/src/css/custom.css index 54df7477fa..8bfe66f8ad 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -19,6 +19,8 @@ --ifm-font-size-base: 95%; --ifm-contents-border-color: var(--ifm-color-emphasis-300); --ifm-card-background-color: #f6f6f6; + + --docusaurus-highlighted-code-line-bg: white; } [data-theme='dark'] { @@ -32,6 +34,8 @@ --ifm-card-background-color: #2f2f2f; + --docusaurus-highlighted-code-line-bg: rgb(100, 100, 100); + --tauri-orange: #ffc131; } diff --git a/src/pages/about/architecture.md b/src/pages/about/architecture.md index 05c923612a..04db7dd152 100644 --- a/src/pages/about/architecture.md +++ b/src/pages/about/architecture.md @@ -152,7 +152,7 @@ Here you may peruse our [Software Bill of Materials](https://app.fossa.com/proje ## Next Steps -[Your First Tauri App](/v1/guides/getting-started/beginning-tutorial) +[Your First Tauri App](/v1/guides/getting-started/setup) [Development Cycle](/v1/guides/development/development-cycle) diff --git a/src/pages/about/intro.md b/src/pages/about/intro.md index 6d72609f42..ace5c03569 100644 --- a/src/pages/about/intro.md +++ b/src/pages/about/intro.md @@ -6,7 +6,7 @@ id: intro Tauri is a toolkit that helps developers make applications for the major desktop platforms - using virtually any frontend framework in existence. The core is built with Rust, and the CLI leverages Node.js making Tauri a genuinely polyglot approach to creating and maintaining great apps. -If you want to know more about the technical details, then please visit the [Introduction](/v1/guides/getting-started/beginning-tutorial). If you want to know more about this project's philosophy - then keep reading. +If you want to know more about the technical details, then please visit the [Introduction](/v1/guides/getting-started/setup). If you want to know more about this project's philosophy - then keep reading.
diff --git a/src/pages/index.js b/src/pages/index.js index 4258bc9af1..760d3a8678 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -20,7 +20,7 @@ function Cards() { message: "Compatibility with any front-end framework means you don't have to change your stack.", }), - link: '/guides/getting-started/beginning-tutorial', + link: '/guides/getting-started/setup', isDoc: true, linkText: translate({ message: 'Learn More' }), imageUrl: 'img/index/illustrations/brownfield.svg', @@ -505,7 +505,7 @@ export default function App() {
-

+

Roadmap

diff --git a/src/theme/Command.js b/src/theme/Command.js index 993f8f78b9..dc4b076a56 100644 --- a/src/theme/Command.js +++ b/src/theme/Command.js @@ -5,10 +5,10 @@ import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' const types = [ - { label: 'Yarn', value: 'yarn tauri ' }, { label: 'npm', value: 'npm run tauri ' }, + { label: 'yarn', value: 'yarn tauri ' }, + { label: 'pnpm', value: 'pnpm tauri ' }, { label: 'cargo', value: 'cargo tauri ' }, - { label: 'Global', value: 'tauri ' }, ] function insertDashDashBeforeOption (value, name) { diff --git a/static/img/guides/html-css-js-dark.png b/static/img/guides/html-css-js-dark.png new file mode 100644 index 0000000000..c90f239296 Binary files /dev/null and b/static/img/guides/html-css-js-dark.png differ diff --git a/static/img/guides/html-css-js-dev-dark.png b/static/img/guides/html-css-js-dev-dark.png new file mode 100644 index 0000000000..6d35e8814a Binary files /dev/null and b/static/img/guides/html-css-js-dev-dark.png differ diff --git a/static/img/guides/html-css-js-dev-light.png b/static/img/guides/html-css-js-dev-light.png new file mode 100644 index 0000000000..bf61f810bc Binary files /dev/null and b/static/img/guides/html-css-js-dev-light.png differ diff --git a/static/img/guides/html-css-js-light.png b/static/img/guides/html-css-js-light.png new file mode 100644 index 0000000000..a84b2d5992 Binary files /dev/null and b/static/img/guides/html-css-js-light.png differ diff --git a/static/img/guides/vite-dark.png b/static/img/guides/vite-dark.png new file mode 100644 index 0000000000..675c5fdfc0 Binary files /dev/null and b/static/img/guides/vite-dark.png differ diff --git a/static/img/guides/vite-dev-dark.png b/static/img/guides/vite-dev-dark.png new file mode 100644 index 0000000000..69168c9a05 Binary files /dev/null and b/static/img/guides/vite-dev-dark.png differ diff --git a/static/img/guides/vite-dev-light.png b/static/img/guides/vite-dev-light.png new file mode 100644 index 0000000000..aa15d4ee80 Binary files /dev/null and b/static/img/guides/vite-dev-light.png differ diff --git a/static/img/guides/vite-light.png b/static/img/guides/vite-light.png new file mode 100644 index 0000000000..9ed774a169 Binary files /dev/null and b/static/img/guides/vite-light.png differ diff --git a/yarn.lock b/yarn.lock index 9b9e581dce..48b90c6015 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1498,6 +1498,17 @@ chalk "^4.1.2" tslib "^2.4.0" +"@docusaurus/lqip-loader@2.0.0-beta.21": + version "2.0.0-beta.21" + resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-2.0.0-beta.21.tgz#be6d92bd37f6920497e2b23602192c8b90be32ab" + integrity sha512-Y1q8xwKS2BFdxk1/CgJRoT62LK2RB3uFtdCl0QER2qkJII59BPU4gE9VcPqKOemQKBIVYGh2p6rFUAwTc9Q8TQ== + dependencies: + "@docusaurus/logger" "2.0.0-beta.21" + file-loader "^6.2.0" + lodash "^4.17.21" + sharp "^0.30.5" + tslib "^2.4.0" + "@docusaurus/mdx-loader@2.0.0-beta.21": version "2.0.0-beta.21" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.21.tgz#52af341e21f22be882d2155a7349bea10f5d77a3" @@ -1616,6 +1627,22 @@ "@docusaurus/utils-validation" "2.0.0-beta.21" tslib "^2.4.0" +"@docusaurus/plugin-ideal-image@^2.0.0-beta.21": + version "2.0.0-beta.21" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-2.0.0-beta.21.tgz#6c73bc8a9594c5c095b90d3a580bedfb1973457f" + integrity sha512-Q0hDiHmc5UzoXIRnwRt7+Cd4qaev3j6h/I33g8PzFClsqEkfIeaxpddk6kapusHTW+Ds46BtRV3gUnJ/c9DqTg== + dependencies: + "@docusaurus/core" "2.0.0-beta.21" + "@docusaurus/lqip-loader" "2.0.0-beta.21" + "@docusaurus/responsive-loader" "^1.7.0" + "@docusaurus/theme-translations" "2.0.0-beta.21" + "@docusaurus/utils-validation" "2.0.0-beta.21" + "@endiliey/react-ideal-image" "^0.0.11" + react-waypoint "^10.1.0" + sharp "^0.30.5" + tslib "^2.4.0" + webpack "^5.72.1" + "@docusaurus/plugin-pwa@2.0.0-beta.21": version "2.0.0-beta.21" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-pwa/-/plugin-pwa-2.0.0-beta.21.tgz#190b97e2ca7404cb645c41194440b65b4b1e369b" @@ -1678,6 +1705,13 @@ "@types/react" "*" prop-types "^15.6.2" +"@docusaurus/responsive-loader@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@docusaurus/responsive-loader/-/responsive-loader-1.7.0.tgz#508df2779e04311aa2a38efb67cf743109afd681" + integrity sha512-N0cWuVqTRXRvkBxeMQcy/OF2l7GN8rmni5EzR3HpwR+iU2ckYPnziceojcxvvxQ5NqZg1QfEW0tycQgHp+e+Nw== + dependencies: + loader-utils "^2.0.0" + "@docusaurus/theme-classic@2.0.0-beta.21": version "2.0.0-beta.21" resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.21.tgz#6df5b9ea2d389dafb6f59badeabb3eda060b5017" @@ -1802,6 +1836,11 @@ url-loader "^4.1.1" webpack "^5.72.1" +"@endiliey/react-ideal-image@^0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@endiliey/react-ideal-image/-/react-ideal-image-0.0.11.tgz#dc3803d04e1409cf88efa4bba0f67667807bdf27" + integrity sha512-QxMjt/Gvur/gLxSoCy7VIyGGGrGmDN+VHcXkN3R2ApoWX0EYUE+hMgPHSW/PV6VVebZ1Nd4t2UnGRBDihu16JQ== + "@fontsource/rubik@4.5.10": version "4.5.10" resolved "https://registry.yarnpkg.com/@fontsource/rubik/-/rubik-4.5.10.tgz#da291ed751850d9f79d957a23369125aacb20f03" @@ -2845,6 +2884,11 @@ base16@^1.0.0: resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== +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== + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -2860,6 +2904,15 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bl@^4.0.3: + 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" + bluebird@^3.7.1: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -2974,6 +3027,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +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.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" @@ -3153,7 +3214,7 @@ chokidar@^3.4.2, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.4: +chownr@^1.1.1, chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -3249,11 +3310,27 @@ color-name@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: +color-name@^1.0.0, 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== +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + colord@^2.9.1: version "2.9.2" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" @@ -3361,6 +3438,11 @@ consola@^2.15.3: resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== +"consolidated-events@^1.1.0 || ^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/consolidated-events/-/consolidated-events-2.0.2.tgz#da8d8f8c2b232831413d9e190dc11669c79f4a91" + integrity sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ== + content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" @@ -4175,6 +4257,13 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -4258,6 +4347,11 @@ detab@2.0.4: dependencies: repeat-string "^1.5.4" +detect-libc@^2.0.0, detect-libc@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + detect-node@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" @@ -4496,7 +4590,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.1.0: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4694,6 +4788,11 @@ exenv@^1.2.0: resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + express@^4.17.3: version "4.18.1" resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" @@ -4943,6 +5042,11 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -5050,6 +5154,11 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + github-slugger@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" @@ -5518,6 +5627,11 @@ idb@^6.1.4: resolved "https://registry.yarnpkg.com/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b" integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw== +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@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" @@ -5576,7 +5690,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, 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== @@ -5655,6 +5769,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -6694,6 +6813,11 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + mini-create-react-context@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" @@ -6735,7 +6859,7 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -6755,6 +6879,11 @@ minizlib@^1.3.3: dependencies: minipass "^2.9.0" +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@^0.5.5: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -6805,6 +6934,11 @@ nanoid@^3.3.4: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -6833,6 +6967,18 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-abi@^3.3.0: + version "3.22.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.22.0.tgz#00b8250e86a0816576258227edbce7bbe0039362" + integrity sha512-u4uAs/4Zzmp/jjsD9cyFYDXeISfUWaAVWshPmDZOFOv4Xl4SbzTXm53I04C2uRueYJ+0t5PEtLH/owbn2Npf/w== + dependencies: + semver "^7.3.5" + +node-addon-api@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.0.0.tgz#7d7e6f9ef89043befdb20c1989c905ebde18c501" + integrity sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA== + node-emoji@^1.10.0: version "1.11.0" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" @@ -7499,6 +7645,24 @@ postcss@^8.3.11, postcss@^8.4.13, postcss@^8.4.14, postcss@^8.4.7: picocolors "^1.0.0" source-map-js "^1.0.2" +prebuild-install@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" @@ -7657,7 +7821,7 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.8: +rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -7753,6 +7917,11 @@ react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +"react-is@^17.0.1 || ^18.0.0": + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + react-is@^18.0.0: version "18.1.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" @@ -7863,10 +8032,21 @@ react-textarea-autosize@^8.3.2: use-composed-ref "^1.3.0" use-latest "^1.2.1" +react-waypoint@^10.1.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/react-waypoint/-/react-waypoint-10.3.0.tgz#fcc60e86c6c9ad2174fa58d066dc6ae54e3df71d" + integrity sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ== + dependencies: + "@babel/runtime" "^7.12.5" + consolidated-events "^1.1.0 || ^2.0.0" + prop-types "^15.0.0" + react-is "^17.0.1 || ^18.0.0" + react@18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: loose-envify "^1.1.0" @@ -7883,7 +8063,7 @@ readable-stream@^2.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1: +readable-stream@^3.0.6, readable-stream@^3.1.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== @@ -8235,7 +8415,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.1, 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== @@ -8440,6 +8620,20 @@ shallowequal@^1.1.0: resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== +sharp@^0.30.5: + version "0.30.6" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.30.6.tgz#02264e9826b5f1577509f70bb627716099778873" + integrity sha512-lSdVxFxcndzcXggDrak6ozdGJgmIgES9YVZWtAFrwi+a/H5vModaf51TghBtMPw+71sLxUsTy2j+aB7qLIODQg== + dependencies: + color "^4.2.3" + detect-libc "^2.0.1" + node-addon-api "^5.0.0" + prebuild-install "^7.1.0" + semver "^7.3.7" + simple-get "^4.0.1" + tar-fs "^2.1.1" + tunnel-agent "^0.6.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -8480,6 +8674,27 @@ signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0, simple-get@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + sirv@^1.0.7: version "1.0.19" resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" @@ -8872,6 +9087,27 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== +tar-fs@^2.0.0, tar-fs@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar@^4.4.8: version "4.4.19" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" @@ -9010,6 +9246,13 @@ tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + type-fest@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860"