diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index aa0f9494c1f..2903eb255f6 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -25,9 +25,10 @@ jobs:
run: npm ci --legacy-peer-deps
- name: Lint
run: npm run lint
- # Lint changes should be pushed
- # to the branch before the branch
- # is merge eligible.
+ - name: Spell Check
+ run: npm run spellcheck
+ # Lint and spell check changes should be pushed
+ # to the branch before the branch is merge eligible.
- name: Check Diff
run: git diff --exit-code
shell: bash
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 327ea5004e8..0931f6f983c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -4,6 +4,9 @@ Thanks for your interest in contributing to Ionic's documentation! :tada: Check
- [Contributing Guide](#contributing-guide)
- [Development Workflow](#development-workflow)
+ - [Previewing Changes](#previewing-changes)
+ - [Linting Documentation](#linting-documentation)
+ - [Spell Check](#spell-check)
- [Using VS Code on Windows](#using-vs-code-on-windows)
- [Project Structure](#project-structure)
- [Directories](#directories)
@@ -12,7 +15,6 @@ Thanks for your interest in contributing to Ionic's documentation! :tada: Check
- [Translation](#translation)
- [Reporting Issues](#reporting-issues)
- [Pull Request Guidelines](#pull-request-guidelines)
-
- [Deploying](#deploying)
- [License](#license)
@@ -20,6 +22,8 @@ Thanks for your interest in contributing to Ionic's documentation! :tada: Check
## Development Workflow
+### Previewing Changes
+
In order to run the documentation locally, install the dependencies and run the development server:
```sh
@@ -27,7 +31,61 @@ $ npm install --legacy-peer-deps
$ npm start
```
-> **Note**: certain versions of npm (5-8) and Node.js (10-16) are required to run certain scripts.
+> [!NOTE]
+> Certain versions of npm (5-8) and Node.js (10-16) are required to run certain scripts.
+
+### Linting Documentation
+
+This repository uses [Prettier](https://prettier.io/), an opinionated code formatter, in order to keep consistent formatting throughout the documentation. Run the following command to automatically fix all formatting, and then push any changes:
+
+```
+npm run lint
+```
+
+### Spell Check
+
+This repository uses [cspell](https://cspell.org/), a spell checker for code, to automatically flag any spelling errors. Run the following command to see any spelling errors:
+
+```
+npm run spellcheck
+```
+
+> [!NOTE]
+> Any spelling errors will need to be fixed manually. There are various ways to ignore words or sections that were flagged erroneously. These are listed below.
+
+#### Ignoring words
+
+**To ignore:**
+
+- A **specific word**, add it to the following file: `cspell-wordlist.txt`
+ - For example, `Ionicons` is flagged as an unknown word. Since this is the name of our software, it has been added to this file to be ignored.
+- A **directory** or anything matching a **regular expression**, update the following file: `cspell.json`
+ - For example, we don't want to flag anything inside of code ticks (`
) or code blocks (```
), so there are regular expressions added to ignore anything inside of these.
+- An **entire line**, add the following comment above it:
+ ```markdown
+
+ ```
+- **Multiple lines**, add comments above and below the lines to be ignored:
+
+ ```markdown
+
+
+
Everything inside of these comments will be ignored by the spell checkr. Proofread your own words carefully.
+
+
+ ```
+
+> [!IMPORTANT]
+> You need to have line breaks between the `cspell` comments and any HTML elements,
+> otherwise the build will error with `Module build failed`.
+
+#### Tips
+
+Before adding a word or section to be ignored, see if there is a way to make it pass the spell check. Technical terms that are part of an API may need to be wrapped in code formatting. For example, the word `keydown` is flagged as an unknown word by the spell checker, but this is a [Web API event](https://developer.mozilla.org/en-US/docs/Web/API/Element/keydown_event). We can wrap any mentions of `keydown` in two backticks (\`keydown\`
) in order to avoid it being flagged by the spell checker.
+
+Comments disabling the next line or entire sections of documentation are useful for making the spell checker ignore people's names.
+
+In general, we should try to avoid ignoring words unless they are technical terms that are used throughout the documentation and wouldn't necessarily make sense formatted as code.
---
@@ -87,6 +145,8 @@ We use Crowdin for our translation service. You can participate in the translati
_Please submit translation issues to the Crowdin page and not the Ionic Docs GitHub repo._
+
+
The Japanese translation of the docs were built by an independent team, lead by [rdlabo](https://github.com/rdlabo) and can be found and contributed to on the [ionic-jp group's `ionic-docs` project page](https://github.com/ionic-jp/ionic-docs).
## Reporting Issues
@@ -100,7 +160,8 @@ If the issue you're reporting is a bug, please be sure it is an issue with the I
- OS and browser versions
- If possible, a demo repo or CodePen/CodeSandbox
-> **Note**: Some [reference content](#reference-content) is pulled from other Ionic repos. In that case, please submit your issue on the docs repo with a link to the repo where the content lives.
+> [!NOTE]
+> Some [reference content](#reference-content) is pulled from other Ionic repos. In that case, please submit your issue on the docs repo with a link to the repo where the content lives.
---
@@ -110,20 +171,6 @@ When submitting pull requests, please keep the scope of your change contained to
---
-
-
## Deploying
The Ionic documentation's `main` branch is deployed automatically and separately from the [Ionic site](https://github.com/ionic-team/ionic-site) itself. The Ionic site then uses a proxy for paths under `/docs` to request the deployed documentation.
diff --git a/cspell-wordlist.txt b/cspell-wordlist.txt
new file mode 100644
index 00000000000..607ba8200db
--- /dev/null
+++ b/cspell-wordlist.txt
@@ -0,0 +1,80 @@
+Appflow
+Codepen
+Firestore
+Genymotion
+Hygen
+Ionicon
+Ionicons
+Logcat
+Maskito
+Pluralsight
+Swiper
+Udemy
+Vetur
+Wistia
+
+actionsheet
+fabs
+datetime
+datetimes
+datetimepicker
+infinitescroll
+searchbar
+searchbars
+sidemenu
+textarea
+textareas
+
+appstore
+authed
+autogrow
+automations
+autoplay
+comparewith
+composables
+engageable
+flexbox
+frontmatter
+fullscreen
+geolocation
+interactives
+isopen
+jank
+janky
+jarsigner
+jsdelivr
+keyframes
+keytool
+lifecycles
+localstorage
+mobileweb
+phablet
+playstore
+preconfigured
+preflighted
+proxying
+quickstart
+retargeted
+runtimes
+scroller
+subcomponent
+subcomponents
+swipeable
+templating
+transpiling
+treeshaking
+triaging
+typeahead
+unminified
+unsanitized
+viewports
+webapps
+webviews
+xlarge
+xsmall
+
+allowtransparency
+mozallowfullscreen
+msallowfullscreen
+oallowfullscreen
+webkitallowfullscreen
diff --git a/cspell.json b/cspell.json
new file mode 100644
index 00000000000..5fcd46d4140
--- /dev/null
+++ b/cspell.json
@@ -0,0 +1,25 @@
+{
+ "dictionaries": ["custom-words"],
+ "dictionaryDefinitions": [
+ {
+ "name": "custom-words",
+ "path": "./cspell-wordlist.txt",
+ "addWords": true
+ }
+ ],
+ "ignoreRegExpList": [
+ "/(```+)[\\s\\S]+?\\1/g",
+ "`([^`]*)`",
+ "/:[a-zA-Z0-9-_\\+]+:/g"
+ ],
+ "ignorePaths": [
+ "docs/cli",
+ "docs/native",
+ "versioned_docs/**/api",
+ "versioned_docs/**/cli",
+ "versioned_docs/**/native"
+ ],
+ "flagWords": [
+ "hte"
+ ]
+}
diff --git a/docs/README.md b/docs/README.md
index 2da29748116..12005305278 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -4,7 +4,7 @@ The `/docs` folder houses all markdown files. The page structure loosely maps to
## Versioning
-This folder can also contain components, assets, and whatever else is meant to be versioned when the docusaurus versioning script is run. For example, if there is a page component that is only relevant to the `layout` section in the current version of Ionic, it could be added to a `_components/` folder in `docs/layout/`. When the versioning script is run, the component will be copied to `versioned_docs/verion-{X}/layout/_components/` and there will now be a separate component in `docs/layout/_components/` that can be deleted or updated to the latest version. The same concept applies to images and other files.
+This folder can also contain components, assets, and whatever else is meant to be versioned when the docusaurus versioning script is run. For example, if there is a page component that is only relevant to the `layout` section in the current version of Ionic, it could be added to a `_components/` folder in `docs/layout/`. When the versioning script is run, the component will be copied to `versioned_docs/version-{X}/layout/_components/` and there will now be a separate component in `docs/layout/_components/` that can be deleted or updated to the latest version. The same concept applies to images and other files.
If components are meant to be shared across versions, they can be put in `src/components/`. If images and other served files are meant to be shared across versions they can be put in `static/`.
diff --git a/docs/angular/performance.md b/docs/angular/performance.md
index c19ee5d7b2c..62877e6e4dd 100644
--- a/docs/angular/performance.md
+++ b/docs/angular/performance.md
@@ -56,6 +56,8 @@ For more information on how Angular manages change propagation with `ngFor` see
## From the Community
+
+
[High Performance Animations in Ionic](https://www.joshmorony.com/high-performance-animations-in-ionic/) - Josh Morony
[High Performance List Filtering in Ionic](https://www.joshmorony.com/high-performance-list-filtering-in-ionic-2/) - Josh Morony
@@ -64,6 +66,8 @@ For more information on how Angular manages change propagation with `ngFor` see
[Ionic Framework is Fast (But Your Code Might Not Be)](https://www.joshmorony.com/ionic-framework-is-fast-but-your-code-might-not-be/) - Josh Morony
+
+
:::note
Do you have a guide you'd like to share? Click the _Edit this page_ button below.
:::
diff --git a/docs/angular/slides.md b/docs/angular/slides.md
index c5eefbec3be..6e2d2a3aa15 100644
--- a/docs/angular/slides.md
+++ b/docs/angular/slides.md
@@ -224,24 +224,24 @@ To migrate, we would change the name of the event to `slidechange`:
Below is a full list of event name changes when going from `ion-slides` to Swiper Angular:
-| ion-slides Event | Swiper Event |
-| ----------------------- | -------------------------- |
-| ionSlideWillChange | slidechangetransitionstart |
-| ionSlideDidChange | slidechangetransitionend |
-| ionSlideDoubleTap | doubletap |
-| ionSlideDrag | slidermove |
-| ionSlideNextStart | slidenexttransitionstart |
-| ionSlideNextEnd | slidenexttransitionend |
-| ionSlidePrevStart | slideprevtransitionstart |
-| ionSlidePrevEnd | slideprevtransitionend |
-| ionSlideReachStart | reachbeginning |
-| ionSlideReachEnd | reachend |
-| ionSlideTap | tap |
-| ionSlideTouchStart | touchstart |
-| ionSlideTouchEnd | touchend |
-| ionSlideTransitionStart | transitionstart |
-| ionSlideTransitionEnd | transitionend |
-| ionSlidesDidLoad | init |
+| ion-slides Event | Swiper Event |
+| ------------------------- | ---------------------------- |
+| `ionSlideWillChange` | `slidechangetransitionstart` |
+| `ionSlideDidChange` | `slidechangetransitionend` |
+| `ionSlideDoubleTap` | `doubletap` |
+| `ionSlideDrag` | `slidermove` |
+| `ionSlideNextStart` | `slidenexttransitionstart` |
+| `ionSlideNextEnd` | `slidenexttransitionend` |
+| `ionSlidePrevStart` | `slideprevtransitionstart` |
+| `ionSlidePrevEnd` | `slideprevtransitionend` |
+| `ionSlideReachStart` | `reachbeginning` |
+| `ionSlideReachEnd` | `reachend` |
+| `ionSlideTap` | `tap` |
+| `ionSlideTouchStart` | `touchstart` |
+| `ionSlideTouchEnd` | `touchend` |
+| `ionSlideTransitionStart` | `transitionstart` |
+| `ionSlideTransitionEnd` | `transitionend` |
+| `ionSlidesDidLoad` | `init` |
:::note
All events available in Swiper Element can be found at https://swiperjs.com/swiper-api#events.
@@ -281,19 +281,19 @@ export class SlidesExample {
Below is a full list of method changes when going from `ion-slides` to Swiper Element:
-| ion-slides Method | Notes |
-| ------------------ | ------------------------------------------------------------------------------------ |
-| getActiveIndex() | Use the `activeIndex` property instead. |
-| getPreviousIndex() | Use the `previousIndex` property instead. |
-| getSwiper() | Get a reference to the Swiper instance using the `swiper` prop. See example above. |
-| isBeginning() | Use the `isBeginning` property instead. |
-| isEnd() | Use the `isEnd` property instead. |
-| length() | Use the `slides` property instead. (i.e swiper.slides.length) |
-| lockSwipeToNext() | Use the `allowSlidesNext` property instead. |
-| lockSwipeToPrev() | Use the `allowSlidePrev` property instead. |
-| lockSwipes() | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
-| startAutoplay() | Use the `autoplay` property instead. |
-| stopAutoplay() | Use the `autoplay` property instead. |
+| ion-slides Method | Notes |
+| -------------------- | ------------------------------------------------------------------------------------ |
+| `getActiveIndex()` | Use the `activeIndex` property instead. |
+| `getPreviousIndex()` | Use the `previousIndex` property instead. |
+| `getSwiper()` | Get a reference to the Swiper instance using the `swiper` prop. See example above. |
+| `isBeginning()` | Use the `isBeginning` property instead. |
+| `isEnd()` | Use the `isEnd` property instead. |
+| `length()` | Use the `slides` property instead. (i.e swiper.slides.length) |
+| `lockSwipeToNext()` | Use the `allowSlidesNext` property instead. |
+| `lockSwipeToPrev()` | Use the `allowSlidePrev` property instead. |
+| `lockSwipes()` | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
+| `startAutoplay()` | Use the `autoplay` property instead. |
+| `stopAutoplay()` | Use the `autoplay` property instead. |
:::note
All methods and properties available on the Swiper instance can be found at https://swiperjs.com/swiper-api#methods-and-properties.
diff --git a/docs/angular/testing.md b/docs/angular/testing.md
index 142f4dd6ec4..1278551b0b9 100644
--- a/docs/angular/testing.md
+++ b/docs/angular/testing.md
@@ -293,7 +293,7 @@ When an `@ionic/angular` application is generated, a default end-to-end test app
- `protractor.conf.js` - the Protractor configuration file
- `tsconfig.e2e.json` - specific TypeScript configuration for the testing application
-- `src/app.po.ts` - a page object containing methods that navigate the application, query elements in the DOM, and maninpulate elements on the page
+- `src/app.po.ts` - a page object containing methods that navigate the application, query elements in the DOM, and manipulate elements on the page
- `src/app.e2e-spec.ts` - a testing script
#### Page Objects
diff --git a/docs/angular/your-first-app/8-distribute.md b/docs/angular/your-first-app/8-distribute.md
index 44b3781b476..545e57c1945 100644
--- a/docs/angular/your-first-app/8-distribute.md
+++ b/docs/angular/your-first-app/8-distribute.md
@@ -18,7 +18,7 @@ For more on connecting your code repository to Appflow, checkout the [Connect yo
The Appflow SDK (also known as Ionic Deploy plugin) will allow you to take advantage of arguably two of the best Appflow features: deploying live updates to your app and bypassing the app stores. Ionic Appflow's Live Update feature is shipped with Appflow SDK and features the capabilities of detecting and syncing the updates for your app that you have pushed to your identified channels within the dashboard.
-To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by excuting the following command in your app's root directory:
+To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by executing the following command in your app's root directory:
```shell
ionic deploy add \
@@ -75,7 +75,7 @@ For more information, visit the [Create an Automation](https://ionic.io/docs/app
## Create an Environment
-[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be futher customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
+[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be further customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
Creating an Environment is available for those on our [Basic plans](https://ionic.io/pricing) and above. More information on this can be found in the [Create an Environment](https://ionic.io/docs/appflow/quickstart/environment) section within the Appflow docs.
diff --git a/docs/api/datetime.md b/docs/api/datetime.md
index aca72185d7c..cf9ed3071f7 100644
--- a/docs/api/datetime.md
+++ b/docs/api/datetime.md
@@ -62,7 +62,7 @@ parse various datetime strings differently, especially per locale.
Fortunately, Ionic Framework's datetime input has been designed so developers can avoid
the common pitfalls, allowing developers to easily manipulate datetime values and give the user a simple datetime picker for a great user experience.
-### ISO 8601 Datetime Format: YYYY-MM-DDTHH:mmZ
+### ISO 8601 Datetime Format: `YYYY-MM-DDTHH:mmZ`
Ionic Framework uses the [ISO 8601 datetime format](https://www.w3.org/TR/NOTE-datetime)
for its value. The value is simply a string, rather than using JavaScript's
@@ -71,15 +71,15 @@ and parse within JSON objects and databases.
Below are some examples of ISO 8601 formats that can be used with `ion-datetime`:
-| Description | Format | Datetime Value Example |
-| -------------------- | ---------------------- | ---------------------------- |
-| Year | YYYY | 1994 |
-| Year and Month | YYYY-MM | 1994-12 |
-| Complete Date | YYYY-MM-DD | 1994-12-15 |
-| Date and Time | YYYY-MM-DDTHH:mm | 1994-12-15T13:47 |
-| UTC Timezone | YYYY-MM-DDTHH:mm:ssZ | 1994-12-15T13:47:20Z |
-| Timezone Offset | YYYY-MM-DDTHH:mm:ssTZD | 1994-12-15T13:47:20+05:00 |
-| Hour and Minute | HH:mm | 13:47 |
+| Description | Format | Datetime Value Example |
+| -------------------- | ------------------------ | ------------------------------ |
+| Year | `YYYY` | `1994` |
+| Year and Month | `YYYY-MM` | `1994-12` |
+| Complete Date | `YYYY-MM-DD` | `1994-12-15` |
+| Date and Time | `YYYY-MM-DDTHH:mm` | `1994-12-15T13:47` |
+| UTC Timezone | `YYYY-MM-DDTHH:mm:ssZ` | `1994-12-15T13:47:20Z` |
+| Timezone Offset | `YYYY-MM-DDTHH:mm:ssTZD` | `1994-12-15T13:47:20+05:00` |
+| Hour and Minute | `HH:mm` | `13:47` |
Note that the year is always four-digits, milliseconds (if it's added) is always
three-digits, and all others are always two-digits. So the number representing
@@ -296,7 +296,7 @@ Developers can provide their own buttons for advanced custom behavior.
Using the `highlightedDates` property, developers can style particular dates with custom text or background colors. This property can be defined as either an array of dates and their colors, or a callback that receives an ISO string and returns the colors to use.
-When specifying colors, any valid CSS color format can be used. This includes hex codes, rgba, [color variables](../theming/colors), etc.
+When specifying colors, any valid CSS color format can be used. This includes hex codes, `rgba`, [color variables](../theming/colors), etc.
To maintain a consistent user experience, the style of selected date(s) will always override custom highlights.
diff --git a/docs/api/input.md b/docs/api/input.md
index b4996e6afb4..afbf24ced47 100644
--- a/docs/api/input.md
+++ b/docs/api/input.md
@@ -30,7 +30,7 @@ import Basic from '@site/static/usage/v7/input/basic/index.md';
## Types
-The input component is meant for text type inputs only, such as `"text"`, `"password"`, `"email"`, `"number"`, `"search"`, `"tel"`, and `"url"`. It supports all standard text input events including keyup, keydown, keypress, and more. The default `type` is `"text"`.
+The input component is meant for text type inputs only, such as `"text"`, `"password"`, `"email"`, `"number"`, `"search"`, `"tel"`, and `"url"`. It supports all standard text input events including `keyup`, `keydown`, `keypress`, and more. The default `type` is `"text"`.
import Types from '@site/static/usage/v7/input/types/index.md';
@@ -120,7 +120,7 @@ import CounterAlignment from '@site/static/usage/v7/input/counter-alignment/inde
## Filtering User Input
-Developers can use the `ionInput` event to update the input value in response to user input such as a keypress. This is useful for filtering out invalid or unwanted characters.
+Developers can use the `ionInput` event to update the input value in response to user input such as a `keypress`. This is useful for filtering out invalid or unwanted characters.
When storing the value in a state variable, we recommend updating both the state variable and the `ion-input` component value. This ensures that the state variable and the `ion-input` component value remain in sync.
diff --git a/docs/components.md b/docs/components.md
index 9b5518e95d6..732b59a43b2 100644
--- a/docs/components.md
+++ b/docs/components.md
@@ -143,7 +143,7 @@ Ionic apps are made of high-level building blocks called Components, which allow
- Toast is used to show a notification over the top of an app's content. It can be temporary or dismissable.
+ Toast is used to show a notification over the top of an app's content. It can be temporary or dismissible.
diff --git a/docs/core-concepts/what-are-progressive-web-apps.md b/docs/core-concepts/what-are-progressive-web-apps.md
index fe7e769ee68..2310a451f01 100644
--- a/docs/core-concepts/what-are-progressive-web-apps.md
+++ b/docs/core-concepts/what-are-progressive-web-apps.md
@@ -47,12 +47,16 @@ To be considered a Progressive Web App, your app must be:
- Linkable - Easily share via URL and not require complex installation.
+
+
Addy Osmani: Progressive web apps
+
+
There is a lot here, but it boils down to a few points for Ionic apps.
#### Offline Support
diff --git a/docs/developer-resources/books.md b/docs/developer-resources/books.md
index 01218e277f4..1a51bc94e8f 100644
--- a/docs/developer-resources/books.md
+++ b/docs/developer-resources/books.md
@@ -4,50 +4,72 @@
Angular. Vue. React. Vanilla JavaScript. All of these tools can be used to create awesome applications with Ionic, thanks to the new Stencil compiler. This book is aimed at beginners that are looking to create amazing web, mobile and desktop applications using Ionic with examples across all of the popular frameworks.
+
+
by [Paul Halliday](https:://developer.school)
### [Creating Ionic Applications with StencilJS](https://www.joshmorony.com/creating-ionic-applications-with-stencil-js/) - [Free Preview](https://cdn2.hubspot.net/hubfs/3776657/PREVIEW-Creating-Ionic-Apps-with-StencilJS.pdf)
As well as being a powerful tool for generating reuseable web components, StencilJS provides the tools needed to build an entire application out of web components. Combined with the Ionic web components, StencilJS gives us everything we need to build high-quality production mobile applications - no framework required.
+
+
by [Joshua Morony](https://www.joshmorony.com/blog)
### [Mobile App Development with Ionic: Cross-Platform Apps with Ionic 2, Angular 2, and Cordova](https://www.amazon.com/Mobile-App-Development-Ionic-Cross-Platform/dp/1491937785/ref=sr_1_2?ie=UTF8&qid=1464183332&sr=8-2&keywords=ionic+2)
+
+
by Chris Griffith
### [Building Mobile Apps with Ionic & Angular](https://www.joshmorony.com/building-mobile-apps-with-ionic-2/)
+
+
by [Joshua Morony](https://www.joshmorony.com/blog)
Building Mobile Apps with Ionic & Angular is an all-in-one resource for learning the latest and greatest version of Ionic. It is targeted at beginners and works its way through the basics of Ionic, to example applications of varying complexity, and then to the steps required to build and publish your application (on the app stores or as a PWA). It has been updated for every major release, so you can rest easy knowing that you're not learning outdated tech.
### [Ionic 2 From Zero to App Store](https://devdactic.com/zero-to-app)
+
+
by Simon Reimler
### [Ionic Framework By Example](https://www.packtpub.com/application-development/ionic-framework-example)
+
+
by Sani Yusuf
### [Building Firestore Powered Ionic Apps](https://javebratt.com/ionic-firebase-book/)
+
+
by Jorge Vergara
This book will help you go from not knowing what Firebase is to be able to use the different APIs for your Ionic Applications. It will take you from “_What’s Firebase?_” to building scalable, production-ready apps and it’s always up-to-date with latest Ionic and Firebase versions.
### [Ionic 2 Cookbook - Second Edition](https://www.amazon.com/Ionic-Cookbook-Second-Hoc-Phan-ebook/dp/B01C4D9VWS?ie=UTF8&keywords=ionic%202&qid=1464183332&ref_=sr_1_3&sr=8-3)
+
+
by Hoc Phan
### [Mastering Ionic 2](https://www.leanpub.com/masteringionic2)
+
+
by James Griffiths
### [Learning Ionic](https://www.packtpub.com/in/application-development/learning-ionic) (Ionic 1)
+
+
by Arvind Ravulavaru
### [Learning Ionic - Second Edition](https://www.packtpub.com/in/web-development/learning-ionic-second-edition) (Ionic 2/3)
+
+
by Arvind Ravulavaru
diff --git a/docs/developer-resources/courses.md b/docs/developer-resources/courses.md
index 46038f4ffb1..900a2c51084 100644
--- a/docs/developer-resources/courses.md
+++ b/docs/developer-resources/courses.md
@@ -2,23 +2,31 @@
### [Elite Ionic](https://www.joshmorony.com/elite/)
+
+
by Josh Morony
Elite Ionic is an online course for Ionic developers who want to move past the basics, and build complex, well tested, high performing, beautiful, and useable mobile applications. It is recommended that you already have a reasonably solid understanding of the basics of Ionic before starting this course.
### [Ionic Academy](https://ionicacademy.com/)
+
+
by Simon Grimm
Learn Ionic with step-by-step video courses & quick wins from one of the Ionic community leaders. Covers beginner, intermediate and advanced topics. Get access to a community of developers just like you.
### [Ionic Framework: Tips, Tricks & Techniques](https://www.packtpub.com/mobile/ionic-framework-tips-tricks-and-techniques-video)
+
+
by Charles Muzonzini
In this course, you will master tips and best practices for Ionic 4 & Ionic 5 that you can immediately implement to build high quality apps. This course covers a wide variety of topics from increasing app performance, to building custom native plugins, to securing your apps. It's a practical, hands-on course that will take your app building skills to the next level.
-### [Building Deskop Apps with Ionic and Electron](https://pluralsight.pxf.io/VeMXO)
+### [Building Desktop Apps with Ionic and Electron](https://pluralsight.pxf.io/VeMXO)
+
+
by Michael Callaghan at Pluralsight
@@ -33,6 +41,8 @@ Windows and macOS users.
### [Building Progressive Web Apps with Ionic](https://pluralsight.pxf.io/Ly2EY)
+
+
by Michael Callaghan at Pluralsight
Everything changed when Google created the concept of Progressive Web Applications or PWA. A PWA is a pure web
@@ -48,6 +58,8 @@ Progressive Web Application anywhere you desire.
### [Ionic CLI](https://pluralsight.pxf.io/ionic-cli)
+
+
by Michael Callaghan at Pluralsight
Since its inception, the Ionic Framework has included a rudimentary command line interface. Though only a few
@@ -60,24 +72,36 @@ the confidence to use the Ionic CLI as part of your everyday Ionic development.
### [Wordpress Rest API and Ionic 4 (Angular) App With Auth](https://www.udemy.com/course/wordpress-rest-api-and-ionic-3-crud/)
+
+
by Baljeet Singh at Udemy
### [Building Mobile Apps with Ionic 2, Angular 2, and TypeScript](https://app.pluralsight.com/library/courses/ionic2-angular2-typescript-mobile-apps/table-of-contents)
+
+
by Pluralsight
### [Introducing Ionic 2](http://shop.oreilly.com/product/0636920050353.do)
+
+
by Mathieu Chauvinc
### [Ionic 2 Master Course](https://www.udemy.com/ionic-2-tutorial/)
+
+
by Udemy
### [Introducing Ionic 2](https://www.udemy.com/introducing-ionic-2/)
+
+
by Udemy
### [Ionic 2 Solutions](https://www.packtpub.com/web-development/ionic-2-solutions-video)
+
+
by Hoc Phan
diff --git a/docs/native-faq.md b/docs/native-faq.md
index 8ab58471fea..10c8a9eadfb 100644
--- a/docs/native-faq.md
+++ b/docs/native-faq.md
@@ -19,6 +19,6 @@ If you're using a plugin, it may require adding additional permissions to your n
You need to manually add those permissions to the `info.plist` in your native project. Otherwise, calls to the native camera API will fail.
-## Unexpected behaviour
+## Unexpected behavior
If for some reason the plugin does not behave in a way that is unexpected, please [open an issue on our github repo](https://github.com/ionic-team/capacitor-plugins)! Providing a clear issue report along with a reproduction can help get your issue resolved.
diff --git a/docs/react/navigation.md b/docs/react/navigation.md
index 693a8fe15bc..2c1efa761e2 100644
--- a/docs/react/navigation.md
+++ b/docs/react/navigation.md
@@ -647,4 +647,8 @@ For more info on routing in React using the React Router implementation that Ion
## From the Community
+
+
[Ionic 4 and React: Navigation](https://alligator.io/ionic/ionic-4-react-navigation) - Paul Halliday
+
+
diff --git a/docs/react/pwa.md b/docs/react/pwa.md
index e81a216d127..16ea8df72f2 100644
--- a/docs/react/pwa.md
+++ b/docs/react/pwa.md
@@ -81,7 +81,7 @@ Features like Service Workers and many JavaScript APIs (such as geolocation) req
### Service Worker configuration
-By default, CRA/React Scripts come with a preconfigured Service Worker setup based on [Workbox's Webpack plugin](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin). This utilises a cache-first strategy, meaning that your app will load from a cache, even if the network returns a newer version of the app.
+By default, CRA/React Scripts come with a preconfigured Service Worker setup based on [Workbox's Webpack plugin](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin). This utilizes a cache-first strategy, meaning that your app will load from a cache, even if the network returns a newer version of the app.
Because of the nature of CRA/React Scripts, the configuration for this is internal to React Scripts, meaning that it cannot be customized without ejecting from React Scripts. Currently, the Ionic CLI does not support an ejected React App, so if this action is taken, you'll need to use npm/yarn scripts instead of the Ionic CLI.
diff --git a/docs/react/slides.md b/docs/react/slides.md
index 522bc2d36ac..bd0a907c190 100644
--- a/docs/react/slides.md
+++ b/docs/react/slides.md
@@ -393,24 +393,24 @@ const MyComponent: React.FC = () => {
Below is a full list of event name changes when going from `IonSlides` to Swiper React:
-| IonSlides Event | Swiper Event |
-| ------------------------- | ---------------------------- |
-| onIonSlideWillChange | onSlideChangeTransitionStart |
-| onIonSlideDidChange | onSlideChangeTransitionEnd |
-| onIonSlideDoubleTap | onDoubleTap |
-| onIonSlideDrag | onSliderMove |
-| onIonSlideNextStart | onSlideNextTransitionStart |
-| onIonSlideNextEnd | onSlideNextTransitionEnd |
-| onIonSlidePrevStart | onSlidePrevTransitionStart |
-| onIonSlidePrevEnd | onSlidePrevTransitionEnd |
-| onIonSlideReachStart | onReachBeginning |
-| onIonSlideReachEnd | onReachEnd |
-| onIonSlideTap | onTap |
-| onIonSlideTouchStart | onTouchStart |
-| onIonSlideTouchEnd | onTouchEnd |
-| onIonSlideTransitionStart | onTransitionStart |
-| onIonSlideTransitionEnd | onTransitionEnd |
-| onIonSlidesDidLoad | onInit |
+| IonSlides Event | Swiper Event |
+| --------------------------- | ------------------------------ |
+| `onIonSlideWillChange` | `onSlideChangeTransitionStart` |
+| `onIonSlideDidChange` | `onSlideChangeTransitionEnd` |
+| `onIonSlideDoubleTap` | `onDoubleTap` |
+| `onIonSlideDrag` | `onSliderMove` |
+| `onIonSlideNextStart` | `onSlideNextTransitionStart` |
+| `onIonSlideNextEnd` | `onSlideNextTransitionEnd` |
+| `onIonSlidePrevStart` | `onSlidePrevTransitionStart` |
+| `onIonSlidePrevEnd` | `onSlidePrevTransitionEnd` |
+| `onIonSlideReachStart` | `onReachBeginning` |
+| `onIonSlideReachEnd` | `onReachEnd` |
+| `onIonSlideTap` | `onTap` |
+| `onIonSlideTouchStart` | `onTouchStart` |
+| `onIonSlideTouchEnd` | `onTouchEnd` |
+| `onIonSlideTransitionStart` | `onTransitionStart` |
+| `onIonSlideTransitionEnd` | `onTransitionEnd` |
+| `onIonSlidesDidLoad` | `onInit` |
:::note
All events available in Swiper can be found at https://swiperjs.com/swiper-api#events.
@@ -445,19 +445,19 @@ From here, if you wanted to access a property on the Swiper instance you would a
Below is a full list of method changes when going from `IonSlides` to Swiper React:
-| IonSlides Method | Notes |
-| ------------------ | ------------------------------------------------------------------------------------ |
-| getActiveIndex() | Use the `activeIndex` property instead. |
-| getPreviousIndex() | Use the `previousIndex` property instead. |
-| getSwiper() | Get a reference to the Swiper instance using `onSwiper`. See example above. |
-| isBeginning() | Use the `isBeginning` property instead. |
-| isEnd() | Use the `isEnd` property instead. |
-| length() | Use the `slides` property instead. (i.e swiperRef.slides.length) |
-| lockSwipeToNext() | Use the `allowSlidesNext` property instead. |
-| lockSwipeToPrev() | Use the `allowSlidePrev` property instead. |
-| lockSwipes() | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
-| startAutoplay() | Use the `autoplay` property instead. |
-| stopAutoplay() | Use the `autoplay` property instead. |
+| IonSlides Method | Notes |
+| -------------------- | ------------------------------------------------------------------------------------ |
+| `getActiveIndex()` | Use the `activeIndex` property instead. |
+| `getPreviousIndex()` | Use the `previousIndex` property instead. |
+| `getSwiper()` | Get a reference to the Swiper instance using `onSwiper`. See example above. |
+| `isBeginning()` | Use the `isBeginning` property instead. |
+| `isEnd()` | Use the `isEnd` property instead. |
+| `length()` | Use the `slides` property instead. (i.e swiperRef.slides.length) |
+| `lockSwipeToNext()` | Use the `allowSlidesNext` property instead. |
+| `lockSwipeToPrev()` | Use the `allowSlidePrev` property instead. |
+| `lockSwipes()` | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
+| `startAutoplay()` | Use the `autoplay` property instead. |
+| `stopAutoplay()` | Use the `autoplay` property instead. |
## Effects
diff --git a/docs/react/your-first-app/2-taking-photos.md b/docs/react/your-first-app/2-taking-photos.md
index 9693e233c53..ac70c03c26c 100644
--- a/docs/react/your-first-app/2-taking-photos.md
+++ b/docs/react/your-first-app/2-taking-photos.md
@@ -95,7 +95,7 @@ Back at the top of the function (right after the call to `usePhotoGallery`, we w
const [photos, setPhotos] = useState([]);
```
-When the camera is done taking a picture, the resulting Photo returned from Capacitor will be stored in the `photo` variable. We want to create a new photo object and add it to the photos state array. We make sure we don't accidently mutate the current photos array by making a new array, and then call `setPhotos` to store the array into state. Update the `takePhoto` method and add this code after the getPhoto call:
+When the camera is done taking a picture, the resulting Photo returned from Capacitor will be stored in the `photo` variable. We want to create a new photo object and add it to the photos state array. We make sure we don't accidentally mutate the current photos array by making a new array, and then call `setPhotos` to store the array into state. Update the `takePhoto` method and add this code after the getPhoto call:
```tsx
const fileName = Date.now() + '.jpeg';
diff --git a/docs/react/your-first-app/8-distribute.md b/docs/react/your-first-app/8-distribute.md
index 74966e8de58..4cb78606447 100644
--- a/docs/react/your-first-app/8-distribute.md
+++ b/docs/react/your-first-app/8-distribute.md
@@ -18,7 +18,7 @@ For more on connecting your code repository to Appflow, checkout the [Connect yo
The Appflow SDK (also known as Ionic Deploy plugin) will allow you to take advantage of arguably two of the best Appflow features: deploying live updates to your app and bypassing the app stores. Ionic Appflow's Live Update feature is shipped with Appflow SDK and features the capabilities of detecting and syncing the updates for your app that you have pushed to your identified channels within the dashboard.
-To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by excuting the following command in your app's root directory:
+To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by executing the following command in your app's root directory:
```shell
ionic deploy add \
@@ -43,7 +43,7 @@ After the push is made, you will then see your commit under the `Commits` tab of
## Deploy a Live Update
-With the Appflow SDK installed and your commit pushed up to the Dashboard, you are ready to deploy a live update to a device. The Live Update feature uses the installed Appflow SDK with your native application to listen to a particular Deploy Channel Destination. When a live update is assigned to a Channel Distination, that update will be deployed to user devices running binaries that are configured to listen to that specific Channel Destination.
+With the Appflow SDK installed and your commit pushed up to the Dashboard, you are ready to deploy a live update to a device. The Live Update feature uses the installed Appflow SDK with your native application to listen to a particular Deploy Channel Destination. When a live update is assigned to a Channel Destination, that update will be deployed to user devices running binaries that are configured to listen to that specific Channel Destination.
To get the live update deployed, a Web build will need to be created. This can be done through the `Start build` icon from the `Commits` tab or by clicking the `New build` button in the top right corner of the `Build > Builds` tab. After selecting the correct commit to deploy, select the `Web` target platform and the `Latest` build stack. Depending on your Appflow plan, you will then be able to include custom environments, if any are configured. Finally, you can enable `Live Update` and pick the Channel to automatically assign the build to once it successfully completes.
@@ -75,7 +75,7 @@ For more information, visit the [Create an Automation](https://ionic.io/docs/app
## Create an Environment
-[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be futher customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
+[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be further customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
Creating an Environment is available for those on our [Basic plans](https://ionic.io/pricing) and above. More information on this can be found in the [Create an Environment](https://ionic.io/docs/appflow/quickstart/environment) section within the Appflow docs.
diff --git a/docs/reference/glossary.md b/docs/reference/glossary.md
index 0ac1a08c706..110d5514beb 100644
--- a/docs/reference/glossary.md
+++ b/docs/reference/glossary.md
@@ -92,6 +92,8 @@ title: Glossary
+
+
+
+
CommonJS
diff --git a/docs/theming/advanced.md b/docs/theming/advanced.md
index 2911d7c0e58..24c6a22b221 100644
--- a/docs/theming/advanced.md
+++ b/docs/theming/advanced.md
@@ -87,7 +87,7 @@ While the application and stepped variables in the themes section are useful for
### The Alpha Problem
-There is not yet full browser support for alpha use of a hex color. The rgba() function only accepts a value in `R, G, B, A` (Red, Green, Blue, Alpha) format. The following code shows examples of correct and incorrect values passed to `rgba()`.
+There is not yet full browser support for alpha use of a hex color. The `rgba()` function only accepts a value in `R, G, B, A` (Red, Green, Blue, Alpha) format. The following code shows examples of correct and incorrect values passed to `rgba()`.
```css
/* These examples use the same color: blueviolet. */
diff --git a/docs/vue/overview.md b/docs/vue/overview.md
index 1689934bc26..045cb75b123 100644
--- a/docs/vue/overview.md
+++ b/docs/vue/overview.md
@@ -32,9 +32,13 @@ While there are no known technical limitations to using `Ionic Vue` with [Cordov
## From the Community
+
+
- [Using Vue.js with Ionic & Capacitor](https://dev.to/aaronksaunders/using-vue-js-v3-beta-with-ionic-components-capacitor-plugins-2b6f) - Aaron Saunders
- [Building Mobile Apps With Vue3 and Ionic](https://soshace.com/building-mobile-apps-with-vue3-and-ionic/) - Oluwaseun Raphael Afolayan
+
+
## Installation
```shell-session
diff --git a/docs/vue/quickstart.md b/docs/vue/quickstart.md
index 331ab3f864e..6f2e36942bb 100644
--- a/docs/vue/quickstart.md
+++ b/docs/vue/quickstart.md
@@ -652,7 +652,7 @@ For more information, see the https://swiperjs.com/vue#swiper-events.
@@ -425,19 +425,19 @@ From here, if you wanted to access a property on the Swiper instance you would a
Below is a full list of method changes when going from `ion-slides` to Swiper Vue:
-| ion-slides Method | Notes |
-| ------------------ | ------------------------------------------------------------------------------------ |
-| getActiveIndex() | Use the `activeIndex` property instead. |
-| getPreviousIndex() | Use the `previousIndex` property instead. |
-| getSwiper() | Get a reference to the Swiper instance using `@swiper`. See example above. |
-| isBeginning() | Use the `isBeginning` property instead. |
-| isEnd() | Use the `isEnd` property instead. |
-| length() | Use the `slides` property instead. (i.e swiperRef.slides.length) |
-| lockSwipeToNext() | Use the `allowSlideNext` property instead. |
-| lockSwipeToPrev() | Use the `allowSlidePrev` property instead. |
-| lockSwipes() | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
-| startAutoplay() | Use the `autoplay` property instead. |
-| stopAutoplay() | Use the `autoplay` property instead. |
+| ion-slides Method | Notes |
+| -------------------- | ------------------------------------------------------------------------------------ |
+| `getActiveIndex()` | Use the `activeIndex` property instead. |
+| `getPreviousIndex()` | Use the `previousIndex` property instead. |
+| `getSwiper()` | Get a reference to the Swiper instance using `@swiper`. See example above. |
+| `isBeginning()` | Use the `isBeginning` property instead. |
+| `isEnd()` | Use the `isEnd` property instead. |
+| `length()` | Use the `slides` property instead. (i.e swiperRef.slides.length) |
+| `lockSwipeToNext()` | Use the `allowSlideNext` property instead. |
+| `lockSwipeToPrev()` | Use the `allowSlidePrev` property instead. |
+| `lockSwipes()` | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
+| `startAutoplay()` | Use the `autoplay` property instead. |
+| `stopAutoplay()` | Use the `autoplay` property instead. |
## Effects
diff --git a/docs/vue/your-first-app/8-distribute.md b/docs/vue/your-first-app/8-distribute.md
index d6b38ea5b5a..4cb78606447 100644
--- a/docs/vue/your-first-app/8-distribute.md
+++ b/docs/vue/your-first-app/8-distribute.md
@@ -18,7 +18,7 @@ For more on connecting your code repository to Appflow, checkout the [Connect yo
The Appflow SDK (also known as Ionic Deploy plugin) will allow you to take advantage of arguably two of the best Appflow features: deploying live updates to your app and bypassing the app stores. Ionic Appflow's Live Update feature is shipped with Appflow SDK and features the capabilities of detecting and syncing the updates for your app that you have pushed to your identified channels within the dashboard.
-To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by excuting the following command in your app's root directory:
+To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by executing the following command in your app's root directory:
```shell
ionic deploy add \
@@ -75,7 +75,7 @@ For more information, visit the [Create an Automation](https://ionic.io/docs/app
## Create an Environment
-[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be futher customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
+[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be further customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
Creating an Environment is available for those on our [Basic plans](https://ionic.io/pricing) and above. More information on this can be found in the [Create an Environment](https://ionic.io/docs/appflow/quickstart/environment) section within the Appflow docs.
diff --git a/package-lock.json b/package-lock.json
index ca4fece301a..a8a95bfd655 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -46,6 +46,7 @@
"@ionic/prettier-config": "^3.0.0",
"@tsconfig/docusaurus": "^1.0.4",
"@types/react": "^17.0.37",
+ "cspell": "^6.31.3",
"html-loader": "^3.1.0",
"hygen": "^6.2.11",
"prettier": "^2.8.8",
@@ -1769,6 +1770,408 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@cspell/cspell-bundled-dicts": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.31.3.tgz",
+ "integrity": "sha512-KXy3qKWYzXOGYwqOGMCXHem3fV39iEmoKLiNhoWWry/SFdvAafmeY+LIDcQTXAcOQLkMDCwP2/rY/NadcWnrjg==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/dict-ada": "^4.0.1",
+ "@cspell/dict-aws": "^3.0.0",
+ "@cspell/dict-bash": "^4.1.1",
+ "@cspell/dict-companies": "^3.0.9",
+ "@cspell/dict-cpp": "^5.0.2",
+ "@cspell/dict-cryptocurrencies": "^3.0.1",
+ "@cspell/dict-csharp": "^4.0.2",
+ "@cspell/dict-css": "^4.0.5",
+ "@cspell/dict-dart": "^2.0.2",
+ "@cspell/dict-django": "^4.0.2",
+ "@cspell/dict-docker": "^1.1.6",
+ "@cspell/dict-dotnet": "^5.0.0",
+ "@cspell/dict-elixir": "^4.0.2",
+ "@cspell/dict-en_us": "^4.3.2",
+ "@cspell/dict-en-common-misspellings": "^1.0.2",
+ "@cspell/dict-en-gb": "1.1.33",
+ "@cspell/dict-filetypes": "^3.0.0",
+ "@cspell/dict-fonts": "^3.0.2",
+ "@cspell/dict-fullstack": "^3.1.5",
+ "@cspell/dict-gaming-terms": "^1.0.4",
+ "@cspell/dict-git": "^2.0.0",
+ "@cspell/dict-golang": "^6.0.1",
+ "@cspell/dict-haskell": "^4.0.1",
+ "@cspell/dict-html": "^4.0.3",
+ "@cspell/dict-html-symbol-entities": "^4.0.0",
+ "@cspell/dict-java": "^5.0.5",
+ "@cspell/dict-k8s": "^1.0.1",
+ "@cspell/dict-latex": "^4.0.0",
+ "@cspell/dict-lorem-ipsum": "^3.0.0",
+ "@cspell/dict-lua": "^4.0.1",
+ "@cspell/dict-node": "^4.0.2",
+ "@cspell/dict-npm": "^5.0.5",
+ "@cspell/dict-php": "^4.0.1",
+ "@cspell/dict-powershell": "^5.0.1",
+ "@cspell/dict-public-licenses": "^2.0.2",
+ "@cspell/dict-python": "^4.0.2",
+ "@cspell/dict-r": "^2.0.1",
+ "@cspell/dict-ruby": "^5.0.0",
+ "@cspell/dict-rust": "^4.0.1",
+ "@cspell/dict-scala": "^5.0.0",
+ "@cspell/dict-software-terms": "^3.1.6",
+ "@cspell/dict-sql": "^2.1.0",
+ "@cspell/dict-svelte": "^1.0.2",
+ "@cspell/dict-swift": "^2.0.1",
+ "@cspell/dict-typescript": "^3.1.1",
+ "@cspell/dict-vue": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@cspell/cspell-json-reporter": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-6.31.3.tgz",
+ "integrity": "sha512-ZJwj2vT4lxncYxduXcxy0dCvjjMvXIfphbLSCN5CXvufrtupB4KlcjZUnOofCi4pfpp8qocCSn1lf2DU9xgUXA==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-types": "6.31.3"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@cspell/cspell-pipe": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-6.31.3.tgz",
+ "integrity": "sha512-Lv/y4Ya/TJyU1pf66yl1te7LneFZd3lZg1bN5oe1cPrKSmfWdiX48v7plTRecWd/OWyLGd0yN807v79A+/0W7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@cspell/cspell-service-bus": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-6.31.3.tgz",
+ "integrity": "sha512-x5j8j3n39KN8EXOAlv75CpircdpF5WEMCC5pcO916o6GBmJBy8SrdzdsBGJhVcYGGilqy6pf8R9RCZ3yAmG8gQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@cspell/cspell-types": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-6.31.3.tgz",
+ "integrity": "sha512-wZ+t+lUsQJB65M31btZM4fH3K1CkRgE8pSeTiCwxYcnCL19pi4TMcEEMKdO8yFZMdocW4B7VRwzxNoQMw2ewBg==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@cspell/dict-ada": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.2.tgz",
+ "integrity": "sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-aws": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-3.0.0.tgz",
+ "integrity": "sha512-O1W6nd5y3Z00AMXQMzfiYrIJ1sTd9fB1oLr+xf/UD7b3xeHeMeYE2OtcWbt9uyeHim4tk+vkSTcmYEBKJgS5bQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-bash": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.1.tgz",
+ "integrity": "sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-companies": {
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.0.23.tgz",
+ "integrity": "sha512-Xdj3whPrPw4B+I2zEfMOaoJCqEXAQu/WWyOuA0+eXyRDyGvckF0mf8Fsmi1059X6OFeUbbgHQqv59ip81APA2Q==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-cpp": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.0.5.tgz",
+ "integrity": "sha512-ojCpQ4z+sHHLJYfvA3SApqQ1BjO/k3TUdDgqR3sVhFl5qjT9yz1/srBNzqCaBBSz/fiO5A8NKdSA9+IFrUHcig==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-cryptocurrencies": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-3.0.1.tgz",
+ "integrity": "sha512-Tdlr0Ahpp5yxtwM0ukC13V6+uYCI0p9fCRGMGZt36rWv8JQZHIuHfehNl7FB/Qc09NCF7p5ep0GXbL+sVTd/+w==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-csharp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz",
+ "integrity": "sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-css": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.8.tgz",
+ "integrity": "sha512-K+WVgxxTq6JyuZrcH36w5aiDtIH6OHtnDIdZItTbVJAT8GitmLpKZRIgnwtykCGZc7eDIwCdft/bg1UC7hVfRQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-dart": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.0.3.tgz",
+ "integrity": "sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-data-science": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-1.0.11.tgz",
+ "integrity": "sha512-TaHAZRVe0Zlcc3C23StZqqbzC0NrodRwoSAc8dis+5qLeLLnOCtagYQeROQvDlcDg3X/VVEO9Whh4W/z4PAmYQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-django": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.0.tgz",
+ "integrity": "sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-docker": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.7.tgz",
+ "integrity": "sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-dotnet": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.0.tgz",
+ "integrity": "sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-elixir": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz",
+ "integrity": "sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-en_us": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.7.tgz",
+ "integrity": "sha512-83V0XXqiXJvXa1pj5cVpviYKeLTN2Dxvouz8ullrwgcfPtY57pYBy+3ACVAMYK0eGByhRPc/xVXlIgv4o0BNZw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-en-common-misspellings": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-1.0.2.tgz",
+ "integrity": "sha512-jg7ZQZpZH7+aAxNBlcAG4tGhYF6Ksy+QS5Df73Oo+XyckBjC9QS+PrRwLTeYoFIgXy5j3ICParK5r3MSSoL4gw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-en-gb": {
+ "version": "1.1.33",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz",
+ "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-filetypes": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.1.tgz",
+ "integrity": "sha512-8z8mY1IbrTyTRumx2vvD9yzRhNMk9SajM/GtI5hdMM2pPpNSp25bnuauzjRf300eqlqPY2MNb5MmhBFO014DJw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-fonts": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-3.0.2.tgz",
+ "integrity": "sha512-Z5QdbgEI7DV+KPXrAeDA6dDm/vTzyaW53SGlKqz6PI5VhkOjgkBXv3YtZjnxMZ4dY2ZIqq+RUK6qa9Pi8rQdGQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-fullstack": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.1.5.tgz",
+ "integrity": "sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-gaming-terms": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.4.tgz",
+ "integrity": "sha512-hbDduNXlk4AOY0wFxcDMWBPpm34rpqJBeqaySeoUH70eKxpxm+dvjpoRLJgyu0TmymEICCQSl6lAHTHSDiWKZg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-git": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-2.0.0.tgz",
+ "integrity": "sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-golang": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.2.tgz",
+ "integrity": "sha512-5pyZn4AAiYukAW+gVMIMVmUSkIERFrDX2vtPDjg8PLQUhAHWiVeQSDjuOhq9/C5GCCEZU/zWSONkGiwLBBvV9A==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-haskell": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz",
+ "integrity": "sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-html": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.3.tgz",
+ "integrity": "sha512-Gae8i8rrArT0UyG1I6DHDK62b7Be6QEcBSIeWOm4VIIW1CASkN9B0qFgSVnkmfvnu1Y3H7SSaaEynKjdj3cs8w==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-html-symbol-entities": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz",
+ "integrity": "sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-java": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.5.tgz",
+ "integrity": "sha512-X19AoJgWIBwJBSWGFqSgHaBR/FEykBHTMjL6EqOnhIGEyE9nvuo32tsSHjXNJ230fQxQptEvRZoaldNLtKxsRg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-k8s": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.1.tgz",
+ "integrity": "sha512-gc5y4Nm3hVdMZNBZfU2M1AsAmObZsRWjCUk01NFPfGhFBXyVne41T7E62rpnzu5330FV/6b/TnFcPgRmak9lLw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-latex": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.0.tgz",
+ "integrity": "sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-lorem-ipsum": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-3.0.0.tgz",
+ "integrity": "sha512-msEV24qEpzWZs2kcEicqYlhyBpR0amfDkJOs+iffC07si9ftqtQ+yP3lf1VFLpgqw3SQh1M1vtU7RD4sPrNlcQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-lua": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.1.tgz",
+ "integrity": "sha512-j0MFmeCouSoC6EdZTbvGe1sJ9V+ruwKSeF+zRkNNNload7R72Co5kX1haW2xLHGdlq0kqSy1ODRZKdVl0e+7hg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-node": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-4.0.3.tgz",
+ "integrity": "sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-npm": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.8.tgz",
+ "integrity": "sha512-KuqH8tEsFD6DPKqKwIfWr9E+admE3yghaC0AKXG8jPaf77N0lkctKaS3dm0oxWUXkYKA/eXj6LCtz3VcTyxFPg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-php": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.3.tgz",
+ "integrity": "sha512-PxtSmWJCDEB4M8R9ER9ijxBum/tvUqYT26QeuV58q2IFs5IrPZ6hocQKvnFGXItjCWH4oYXyAEAAzINlBC4Opg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-powershell": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.2.tgz",
+ "integrity": "sha512-IHfWLme3FXE7vnOmMncSBxOsMTdNWd1Vcyhag03WS8oANSgX8IZ+4lMI00mF0ptlgchf16/OU8WsV4pZfikEFw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-public-licenses": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.4.tgz",
+ "integrity": "sha512-KjsfuGwMWvPkp6s0nR+s4mZc9SQhh1tHDOyQZfEVRwi+2ev7f8l7R6ts9sP2Mplb8UcxwO6YmKwxHjN+XHoMoA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-python": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.1.8.tgz",
+ "integrity": "sha512-yFrO9gGI3KIbw0Y1odAEtagrzmthjJVank9B7qlsSQvN78RgD1JQQycTadNWpzdjCj+JuiiH8pJBFWflweZoxw==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/dict-data-science": "^1.0.11"
+ }
+ },
+ "node_modules/@cspell/dict-r": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.1.tgz",
+ "integrity": "sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-ruby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.0.tgz",
+ "integrity": "sha512-ssb96QxLZ76yPqFrikWxItnCbUKhYXJ2owkoIYzUGNFl2CHSoHCb5a6Zetum9mQ/oUA3gNeUhd28ZUlXs0la2A==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-rust": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.1.tgz",
+ "integrity": "sha512-xJSSzHDK2z6lSVaOmMxl3PTOtfoffaxMo7fTcbZUF+SCJzfKbO6vnN9TCGX2sx1RHFDz66Js6goz6SAZQdOwaw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-scala": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.0.tgz",
+ "integrity": "sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-software-terms": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.2.5.tgz",
+ "integrity": "sha512-Hmdm4A8AKD0xQDrZ8GQqdq5n0ewCCp9hu1kkf3tPlUGqzchtzmqaQ91XAfbrhJiMvB5jo51mWK09ZIrR0uoJhA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-sql": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.1.tgz",
+ "integrity": "sha512-v1mswi9NF40+UDUMuI148YQPEQvWjac72P6ZsjlRdLjEiQEEMEsTQ+zlkIdnzC9QCNyJaqD5Liq9Mn78/8Zxtw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-svelte": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz",
+ "integrity": "sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-swift": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.1.tgz",
+ "integrity": "sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-typescript": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.1.tgz",
+ "integrity": "sha512-N9vNJZoOXmmrFPR4ir3rGvnqqwmQGgOYoL1+y6D4oIhyr7FhaYiyF/d7QT61RmjZQcATMa6PSL+ZisCeRLx9+A==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-vue": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.0.tgz",
+ "integrity": "sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==",
+ "dev": true
+ },
+ "node_modules/@cspell/dynamic-import": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-6.31.3.tgz",
+ "integrity": "sha512-A6sT00+6UNGFksQ5SxW2ohNl6vUutai8F4jwJMHTjZL/9vivQpU7y5V4PpsfoPZtx3WZcbrzuTvJ+tLfdbWc4A==",
+ "dev": true,
+ "dependencies": {
+ "import-meta-resolve": "^2.2.2"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@cspell/strong-weak-map": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-6.31.3.tgz",
+ "integrity": "sha512-znwc9IlgGUPioHGshP/zyM8HsuYg1OY5S7HSiVXARh5H8RqcyBsnyn8abc0PPhqPrfDy9Fh5xHsAEPZ55dl1vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.6"
+ }
+ },
"node_modules/@docsearch/css": {
"version": "3.0.0-alpha.41",
"license": "MIT"
@@ -3665,8 +4068,9 @@
}
},
"node_modules/ansi-regex": {
- "version": "5.0.0",
- "license": "MIT",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"engines": {
"node": ">=8"
}
@@ -3707,6 +4111,12 @@
"version": "2.1.2",
"license": "MIT"
},
+ "node_modules/array-timsort": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz",
+ "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==",
+ "dev": true
+ },
"node_modules/array-union": {
"version": "2.1.0",
"license": "MIT",
@@ -4478,6 +4888,43 @@
"node": ">=6"
}
},
+ "node_modules/clear-module": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz",
+ "integrity": "sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^2.0.0",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/clear-module/node_modules/parent-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz",
+ "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clear-module/node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/cli-boxes": {
"version": "2.2.1",
"license": "MIT",
@@ -4676,6 +5123,22 @@
"node": ">= 6"
}
},
+ "node_modules/comment-json": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz",
+ "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==",
+ "dev": true,
+ "dependencies": {
+ "array-timsort": "^1.0.3",
+ "core-util-is": "^1.0.3",
+ "esprima": "^4.0.1",
+ "has-own-prop": "^2.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/commondir": {
"version": "1.0.1",
"license": "MIT"
@@ -5041,6 +5504,306 @@
"node": ">=8"
}
},
+ "node_modules/cspell": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell/-/cspell-6.31.3.tgz",
+ "integrity": "sha512-VeeShDLWVM6YPiU/imeGy0lmg6ki63tbLEa6hz20BExhzzpmINOP5nSTYtpY0H9zX9TrF/dLbI38TuuYnyG3Uw==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-json-reporter": "6.31.3",
+ "@cspell/cspell-pipe": "6.31.3",
+ "@cspell/cspell-types": "6.31.3",
+ "@cspell/dynamic-import": "6.31.3",
+ "chalk": "^4.1.2",
+ "commander": "^10.0.0",
+ "cspell-gitignore": "6.31.3",
+ "cspell-glob": "6.31.3",
+ "cspell-io": "6.31.3",
+ "cspell-lib": "6.31.3",
+ "fast-glob": "^3.2.12",
+ "fast-json-stable-stringify": "^2.1.0",
+ "file-entry-cache": "^6.0.1",
+ "get-stdin": "^8.0.0",
+ "imurmurhash": "^0.1.4",
+ "semver": "^7.3.8",
+ "strip-ansi": "^6.0.1",
+ "vscode-uri": "^3.0.7"
+ },
+ "bin": {
+ "cspell": "bin.js",
+ "cspell-esm": "bin.mjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/streetsidesoftware/cspell?sponsor=1"
+ }
+ },
+ "node_modules/cspell-dictionary": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-6.31.3.tgz",
+ "integrity": "sha512-3w5P3Md/tbHLVGPKVL0ePl1ObmNwhdDiEuZ2TXfm2oAIwg4aqeIrw42A2qmhaKLcuAIywpqGZsrGg8TviNNhig==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-pipe": "6.31.3",
+ "@cspell/cspell-types": "6.31.3",
+ "cspell-trie-lib": "6.31.3",
+ "fast-equals": "^4.0.3",
+ "gensequence": "^5.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/cspell-gitignore": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-6.31.3.tgz",
+ "integrity": "sha512-vCfVG4ZrdwJnsZHl/cdp8AY+YNPL3Ga+0KR9XJsaz69EkQpgI6porEqehuwle7hiXw5e3L7xFwNEbpCBlxgLRA==",
+ "dev": true,
+ "dependencies": {
+ "cspell-glob": "6.31.3",
+ "find-up": "^5.0.0"
+ },
+ "bin": {
+ "cspell-gitignore": "bin.mjs"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/cspell-gitignore/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell-gitignore/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell-gitignore/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell-glob": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-6.31.3.tgz",
+ "integrity": "sha512-+koUJPSCOittQwhR0T1mj4xXT3N+ZnY2qQ53W6Gz9HY3hVfEEy0NpbwE/Uy7sIvFMbc426fK0tGXjXyIj72uhQ==",
+ "dev": true,
+ "dependencies": {
+ "micromatch": "^4.0.5"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/cspell-grammar": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-6.31.3.tgz",
+ "integrity": "sha512-TZYaOLIGAumyHlm4w7HYKKKcR1ZgEMKt7WNjCFqq7yGVW7U+qyjQqR8jqnLiUTZl7c2Tque4mca7n0CFsjVv5A==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-pipe": "6.31.3",
+ "@cspell/cspell-types": "6.31.3"
+ },
+ "bin": {
+ "cspell-grammar": "bin.mjs"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/cspell-io": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-6.31.3.tgz",
+ "integrity": "sha512-yCnnQ5bTbngUuIAaT5yNSdI1P0Kc38uvC8aynNi7tfrCYOQbDu1F9/DcTpbdhrsCv+xUn2TB1YjuCmm0STfJlA==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-service-bus": "6.31.3",
+ "node-fetch": "^2.6.9"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/cspell-io/node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cspell-lib": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-6.31.3.tgz",
+ "integrity": "sha512-Dv55aecaMvT/5VbNryKo0Zos8dtHon7e1K0z8DR4/kGZdQVT0bOFWeotSLhuaIqoNFdEt8ypfKbrIHIdbgt1Hg==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-bundled-dicts": "6.31.3",
+ "@cspell/cspell-pipe": "6.31.3",
+ "@cspell/cspell-types": "6.31.3",
+ "@cspell/strong-weak-map": "6.31.3",
+ "clear-module": "^4.1.2",
+ "comment-json": "^4.2.3",
+ "configstore": "^5.0.1",
+ "cosmiconfig": "8.0.0",
+ "cspell-dictionary": "6.31.3",
+ "cspell-glob": "6.31.3",
+ "cspell-grammar": "6.31.3",
+ "cspell-io": "6.31.3",
+ "cspell-trie-lib": "6.31.3",
+ "fast-equals": "^4.0.3",
+ "find-up": "^5.0.0",
+ "gensequence": "^5.0.2",
+ "import-fresh": "^3.3.0",
+ "resolve-from": "^5.0.0",
+ "resolve-global": "^1.0.0",
+ "vscode-languageserver-textdocument": "^1.0.8",
+ "vscode-uri": "^3.0.7"
+ },
+ "engines": {
+ "node": ">=14.6"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/cosmiconfig": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz",
+ "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cspell-trie-lib": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-6.31.3.tgz",
+ "integrity": "sha512-HNUcLWOZAvtM3E34U+7/mSSpO0F6nLd/kFlRIcvSvPb9taqKe8bnSa0Yyb3dsdMq9rMxUmuDQtF+J6arZK343g==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-pipe": "6.31.3",
+ "@cspell/cspell-types": "6.31.3",
+ "gensequence": "^5.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/cspell/node_modules/commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/css-color-names": {
"version": "1.0.1",
"license": "MIT",
@@ -6047,19 +6810,25 @@
"version": "3.1.3",
"license": "MIT"
},
+ "node_modules/fast-equals": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz",
+ "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==",
+ "dev": true
+ },
"node_modules/fast-glob": {
- "version": "3.2.5",
- "license": "MIT",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.0",
+ "glob-parent": "^5.1.2",
"merge2": "^1.3.0",
- "micromatch": "^4.0.2",
- "picomatch": "^2.2.1"
+ "micromatch": "^4.0.4"
},
"engines": {
- "node": ">=8"
+ "node": ">=8.6.0"
}
},
"node_modules/fast-json-stable-stringify": {
@@ -6144,6 +6913,18 @@
"node": ">=0.8.0"
}
},
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
"node_modules/file-loader": {
"version": "6.2.0",
"license": "MIT",
@@ -6290,6 +7071,25 @@
"node": ">=8"
}
},
+ "node_modules/flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+ "dev": true
+ },
"node_modules/follow-redirects": {
"version": "1.14.5",
"funding": [
@@ -6486,6 +7286,15 @@
"version": "1.1.1",
"license": "MIT"
},
+ "node_modules/gensequence": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-5.0.2.tgz",
+ "integrity": "sha512-JlKEZnFc6neaeSVlkzBGGgkIoIaSxMgvdamRoPN8r3ozm2r9dusqxeKqYQ7lhzmj2UhFQP8nkyfCaiLQxiLrDA==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"license": "MIT",
@@ -6516,6 +7325,18 @@
"version": "3.0.2",
"license": "ISC"
},
+ "node_modules/get-stdin": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+ "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/get-stream": {
"version": "6.0.1",
"license": "MIT",
@@ -6743,6 +7564,15 @@
"node": ">=8"
}
},
+ "node_modules/has-own-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
+ "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/has-symbols": {
"version": "1.0.2",
"license": "MIT",
@@ -7305,6 +8135,16 @@
"node": ">=4"
}
},
+ "node_modules/import-meta-resolve": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz",
+ "integrity": "sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/imurmurhash": {
"version": "0.1.4",
"license": "MIT",
@@ -8420,11 +9260,12 @@
}
},
"node_modules/micromatch": {
- "version": "4.0.4",
- "license": "MIT",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"dependencies": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
},
"engines": {
"node": ">=8.6"
@@ -10811,13 +11652,6 @@
"strip-ansi": "^6.0.1"
}
},
- "node_modules/renderkid/node_modules/ansi-regex": {
- "version": "5.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/renderkid/node_modules/css-select": {
"version": "4.1.3",
"license": "BSD-2-Clause",
@@ -10923,16 +11757,6 @@
"url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
- "node_modules/renderkid/node_modules/strip-ansi": {
- "version": "6.0.1",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/repeat-string": {
"version": "1.6.1",
"license": "MIT",
@@ -10975,6 +11799,30 @@
"node": ">=4"
}
},
+ "node_modules/resolve-global": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz",
+ "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==",
+ "dev": true,
+ "dependencies": {
+ "global-dirs": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-global/node_modules/global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.4"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/resolve-pathname": {
"version": "3.0.0",
"license": "MIT"
@@ -11265,8 +12113,9 @@
}
},
"node_modules/semver": {
- "version": "7.3.5",
- "license": "ISC",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -11827,10 +12676,11 @@
}
},
"node_modules/strip-ansi": {
- "version": "6.0.0",
- "license": "MIT",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dependencies": {
- "ansi-regex": "^5.0.0"
+ "ansi-regex": "^5.0.1"
},
"engines": {
"node": ">=8"
@@ -12204,6 +13054,12 @@
"node": ">=6"
}
},
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
"node_modules/traverse": {
"version": "0.6.6",
"license": "MIT"
@@ -12728,6 +13584,18 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/vscode-languageserver-textdocument": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz",
+ "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==",
+ "dev": true
+ },
+ "node_modules/vscode-uri": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz",
+ "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==",
+ "dev": true
+ },
"node_modules/wait-on": {
"version": "6.0.0",
"license": "MIT",
@@ -12791,6 +13659,12 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true
+ },
"node_modules/webpack": {
"version": "5.63.0",
"license": "MIT",
@@ -13127,6 +14001,16 @@
"node": ">=0.8.0"
}
},
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"license": "ISC",
@@ -14280,56 +15164,437 @@
"@babel/plugin-transform-react-pure-annotations": "^7.12.1"
}
},
- "@babel/preset-typescript": {
- "version": "7.13.0",
- "requires": {
- "@babel/helper-plugin-utils": "^7.13.0",
- "@babel/helper-validator-option": "^7.12.17",
- "@babel/plugin-transform-typescript": "^7.13.0"
- }
+ "@babel/preset-typescript": {
+ "version": "7.13.0",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/helper-validator-option": "^7.12.17",
+ "@babel/plugin-transform-typescript": "^7.13.0"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.16.3",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/runtime-corejs3": {
+ "version": "7.16.3",
+ "requires": {
+ "core-js-pure": "^3.19.0",
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/template": {
+ "version": "7.16.0",
+ "requires": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/parser": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.16.3",
+ "requires": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/generator": "^7.16.0",
+ "@babel/helper-function-name": "^7.16.0",
+ "@babel/helper-hoist-variables": "^7.16.0",
+ "@babel/helper-split-export-declaration": "^7.16.0",
+ "@babel/parser": "^7.16.3",
+ "@babel/types": "^7.16.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.16.0",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@cspell/cspell-bundled-dicts": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.31.3.tgz",
+ "integrity": "sha512-KXy3qKWYzXOGYwqOGMCXHem3fV39iEmoKLiNhoWWry/SFdvAafmeY+LIDcQTXAcOQLkMDCwP2/rY/NadcWnrjg==",
+ "dev": true,
+ "requires": {
+ "@cspell/dict-ada": "^4.0.1",
+ "@cspell/dict-aws": "^3.0.0",
+ "@cspell/dict-bash": "^4.1.1",
+ "@cspell/dict-companies": "^3.0.9",
+ "@cspell/dict-cpp": "^5.0.2",
+ "@cspell/dict-cryptocurrencies": "^3.0.1",
+ "@cspell/dict-csharp": "^4.0.2",
+ "@cspell/dict-css": "^4.0.5",
+ "@cspell/dict-dart": "^2.0.2",
+ "@cspell/dict-django": "^4.0.2",
+ "@cspell/dict-docker": "^1.1.6",
+ "@cspell/dict-dotnet": "^5.0.0",
+ "@cspell/dict-elixir": "^4.0.2",
+ "@cspell/dict-en_us": "^4.3.2",
+ "@cspell/dict-en-common-misspellings": "^1.0.2",
+ "@cspell/dict-en-gb": "1.1.33",
+ "@cspell/dict-filetypes": "^3.0.0",
+ "@cspell/dict-fonts": "^3.0.2",
+ "@cspell/dict-fullstack": "^3.1.5",
+ "@cspell/dict-gaming-terms": "^1.0.4",
+ "@cspell/dict-git": "^2.0.0",
+ "@cspell/dict-golang": "^6.0.1",
+ "@cspell/dict-haskell": "^4.0.1",
+ "@cspell/dict-html": "^4.0.3",
+ "@cspell/dict-html-symbol-entities": "^4.0.0",
+ "@cspell/dict-java": "^5.0.5",
+ "@cspell/dict-k8s": "^1.0.1",
+ "@cspell/dict-latex": "^4.0.0",
+ "@cspell/dict-lorem-ipsum": "^3.0.0",
+ "@cspell/dict-lua": "^4.0.1",
+ "@cspell/dict-node": "^4.0.2",
+ "@cspell/dict-npm": "^5.0.5",
+ "@cspell/dict-php": "^4.0.1",
+ "@cspell/dict-powershell": "^5.0.1",
+ "@cspell/dict-public-licenses": "^2.0.2",
+ "@cspell/dict-python": "^4.0.2",
+ "@cspell/dict-r": "^2.0.1",
+ "@cspell/dict-ruby": "^5.0.0",
+ "@cspell/dict-rust": "^4.0.1",
+ "@cspell/dict-scala": "^5.0.0",
+ "@cspell/dict-software-terms": "^3.1.6",
+ "@cspell/dict-sql": "^2.1.0",
+ "@cspell/dict-svelte": "^1.0.2",
+ "@cspell/dict-swift": "^2.0.1",
+ "@cspell/dict-typescript": "^3.1.1",
+ "@cspell/dict-vue": "^3.0.0"
+ }
+ },
+ "@cspell/cspell-json-reporter": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-6.31.3.tgz",
+ "integrity": "sha512-ZJwj2vT4lxncYxduXcxy0dCvjjMvXIfphbLSCN5CXvufrtupB4KlcjZUnOofCi4pfpp8qocCSn1lf2DU9xgUXA==",
+ "dev": true,
+ "requires": {
+ "@cspell/cspell-types": "6.31.3"
+ }
+ },
+ "@cspell/cspell-pipe": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-6.31.3.tgz",
+ "integrity": "sha512-Lv/y4Ya/TJyU1pf66yl1te7LneFZd3lZg1bN5oe1cPrKSmfWdiX48v7plTRecWd/OWyLGd0yN807v79A+/0W7A==",
+ "dev": true
+ },
+ "@cspell/cspell-service-bus": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-6.31.3.tgz",
+ "integrity": "sha512-x5j8j3n39KN8EXOAlv75CpircdpF5WEMCC5pcO916o6GBmJBy8SrdzdsBGJhVcYGGilqy6pf8R9RCZ3yAmG8gQ==",
+ "dev": true
+ },
+ "@cspell/cspell-types": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-6.31.3.tgz",
+ "integrity": "sha512-wZ+t+lUsQJB65M31btZM4fH3K1CkRgE8pSeTiCwxYcnCL19pi4TMcEEMKdO8yFZMdocW4B7VRwzxNoQMw2ewBg==",
+ "dev": true
+ },
+ "@cspell/dict-ada": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.2.tgz",
+ "integrity": "sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==",
+ "dev": true
+ },
+ "@cspell/dict-aws": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-3.0.0.tgz",
+ "integrity": "sha512-O1W6nd5y3Z00AMXQMzfiYrIJ1sTd9fB1oLr+xf/UD7b3xeHeMeYE2OtcWbt9uyeHim4tk+vkSTcmYEBKJgS5bQ==",
+ "dev": true
+ },
+ "@cspell/dict-bash": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.1.tgz",
+ "integrity": "sha512-8czAa/Mh96wu2xr0RXQEGMTBUGkTvYn/Pb0o+gqOO1YW+poXGQc3gx0YPqILDryP/KCERrNvkWUJz3iGbvwC2A==",
+ "dev": true
+ },
+ "@cspell/dict-companies": {
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.0.23.tgz",
+ "integrity": "sha512-Xdj3whPrPw4B+I2zEfMOaoJCqEXAQu/WWyOuA0+eXyRDyGvckF0mf8Fsmi1059X6OFeUbbgHQqv59ip81APA2Q==",
+ "dev": true
+ },
+ "@cspell/dict-cpp": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.0.5.tgz",
+ "integrity": "sha512-ojCpQ4z+sHHLJYfvA3SApqQ1BjO/k3TUdDgqR3sVhFl5qjT9yz1/srBNzqCaBBSz/fiO5A8NKdSA9+IFrUHcig==",
+ "dev": true
+ },
+ "@cspell/dict-cryptocurrencies": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-3.0.1.tgz",
+ "integrity": "sha512-Tdlr0Ahpp5yxtwM0ukC13V6+uYCI0p9fCRGMGZt36rWv8JQZHIuHfehNl7FB/Qc09NCF7p5ep0GXbL+sVTd/+w==",
+ "dev": true
+ },
+ "@cspell/dict-csharp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz",
+ "integrity": "sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==",
+ "dev": true
+ },
+ "@cspell/dict-css": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.8.tgz",
+ "integrity": "sha512-K+WVgxxTq6JyuZrcH36w5aiDtIH6OHtnDIdZItTbVJAT8GitmLpKZRIgnwtykCGZc7eDIwCdft/bg1UC7hVfRQ==",
+ "dev": true
+ },
+ "@cspell/dict-dart": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.0.3.tgz",
+ "integrity": "sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw==",
+ "dev": true
+ },
+ "@cspell/dict-data-science": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-1.0.11.tgz",
+ "integrity": "sha512-TaHAZRVe0Zlcc3C23StZqqbzC0NrodRwoSAc8dis+5qLeLLnOCtagYQeROQvDlcDg3X/VVEO9Whh4W/z4PAmYQ==",
+ "dev": true
+ },
+ "@cspell/dict-django": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.0.tgz",
+ "integrity": "sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==",
+ "dev": true
+ },
+ "@cspell/dict-docker": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.7.tgz",
+ "integrity": "sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==",
+ "dev": true
+ },
+ "@cspell/dict-dotnet": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.0.tgz",
+ "integrity": "sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==",
+ "dev": true
+ },
+ "@cspell/dict-elixir": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz",
+ "integrity": "sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==",
+ "dev": true
+ },
+ "@cspell/dict-en_us": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.7.tgz",
+ "integrity": "sha512-83V0XXqiXJvXa1pj5cVpviYKeLTN2Dxvouz8ullrwgcfPtY57pYBy+3ACVAMYK0eGByhRPc/xVXlIgv4o0BNZw==",
+ "dev": true
+ },
+ "@cspell/dict-en-common-misspellings": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-1.0.2.tgz",
+ "integrity": "sha512-jg7ZQZpZH7+aAxNBlcAG4tGhYF6Ksy+QS5Df73Oo+XyckBjC9QS+PrRwLTeYoFIgXy5j3ICParK5r3MSSoL4gw==",
+ "dev": true
+ },
+ "@cspell/dict-en-gb": {
+ "version": "1.1.33",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz",
+ "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==",
+ "dev": true
+ },
+ "@cspell/dict-filetypes": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.1.tgz",
+ "integrity": "sha512-8z8mY1IbrTyTRumx2vvD9yzRhNMk9SajM/GtI5hdMM2pPpNSp25bnuauzjRf300eqlqPY2MNb5MmhBFO014DJw==",
+ "dev": true
+ },
+ "@cspell/dict-fonts": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-3.0.2.tgz",
+ "integrity": "sha512-Z5QdbgEI7DV+KPXrAeDA6dDm/vTzyaW53SGlKqz6PI5VhkOjgkBXv3YtZjnxMZ4dY2ZIqq+RUK6qa9Pi8rQdGQ==",
+ "dev": true
+ },
+ "@cspell/dict-fullstack": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.1.5.tgz",
+ "integrity": "sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==",
+ "dev": true
+ },
+ "@cspell/dict-gaming-terms": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.4.tgz",
+ "integrity": "sha512-hbDduNXlk4AOY0wFxcDMWBPpm34rpqJBeqaySeoUH70eKxpxm+dvjpoRLJgyu0TmymEICCQSl6lAHTHSDiWKZg==",
+ "dev": true
+ },
+ "@cspell/dict-git": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-2.0.0.tgz",
+ "integrity": "sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==",
+ "dev": true
+ },
+ "@cspell/dict-golang": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.2.tgz",
+ "integrity": "sha512-5pyZn4AAiYukAW+gVMIMVmUSkIERFrDX2vtPDjg8PLQUhAHWiVeQSDjuOhq9/C5GCCEZU/zWSONkGiwLBBvV9A==",
+ "dev": true
+ },
+ "@cspell/dict-haskell": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz",
+ "integrity": "sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==",
+ "dev": true
+ },
+ "@cspell/dict-html": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.3.tgz",
+ "integrity": "sha512-Gae8i8rrArT0UyG1I6DHDK62b7Be6QEcBSIeWOm4VIIW1CASkN9B0qFgSVnkmfvnu1Y3H7SSaaEynKjdj3cs8w==",
+ "dev": true
+ },
+ "@cspell/dict-html-symbol-entities": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz",
+ "integrity": "sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==",
+ "dev": true
+ },
+ "@cspell/dict-java": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.5.tgz",
+ "integrity": "sha512-X19AoJgWIBwJBSWGFqSgHaBR/FEykBHTMjL6EqOnhIGEyE9nvuo32tsSHjXNJ230fQxQptEvRZoaldNLtKxsRg==",
+ "dev": true
+ },
+ "@cspell/dict-k8s": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.1.tgz",
+ "integrity": "sha512-gc5y4Nm3hVdMZNBZfU2M1AsAmObZsRWjCUk01NFPfGhFBXyVne41T7E62rpnzu5330FV/6b/TnFcPgRmak9lLw==",
+ "dev": true
+ },
+ "@cspell/dict-latex": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.0.tgz",
+ "integrity": "sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==",
+ "dev": true
+ },
+ "@cspell/dict-lorem-ipsum": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-3.0.0.tgz",
+ "integrity": "sha512-msEV24qEpzWZs2kcEicqYlhyBpR0amfDkJOs+iffC07si9ftqtQ+yP3lf1VFLpgqw3SQh1M1vtU7RD4sPrNlcQ==",
+ "dev": true
+ },
+ "@cspell/dict-lua": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.1.tgz",
+ "integrity": "sha512-j0MFmeCouSoC6EdZTbvGe1sJ9V+ruwKSeF+zRkNNNload7R72Co5kX1haW2xLHGdlq0kqSy1ODRZKdVl0e+7hg==",
+ "dev": true
+ },
+ "@cspell/dict-node": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-4.0.3.tgz",
+ "integrity": "sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==",
+ "dev": true
+ },
+ "@cspell/dict-npm": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.8.tgz",
+ "integrity": "sha512-KuqH8tEsFD6DPKqKwIfWr9E+admE3yghaC0AKXG8jPaf77N0lkctKaS3dm0oxWUXkYKA/eXj6LCtz3VcTyxFPg==",
+ "dev": true
+ },
+ "@cspell/dict-php": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.3.tgz",
+ "integrity": "sha512-PxtSmWJCDEB4M8R9ER9ijxBum/tvUqYT26QeuV58q2IFs5IrPZ6hocQKvnFGXItjCWH4oYXyAEAAzINlBC4Opg==",
+ "dev": true
+ },
+ "@cspell/dict-powershell": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.2.tgz",
+ "integrity": "sha512-IHfWLme3FXE7vnOmMncSBxOsMTdNWd1Vcyhag03WS8oANSgX8IZ+4lMI00mF0ptlgchf16/OU8WsV4pZfikEFw==",
+ "dev": true
+ },
+ "@cspell/dict-public-licenses": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.4.tgz",
+ "integrity": "sha512-KjsfuGwMWvPkp6s0nR+s4mZc9SQhh1tHDOyQZfEVRwi+2ev7f8l7R6ts9sP2Mplb8UcxwO6YmKwxHjN+XHoMoA==",
+ "dev": true
+ },
+ "@cspell/dict-python": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.1.8.tgz",
+ "integrity": "sha512-yFrO9gGI3KIbw0Y1odAEtagrzmthjJVank9B7qlsSQvN78RgD1JQQycTadNWpzdjCj+JuiiH8pJBFWflweZoxw==",
+ "dev": true,
+ "requires": {
+ "@cspell/dict-data-science": "^1.0.11"
+ }
+ },
+ "@cspell/dict-r": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.1.tgz",
+ "integrity": "sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==",
+ "dev": true
+ },
+ "@cspell/dict-ruby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.0.tgz",
+ "integrity": "sha512-ssb96QxLZ76yPqFrikWxItnCbUKhYXJ2owkoIYzUGNFl2CHSoHCb5a6Zetum9mQ/oUA3gNeUhd28ZUlXs0la2A==",
+ "dev": true
+ },
+ "@cspell/dict-rust": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.1.tgz",
+ "integrity": "sha512-xJSSzHDK2z6lSVaOmMxl3PTOtfoffaxMo7fTcbZUF+SCJzfKbO6vnN9TCGX2sx1RHFDz66Js6goz6SAZQdOwaw==",
+ "dev": true
+ },
+ "@cspell/dict-scala": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.0.tgz",
+ "integrity": "sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==",
+ "dev": true
+ },
+ "@cspell/dict-software-terms": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.2.5.tgz",
+ "integrity": "sha512-Hmdm4A8AKD0xQDrZ8GQqdq5n0ewCCp9hu1kkf3tPlUGqzchtzmqaQ91XAfbrhJiMvB5jo51mWK09ZIrR0uoJhA==",
+ "dev": true
},
- "@babel/runtime": {
- "version": "7.16.3",
- "requires": {
- "regenerator-runtime": "^0.13.4"
- }
+ "@cspell/dict-sql": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.1.tgz",
+ "integrity": "sha512-v1mswi9NF40+UDUMuI148YQPEQvWjac72P6ZsjlRdLjEiQEEMEsTQ+zlkIdnzC9QCNyJaqD5Liq9Mn78/8Zxtw==",
+ "dev": true
},
- "@babel/runtime-corejs3": {
- "version": "7.16.3",
- "requires": {
- "core-js-pure": "^3.19.0",
- "regenerator-runtime": "^0.13.4"
- }
+ "@cspell/dict-svelte": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz",
+ "integrity": "sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==",
+ "dev": true
},
- "@babel/template": {
- "version": "7.16.0",
- "requires": {
- "@babel/code-frame": "^7.16.0",
- "@babel/parser": "^7.16.0",
- "@babel/types": "^7.16.0"
- }
+ "@cspell/dict-swift": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.1.tgz",
+ "integrity": "sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==",
+ "dev": true
},
- "@babel/traverse": {
- "version": "7.16.3",
- "requires": {
- "@babel/code-frame": "^7.16.0",
- "@babel/generator": "^7.16.0",
- "@babel/helper-function-name": "^7.16.0",
- "@babel/helper-hoist-variables": "^7.16.0",
- "@babel/helper-split-export-declaration": "^7.16.0",
- "@babel/parser": "^7.16.3",
- "@babel/types": "^7.16.0",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- }
+ "@cspell/dict-typescript": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.1.tgz",
+ "integrity": "sha512-N9vNJZoOXmmrFPR4ir3rGvnqqwmQGgOYoL1+y6D4oIhyr7FhaYiyF/d7QT61RmjZQcATMa6PSL+ZisCeRLx9+A==",
+ "dev": true
},
- "@babel/types": {
- "version": "7.16.0",
+ "@cspell/dict-vue": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.0.tgz",
+ "integrity": "sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==",
+ "dev": true
+ },
+ "@cspell/dynamic-import": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-6.31.3.tgz",
+ "integrity": "sha512-A6sT00+6UNGFksQ5SxW2ohNl6vUutai8F4jwJMHTjZL/9vivQpU7y5V4PpsfoPZtx3WZcbrzuTvJ+tLfdbWc4A==",
+ "dev": true,
"requires": {
- "@babel/helper-validator-identifier": "^7.15.7",
- "to-fast-properties": "^2.0.0"
+ "import-meta-resolve": "^2.2.2"
}
},
+ "@cspell/strong-weak-map": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-6.31.3.tgz",
+ "integrity": "sha512-znwc9IlgGUPioHGshP/zyM8HsuYg1OY5S7HSiVXARh5H8RqcyBsnyn8abc0PPhqPrfDy9Fh5xHsAEPZ55dl1vQ==",
+ "dev": true
+ },
"@docsearch/css": {
"version": "3.0.0-alpha.41"
},
@@ -15606,7 +16871,9 @@
"version": "0.0.8"
},
"ansi-regex": {
- "version": "5.0.0"
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
},
"ansi-styles": {
"version": "4.3.0",
@@ -15630,6 +16897,12 @@
"array-flatten": {
"version": "2.1.2"
},
+ "array-timsort": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz",
+ "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==",
+ "dev": true
+ },
"array-union": {
"version": "2.1.0"
},
@@ -16117,6 +17390,33 @@
"clean-stack": {
"version": "2.2.0"
},
+ "clear-module": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz",
+ "integrity": "sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^2.0.0",
+ "resolve-from": "^5.0.0"
+ },
+ "dependencies": {
+ "parent-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz",
+ "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.1.0"
+ }
+ },
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true
+ }
+ }
+ },
"cli-boxes": {
"version": "2.2.1"
},
@@ -16233,6 +17533,19 @@
"commander": {
"version": "5.1.0"
},
+ "comment-json": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz",
+ "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==",
+ "dev": true,
+ "requires": {
+ "array-timsort": "^1.0.3",
+ "core-util-is": "^1.0.3",
+ "esprima": "^4.0.1",
+ "has-own-prop": "^2.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
"commondir": {
"version": "1.0.1"
},
@@ -16470,6 +17783,221 @@
"crypto-random-string": {
"version": "2.0.0"
},
+ "cspell": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell/-/cspell-6.31.3.tgz",
+ "integrity": "sha512-VeeShDLWVM6YPiU/imeGy0lmg6ki63tbLEa6hz20BExhzzpmINOP5nSTYtpY0H9zX9TrF/dLbI38TuuYnyG3Uw==",
+ "dev": true,
+ "requires": {
+ "@cspell/cspell-json-reporter": "6.31.3",
+ "@cspell/cspell-pipe": "6.31.3",
+ "@cspell/cspell-types": "6.31.3",
+ "@cspell/dynamic-import": "6.31.3",
+ "chalk": "^4.1.2",
+ "commander": "^10.0.0",
+ "cspell-gitignore": "6.31.3",
+ "cspell-glob": "6.31.3",
+ "cspell-io": "6.31.3",
+ "cspell-lib": "6.31.3",
+ "fast-glob": "^3.2.12",
+ "fast-json-stable-stringify": "^2.1.0",
+ "file-entry-cache": "^6.0.1",
+ "get-stdin": "^8.0.0",
+ "imurmurhash": "^0.1.4",
+ "semver": "^7.3.8",
+ "strip-ansi": "^6.0.1",
+ "vscode-uri": "^3.0.7"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "dev": true
+ }
+ }
+ },
+ "cspell-dictionary": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-6.31.3.tgz",
+ "integrity": "sha512-3w5P3Md/tbHLVGPKVL0ePl1ObmNwhdDiEuZ2TXfm2oAIwg4aqeIrw42A2qmhaKLcuAIywpqGZsrGg8TviNNhig==",
+ "dev": true,
+ "requires": {
+ "@cspell/cspell-pipe": "6.31.3",
+ "@cspell/cspell-types": "6.31.3",
+ "cspell-trie-lib": "6.31.3",
+ "fast-equals": "^4.0.3",
+ "gensequence": "^5.0.2"
+ }
+ },
+ "cspell-gitignore": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-6.31.3.tgz",
+ "integrity": "sha512-vCfVG4ZrdwJnsZHl/cdp8AY+YNPL3Ga+0KR9XJsaz69EkQpgI6porEqehuwle7hiXw5e3L7xFwNEbpCBlxgLRA==",
+ "dev": true,
+ "requires": {
+ "cspell-glob": "6.31.3",
+ "find-up": "^5.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ }
+ }
+ },
+ "cspell-glob": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-6.31.3.tgz",
+ "integrity": "sha512-+koUJPSCOittQwhR0T1mj4xXT3N+ZnY2qQ53W6Gz9HY3hVfEEy0NpbwE/Uy7sIvFMbc426fK0tGXjXyIj72uhQ==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^4.0.5"
+ }
+ },
+ "cspell-grammar": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-6.31.3.tgz",
+ "integrity": "sha512-TZYaOLIGAumyHlm4w7HYKKKcR1ZgEMKt7WNjCFqq7yGVW7U+qyjQqR8jqnLiUTZl7c2Tque4mca7n0CFsjVv5A==",
+ "dev": true,
+ "requires": {
+ "@cspell/cspell-pipe": "6.31.3",
+ "@cspell/cspell-types": "6.31.3"
+ }
+ },
+ "cspell-io": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-6.31.3.tgz",
+ "integrity": "sha512-yCnnQ5bTbngUuIAaT5yNSdI1P0Kc38uvC8aynNi7tfrCYOQbDu1F9/DcTpbdhrsCv+xUn2TB1YjuCmm0STfJlA==",
+ "dev": true,
+ "requires": {
+ "@cspell/cspell-service-bus": "6.31.3",
+ "node-fetch": "^2.6.9"
+ },
+ "dependencies": {
+ "node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ }
+ }
+ },
+ "cspell-lib": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-6.31.3.tgz",
+ "integrity": "sha512-Dv55aecaMvT/5VbNryKo0Zos8dtHon7e1K0z8DR4/kGZdQVT0bOFWeotSLhuaIqoNFdEt8ypfKbrIHIdbgt1Hg==",
+ "dev": true,
+ "requires": {
+ "@cspell/cspell-bundled-dicts": "6.31.3",
+ "@cspell/cspell-pipe": "6.31.3",
+ "@cspell/cspell-types": "6.31.3",
+ "@cspell/strong-weak-map": "6.31.3",
+ "clear-module": "^4.1.2",
+ "comment-json": "^4.2.3",
+ "configstore": "^5.0.1",
+ "cosmiconfig": "8.0.0",
+ "cspell-dictionary": "6.31.3",
+ "cspell-glob": "6.31.3",
+ "cspell-grammar": "6.31.3",
+ "cspell-io": "6.31.3",
+ "cspell-trie-lib": "6.31.3",
+ "fast-equals": "^4.0.3",
+ "find-up": "^5.0.0",
+ "gensequence": "^5.0.2",
+ "import-fresh": "^3.3.0",
+ "resolve-from": "^5.0.0",
+ "resolve-global": "^1.0.0",
+ "vscode-languageserver-textdocument": "^1.0.8",
+ "vscode-uri": "^3.0.7"
+ },
+ "dependencies": {
+ "cosmiconfig": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz",
+ "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==",
+ "dev": true,
+ "requires": {
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0"
+ }
+ },
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true
+ }
+ }
+ },
+ "cspell-trie-lib": {
+ "version": "6.31.3",
+ "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-6.31.3.tgz",
+ "integrity": "sha512-HNUcLWOZAvtM3E34U+7/mSSpO0F6nLd/kFlRIcvSvPb9taqKe8bnSa0Yyb3dsdMq9rMxUmuDQtF+J6arZK343g==",
+ "dev": true,
+ "requires": {
+ "@cspell/cspell-pipe": "6.31.3",
+ "@cspell/cspell-types": "6.31.3",
+ "gensequence": "^5.0.2"
+ }
+ },
"css-color-names": {
"version": "1.0.1"
},
@@ -17103,15 +18631,22 @@
"fast-deep-equal": {
"version": "3.1.3"
},
+ "fast-equals": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz",
+ "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==",
+ "dev": true
+ },
"fast-glob": {
- "version": "3.2.5",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
"requires": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.0",
+ "glob-parent": "^5.1.2",
"merge2": "^1.3.0",
- "micromatch": "^4.0.2",
- "picomatch": "^2.2.1"
+ "micromatch": "^4.0.4"
}
},
"fast-json-stable-stringify": {
@@ -17173,6 +18708,15 @@
}
}
},
+ "file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^3.0.4"
+ }
+ },
"file-loader": {
"version": "6.2.0",
"requires": {
@@ -17274,6 +18818,22 @@
"path-exists": "^4.0.0"
}
},
+ "flat-cache": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
+ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "dev": true,
+ "requires": {
+ "flatted": "^3.1.0",
+ "rimraf": "^3.0.2"
+ }
+ },
+ "flatted": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+ "dev": true
+ },
"follow-redirects": {
"version": "1.14.5"
},
@@ -17387,6 +18947,12 @@
"function-bind": {
"version": "1.1.1"
},
+ "gensequence": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-5.0.2.tgz",
+ "integrity": "sha512-JlKEZnFc6neaeSVlkzBGGgkIoIaSxMgvdamRoPN8r3ozm2r9dusqxeKqYQ7lhzmj2UhFQP8nkyfCaiLQxiLrDA==",
+ "dev": true
+ },
"gensync": {
"version": "1.0.0-beta.2"
},
@@ -17404,6 +18970,12 @@
"get-own-enumerable-property-symbols": {
"version": "3.0.2"
},
+ "get-stdin": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+ "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+ "dev": true
+ },
"get-stream": {
"version": "6.0.1"
},
@@ -17550,6 +19122,12 @@
"has-flag": {
"version": "4.0.0"
},
+ "has-own-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
+ "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==",
+ "dev": true
+ },
"has-symbols": {
"version": "1.0.2"
},
@@ -17914,6 +19492,12 @@
"import-lazy": {
"version": "2.1.0"
},
+ "import-meta-resolve": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz",
+ "integrity": "sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==",
+ "dev": true
+ },
"imurmurhash": {
"version": "0.1.4"
},
@@ -18557,10 +20141,12 @@
"version": "1.1.2"
},
"micromatch": {
- "version": "4.0.4",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"requires": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
}
},
"mime": {
@@ -19976,9 +21562,6 @@
"strip-ansi": "^6.0.1"
},
"dependencies": {
- "ansi-regex": {
- "version": "5.0.1"
- },
"css-select": {
"version": "4.1.3",
"requires": {
@@ -20034,12 +21617,6 @@
"requires": {
"boolbase": "^1.0.0"
}
- },
- "strip-ansi": {
- "version": "6.0.1",
- "requires": {
- "ansi-regex": "^5.0.1"
- }
}
}
},
@@ -20065,6 +21642,26 @@
"resolve-from": {
"version": "4.0.0"
},
+ "resolve-global": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz",
+ "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==",
+ "dev": true,
+ "requires": {
+ "global-dirs": "^0.1.1"
+ },
+ "dependencies": {
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4"
+ }
+ }
+ }
+ },
"resolve-pathname": {
"version": "3.0.0"
},
@@ -20225,7 +21822,9 @@
}
},
"semver": {
- "version": "7.3.5",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
"requires": {
"lru-cache": "^6.0.0"
}
@@ -20614,9 +22213,11 @@
}
},
"strip-ansi": {
- "version": "6.0.0",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"requires": {
- "ansi-regex": "^5.0.0"
+ "ansi-regex": "^5.0.1"
}
},
"strip-bom-string": {
@@ -20848,6 +22449,12 @@
"totalist": {
"version": "1.1.0"
},
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
"traverse": {
"version": "0.6.6"
},
@@ -21146,6 +22753,18 @@
"unist-util-stringify-position": "^2.0.0"
}
},
+ "vscode-languageserver-textdocument": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz",
+ "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==",
+ "dev": true
+ },
+ "vscode-uri": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz",
+ "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==",
+ "dev": true
+ },
"wait-on": {
"version": "6.0.0",
"requires": {
@@ -21192,6 +22811,12 @@
"web-namespaces": {
"version": "1.1.4"
},
+ "webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true
+ },
"webpack": {
"version": "5.63.0",
"requires": {
@@ -21385,6 +23010,16 @@
"websocket-extensions": {
"version": "0.1.4"
},
+ "whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "requires": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"which": {
"version": "2.0.2",
"requires": {
diff --git a/package.json b/package.json
index b0695fe21ba..c41a98f121b 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,8 @@
"prestart": "npm run generate-markdown",
"prettier": "prettier \"./**/*.{html,ts,tsx,js,jsx,md}\"",
"start": "docusaurus start",
- "swizzle": "docusaurus swizzle --danger"
+ "swizzle": "docusaurus swizzle --danger",
+ "spellcheck": "cspell --no-progress \"**/*.md\""
},
"browserslist": {
"production": [
@@ -71,6 +72,7 @@
"@ionic/prettier-config": "^3.0.0",
"@tsconfig/docusaurus": "^1.0.4",
"@types/react": "^17.0.37",
+ "cspell": "^6.31.3",
"html-loader": "^3.1.0",
"hygen": "^6.2.11",
"prettier": "^2.8.8",
diff --git a/src/components/global/Playground/README.md b/src/components/global/Playground/README.md
index 92e9b9fa3c2..22c475fafe8 100644
--- a/src/components/global/Playground/README.md
+++ b/src/components/global/Playground/README.md
@@ -14,7 +14,7 @@ By default, Playground examples will render in an empty container and fill the a
## Multiple File Examples
-Playground supports single file and multi-file examples to show the required code to create a sample. To include multiple file examples for a single framework target, use the `files` option to specify the file location (in the Stackblitz generated project) and the file contents.
+Playground supports single file and multi-file examples to show the required code to create a sample. To include multiple file examples for a single framework target, use the `files` option to specify the file location (in the StackBlitz generated project) and the file contents.
You can mix multi-file and single file examples together in a single example:
@@ -46,7 +46,7 @@ import javascript from './javascript.md';
/>;
```
-The file location is respective to the Stackblitz demo project. If you are unsure of the exact path, refer to the `stackblitz.utils.ts` method for each respective target. The path specified in `sdk.openProject` will coincide with the value used in the `files` configuration.
+The file location is respective to the StackBlitz demo project. If you are unsure of the exact path, refer to the `stackblitz.utils.ts` method for each respective target. The path specified in `sdk.openProject` will coincide with the value used in the `files` configuration.
## Creating a New Playground
@@ -54,7 +54,7 @@ You can [generate a new playground](../../../../_templates/README.md#new-playgro
## Ejecting from IonApp/IonContent Boilerplate
-By default, Playground examples will automatically include the following template wrapper for each component example when opened in Stackblitz.
+By default, Playground examples will automatically include the following template wrapper for each component example when opened in StackBlitz.
```html
diff --git a/src/components/global/Playground/index.tsx b/src/components/global/Playground/index.tsx
index 386525467cc..1e61832fa33 100644
--- a/src/components/global/Playground/index.tsx
+++ b/src/components/global/Playground/index.tsx
@@ -68,11 +68,11 @@ type MdxContent = () => {};
/**
* The advanced configuration of options when creating a
* playground example with multiple files for a single usage target
- * or if needing to modify the generated Stackblitz example code.
+ * or if needing to modify the generated StackBlitz example code.
*/
interface UsageTargetOptions {
/**
- * The list of the file names to use in the Stackblitz example
+ * The list of the file names to use in the StackBlitz example
* and their associated MDX content.
*
* ```ts
@@ -86,7 +86,7 @@ interface UsageTargetOptions {
[key: string]: MdxContent;
};
/**
- * The list of dependencies to use in the Stackblitz example.
+ * The list of dependencies to use in the StackBlitz example.
* The key is the package name and the value is the version.
* The version must be a valid semver range.
*
@@ -104,8 +104,8 @@ interface UsageTargetOptions {
/**
* @param code The code snippets for each supported framework target.
- * @param title Optional title of the generated playground example. Specify to customize the Stackblitz title.
- * @param description Optional description of the generated playground example. Specify to customize the Stackblitz description.
+ * @param title Optional title of the generated playground example. Specify to customize the StackBlitz title.
+ * @param description Optional description of the generated playground example. Specify to customize the StackBlitz description.
* @param src The absolute path to the playground demo. For example: `/usage/button/basic/demo.html`
* @param size The height of the playground. Supports `xsmall`, `small`, `medium`, `large`, 'xlarge' or any string value.
* @param devicePreview `true` if the playground example should render in a device frame (iOS/MD).
@@ -138,8 +138,8 @@ export default function Playground({
showConsole?: boolean;
includeIonContent: boolean;
/**
- * The major version of Ionic to use in the generated Stackblitz examples.
- * This will also load assets for Stackblitz from the specified version directory.
+ * The major version of Ionic to use in the generated StackBlitz examples.
+ * This will also load assets for StackBlitz from the specified version directory.
*/
version: number;
}) {
@@ -366,7 +366,7 @@ export default function Playground({
version,
};
- // using outerText will preserve line breaks for formatting in Stackblitz editor
+ // using outerText will preserve line breaks for formatting in StackBlitz editor
const codeBlock = codeRef.current.querySelector('code').outerText;
if (hasUsageTargetOptions) {
diff --git a/src/components/global/Playground/stackblitz.utils.ts b/src/components/global/Playground/stackblitz.utils.ts
index c711d7212bc..15e35e01454 100644
--- a/src/components/global/Playground/stackblitz.utils.ts
+++ b/src/components/global/Playground/stackblitz.utils.ts
@@ -1,17 +1,17 @@
import sdk from '@stackblitz/sdk';
-// The default title to use for Stackblitz examples (when not overwritten)
+// The default title to use for StackBlitz examples (when not overwritten)
const DEFAULT_EDITOR_TITLE = 'Ionic Docs Example';
-// The default description to use for Stackblitz examples (when not overwritten)
+// The default description to use for StackBlitz examples (when not overwritten)
const DEFAULT_EDITOR_DESCRIPTION = '';
export interface EditorOptions {
/**
- * The title of the Stackblitz example.
+ * The title of the StackBlitz example.
*/
title?: string;
/**
- * The description of the Stackblitz example.
+ * The description of the StackBlitz example.
*/
description?: string;
@@ -20,7 +20,7 @@ export interface EditorOptions {
};
/**
- * List of dependencies to add to the Stackblitz example.
+ * List of dependencies to add to the StackBlitz example.
* The key is the name of the dependency and the value is the version.
*/
dependencies?: {
@@ -29,12 +29,12 @@ export interface EditorOptions {
/**
* `true` if `ion-app` and `ion-content` should automatically be injected into the
- * Stackblitz example.
+ * StackBlitz example.
*/
includeIonContent: boolean;
/**
- * The mode of the Stackblitz example.
+ * The mode of the StackBlitz example.
*/
mode?: string;
@@ -272,7 +272,7 @@ const openVueEditor = async (code: string, options?: EditorOptions) => {
);
/**
- * We have to use Stackblitz web containers here (node template), due
+ * We have to use StackBlitz web containers here (node template), due
* to multiple issues with Vite, Vue/Vue Router and Vue 3's script setup.
*
* https://github.com/stackblitz/core/issues/1308
diff --git a/src/styles/components/README.md b/src/styles/components/README.md
index b27f0f6857b..35572b81131 100644
--- a/src/styles/components/README.md
+++ b/src/styles/components/README.md
@@ -26,7 +26,7 @@ Global variables can be overridden at root like this:
}
```
-Styles can be overriden like this:
+Styles can be overridden like this:
```css
#__docusaurus {
diff --git a/static/code/stackblitz/README.md b/static/code/stackblitz/README.md
index 0f0d24b620d..a816e80581f 100644
--- a/static/code/stackblitz/README.md
+++ b/static/code/stackblitz/README.md
@@ -1,6 +1,6 @@
-# Stackblitz
+# StackBlitz
-This directory contains the source files for generating the individual framework targets for a playground examples. The contents of the files will be loaded and injected into the Stackblitz example that is opened from the Playground.
+This directory contains the source files for generating the individual framework targets for a playground examples. The contents of the files will be loaded and injected into the StackBlitz example that is opened from the Playground.
## Angular
diff --git a/versioned_docs/version-v5/angular/performance.md b/versioned_docs/version-v5/angular/performance.md
index ba542f38f46..1a4369e3f82 100644
--- a/versioned_docs/version-v5/angular/performance.md
+++ b/versioned_docs/version-v5/angular/performance.md
@@ -49,6 +49,8 @@ For more information on how Angular manages change propagation with `ngFor` see
## From the Community
+
+
[High Performance Animations in Ionic](https://www.joshmorony.com/high-performance-animations-in-ionic/) - Josh Morony
[High Performance List Filtering in Ionic](https://www.joshmorony.com/high-performance-list-filtering-in-ionic-2/) - Josh Morony
@@ -57,6 +59,8 @@ For more information on how Angular manages change propagation with `ngFor` see
[Ionic Framework is Fast (But Your Code Might Not Be)](https://www.joshmorony.com/ionic-framework-is-fast-but-your-code-might-not-be/) - Josh Morony
+
+
:::note
Do you have a guide you'd like to share? Click the _Edit this page_ button below.
:::
diff --git a/versioned_docs/version-v5/angular/testing.md b/versioned_docs/version-v5/angular/testing.md
index ce608728a73..18bfd05ac67 100644
--- a/versioned_docs/version-v5/angular/testing.md
+++ b/versioned_docs/version-v5/angular/testing.md
@@ -285,7 +285,7 @@ When an `@ionic/angular` application is generated, a default end-to-end test app
- `protractor.conf.js` - the Protractor configuration file
- `tsconfig.e2e.json` - specific TypeScript configuration for the testing application
-- `src/app.po.ts` - a page object containing methods that navigate the application, query elements in the DOM, and maninpulate elements on the page
+- `src/app.po.ts` - a page object containing methods that navigate the application, query elements in the DOM, and manipulate elements on the page
- `src/app.e2e-spec.ts` - a testing script
#### Page Objects
diff --git a/versioned_docs/version-v5/api/input.md b/versioned_docs/version-v5/api/input.md
index c7c408fd1ab..5db846bb186 100644
--- a/versioned_docs/version-v5/api/input.md
+++ b/versioned_docs/version-v5/api/input.md
@@ -18,7 +18,7 @@ import Slots from '@ionic-internal/component-api/v5/input/slots.md';
The input component is a wrapper to the HTML input element with custom styling and additional functionality. It accepts most of the same properties as the HTML input, but works great on desktop devices and integrates with the keyboard on mobile devices.
-It is meant for text `type` inputs only, such as `"text"`, `"password"`, `"email"`, `"number"`, `"search"`, `"tel"`, and `"url"`. It supports all standard text input events including keyup, keydown, keypress, and more.
+It is meant for text `type` inputs only, such as `"text"`, `"password"`, `"email"`, `"number"`, `"search"`, `"tel"`, and `"url"`. It supports all standard text input events including `keyup`, `keydown`, `keypress`, and more.
## Usage
diff --git a/versioned_docs/version-v5/components.md b/versioned_docs/version-v5/components.md
index bb6455efef1..62596fd9eca 100644
--- a/versioned_docs/version-v5/components.md
+++ b/versioned_docs/version-v5/components.md
@@ -148,7 +148,7 @@ Ionic apps are made of high-level building blocks called Components, which allow
- Toast is used to show a notification over the top of an app's content. It can be temporary or dismissable.
+ Toast is used to show a notification over the top of an app's content. It can be temporary or dismissible.
diff --git a/versioned_docs/version-v5/core-concepts/what-are-progressive-web-apps.md b/versioned_docs/version-v5/core-concepts/what-are-progressive-web-apps.md
index 599e5cee3dc..4663faec695 100644
--- a/versioned_docs/version-v5/core-concepts/what-are-progressive-web-apps.md
+++ b/versioned_docs/version-v5/core-concepts/what-are-progressive-web-apps.md
@@ -40,12 +40,16 @@ To be considered a Progressive Web App, your app must be:
- Linkable - Easily share via URL and not require complex installation.
+
+
Addy Osmani: Progressive web apps
+
+
There is a lot here, but it boils down to a few points for Ionic apps.
#### Offline Support
diff --git a/versioned_docs/version-v5/developer-resources/books.md b/versioned_docs/version-v5/developer-resources/books.md
index 01218e277f4..1a51bc94e8f 100644
--- a/versioned_docs/version-v5/developer-resources/books.md
+++ b/versioned_docs/version-v5/developer-resources/books.md
@@ -4,50 +4,72 @@
Angular. Vue. React. Vanilla JavaScript. All of these tools can be used to create awesome applications with Ionic, thanks to the new Stencil compiler. This book is aimed at beginners that are looking to create amazing web, mobile and desktop applications using Ionic with examples across all of the popular frameworks.
+
+
by [Paul Halliday](https:://developer.school)
### [Creating Ionic Applications with StencilJS](https://www.joshmorony.com/creating-ionic-applications-with-stencil-js/) - [Free Preview](https://cdn2.hubspot.net/hubfs/3776657/PREVIEW-Creating-Ionic-Apps-with-StencilJS.pdf)
As well as being a powerful tool for generating reuseable web components, StencilJS provides the tools needed to build an entire application out of web components. Combined with the Ionic web components, StencilJS gives us everything we need to build high-quality production mobile applications - no framework required.
+
+
by [Joshua Morony](https://www.joshmorony.com/blog)
### [Mobile App Development with Ionic: Cross-Platform Apps with Ionic 2, Angular 2, and Cordova](https://www.amazon.com/Mobile-App-Development-Ionic-Cross-Platform/dp/1491937785/ref=sr_1_2?ie=UTF8&qid=1464183332&sr=8-2&keywords=ionic+2)
+
+
by Chris Griffith
### [Building Mobile Apps with Ionic & Angular](https://www.joshmorony.com/building-mobile-apps-with-ionic-2/)
+
+
by [Joshua Morony](https://www.joshmorony.com/blog)
Building Mobile Apps with Ionic & Angular is an all-in-one resource for learning the latest and greatest version of Ionic. It is targeted at beginners and works its way through the basics of Ionic, to example applications of varying complexity, and then to the steps required to build and publish your application (on the app stores or as a PWA). It has been updated for every major release, so you can rest easy knowing that you're not learning outdated tech.
### [Ionic 2 From Zero to App Store](https://devdactic.com/zero-to-app)
+
+
by Simon Reimler
### [Ionic Framework By Example](https://www.packtpub.com/application-development/ionic-framework-example)
+
+
by Sani Yusuf
### [Building Firestore Powered Ionic Apps](https://javebratt.com/ionic-firebase-book/)
+
+
by Jorge Vergara
This book will help you go from not knowing what Firebase is to be able to use the different APIs for your Ionic Applications. It will take you from “_What’s Firebase?_” to building scalable, production-ready apps and it’s always up-to-date with latest Ionic and Firebase versions.
### [Ionic 2 Cookbook - Second Edition](https://www.amazon.com/Ionic-Cookbook-Second-Hoc-Phan-ebook/dp/B01C4D9VWS?ie=UTF8&keywords=ionic%202&qid=1464183332&ref_=sr_1_3&sr=8-3)
+
+
by Hoc Phan
### [Mastering Ionic 2](https://www.leanpub.com/masteringionic2)
+
+
by James Griffiths
### [Learning Ionic](https://www.packtpub.com/in/application-development/learning-ionic) (Ionic 1)
+
+
by Arvind Ravulavaru
### [Learning Ionic - Second Edition](https://www.packtpub.com/in/web-development/learning-ionic-second-edition) (Ionic 2/3)
+
+
by Arvind Ravulavaru
diff --git a/versioned_docs/version-v5/developer-resources/courses.md b/versioned_docs/version-v5/developer-resources/courses.md
index 46038f4ffb1..900a2c51084 100644
--- a/versioned_docs/version-v5/developer-resources/courses.md
+++ b/versioned_docs/version-v5/developer-resources/courses.md
@@ -2,23 +2,31 @@
### [Elite Ionic](https://www.joshmorony.com/elite/)
+
+
by Josh Morony
Elite Ionic is an online course for Ionic developers who want to move past the basics, and build complex, well tested, high performing, beautiful, and useable mobile applications. It is recommended that you already have a reasonably solid understanding of the basics of Ionic before starting this course.
### [Ionic Academy](https://ionicacademy.com/)
+
+
by Simon Grimm
Learn Ionic with step-by-step video courses & quick wins from one of the Ionic community leaders. Covers beginner, intermediate and advanced topics. Get access to a community of developers just like you.
### [Ionic Framework: Tips, Tricks & Techniques](https://www.packtpub.com/mobile/ionic-framework-tips-tricks-and-techniques-video)
+
+
by Charles Muzonzini
In this course, you will master tips and best practices for Ionic 4 & Ionic 5 that you can immediately implement to build high quality apps. This course covers a wide variety of topics from increasing app performance, to building custom native plugins, to securing your apps. It's a practical, hands-on course that will take your app building skills to the next level.
-### [Building Deskop Apps with Ionic and Electron](https://pluralsight.pxf.io/VeMXO)
+### [Building Desktop Apps with Ionic and Electron](https://pluralsight.pxf.io/VeMXO)
+
+
by Michael Callaghan at Pluralsight
@@ -33,6 +41,8 @@ Windows and macOS users.
### [Building Progressive Web Apps with Ionic](https://pluralsight.pxf.io/Ly2EY)
+
+
by Michael Callaghan at Pluralsight
Everything changed when Google created the concept of Progressive Web Applications or PWA. A PWA is a pure web
@@ -48,6 +58,8 @@ Progressive Web Application anywhere you desire.
### [Ionic CLI](https://pluralsight.pxf.io/ionic-cli)
+
+
by Michael Callaghan at Pluralsight
Since its inception, the Ionic Framework has included a rudimentary command line interface. Though only a few
@@ -60,24 +72,36 @@ the confidence to use the Ionic CLI as part of your everyday Ionic development.
### [Wordpress Rest API and Ionic 4 (Angular) App With Auth](https://www.udemy.com/course/wordpress-rest-api-and-ionic-3-crud/)
+
+
by Baljeet Singh at Udemy
### [Building Mobile Apps with Ionic 2, Angular 2, and TypeScript](https://app.pluralsight.com/library/courses/ionic2-angular2-typescript-mobile-apps/table-of-contents)
+
+
by Pluralsight
### [Introducing Ionic 2](http://shop.oreilly.com/product/0636920050353.do)
+
+
by Mathieu Chauvinc
### [Ionic 2 Master Course](https://www.udemy.com/ionic-2-tutorial/)
+
+
by Udemy
### [Introducing Ionic 2](https://www.udemy.com/introducing-ionic-2/)
+
+
by Udemy
### [Ionic 2 Solutions](https://www.packtpub.com/web-development/ionic-2-solutions-video)
+
+
by Hoc Phan
diff --git a/versioned_docs/version-v5/native/wifi-wizard-2.md b/versioned_docs/version-v5/native/wifi-wizard-2.md
index 8c6053c32c2..bb500670c3f 100644
--- a/versioned_docs/version-v5/native/wifi-wizard-2.md
+++ b/versioned_docs/version-v5/native/wifi-wizard-2.md
@@ -192,7 +192,7 @@ this.wifiWizard2.connect(ssid, bindAll, password, algorithm, isHiddenSSID);
- `CONNECT_FAILED_TIMEOUT` unable to verify connection, timed out after 60 seconds
- `INVALID_NETWORK_ID_TO_CONNECT` Unable to connect based on generated wifi config
-- `INTERPUT_EXCEPT_WHILE_CONNECTING` Interupt exception while waiting for connection
+- `INTERPUT_EXCEPT_WHILE_CONNECTING` Interrupt exception while waiting for connection
## Disconnect vs Disable
@@ -461,9 +461,9 @@ this.wifiWizard2.disable(ssid);
this.wifiWizard2.requestPermission();
```
-- Request `ACCESS_FINE_LOCATION` permssion
+- Request `ACCESS_FINE_LOCATION` permission
- This Android permission is required to run `scan`, `startStart` and `getScanResults`
-- You can request permission by running this function manually, or WifiWizard2 will automagically request permission when one of the functions above is called
+- You can request permission by running this function manually, or WifiWizard2 will automatically request permission when one of the functions above is called
**Thrown Errors**
diff --git a/versioned_docs/version-v5/react/navigation.md b/versioned_docs/version-v5/react/navigation.md
index d32670f5bf1..6405fae835d 100644
--- a/versioned_docs/version-v5/react/navigation.md
+++ b/versioned_docs/version-v5/react/navigation.md
@@ -281,4 +281,8 @@ For more info on routing in React using React Router, check out their docs at [h
## From the Community
+
+
[Ionic 4 and React: Navigation](https://alligator.io/ionic/ionic-4-react-navigation) - Paul Halliday
+
+
diff --git a/versioned_docs/version-v5/react/pwa.md b/versioned_docs/version-v5/react/pwa.md
index 0e06abb5093..2b6f237a31d 100644
--- a/versioned_docs/version-v5/react/pwa.md
+++ b/versioned_docs/version-v5/react/pwa.md
@@ -38,7 +38,7 @@ Features like Service Workers and many JavaScript APIs (such as geolocation) req
## Service Worker configuration
-By default, CRA/React Scripts come with a preconfigured Service Worker setup based on [Workbox's Webpack plugin](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin). This utilises a cache-first strategy, meaning that your app will load from a cache, even if the network returns a newer version of the app.
+By default, CRA/React Scripts come with a preconfigured Service Worker setup based on [Workbox's Webpack plugin](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin). This utilizes a cache-first strategy, meaning that your app will load from a cache, even if the network returns a newer version of the app.
Because of the nature or CRA/React Scripts, the configuration for this is internal to React Scripts, meaning that is cannot be customized without ejecting from React Scripts. Currently, the Ionic CLI does not support an ejected React App, so if this action is taken, you'll need to use npm/yarn scripts instead of the Ionic CLI.
diff --git a/versioned_docs/version-v5/react/your-first-app/2-taking-photos.md b/versioned_docs/version-v5/react/your-first-app/2-taking-photos.md
index 46d8b604578..a36a71e6863 100644
--- a/versioned_docs/version-v5/react/your-first-app/2-taking-photos.md
+++ b/versioned_docs/version-v5/react/your-first-app/2-taking-photos.md
@@ -88,7 +88,7 @@ Back at the top of the function (right after the call to `usePhotoGallery`, we w
const [photos, setPhotos] = useState([]);
```
-When the camera is done taking a picture, the resulting Photo returned from Capacitor will be stored in the `photo` variable. We want to create a new photo object and add it to the photos state array. We make sure we don't accidently mutate the current photos array by making a new array, and then call `setPhotos` to store the array into state. Update the `takePhoto` method and add this code after the getPhoto call:
+When the camera is done taking a picture, the resulting Photo returned from Capacitor will be stored in the `photo` variable. We want to create a new photo object and add it to the photos state array. We make sure we don't accidentally mutate the current photos array by making a new array, and then call `setPhotos` to store the array into state. Update the `takePhoto` method and add this code after the getPhoto call:
```tsx
const fileName = new Date().getTime() + '.jpeg';
diff --git a/versioned_docs/version-v5/reference/glossary.md b/versioned_docs/version-v5/reference/glossary.md
index 65fc7ed8769..e17e08704f2 100644
--- a/versioned_docs/version-v5/reference/glossary.md
+++ b/versioned_docs/version-v5/reference/glossary.md
@@ -68,6 +68,8 @@
+
+
+
+
CommonJS
diff --git a/versioned_docs/version-v5/theming/advanced.md b/versioned_docs/version-v5/theming/advanced.md
index e34d75b765d..8be75c4b105 100644
--- a/versioned_docs/version-v5/theming/advanced.md
+++ b/versioned_docs/version-v5/theming/advanced.md
@@ -47,7 +47,7 @@ While the application and stepped variables in the themes section are useful for
### The Alpha Problem
-There is not yet full browser support for alpha use of a hex color. The rgba() function only accepts a value in `R, G, B, A` (Red, Green, Blue, Alpha) format. The following code shows examples of correct and incorrect values passed to `rgba()`.
+There is not yet full browser support for alpha use of a hex color. The `rgba()` function only accepts a value in `R, G, B, A` (Red, Green, Blue, Alpha) format. The following code shows examples of correct and incorrect values passed to `rgba()`.
```css
/* These examples use the same color: blueviolet. */
diff --git a/versioned_docs/version-v5/theming/css-shadow-parts.md b/versioned_docs/version-v5/theming/css-shadow-parts.md
index c2d1f023a88..e43bdfb15bc 100644
--- a/versioned_docs/version-v5/theming/css-shadow-parts.md
+++ b/versioned_docs/version-v5/theming/css-shadow-parts.md
@@ -79,7 +79,7 @@ ion-select::part(placeholder)::first-letter {
}
```
-Parts work with most psuedo-classes, as well:
+Parts work with most pseudo-classes, as well:
```css
ion-item::part(native):hover {
diff --git a/versioned_docs/version-v5/utilities/animations.md b/versioned_docs/version-v5/utilities/animations.md
index 9387b9639c6..e1fe5b310cd 100644
--- a/versioned_docs/version-v5/utilities/animations.md
+++ b/versioned_docs/version-v5/utilities/animations.md
@@ -507,6 +507,8 @@ const parent = createAnimation()
This example shows 3 child animations controlled by a single parent animation. Animations `squareA` and `squareB` inherit the parent animation's duration of 2000ms, but animation `squareC` has a duration of 5000ms since it was explicitly set.
+
+
## Before and After Hooks
@@ -624,6 +626,8 @@ In this example, an inline opacity of 0.2 is set on the `.square` element prior
See [Methods](#methods) for a complete list of hooks.
+
+
## Chained Animations
@@ -1490,6 +1494,8 @@ export default defineComponent({
````
+
+
## Performance Considerations
diff --git a/versioned_docs/version-v5/vue/quickstart.md b/versioned_docs/version-v5/vue/quickstart.md
index 8cd1eb02b71..015b505d2df 100644
--- a/versioned_docs/version-v5/vue/quickstart.md
+++ b/versioned_docs/version-v5/vue/quickstart.md
@@ -744,7 +744,7 @@ For more information, see the https://swiperjs.com/swiper-api#events.
@@ -279,19 +279,19 @@ export class SlidesExample {
Below is a full list of method changes when going from `ion-slides` to Swiper Element:
-| ion-slides Method | Notes |
-| ------------------ | ------------------------------------------------------------------------------------ |
-| getActiveIndex() | Use the `activeIndex` property instead. |
-| getPreviousIndex() | Use the `previousIndex` property instead. |
-| getSwiper() | Get a reference to the Swiper instance using the `swiper` prop. See example above. |
-| isBeginning() | Use the `isBeginning` property instead. |
-| isEnd() | Use the `isEnd` property instead. |
-| length() | Use the `slides` property instead. (i.e swiper.slides.length) |
-| lockSwipeToNext() | Use the `allowSlidesNext` property instead. |
-| lockSwipeToPrev() | Use the `allowSlidePrev` property instead. |
-| lockSwipes() | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
-| startAutoplay() | Use the `autoplay` property instead. |
-| stopAutoplay() | Use the `autoplay` property instead. |
+| ion-slides Method | Notes |
+| -------------------- | ------------------------------------------------------------------------------------ |
+| `getActiveIndex()` | Use the `activeIndex` property instead. |
+| `getPreviousIndex()` | Use the `previousIndex` property instead. |
+| `getSwiper()` | Get a reference to the Swiper instance using the `swiper` prop. See example above. |
+| `isBeginning()` | Use the `isBeginning` property instead. |
+| `isEnd()` | Use the `isEnd` property instead. |
+| `length()` | Use the `slides` property instead. (i.e swiper.slides.length) |
+| `lockSwipeToNext()` | Use the `allowSlidesNext` property instead. |
+| `lockSwipeToPrev()` | Use the `allowSlidePrev` property instead. |
+| `lockSwipes()` | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
+| `startAutoplay()` | Use the `autoplay` property instead. |
+| `stopAutoplay()` | Use the `autoplay` property instead. |
:::note
All methods and properties available on the Swiper instance can be found at https://swiperjs.com/swiper-api#methods-and-properties.
diff --git a/versioned_docs/version-v6/angular/testing.md b/versioned_docs/version-v6/angular/testing.md
index 142f4dd6ec4..1278551b0b9 100644
--- a/versioned_docs/version-v6/angular/testing.md
+++ b/versioned_docs/version-v6/angular/testing.md
@@ -293,7 +293,7 @@ When an `@ionic/angular` application is generated, a default end-to-end test app
- `protractor.conf.js` - the Protractor configuration file
- `tsconfig.e2e.json` - specific TypeScript configuration for the testing application
-- `src/app.po.ts` - a page object containing methods that navigate the application, query elements in the DOM, and maninpulate elements on the page
+- `src/app.po.ts` - a page object containing methods that navigate the application, query elements in the DOM, and manipulate elements on the page
- `src/app.e2e-spec.ts` - a testing script
#### Page Objects
diff --git a/versioned_docs/version-v6/angular/your-first-app/8-distribute.md b/versioned_docs/version-v6/angular/your-first-app/8-distribute.md
index 44b3781b476..545e57c1945 100644
--- a/versioned_docs/version-v6/angular/your-first-app/8-distribute.md
+++ b/versioned_docs/version-v6/angular/your-first-app/8-distribute.md
@@ -18,7 +18,7 @@ For more on connecting your code repository to Appflow, checkout the [Connect yo
The Appflow SDK (also known as Ionic Deploy plugin) will allow you to take advantage of arguably two of the best Appflow features: deploying live updates to your app and bypassing the app stores. Ionic Appflow's Live Update feature is shipped with Appflow SDK and features the capabilities of detecting and syncing the updates for your app that you have pushed to your identified channels within the dashboard.
-To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by excuting the following command in your app's root directory:
+To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by executing the following command in your app's root directory:
```shell
ionic deploy add \
@@ -75,7 +75,7 @@ For more information, visit the [Create an Automation](https://ionic.io/docs/app
## Create an Environment
-[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be futher customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
+[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be further customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
Creating an Environment is available for those on our [Basic plans](https://ionic.io/pricing) and above. More information on this can be found in the [Create an Environment](https://ionic.io/docs/appflow/quickstart/environment) section within the Appflow docs.
diff --git a/versioned_docs/version-v6/api/input.md b/versioned_docs/version-v6/api/input.md
index 3f439459ada..ca1575a0ad8 100644
--- a/versioned_docs/version-v6/api/input.md
+++ b/versioned_docs/version-v6/api/input.md
@@ -31,7 +31,7 @@ import Basic from '@site/static/usage/v6/input/basic/index.md';
## Types
-The input component is meant for text type inputs only, such as `"text"`, `"password"`, `"email"`, `"number"`, `"search"`, `"tel"`, and `"url"`. It supports all standard text input events including keyup, keydown, keypress, and more. The default `type` is `"text"`.
+The input component is meant for text type inputs only, such as `"text"`, `"password"`, `"email"`, `"number"`, `"search"`, `"tel"`, and `"url"`. It supports all standard text input events including `keyup`, `keydown`, `keypress`, and more. The default `type` is `"text"`.
import Types from '@site/static/usage/v6/input/types/index.md';
diff --git a/versioned_docs/version-v6/api/select.md b/versioned_docs/version-v6/api/select.md
index 89509c1becc..f731660634f 100644
--- a/versioned_docs/version-v6/api/select.md
+++ b/versioned_docs/version-v6/api/select.md
@@ -57,9 +57,9 @@ By adding the `multiple` attribute to select, users are able to select multiple
Note: the `action-sheet` and `popover` interfaces will not work with multiple selection.
-import MulipleSelectionExample from '@site/static/usage/v6/select/basic/multiple-selection/index.md';
+import MultipleSelectionExample from '@site/static/usage/v6/select/basic/multiple-selection/index.md';
-
+
## Responding to Interaction
diff --git a/versioned_docs/version-v6/components.md b/versioned_docs/version-v6/components.md
index 9b5518e95d6..732b59a43b2 100644
--- a/versioned_docs/version-v6/components.md
+++ b/versioned_docs/version-v6/components.md
@@ -143,7 +143,7 @@ Ionic apps are made of high-level building blocks called Components, which allow
- Toast is used to show a notification over the top of an app's content. It can be temporary or dismissable.
+ Toast is used to show a notification over the top of an app's content. It can be temporary or dismissible.
diff --git a/versioned_docs/version-v6/core-concepts/what-are-progressive-web-apps.md b/versioned_docs/version-v6/core-concepts/what-are-progressive-web-apps.md
index fe7e769ee68..2310a451f01 100644
--- a/versioned_docs/version-v6/core-concepts/what-are-progressive-web-apps.md
+++ b/versioned_docs/version-v6/core-concepts/what-are-progressive-web-apps.md
@@ -47,12 +47,16 @@ To be considered a Progressive Web App, your app must be:
- Linkable - Easily share via URL and not require complex installation.
+
+
Addy Osmani: Progressive web apps
+
+
There is a lot here, but it boils down to a few points for Ionic apps.
#### Offline Support
diff --git a/versioned_docs/version-v6/developer-resources/books.md b/versioned_docs/version-v6/developer-resources/books.md
index 01218e277f4..1a51bc94e8f 100644
--- a/versioned_docs/version-v6/developer-resources/books.md
+++ b/versioned_docs/version-v6/developer-resources/books.md
@@ -4,50 +4,72 @@
Angular. Vue. React. Vanilla JavaScript. All of these tools can be used to create awesome applications with Ionic, thanks to the new Stencil compiler. This book is aimed at beginners that are looking to create amazing web, mobile and desktop applications using Ionic with examples across all of the popular frameworks.
+
+
by [Paul Halliday](https:://developer.school)
### [Creating Ionic Applications with StencilJS](https://www.joshmorony.com/creating-ionic-applications-with-stencil-js/) - [Free Preview](https://cdn2.hubspot.net/hubfs/3776657/PREVIEW-Creating-Ionic-Apps-with-StencilJS.pdf)
As well as being a powerful tool for generating reuseable web components, StencilJS provides the tools needed to build an entire application out of web components. Combined with the Ionic web components, StencilJS gives us everything we need to build high-quality production mobile applications - no framework required.
+
+
by [Joshua Morony](https://www.joshmorony.com/blog)
### [Mobile App Development with Ionic: Cross-Platform Apps with Ionic 2, Angular 2, and Cordova](https://www.amazon.com/Mobile-App-Development-Ionic-Cross-Platform/dp/1491937785/ref=sr_1_2?ie=UTF8&qid=1464183332&sr=8-2&keywords=ionic+2)
+
+
by Chris Griffith
### [Building Mobile Apps with Ionic & Angular](https://www.joshmorony.com/building-mobile-apps-with-ionic-2/)
+
+
by [Joshua Morony](https://www.joshmorony.com/blog)
Building Mobile Apps with Ionic & Angular is an all-in-one resource for learning the latest and greatest version of Ionic. It is targeted at beginners and works its way through the basics of Ionic, to example applications of varying complexity, and then to the steps required to build and publish your application (on the app stores or as a PWA). It has been updated for every major release, so you can rest easy knowing that you're not learning outdated tech.
### [Ionic 2 From Zero to App Store](https://devdactic.com/zero-to-app)
+
+
by Simon Reimler
### [Ionic Framework By Example](https://www.packtpub.com/application-development/ionic-framework-example)
+
+
by Sani Yusuf
### [Building Firestore Powered Ionic Apps](https://javebratt.com/ionic-firebase-book/)
+
+
by Jorge Vergara
This book will help you go from not knowing what Firebase is to be able to use the different APIs for your Ionic Applications. It will take you from “_What’s Firebase?_” to building scalable, production-ready apps and it’s always up-to-date with latest Ionic and Firebase versions.
### [Ionic 2 Cookbook - Second Edition](https://www.amazon.com/Ionic-Cookbook-Second-Hoc-Phan-ebook/dp/B01C4D9VWS?ie=UTF8&keywords=ionic%202&qid=1464183332&ref_=sr_1_3&sr=8-3)
+
+
by Hoc Phan
### [Mastering Ionic 2](https://www.leanpub.com/masteringionic2)
+
+
by James Griffiths
### [Learning Ionic](https://www.packtpub.com/in/application-development/learning-ionic) (Ionic 1)
+
+
by Arvind Ravulavaru
### [Learning Ionic - Second Edition](https://www.packtpub.com/in/web-development/learning-ionic-second-edition) (Ionic 2/3)
+
+
by Arvind Ravulavaru
diff --git a/versioned_docs/version-v6/developer-resources/courses.md b/versioned_docs/version-v6/developer-resources/courses.md
index 46038f4ffb1..900a2c51084 100644
--- a/versioned_docs/version-v6/developer-resources/courses.md
+++ b/versioned_docs/version-v6/developer-resources/courses.md
@@ -2,23 +2,31 @@
### [Elite Ionic](https://www.joshmorony.com/elite/)
+
+
by Josh Morony
Elite Ionic is an online course for Ionic developers who want to move past the basics, and build complex, well tested, high performing, beautiful, and useable mobile applications. It is recommended that you already have a reasonably solid understanding of the basics of Ionic before starting this course.
### [Ionic Academy](https://ionicacademy.com/)
+
+
by Simon Grimm
Learn Ionic with step-by-step video courses & quick wins from one of the Ionic community leaders. Covers beginner, intermediate and advanced topics. Get access to a community of developers just like you.
### [Ionic Framework: Tips, Tricks & Techniques](https://www.packtpub.com/mobile/ionic-framework-tips-tricks-and-techniques-video)
+
+
by Charles Muzonzini
In this course, you will master tips and best practices for Ionic 4 & Ionic 5 that you can immediately implement to build high quality apps. This course covers a wide variety of topics from increasing app performance, to building custom native plugins, to securing your apps. It's a practical, hands-on course that will take your app building skills to the next level.
-### [Building Deskop Apps with Ionic and Electron](https://pluralsight.pxf.io/VeMXO)
+### [Building Desktop Apps with Ionic and Electron](https://pluralsight.pxf.io/VeMXO)
+
+
by Michael Callaghan at Pluralsight
@@ -33,6 +41,8 @@ Windows and macOS users.
### [Building Progressive Web Apps with Ionic](https://pluralsight.pxf.io/Ly2EY)
+
+
by Michael Callaghan at Pluralsight
Everything changed when Google created the concept of Progressive Web Applications or PWA. A PWA is a pure web
@@ -48,6 +58,8 @@ Progressive Web Application anywhere you desire.
### [Ionic CLI](https://pluralsight.pxf.io/ionic-cli)
+
+
by Michael Callaghan at Pluralsight
Since its inception, the Ionic Framework has included a rudimentary command line interface. Though only a few
@@ -60,24 +72,36 @@ the confidence to use the Ionic CLI as part of your everyday Ionic development.
### [Wordpress Rest API and Ionic 4 (Angular) App With Auth](https://www.udemy.com/course/wordpress-rest-api-and-ionic-3-crud/)
+
+
by Baljeet Singh at Udemy
### [Building Mobile Apps with Ionic 2, Angular 2, and TypeScript](https://app.pluralsight.com/library/courses/ionic2-angular2-typescript-mobile-apps/table-of-contents)
+
+
by Pluralsight
### [Introducing Ionic 2](http://shop.oreilly.com/product/0636920050353.do)
+
+
by Mathieu Chauvinc
### [Ionic 2 Master Course](https://www.udemy.com/ionic-2-tutorial/)
+
+
by Udemy
### [Introducing Ionic 2](https://www.udemy.com/introducing-ionic-2/)
+
+
by Udemy
### [Ionic 2 Solutions](https://www.packtpub.com/web-development/ionic-2-solutions-video)
+
+
by Hoc Phan
diff --git a/versioned_docs/version-v6/native-faq.md b/versioned_docs/version-v6/native-faq.md
index a74c967ba41..6bd7d2a9c4b 100644
--- a/versioned_docs/version-v6/native-faq.md
+++ b/versioned_docs/version-v6/native-faq.md
@@ -19,6 +19,6 @@ If you're using a plugin, it may require adding additional permissions to your n
You need to manually add those permissions to the `info.plist` in your native project. Otherwise, calls to the native camera API will fail.
-## Unexpected behaviour
+## Unexpected behavior
If for some reason the plugin does not behave in a way that is unexpected, please [open an issue on our github repo](https://github.com/ionic-team/capacitor-plugins)! Providing a clear issue report along with a reproduction can help get your issue resolved.
diff --git a/versioned_docs/version-v6/react/navigation.md b/versioned_docs/version-v6/react/navigation.md
index a8554943706..7542cb07e15 100644
--- a/versioned_docs/version-v6/react/navigation.md
+++ b/versioned_docs/version-v6/react/navigation.md
@@ -588,4 +588,8 @@ For more info on routing in React using React Router, check out their docs at [h
## From the Community
+
+
[Ionic 4 and React: Navigation](https://alligator.io/ionic/ionic-4-react-navigation) - Paul Halliday
+
+
diff --git a/versioned_docs/version-v6/react/pwa.md b/versioned_docs/version-v6/react/pwa.md
index 2cee872655d..bc908da6c18 100644
--- a/versioned_docs/version-v6/react/pwa.md
+++ b/versioned_docs/version-v6/react/pwa.md
@@ -49,7 +49,7 @@ Features like Service Workers and many JavaScript APIs (such as geolocation) req
## Service Worker configuration
-By default, CRA/React Scripts come with a preconfigured Service Worker setup based on [Workbox's Webpack plugin](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin). This utilises a cache-first strategy, meaning that your app will load from a cache, even if the network returns a newer version of the app.
+By default, CRA/React Scripts come with a preconfigured Service Worker setup based on [Workbox's Webpack plugin](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin). This utilizes a cache-first strategy, meaning that your app will load from a cache, even if the network returns a newer version of the app.
Because of the nature of CRA/React Scripts, the configuration for this is internal to React Scripts, meaning that it cannot be customized without ejecting from React Scripts. Currently, the Ionic CLI does not support an ejected React App, so if this action is taken, you'll need to use npm/yarn scripts instead of the Ionic CLI.
diff --git a/versioned_docs/version-v6/react/slides.md b/versioned_docs/version-v6/react/slides.md
index 98127c26dd7..a7444b7d5e7 100644
--- a/versioned_docs/version-v6/react/slides.md
+++ b/versioned_docs/version-v6/react/slides.md
@@ -389,24 +389,24 @@ const MyComponent: React.FC = () => {
Below is a full list of event name changes when going from `IonSlides` to Swiper React:
-| IonSlides Event | Swiper Event |
-| ------------------------- | ---------------------------- |
-| onIonSlideWillChange | onSlideChangeTransitionStart |
-| onIonSlideDidChange | onSlideChangeTransitionEnd |
-| onIonSlideDoubleTap | onDoubleTap |
-| onIonSlideDrag | onSliderMove |
-| onIonSlideNextStart | onSlideNextTransitionStart |
-| onIonSlideNextEnd | onSlideNextTransitionEnd |
-| onIonSlidePrevStart | onSlidePrevTransitionStart |
-| onIonSlidePrevEnd | onSlidePrevTransitionEnd |
-| onIonSlideReachStart | onReachBeginning |
-| onIonSlideReachEnd | onReachEnd |
-| onIonSlideTap | onTap |
-| onIonSlideTouchStart | onTouchStart |
-| onIonSlideTouchEnd | onTouchEnd |
-| onIonSlideTransitionStart | onTransitionStart |
-| onIonSlideTransitionEnd | onTransitionEnd |
-| onIonSlidesDidLoad | onInit |
+| IonSlides Event | Swiper Event |
+| --------------------------- | ------------------------------ |
+| `onIonSlideWillChange` | `onSlideChangeTransitionStart` |
+| `onIonSlideDidChange` | `onSlideChangeTransitionEnd` |
+| `onIonSlideDoubleTap` | `onDoubleTap` |
+| `onIonSlideDrag` | `onSliderMove` |
+| `onIonSlideNextStart` | `onSlideNextTransitionStart` |
+| `onIonSlideNextEnd` | `onSlideNextTransitionEnd` |
+| `onIonSlidePrevStart` | `onSlidePrevTransitionStart` |
+| `onIonSlidePrevEnd` | `onSlidePrevTransitionEnd` |
+| `onIonSlideReachStart` | `onReachBeginning` |
+| `onIonSlideReachEnd` | `onReachEnd` |
+| `onIonSlideTap` | `onTap` |
+| `onIonSlideTouchStart` | `onTouchStart` |
+| `onIonSlideTouchEnd` | `onTouchEnd` |
+| `onIonSlideTransitionStart` | `onTransitionStart` |
+| `onIonSlideTransitionEnd` | `onTransitionEnd` |
+| `onIonSlidesDidLoad` | `onInit` |
:::note
All events available in Swiper can be found at https://swiperjs.com/swiper-api#events.
@@ -441,19 +441,19 @@ From here, if you wanted to access a property on the Swiper instance you would a
Below is a full list of method changes when going from `IonSlides` to Swiper React:
-| IonSlides Method | Notes |
-| ------------------ | ------------------------------------------------------------------------------------ |
-| getActiveIndex() | Use the `activeIndex` property instead. |
-| getPreviousIndex() | Use the `previousIndex` property instead. |
-| getSwiper() | Get a reference to the Swiper instance using `onSwiper`. See example above. |
-| isBeginning() | Use the `isBeginning` property instead. |
-| isEnd() | Use the `isEnd` property instead. |
-| length() | Use the `slides` property instead. (i.e swiperRef.slides.length) |
-| lockSwipeToNext() | Use the `allowSlidesNext` property instead. |
-| lockSwipeToPrev() | Use the `allowSlidePrev` property instead. |
-| lockSwipes() | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
-| startAutoplay() | Use the `autoplay` property instead. |
-| stopAutoplay() | Use the `autoplay` property instead. |
+| IonSlides Method | Notes |
+| -------------------- | ------------------------------------------------------------------------------------ |
+| `getActiveIndex()` | Use the `activeIndex` property instead. |
+| `getPreviousIndex()` | Use the `previousIndex` property instead. |
+| `getSwiper()` | Get a reference to the Swiper instance using `onSwiper`. See example above. |
+| `isBeginning()` | Use the `isBeginning` property instead. |
+| `isEnd()` | Use the `isEnd` property instead. |
+| `length()` | Use the `slides` property instead. (i.e swiperRef.slides.length) |
+| `lockSwipeToNext()` | Use the `allowSlidesNext` property instead. |
+| `lockSwipeToPrev()` | Use the `allowSlidePrev` property instead. |
+| `lockSwipes()` | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
+| `startAutoplay()` | Use the `autoplay` property instead. |
+| `stopAutoplay()` | Use the `autoplay` property instead. |
## Effects
diff --git a/versioned_docs/version-v6/react/your-first-app/2-taking-photos.md b/versioned_docs/version-v6/react/your-first-app/2-taking-photos.md
index 1c460796688..4c0b3dae2cd 100644
--- a/versioned_docs/version-v6/react/your-first-app/2-taking-photos.md
+++ b/versioned_docs/version-v6/react/your-first-app/2-taking-photos.md
@@ -95,7 +95,7 @@ Back at the top of the function (right after the call to `usePhotoGallery`, we w
const [photos, setPhotos] = useState([]);
```
-When the camera is done taking a picture, the resulting Photo returned from Capacitor will be stored in the `photo` variable. We want to create a new photo object and add it to the photos state array. We make sure we don't accidently mutate the current photos array by making a new array, and then call `setPhotos` to store the array into state. Update the `takePhoto` method and add this code after the getPhoto call:
+When the camera is done taking a picture, the resulting Photo returned from Capacitor will be stored in the `photo` variable. We want to create a new photo object and add it to the photos state array. We make sure we don't accidentally mutate the current photos array by making a new array, and then call `setPhotos` to store the array into state. Update the `takePhoto` method and add this code after the getPhoto call:
```tsx
const fileName = Date.now() + '.jpeg';
diff --git a/versioned_docs/version-v6/react/your-first-app/8-distribute.md b/versioned_docs/version-v6/react/your-first-app/8-distribute.md
index 74966e8de58..4cb78606447 100644
--- a/versioned_docs/version-v6/react/your-first-app/8-distribute.md
+++ b/versioned_docs/version-v6/react/your-first-app/8-distribute.md
@@ -18,7 +18,7 @@ For more on connecting your code repository to Appflow, checkout the [Connect yo
The Appflow SDK (also known as Ionic Deploy plugin) will allow you to take advantage of arguably two of the best Appflow features: deploying live updates to your app and bypassing the app stores. Ionic Appflow's Live Update feature is shipped with Appflow SDK and features the capabilities of detecting and syncing the updates for your app that you have pushed to your identified channels within the dashboard.
-To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by excuting the following command in your app's root directory:
+To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by executing the following command in your app's root directory:
```shell
ionic deploy add \
@@ -43,7 +43,7 @@ After the push is made, you will then see your commit under the `Commits` tab of
## Deploy a Live Update
-With the Appflow SDK installed and your commit pushed up to the Dashboard, you are ready to deploy a live update to a device. The Live Update feature uses the installed Appflow SDK with your native application to listen to a particular Deploy Channel Destination. When a live update is assigned to a Channel Distination, that update will be deployed to user devices running binaries that are configured to listen to that specific Channel Destination.
+With the Appflow SDK installed and your commit pushed up to the Dashboard, you are ready to deploy a live update to a device. The Live Update feature uses the installed Appflow SDK with your native application to listen to a particular Deploy Channel Destination. When a live update is assigned to a Channel Destination, that update will be deployed to user devices running binaries that are configured to listen to that specific Channel Destination.
To get the live update deployed, a Web build will need to be created. This can be done through the `Start build` icon from the `Commits` tab or by clicking the `New build` button in the top right corner of the `Build > Builds` tab. After selecting the correct commit to deploy, select the `Web` target platform and the `Latest` build stack. Depending on your Appflow plan, you will then be able to include custom environments, if any are configured. Finally, you can enable `Live Update` and pick the Channel to automatically assign the build to once it successfully completes.
@@ -75,7 +75,7 @@ For more information, visit the [Create an Automation](https://ionic.io/docs/app
## Create an Environment
-[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be futher customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
+[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be further customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
Creating an Environment is available for those on our [Basic plans](https://ionic.io/pricing) and above. More information on this can be found in the [Create an Environment](https://ionic.io/docs/appflow/quickstart/environment) section within the Appflow docs.
diff --git a/versioned_docs/version-v6/reference/glossary.md b/versioned_docs/version-v6/reference/glossary.md
index 1d70bd176dc..e61088621c0 100644
--- a/versioned_docs/version-v6/reference/glossary.md
+++ b/versioned_docs/version-v6/reference/glossary.md
@@ -78,6 +78,8 @@ title: Glossary
+
+
+
+
CommonJS
diff --git a/versioned_docs/version-v6/theming/advanced.md b/versioned_docs/version-v6/theming/advanced.md
index 20516abca8b..d4e9cab4701 100644
--- a/versioned_docs/version-v6/theming/advanced.md
+++ b/versioned_docs/version-v6/theming/advanced.md
@@ -87,7 +87,7 @@ While the application and stepped variables in the themes section are useful for
### The Alpha Problem
-There is not yet full browser support for alpha use of a hex color. The rgba() function only accepts a value in `R, G, B, A` (Red, Green, Blue, Alpha) format. The following code shows examples of correct and incorrect values passed to `rgba()`.
+There is not yet full browser support for alpha use of a hex color. The `rgba()` function only accepts a value in `R, G, B, A` (Red, Green, Blue, Alpha) format. The following code shows examples of correct and incorrect values passed to `rgba()`.
```css
/* These examples use the same color: blueviolet. */
diff --git a/versioned_docs/version-v6/utilities/animations.md b/versioned_docs/version-v6/utilities/animations.md
index dd2678b8086..8edaf9179db 100644
--- a/versioned_docs/version-v6/utilities/animations.md
+++ b/versioned_docs/version-v6/utilities/animations.md
@@ -517,6 +517,8 @@ const parent = createAnimation()
This example shows 3 child animations controlled by a single parent animation. Animations `squareA` and `squareB` inherit the parent animation's duration of 2000ms, but animation `squareC` has a duration of 5000ms since it was explicitly set.
+
+
## Before and After Hooks
@@ -634,6 +636,8 @@ In this example, an inline opacity of 0.2 is set on the `.square` element prior
See [Methods](#methods) for a complete list of hooks.
+
+
## Chained Animations
@@ -1508,6 +1512,8 @@ export default defineComponent({
````
+
+
## Performance Considerations
diff --git a/versioned_docs/version-v6/vue/overview.md b/versioned_docs/version-v6/vue/overview.md
index 1689934bc26..045cb75b123 100644
--- a/versioned_docs/version-v6/vue/overview.md
+++ b/versioned_docs/version-v6/vue/overview.md
@@ -32,9 +32,13 @@ While there are no known technical limitations to using `Ionic Vue` with [Cordov
## From the Community
+
+
- [Using Vue.js with Ionic & Capacitor](https://dev.to/aaronksaunders/using-vue-js-v3-beta-with-ionic-components-capacitor-plugins-2b6f) - Aaron Saunders
- [Building Mobile Apps With Vue3 and Ionic](https://soshace.com/building-mobile-apps-with-vue3-and-ionic/) - Oluwaseun Raphael Afolayan
+
+
## Installation
```shell-session
diff --git a/versioned_docs/version-v6/vue/quickstart.md b/versioned_docs/version-v6/vue/quickstart.md
index 75571575ac7..675f18476aa 100644
--- a/versioned_docs/version-v6/vue/quickstart.md
+++ b/versioned_docs/version-v6/vue/quickstart.md
@@ -648,7 +648,7 @@ For more information, see the https://swiperjs.com/vue#swiper-events.
@@ -423,19 +423,19 @@ From here, if you wanted to access a property on the Swiper instance you would a
Below is a full list of method changes when going from `ion-slides` to Swiper Vue:
-| ion-slides Method | Notes |
-| ------------------ | ------------------------------------------------------------------------------------ |
-| getActiveIndex() | Use the `activeIndex` property instead. |
-| getPreviousIndex() | Use the `previousIndex` property instead. |
-| getSwiper() | Get a reference to the Swiper instance using `@swiper`. See example above. |
-| isBeginning() | Use the `isBeginning` property instead. |
-| isEnd() | Use the `isEnd` property instead. |
-| length() | Use the `slides` property instead. (i.e swiperRef.slides.length) |
-| lockSwipeToNext() | Use the `allowSlidesNext` property instead. |
-| lockSwipeToPrev() | Use the `allowSlidePrev` property instead. |
-| lockSwipes() | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
-| startAutoplay() | Use the `autoplay` property instead. |
-| stopAutoplay() | Use the `autoplay` property instead. |
+| ion-slides Method | Notes |
+| -------------------- | ------------------------------------------------------------------------------------ |
+| `getActiveIndex()` | Use the `activeIndex` property instead. |
+| `getPreviousIndex()` | Use the `previousIndex` property instead. |
+| `getSwiper()` | Get a reference to the Swiper instance using `@swiper`. See example above. |
+| `isBeginning()` | Use the `isBeginning` property instead. |
+| `isEnd()` | Use the `isEnd` property instead. |
+| `length()` | Use the `slides` property instead. (i.e swiperRef.slides.length) |
+| `lockSwipeToNext()` | Use the `allowSlidesNext` property instead. |
+| `lockSwipeToPrev()` | Use the `allowSlidePrev` property instead. |
+| `lockSwipes()` | Use the `allowSlideNext`, `allowSlidePrev`, and `allowTouchMove` properties instead. |
+| `startAutoplay()` | Use the `autoplay` property instead. |
+| `stopAutoplay()` | Use the `autoplay` property instead. |
## Effects
diff --git a/versioned_docs/version-v6/vue/your-first-app/8-distribute.md b/versioned_docs/version-v6/vue/your-first-app/8-distribute.md
index d6b38ea5b5a..4cb78606447 100644
--- a/versioned_docs/version-v6/vue/your-first-app/8-distribute.md
+++ b/versioned_docs/version-v6/vue/your-first-app/8-distribute.md
@@ -18,7 +18,7 @@ For more on connecting your code repository to Appflow, checkout the [Connect yo
The Appflow SDK (also known as Ionic Deploy plugin) will allow you to take advantage of arguably two of the best Appflow features: deploying live updates to your app and bypassing the app stores. Ionic Appflow's Live Update feature is shipped with Appflow SDK and features the capabilities of detecting and syncing the updates for your app that you have pushed to your identified channels within the dashboard.
-To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by excuting the following command in your app's root directory:
+To get the Appflow SDK plugin added to your project, you can follow the install instructions within the Appflow Dashboard by clicking on "Install Instructions" inside of the `Deploy > Destinations` section. Alternatively, you can install the plugin manually by executing the following command in your app's root directory:
```shell
ionic deploy add \
@@ -75,7 +75,7 @@ For more information, visit the [Create an Automation](https://ionic.io/docs/app
## Create an Environment
-[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be futher customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
+[Package builds](https://ionic.io/docs/appflow/package/builds) and [Deploy builds](https://ionic.io/docs/appflow/deploy/builds) can be further customized via [Environments](https://ionic.io/docs/appflow/automation/environments). This powerful feature allows you to create different configurations based on the environment variables passed in at build time. When combined with the [Automation](https://ionic.io/docs/appflow/automation/intro) feature, development teams can easily configure development, staging, and production build configurations, allowing them to embrace DevOps best practices and ship better quality updates faster than ever.
Creating an Environment is available for those on our [Basic plans](https://ionic.io/pricing) and above. More information on this can be found in the [Create an Environment](https://ionic.io/docs/appflow/quickstart/environment) section within the Appflow docs.