├── .github
└── workflows
│ └── deploy.yml
├── .gitignore
├── LICENSE.md
├── README.md
├── composer.json
├── docs
├── .vitepress
│ └── config.mts
├── contribute
│ ├── contribution.md
│ └── report-bugs.md
├── getting-started
│ ├── changelog.md
│ ├── installation.md
│ └── versions.md
├── home.md
├── index.md
├── methods
│ └── strings.md
├── public
│ ├── css
│ │ └── style.css
│ └── img
│ │ ├── laravel-red.svg
│ │ ├── laravel_black.svg
│ │ ├── logo-full-scream.png
│ │ ├── logo-github.png
│ │ └── logo.png
└── usage
│ ├── default-classes.md
│ ├── global-functions.md
│ └── personalized-classes.md
├── package-lock.json
├── package.json
└── src
├── Bases
└── BaseHelpers.php
├── Commands
├── CreateHelpers.php
├── CreateHelpersFunctions.php
├── GenerateHelpers.php
└── Traits
│ └── CommandUtilities.php
├── Helpers.php
├── Native
├── LaravelArray.php
├── LaravelDate.php
├── LaravelFile.php
├── LaravelNumber.php
└── LaravelStrings.php
├── Providers
└── HelpersServiceProvider.php
└── Stubs
├── Arr.stub
├── Custom.stub
├── Date.stub
├── File.stub
├── Functions.stub
├── Number.stub
└── Str.stub
/.github/workflows/deploy.yml:
--------------------------------------------------------------------------------
1 | name: Deploy VitePress site to Pages
2 |
3 | on:
4 | push:
5 | branches: [ master ]
6 |
7 | # Allows you to run this workflow manually from the Actions tab
8 | workflow_dispatch:
9 |
10 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
11 | permissions:
12 | contents: read
13 | pages: write
14 | id-token: write
15 |
16 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
17 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
18 | concurrency:
19 | group: pages
20 | cancel-in-progress: false
21 |
22 | jobs:
23 | # Build job
24 | build:
25 | runs-on: ubuntu-latest
26 | steps:
27 | - name: Checkout
28 | uses: actions/checkout@v3
29 | with:
30 | fetch-depth: 0 # Not needed if lastUpdated is not enabled
31 | # - uses: pnpm/action-setup@v2 # Uncomment this if you're using pnpm
32 | # - uses: oven-sh/setup-bun@v1 # Uncomment this if you're using Bun
33 | - name: Setup Node
34 | uses: actions/setup-node@v3
35 | with:
36 | node-version: 18
37 | cache: npm # or pnpm / yarn
38 | - name: Setup Pages
39 | uses: actions/configure-pages@v3
40 | - name: Install dependencies
41 | run: npm ci # or pnpm install / yarn install / bun install
42 | - name: Build with VitePress
43 | run: |
44 | npm run docs:build # or pnpm docs:build / yarn docs:build / bun run docs:build
45 | touch docs/.vitepress/dist/.nojekyll
46 | - name: Upload artifact
47 | uses: actions/upload-pages-artifact@v2
48 | with:
49 | path: docs/.vitepress/dist
50 |
51 | # Deployment job
52 | deploy:
53 | environment:
54 | name: github-pages
55 | url: ${{ steps.deployment.outputs.page_url }}
56 | needs: build
57 | runs-on: ubuntu-latest
58 | name: Deploy
59 | steps:
60 | - name: Deploy to GitHub Pages
61 | id: deployment
62 | uses: actions/deploy-pages@v2
63 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Ignore common macOS files and directories
2 | **/.DS_Store
3 |
4 | # Ignore automatically generated files and directories
5 | /vendor/
6 | /.fleet
7 | /.idea
8 | /.vscode
9 |
10 |
11 | # Ignore Composer generated directory and files
12 | /vendor
13 | composer.lock
14 | node_modules
15 | docs/.vitepress/cache
16 | docs/.vitepress/dist
17 | docs/.vitepress/.temp
18 |
19 | # Ignore development tool generated files and directories
20 | .fleet
21 | .idea
22 | .vscode
23 |
24 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Raúl Mauricio Uñate Castro
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 🚀 Laravel Helpers 🚀
2 |
3 | 
4 |
5 |
6 | For many years, I have used Laravel, and I believe it is the framework that breathes the best life into PHP. However, the creation of Helpers has not been standardized within this framework. Thus, I decided to create a standard and implement it across the various systems and companies I have worked with. Today, many colleagues have decided to support this initiative and create a package that becomes a powerful feature in Laravel.
7 |
8 | Our solution offers a simple, efficient, and elegant way to execute your application's custom methods from any class or view, making development much easier. Enhance your Laravel project while maintaining the elegance and cleanliness of your code with this package.
9 |
10 | We have oriented the entire use of Helpers towards classes and, most importantly, centralized the existing Laravel helpers through the categories of this package. We include native Laravel functionalities accessible through classes like `Str::` and `Arr::`. Other helpers that are not accessed via classes but as functions should continue to be used as presented in Laravel's official documentation.
11 |
12 | It's time to standardize how we create and use helpers in our projects.
13 |
14 | ## Documentation
15 | [](https://rmunate.github.io/LaravelHelpers/)
16 |
17 | ## Installation
18 |
19 | ### Requirements
20 |
21 | To use this solution, ensure the following:
22 |
23 | **PHP:** Version 8.0 or higher
24 |
25 | **Laravel Framework:** Version 10.0 or higher
26 |
27 | To install the dependency via **composer**, run the following command:
28 |
29 | ```shell
30 | composer require rmunate/laravel_helpers
31 | ```
32 |
33 | This will download the latest available version of the package.
34 |
35 | Ensure that in your `composer.json`, you have the library listed with the latest version: `"rmunate/laravel_helpers": "^3.0"`
36 |
37 |
38 | ## License
39 | This project is under the [MIT License](https://choosealicense.com/licenses/mit/).
40 |
41 | 🌟 Support My Projects! 🚀
42 |
43 | [](https://github.com/sponsors/rmunate)
44 |
45 | Make any contributions you see fit; the code is entirely yours. Together, we can do amazing things and improve the world of development. Your support is invaluable. ✨
46 |
47 | If you have ideas, suggestions, or just want to collaborate, we are open to everything! Join our community and be part of our journey to success! 🌐👩💻👨💻
48 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "rmunate/laravel_helpers",
3 | "description": "Empower Your Laravel Journey: Unleash the Power of Helpers! Unlock a world of possibilities with our standard creation and seamless utilization of helpers within the Laravel framework. Our solution offers a simple, efficient, and elegant way to execute your application's custom methods from any class or view, making development a breeze. Supercharge your Laravel project and elevate your coding experience with our Helper Library.",
4 | "keywords": [
5 | "rmunate",
6 | "artisan",
7 | "laravel",
8 | "helpers"
9 | ],
10 | "homepage": "https://github.com/rmunate/LaravelHelpers",
11 | "type": "library",
12 | "license": "MIT",
13 | "autoload": {
14 | "psr-4": {
15 | "Helpers\\Illuminate\\Support\\": "src/"
16 | },
17 | "files": [
18 | "src/Helpers.php"
19 | ]
20 | },
21 | "authors": [
22 | {
23 | "name": "Raul Mauricio Uñate Castro",
24 | "email": "raulmauriciounate@gmail.com",
25 | "homepage": "https://github.com/rmunate",
26 | "role": "owner"
27 | }
28 | ],
29 | "require": {
30 | "php": "^8.0",
31 | "illuminate/support": "^11.0|^12.0",
32 | "illuminate/console": "^11.0|^12.0"
33 | },
34 | "require-dev": {},
35 | "extra": {
36 | "branch-alias": {
37 | "dev-master": "1.0.x-dev"
38 | },
39 | "laravel": {
40 | "providers": [
41 | "Helpers\\Illuminate\\Support\\Providers\\HelpersServiceProvider"
42 | ]
43 | }
44 | },
45 | "minimum-stability": "dev",
46 | "prefer-stable": true
47 | }
48 |
--------------------------------------------------------------------------------
/docs/.vitepress/config.mts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vitepress'
2 |
3 | export default defineConfig({
4 | title: "Laravel Helpers",
5 | description: "Your own integrated solutions with Laravel's Core! 💻✨",
6 | lang: 'en-US',
7 | lastUpdated: true,
8 | base: '/LaravelHelpers',
9 | themeConfig: {
10 | footer: {
11 | message: 'Released under the MIT License.',
12 | copyright: 'Copyright © 2021-2024 Raul Mauricio Uñate'
13 | },
14 | editLink: {
15 | pattern: 'https://github.com/rmunate/LaravelHelpers/tree/main/docs/:path'
16 | },
17 | logo: '/img/logo.png',
18 | nav: [
19 | {
20 | text: 'Docs ^3.0',
21 | link: '/',
22 | }
23 | ],
24 | sidebar: [
25 | {
26 | text: 'Getting Started',
27 | collapsed: false,
28 | items: [
29 | {text: 'Introduction', link: '/home'},
30 | {text: 'Installation', link: '/getting-started/installation'},
31 | {text: 'Versions', link: '/getting-started/versions'},
32 | {text: 'Release Notes', link: '/getting-started/changelog'},
33 | ]
34 | }, {
35 | text: 'Usage',
36 | collapsed: true,
37 | items: [
38 | {text: 'Default Classes', link: '/usage/default-classes'},
39 | {text: 'Personalized Classes', link: '/usage/personalized-classes'},
40 | {text: 'Global Functions', link: '/usage/global-functions'}
41 | ]
42 | }, {
43 | text: 'Added Methods',
44 | collapsed: true,
45 | items: [
46 | {text: 'Strings', link: '/methods/strings'}
47 | ]
48 | },{
49 | text: 'Contribute',
50 | collapsed: true,
51 | items: [
52 | {text: 'Bug Report', link: '/contribute/report-bugs'},
53 | {text: 'Contribution', link: '/contribute/contribution'}
54 | ]
55 | }
56 | ],
57 | socialLinks: [
58 | {icon: 'github', link: 'https://github.com/rmunate/LaravelHelpers'}
59 | ],
60 | search: {
61 | provider: 'local'
62 | }
63 | },
64 | head: [
65 | ['link', {
66 | rel: 'stylesheet',
67 | href: '/LaravelHelpers/css/style.css'
68 | }
69 | ],
70 | ['link', {
71 | rel: 'icon',
72 | href: '/LaravelHelpers/img/logo.png',
73 | type: 'image/png'
74 | }
75 | ],
76 | ['meta', {
77 | property: 'og:image',
78 | content: '/LaravelHelpers/img/logo-github.png'
79 | }
80 | ],
81 | ['meta', {
82 | property: 'og:image:secure_url',
83 | content: '/LaravelHelpers/img/logo-github.png'
84 | }
85 | ],
86 | ['meta', {
87 | property: 'og:image:width',
88 | content: '600'
89 | }
90 | ],
91 | ['meta', {
92 | property: 'og:image:height',
93 | content: '400'
94 | }
95 | ],
96 | ['meta', {
97 | property: 'og:title',
98 | content: 'Laravel Helpers'
99 | }
100 | ],
101 | ['meta', {
102 | property: 'og:description',
103 | content: "Your own integrated solutions with Laravel's Core! 💻✨"
104 | }
105 | ],
106 | ['meta', {
107 | property: 'og:url',
108 | content: 'https://rmunate.github.io/LaravelHelpers/'
109 | }
110 | ],
111 | ['meta', {
112 | property: 'og:type',
113 | content: 'website'
114 | }
115 | ]
116 | ],
117 |
118 | })
--------------------------------------------------------------------------------
/docs/contribute/contribution.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Contributing
3 | editLink: true
4 | outline: deep
5 | ---
6 |
7 |
49 |
50 | # Contributing
51 |
52 | ## How to Contribute to this Solution?
53 |
54 | If you see ways in which we can improve, change how we handle information, adjust pre-built blocks, or add new features, or even develop them yourself and add them.
55 |
56 | We are eager to receive your pull requests!
57 |
58 | Simply fork the repository on GitHub and create pull requests (PRs) to the main branch once you have prepared your changes.
59 |
60 | It is essential to provide a clear justification for the changes or new features, accompanied by a usage manual.
61 |
62 | ::: tip TEST
63 | Remember to test your code before submitting pull requests.
64 | :::
65 |
66 | ## Developers and Contributors
67 |
68 |
69 |
70 | ## License
71 | This project is under the [MIT License](https://choosealicense.com/licenses/mit/).
72 |
73 | 🌟 Support My Projects! 🚀
74 |
75 | [](https://github.com/sponsors/rmunate)
76 |
77 | Make any contributions you see fit; the code is entirely yours. Together, we can do amazing things and improve the world of development. Your support is invaluable. ✨
78 |
79 | If you have ideas, suggestions, or just want to collaborate, we are open to everything! Join our community and be part of our journey to success! 🌐👩💻👨💻
--------------------------------------------------------------------------------
/docs/contribute/report-bugs.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Bug Report
3 | editLink: true
4 | outline: deep
5 | ---
6 |
7 | # Bug Report
8 |
9 | If you find errors or opportunities within the package, you can create an incident that we will attend to in the shortest time possible.
10 |
11 | Here!:
12 | [https://github.com/rmunate/LaravelHelpers/issues/new](https://github.com/rmunate/LaravelHelpers/issues/new)
13 |
14 | Remember that you can also contribute as a collaborator of this solution.
15 |
--------------------------------------------------------------------------------
/docs/getting-started/changelog.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Release Notes
3 | editLink: true
4 | outline: deep
5 | ---
6 |
7 | ::: warning We strongly recommend migrating to the current version
8 | If you have applications using previous versions, we highly recommend migrating to the current version. Please note that the current version does not support functionalities from earlier versions as its source code has been completely rewritten.
9 | :::
10 |
11 | # Release Notes
12 |
13 | ## [3.0.0] - 2024-05-27
14 |
15 | ### Changed
16 |
17 | - Adjusted the handling of Laravel's native helpers by adding the `Number` class, which is currently included in the Laravel core.
18 |
19 | ### Removed
20 |
21 | - Removed the `Helper` class that functioned as a dynamic accessor to the classes defined within the Helpers folder.
22 |
--------------------------------------------------------------------------------
/docs/getting-started/installation.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Installation
3 | editLink: true
4 | outline: deep
5 | ---
6 |
7 | # Installation
8 |
9 | ## Requirements
10 |
11 | To use this solution, ensure the following:
12 |
13 | **PHP:** Version 8.0 or higher
14 |
15 | **Laravel Framework:** Version 10.0 or higher
16 |
17 | ## Installation
18 |
19 | To install the dependency via **composer**, run the following command:
20 |
21 | ```shell
22 | composer require rmunate/laravel_helpers
23 | ```
24 |
25 | This will download the latest available version of the package.
26 |
27 | Ensure that in your `composer.json`, you have the library listed with the latest version: `"rmunate/laravel_helpers": "^3.0"`
28 |
--------------------------------------------------------------------------------
/docs/getting-started/versions.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Versions
3 | editLink: true
4 | outline: deep
5 | ---
6 |
7 | # Versions
8 |
9 | During the development of this solution, multiple tool versions were released. It's crucial to note that previous versions are NOT compatible with the latest update. This documentation is tailored specifically for the usage of the current version.
10 |
11 | We highly recommend migrating from older versions to the latest release, as no support is provided for any previous versions.
12 |
13 | | Version | Release Date | End of Support Date |
14 | |--------------------------------------------------------|--------------|---------------------|
15 | | ^0.1 | 2021-10-21 | 2021-12-31 |
16 | | ^1.0 | 2021-11-13 | 2023-01-15 |
17 | | ^2.0 | 2022-10-05 | 2024-05-27 |
18 | | ^3.0 | 2024-05-27 | 2024-12-31 |
19 |
--------------------------------------------------------------------------------
/docs/home.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Introduction
3 | editLink: true
4 | outline: deep
5 | ---
6 |
7 | 
8 |
9 | ## Introduction
10 |
11 | For many years, I have used Laravel, and I believe it is the framework that breathes the best life into PHP. However, the creation of Helpers has not been standardized within this framework. Thus, I decided to create a standard and implement it across the various systems and companies I have worked with. Today, many colleagues have decided to support this initiative and create a package that becomes a powerful feature in Laravel.
12 |
13 | Our solution offers a simple, efficient, and elegant way to execute your application's custom methods from any class or view, making development much easier. Enhance your Laravel project while maintaining the elegance and cleanliness of your code with this package.
14 |
15 | We have oriented the entire use of Helpers towards classes and, most importantly, centralized the existing Laravel helpers through the categories of this package. We include native Laravel functionalities accessible through classes like `Str::` and `Arr::`. Other helpers that are not accessed via classes but as functions should continue to be used as presented in Laravel's official documentation.
16 |
17 | It's time to standardize how we create and use helpers in our projects.
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: home
3 |
4 | hero:
5 | name: Laravel
6 | text: Helpers
7 | tagline: Your own integrated solutions with Laravel's Core! 💻✨
8 | image:
9 | src: img/logo.png
10 | alt: VitePress
11 | actions:
12 | - theme: brand
13 | text: Get Started
14 | link: /home
15 | - theme: alt
16 | text: View on GitHub
17 | link: https://github.com/rmunate/LaravelHelpers
18 |
19 | features:
20 | - icon: 🌐
21 | title: Standardize Helper Usage in Your Project
22 | details: Establish a consistent standard for creating and using helpers in your Laravel projects. Define a clear structure for creating and calling them within your project.
23 | - icon: 🚀
24 | title: Add Your Own Solutions
25 | details: Imagine Laravel adding all your personal solutions. While it's challenging for maintainers to accept numerous features, it's time for the community to contribute and enhance the ecosystem.
26 | - icon: 📢
27 | title: Easy Invocation
28 | details: Utilize the same class names exposed by Laravel with the added convenience of being readily accessible in your project.
29 | ---
--------------------------------------------------------------------------------
/docs/methods/strings.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: String Helper Methods
3 | editLink: true
4 | outline: deep
5 | ---
6 |
7 | # String Helper Methods
8 |
9 | The `Str` class provides various static methods for checking the characteristics of strings. Below is the documentation for each available method.
10 |
11 | ### `isAlphanumeric`
12 |
13 | Checks if a string contains only alphanumeric characters (letters and numbers).
14 |
15 | #### Parameters
16 |
17 | - `string $string`: The string to check.
18 |
19 | #### Returns
20 |
21 | - `bool`: `True` if the string is alphanumeric, `false` otherwise.
22 |
23 | #### Example
24 |
25 | ```php
26 | use App\Helpers\Str;
27 |
28 | $result = Str::isAlphanumeric('abc123'); // True
29 | $result = Str::isAlphanumeric('abc 123'); // False
30 | ```
31 |
32 | ### `isAlpha`
33 |
34 | Checks if a string contains only alphabetic characters (letters).
35 |
36 | #### Parameters
37 |
38 | - `string $string`: The string to check.
39 |
40 | #### Returns
41 |
42 | - `bool`: `True` if the string is alphabetic, `false` otherwise.
43 |
44 | #### Example
45 |
46 | ```php
47 | use App\Helpers\Str;
48 |
49 | $result = Str::isAlpha('abc'); // True
50 | $result = Str::isAlpha('abc123'); // False
51 | ```
52 |
53 | ### `isControl`
54 |
55 | Checks if a string contains control characters.
56 |
57 | #### Parameters
58 |
59 | - `string $string`: The string to check.
60 |
61 | #### Returns
62 |
63 | - `bool`: `True` if the string contains control characters, `false` otherwise.
64 |
65 | #### Example
66 |
67 | ```php
68 | use App\Helpers\Str;
69 |
70 | $result = Str::isControl("\n\r"); // True
71 | $result = Str::isControl('abc'); // False
72 | ```
73 |
74 | ### `isDigit`
75 |
76 | Checks if a string contains only numeric characters (digits).
77 |
78 | #### Parameters
79 |
80 | - `string $string`: The string to check.
81 |
82 | #### Returns
83 |
84 | - `bool`: `True` if the string contains only numeric characters, `false` otherwise.
85 |
86 | #### Example
87 |
88 | ```php
89 | use App\Helpers\Str;
90 |
91 | $result = Str::isDigit('12345'); // True
92 | $result = Str::isDigit('123a45'); // False
93 | ```
94 |
95 | ### `isGraph`
96 |
97 | Checks if a string contains only printable characters excluding spaces.
98 |
99 | #### Parameters
100 |
101 | - `string $string`: The string to check.
102 |
103 | #### Returns
104 |
105 | - `bool`: `True` if the string contains only printable characters excluding spaces, `false` otherwise.
106 |
107 | #### Example
108 |
109 | ```php
110 | use App\Helpers\Str;
111 |
112 | $result = Str::isGraph('abc123!@#'); // True
113 | $result = Str::isGraph('abc 123'); // False
114 | ```
115 |
116 | ### `isLower`
117 |
118 | Checks if a string contains only lowercase alphabetic characters.
119 |
120 | #### Parameters
121 |
122 | - `string $string`: The string to check.
123 |
124 | #### Returns
125 |
126 | - `bool`: `True` if the string contains only lowercase characters, `false` otherwise.
127 |
128 | #### Example
129 |
130 | ```php
131 | use App\Helpers\Str;
132 |
133 | $result = Str::isLower('abc'); // True
134 | $result = Str::isLower('Abc'); // False
135 | ```
136 |
137 | ### `isPrint`
138 |
139 | Checks if a string contains only printable characters.
140 |
141 | #### Parameters
142 |
143 | - `string $string`: The string to check.
144 |
145 | #### Returns
146 |
147 | - `bool`: `True` if the string contains only printable characters, `false` otherwise.
148 |
149 | #### Example
150 |
151 | ```php
152 | use App\Helpers\Str;
153 |
154 | $result = Str::isPrint('abc123'); // True
155 | $result = Str::isPrint("abc\n123"); // False
156 | ```
157 |
158 | ### `isPunct`
159 |
160 | Checks if a string contains only printable characters that are neither spaces nor alphanumeric.
161 |
162 | #### Parameters
163 |
164 | - `string $string`: The string to check.
165 |
166 | #### Returns
167 |
168 | - `bool`: `True` if the string contains only punctuation characters, `false` otherwise.
169 |
170 | #### Example
171 |
172 | ```php
173 | use App\Helpers\Str;
174 |
175 | $result = Str::isPunct('!@#'); // True
176 | $result = Str::isPunct('abc!'); // False
177 | ```
178 |
179 | ### `isSpace`
180 |
181 | Checks if a string contains only whitespace characters.
182 |
183 | #### Parameters
184 |
185 | - `string $string`: The string to check.
186 |
187 | #### Returns
188 |
189 | - `bool`: `True` if the string contains only whitespace characters, `false` otherwise.
190 |
191 | #### Example
192 |
193 | ```php
194 | use App\Helpers\Str;
195 |
196 | $result = Str::isSpace(' '); // True
197 | $result = Str::isSpace('abc'); // False
198 | ```
199 |
200 | ### `isUpper`
201 |
202 | Checks if a string contains only uppercase alphabetic characters.
203 |
204 | #### Parameters
205 |
206 | - `string $string`: The string to check.
207 |
208 | #### Returns
209 |
210 | - `bool`: `True` if the string contains only uppercase characters, `false` otherwise.
211 |
212 | #### Example
213 |
214 | ```php
215 | use App\Helpers\Str;
216 |
217 | $result = Str::isUpper('ABC'); // True
218 | $result = Str::isUpper('Abc'); // False
219 | ```
220 |
221 | ### `isHex`
222 |
223 | Checks if a string contains only hexadecimal characters (digits 0-9 and letters A-F/a-f).
224 |
225 | #### Parameters
226 |
227 | - `string $string`: The string to check.
228 |
229 | #### Returns
230 |
231 | - `bool`: `True` if the string contains only hexadecimal characters, `false` otherwise.
232 |
233 | #### Example
234 |
235 | ```php
236 | use App\Helpers\Str;
237 |
238 | $result = Str::isHex('1a2b3c'); // True
239 | $result = Str::isHex('1g2h3i'); // False
240 | ```
--------------------------------------------------------------------------------
/docs/public/css/style.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --vp-home-hero-name-color: #9e1620;
3 | --vp-button-brand-border: black;
4 | --vp-button-brand-bg: white;
5 | --vp-button-brand-text: black;
6 | --vp-button-brand-hover-bg: #9e1620;
7 | --vp-c-brand-1: #9e1620;
8 | }
9 |
10 | .tagline{
11 | font-size: 22px !important;
12 | }
--------------------------------------------------------------------------------
/docs/public/img/laravel-red.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/public/img/laravel_black.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/public/img/logo-full-scream.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmunate/LaravelHelpers/13204b3fda56730b859bab505ce7a5bccaa82d27/docs/public/img/logo-full-scream.png
--------------------------------------------------------------------------------
/docs/public/img/logo-github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmunate/LaravelHelpers/13204b3fda56730b859bab505ce7a5bccaa82d27/docs/public/img/logo-github.png
--------------------------------------------------------------------------------
/docs/public/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rmunate/LaravelHelpers/13204b3fda56730b859bab505ce7a5bccaa82d27/docs/public/img/logo.png
--------------------------------------------------------------------------------
/docs/usage/default-classes.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Default Classes
3 | editLink: true
4 | outline: deep
5 | ---
6 |
7 | # Default Classes
8 |
9 | After installing the dependency in your project, you can generate the initial structure for helpers by running the following command:
10 |
11 | ```shell
12 | php artisan helper:init
13 | ```
14 |
15 | ## Helpers Folder
16 |
17 | This will create a folder named `Helpers` inside the `app/` directory, where you will find the standard classes suggested for creating your own helpers.
18 |
19 | The structure of the `Helpers` folder will be as follows:
20 |
21 | ```shell
22 | app/
23 | └── Helpers/
24 | └── Arr.php
25 | └── Date.php
26 | └── File.php
27 | └── Number.php
28 | └── Str.php
29 | //...
30 | ```
31 |
32 | These classes will replace the default classes exposed by the Laravel framework. For example, `Illuminate\Support\Str` will no longer need to be invoked. To use any of the helpers originally integrated into the framework, simply call the `App\Helpers\Str` class.
33 |
34 | ```php
35 | use App\Helpers\Str;
36 |
37 | $string = Str::ucfirst('foo bar');
38 |
39 | // Foo bar
40 | ```
41 |
42 | ## Creating New Methods
43 |
44 | In the corresponding `App\Helpers\*` class, you can create methods that are convenient for your project. For example, following this example, we will create a string class that brings a bit of `Python` flavor to `PHP`.
45 |
46 | ```php
47 | class Str extends BaseHelpers
48 | {
49 | /**
50 | * Fill the string with zeros on the left to reach the specified length.
51 | *
52 | * @param string $input The input string.
53 | * @param int $width The desired width of the output string.
54 | * @return string The zero-filled string.
55 | */
56 | public static function zfill(string $input, int $width): string {
57 |
58 | /**
59 | * Check if the input string length is already
60 | * greater than or equal to the desired width
61 | */
62 | if (strlen($input) >= $width) {
63 | return $input;
64 | }
65 |
66 | /* Calculate the number of zeros needed */
67 | $zerosNeeded = $width - strlen($input);
68 |
69 | /* Pad the string with zeros on the left */
70 | return str_repeat('0', $zerosNeeded) . $input;
71 | }
72 | }
73 | ```
74 |
75 | You can now invoke the class whenever and wherever you need it.
76 |
77 | ```php
78 | use App\Helpers\Str;
79 |
80 | Str::zfill('42', 5);
81 | // Output: 00042
82 | ```
--------------------------------------------------------------------------------
/docs/usage/global-functions.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Global Functions
3 | editLink: true
4 | outline: deep
5 | ---
6 |
7 | # Global Functions
8 |
9 | If you're a fan of functional programming and prefer to define some globally accessible functions in your application, you can create a file to host your different functions, which will be available project-wide by default.
10 |
11 | To create the file where you'll define the functions, simply run the command:
12 |
13 | ```shell
14 | php artisan helper:functions
15 | ```
16 |
17 | ## Helpers File
18 |
19 | The above command will create a file named `Functions` within the `Helpers` folder in your Laravel project's `app` directory:
20 |
21 | ```shell
22 | app/
23 | └── Helpers/
24 | └── Functions.php
25 | //...
26 | ```
27 |
28 | ## Defining Global Functions
29 |
30 | With this file in your project, you can start defining global variables as shown in the following example. We'll simply create a function that returns the currently logged-in user.
31 |
32 | ```php
33 | if (! function_exists('current_user')) {
34 | function current_user()
35 | {
36 | return auth()->user();
37 | }
38 | }
39 | ```
40 |
41 | Notice how before defining the function, we've used `function_exists`, which ensures that if a function with this name doesn't already exist, this new one will be created.
42 |
43 | Now, to call this function from anywhere in your project, whether in Blade views or in classes, controllers, models, etc., you simply use the function directly:
44 |
45 | ```php
46 | $user = current_user();
47 | ```
48 |
49 | You don't need to modify the `composer.json` file as various tutorials on the internet suggest; this file comes preloaded.
--------------------------------------------------------------------------------
/docs/usage/personalized-classes.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Custom Classes
3 | editLink: true
4 | outline: deep
5 | ---
6 |
7 | # Custom Classes
8 |
9 | If your project's needs go beyond the categories of standard classes, you can create your own solutions.
10 |
11 | With a simple command, you can create your own static helper classes.
12 |
13 | ```shell
14 | php artisan helper:create Html
15 | ```
16 | In this case, `Html` is the name of the Helpers category, but you can use any name you prefer. Just make sure it follows PascalCase.
17 |
18 | The above command will create a new class within the `Helpers` folder with the name you specified.
19 |
20 | ```shell
21 | app/
22 | └── Helpers/
23 | └── Html.php
24 | //...
25 | ```
26 |
27 | ## Defining Static Methods
28 |
29 | For this example, let's create a method in the `Html` class that handles rendering a text input.
30 |
31 | ```php
32 | class Html extends BaseHelpers
33 | {
34 |
35 | /**
36 | * Render a text input field.
37 | *
38 | * @param string $name The name attribute of the input field.
39 | * @param string $value The value attribute of the input field (default is an empty string).
40 | * @return string The rendered HTML for the input field.
41 | */
42 | public static function textInput(string $name, string $value = ''): string
43 | {
44 | return '';
46 | }
47 |
48 | }
49 | ```
50 |
51 | Now you can use your helper wherever you need it.
52 |
53 | ## Example Usage of Helper in Blade
54 |
55 | If you want to execute your helper within Blade, you can do so with the following syntax.
56 |
57 | ```blade
58 | {!! \App\Helpers\Html::textInput('username', 'rmunate') !!}
59 | ```
60 |
61 | ## Usage in Classes
62 |
63 | If, on the other hand, you'll be using it in controllers, services, or specific classes in your application, you can simply import the class and make the corresponding call.
64 |
65 | ```php
66 | use App\Helpers\Html;
67 |
68 | $input = Html::textInput('username', 'rmunate');
69 | ```
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "LaravelHelpers",
3 | "lockfileVersion": 2,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "devDependencies": {
8 | "vitepress": "^1.2.0"
9 | }
10 | },
11 | "node_modules/@algolia/autocomplete-core": {
12 | "version": "1.9.3",
13 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz",
14 | "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==",
15 | "dev": true,
16 | "dependencies": {
17 | "@algolia/autocomplete-plugin-algolia-insights": "1.9.3",
18 | "@algolia/autocomplete-shared": "1.9.3"
19 | }
20 | },
21 | "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
22 | "version": "1.9.3",
23 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz",
24 | "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==",
25 | "dev": true,
26 | "dependencies": {
27 | "@algolia/autocomplete-shared": "1.9.3"
28 | },
29 | "peerDependencies": {
30 | "search-insights": ">= 1 < 3"
31 | }
32 | },
33 | "node_modules/@algolia/autocomplete-preset-algolia": {
34 | "version": "1.9.3",
35 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz",
36 | "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==",
37 | "dev": true,
38 | "dependencies": {
39 | "@algolia/autocomplete-shared": "1.9.3"
40 | },
41 | "peerDependencies": {
42 | "@algolia/client-search": ">= 4.9.1 < 6",
43 | "algoliasearch": ">= 4.9.1 < 6"
44 | }
45 | },
46 | "node_modules/@algolia/autocomplete-shared": {
47 | "version": "1.9.3",
48 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz",
49 | "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==",
50 | "dev": true,
51 | "peerDependencies": {
52 | "@algolia/client-search": ">= 4.9.1 < 6",
53 | "algoliasearch": ">= 4.9.1 < 6"
54 | }
55 | },
56 | "node_modules/@algolia/cache-browser-local-storage": {
57 | "version": "4.23.3",
58 | "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.3.tgz",
59 | "integrity": "sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==",
60 | "dev": true,
61 | "dependencies": {
62 | "@algolia/cache-common": "4.23.3"
63 | }
64 | },
65 | "node_modules/@algolia/cache-common": {
66 | "version": "4.23.3",
67 | "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.23.3.tgz",
68 | "integrity": "sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==",
69 | "dev": true
70 | },
71 | "node_modules/@algolia/cache-in-memory": {
72 | "version": "4.23.3",
73 | "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.23.3.tgz",
74 | "integrity": "sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==",
75 | "dev": true,
76 | "dependencies": {
77 | "@algolia/cache-common": "4.23.3"
78 | }
79 | },
80 | "node_modules/@algolia/client-account": {
81 | "version": "4.23.3",
82 | "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.23.3.tgz",
83 | "integrity": "sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==",
84 | "dev": true,
85 | "dependencies": {
86 | "@algolia/client-common": "4.23.3",
87 | "@algolia/client-search": "4.23.3",
88 | "@algolia/transporter": "4.23.3"
89 | }
90 | },
91 | "node_modules/@algolia/client-analytics": {
92 | "version": "4.23.3",
93 | "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.23.3.tgz",
94 | "integrity": "sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==",
95 | "dev": true,
96 | "dependencies": {
97 | "@algolia/client-common": "4.23.3",
98 | "@algolia/client-search": "4.23.3",
99 | "@algolia/requester-common": "4.23.3",
100 | "@algolia/transporter": "4.23.3"
101 | }
102 | },
103 | "node_modules/@algolia/client-common": {
104 | "version": "4.23.3",
105 | "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.23.3.tgz",
106 | "integrity": "sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==",
107 | "dev": true,
108 | "dependencies": {
109 | "@algolia/requester-common": "4.23.3",
110 | "@algolia/transporter": "4.23.3"
111 | }
112 | },
113 | "node_modules/@algolia/client-personalization": {
114 | "version": "4.23.3",
115 | "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.23.3.tgz",
116 | "integrity": "sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==",
117 | "dev": true,
118 | "dependencies": {
119 | "@algolia/client-common": "4.23.3",
120 | "@algolia/requester-common": "4.23.3",
121 | "@algolia/transporter": "4.23.3"
122 | }
123 | },
124 | "node_modules/@algolia/client-search": {
125 | "version": "4.23.3",
126 | "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.23.3.tgz",
127 | "integrity": "sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==",
128 | "dev": true,
129 | "dependencies": {
130 | "@algolia/client-common": "4.23.3",
131 | "@algolia/requester-common": "4.23.3",
132 | "@algolia/transporter": "4.23.3"
133 | }
134 | },
135 | "node_modules/@algolia/logger-common": {
136 | "version": "4.23.3",
137 | "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.23.3.tgz",
138 | "integrity": "sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==",
139 | "dev": true
140 | },
141 | "node_modules/@algolia/logger-console": {
142 | "version": "4.23.3",
143 | "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.23.3.tgz",
144 | "integrity": "sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==",
145 | "dev": true,
146 | "dependencies": {
147 | "@algolia/logger-common": "4.23.3"
148 | }
149 | },
150 | "node_modules/@algolia/recommend": {
151 | "version": "4.23.3",
152 | "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.23.3.tgz",
153 | "integrity": "sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==",
154 | "dev": true,
155 | "dependencies": {
156 | "@algolia/cache-browser-local-storage": "4.23.3",
157 | "@algolia/cache-common": "4.23.3",
158 | "@algolia/cache-in-memory": "4.23.3",
159 | "@algolia/client-common": "4.23.3",
160 | "@algolia/client-search": "4.23.3",
161 | "@algolia/logger-common": "4.23.3",
162 | "@algolia/logger-console": "4.23.3",
163 | "@algolia/requester-browser-xhr": "4.23.3",
164 | "@algolia/requester-common": "4.23.3",
165 | "@algolia/requester-node-http": "4.23.3",
166 | "@algolia/transporter": "4.23.3"
167 | }
168 | },
169 | "node_modules/@algolia/requester-browser-xhr": {
170 | "version": "4.23.3",
171 | "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.3.tgz",
172 | "integrity": "sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==",
173 | "dev": true,
174 | "dependencies": {
175 | "@algolia/requester-common": "4.23.3"
176 | }
177 | },
178 | "node_modules/@algolia/requester-common": {
179 | "version": "4.23.3",
180 | "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.23.3.tgz",
181 | "integrity": "sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==",
182 | "dev": true
183 | },
184 | "node_modules/@algolia/requester-node-http": {
185 | "version": "4.23.3",
186 | "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.23.3.tgz",
187 | "integrity": "sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==",
188 | "dev": true,
189 | "dependencies": {
190 | "@algolia/requester-common": "4.23.3"
191 | }
192 | },
193 | "node_modules/@algolia/transporter": {
194 | "version": "4.23.3",
195 | "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.23.3.tgz",
196 | "integrity": "sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==",
197 | "dev": true,
198 | "dependencies": {
199 | "@algolia/cache-common": "4.23.3",
200 | "@algolia/logger-common": "4.23.3",
201 | "@algolia/requester-common": "4.23.3"
202 | }
203 | },
204 | "node_modules/@babel/parser": {
205 | "version": "7.24.6",
206 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz",
207 | "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==",
208 | "dev": true,
209 | "bin": {
210 | "parser": "bin/babel-parser.js"
211 | },
212 | "engines": {
213 | "node": ">=6.0.0"
214 | }
215 | },
216 | "node_modules/@docsearch/css": {
217 | "version": "3.6.0",
218 | "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz",
219 | "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==",
220 | "dev": true
221 | },
222 | "node_modules/@docsearch/js": {
223 | "version": "3.6.0",
224 | "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.0.tgz",
225 | "integrity": "sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==",
226 | "dev": true,
227 | "dependencies": {
228 | "@docsearch/react": "3.6.0",
229 | "preact": "^10.0.0"
230 | }
231 | },
232 | "node_modules/@docsearch/react": {
233 | "version": "3.6.0",
234 | "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz",
235 | "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==",
236 | "dev": true,
237 | "dependencies": {
238 | "@algolia/autocomplete-core": "1.9.3",
239 | "@algolia/autocomplete-preset-algolia": "1.9.3",
240 | "@docsearch/css": "3.6.0",
241 | "algoliasearch": "^4.19.1"
242 | },
243 | "peerDependencies": {
244 | "@types/react": ">= 16.8.0 < 19.0.0",
245 | "react": ">= 16.8.0 < 19.0.0",
246 | "react-dom": ">= 16.8.0 < 19.0.0",
247 | "search-insights": ">= 1 < 3"
248 | },
249 | "peerDependenciesMeta": {
250 | "@types/react": {
251 | "optional": true
252 | },
253 | "react": {
254 | "optional": true
255 | },
256 | "react-dom": {
257 | "optional": true
258 | },
259 | "search-insights": {
260 | "optional": true
261 | }
262 | }
263 | },
264 | "node_modules/@esbuild/aix-ppc64": {
265 | "version": "0.20.2",
266 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
267 | "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
268 | "cpu": [
269 | "ppc64"
270 | ],
271 | "dev": true,
272 | "optional": true,
273 | "os": [
274 | "aix"
275 | ],
276 | "engines": {
277 | "node": ">=12"
278 | }
279 | },
280 | "node_modules/@esbuild/android-arm": {
281 | "version": "0.20.2",
282 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
283 | "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
284 | "cpu": [
285 | "arm"
286 | ],
287 | "dev": true,
288 | "optional": true,
289 | "os": [
290 | "android"
291 | ],
292 | "engines": {
293 | "node": ">=12"
294 | }
295 | },
296 | "node_modules/@esbuild/android-arm64": {
297 | "version": "0.20.2",
298 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
299 | "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
300 | "cpu": [
301 | "arm64"
302 | ],
303 | "dev": true,
304 | "optional": true,
305 | "os": [
306 | "android"
307 | ],
308 | "engines": {
309 | "node": ">=12"
310 | }
311 | },
312 | "node_modules/@esbuild/android-x64": {
313 | "version": "0.20.2",
314 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
315 | "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
316 | "cpu": [
317 | "x64"
318 | ],
319 | "dev": true,
320 | "optional": true,
321 | "os": [
322 | "android"
323 | ],
324 | "engines": {
325 | "node": ">=12"
326 | }
327 | },
328 | "node_modules/@esbuild/darwin-arm64": {
329 | "version": "0.20.2",
330 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
331 | "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
332 | "cpu": [
333 | "arm64"
334 | ],
335 | "dev": true,
336 | "optional": true,
337 | "os": [
338 | "darwin"
339 | ],
340 | "engines": {
341 | "node": ">=12"
342 | }
343 | },
344 | "node_modules/@esbuild/darwin-x64": {
345 | "version": "0.20.2",
346 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
347 | "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
348 | "cpu": [
349 | "x64"
350 | ],
351 | "dev": true,
352 | "optional": true,
353 | "os": [
354 | "darwin"
355 | ],
356 | "engines": {
357 | "node": ">=12"
358 | }
359 | },
360 | "node_modules/@esbuild/freebsd-arm64": {
361 | "version": "0.20.2",
362 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
363 | "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
364 | "cpu": [
365 | "arm64"
366 | ],
367 | "dev": true,
368 | "optional": true,
369 | "os": [
370 | "freebsd"
371 | ],
372 | "engines": {
373 | "node": ">=12"
374 | }
375 | },
376 | "node_modules/@esbuild/freebsd-x64": {
377 | "version": "0.20.2",
378 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
379 | "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
380 | "cpu": [
381 | "x64"
382 | ],
383 | "dev": true,
384 | "optional": true,
385 | "os": [
386 | "freebsd"
387 | ],
388 | "engines": {
389 | "node": ">=12"
390 | }
391 | },
392 | "node_modules/@esbuild/linux-arm": {
393 | "version": "0.20.2",
394 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
395 | "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
396 | "cpu": [
397 | "arm"
398 | ],
399 | "dev": true,
400 | "optional": true,
401 | "os": [
402 | "linux"
403 | ],
404 | "engines": {
405 | "node": ">=12"
406 | }
407 | },
408 | "node_modules/@esbuild/linux-arm64": {
409 | "version": "0.20.2",
410 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
411 | "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
412 | "cpu": [
413 | "arm64"
414 | ],
415 | "dev": true,
416 | "optional": true,
417 | "os": [
418 | "linux"
419 | ],
420 | "engines": {
421 | "node": ">=12"
422 | }
423 | },
424 | "node_modules/@esbuild/linux-ia32": {
425 | "version": "0.20.2",
426 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
427 | "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
428 | "cpu": [
429 | "ia32"
430 | ],
431 | "dev": true,
432 | "optional": true,
433 | "os": [
434 | "linux"
435 | ],
436 | "engines": {
437 | "node": ">=12"
438 | }
439 | },
440 | "node_modules/@esbuild/linux-loong64": {
441 | "version": "0.20.2",
442 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
443 | "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
444 | "cpu": [
445 | "loong64"
446 | ],
447 | "dev": true,
448 | "optional": true,
449 | "os": [
450 | "linux"
451 | ],
452 | "engines": {
453 | "node": ">=12"
454 | }
455 | },
456 | "node_modules/@esbuild/linux-mips64el": {
457 | "version": "0.20.2",
458 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
459 | "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
460 | "cpu": [
461 | "mips64el"
462 | ],
463 | "dev": true,
464 | "optional": true,
465 | "os": [
466 | "linux"
467 | ],
468 | "engines": {
469 | "node": ">=12"
470 | }
471 | },
472 | "node_modules/@esbuild/linux-ppc64": {
473 | "version": "0.20.2",
474 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
475 | "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
476 | "cpu": [
477 | "ppc64"
478 | ],
479 | "dev": true,
480 | "optional": true,
481 | "os": [
482 | "linux"
483 | ],
484 | "engines": {
485 | "node": ">=12"
486 | }
487 | },
488 | "node_modules/@esbuild/linux-riscv64": {
489 | "version": "0.20.2",
490 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
491 | "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
492 | "cpu": [
493 | "riscv64"
494 | ],
495 | "dev": true,
496 | "optional": true,
497 | "os": [
498 | "linux"
499 | ],
500 | "engines": {
501 | "node": ">=12"
502 | }
503 | },
504 | "node_modules/@esbuild/linux-s390x": {
505 | "version": "0.20.2",
506 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
507 | "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
508 | "cpu": [
509 | "s390x"
510 | ],
511 | "dev": true,
512 | "optional": true,
513 | "os": [
514 | "linux"
515 | ],
516 | "engines": {
517 | "node": ">=12"
518 | }
519 | },
520 | "node_modules/@esbuild/linux-x64": {
521 | "version": "0.20.2",
522 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
523 | "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
524 | "cpu": [
525 | "x64"
526 | ],
527 | "dev": true,
528 | "optional": true,
529 | "os": [
530 | "linux"
531 | ],
532 | "engines": {
533 | "node": ">=12"
534 | }
535 | },
536 | "node_modules/@esbuild/netbsd-x64": {
537 | "version": "0.20.2",
538 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
539 | "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
540 | "cpu": [
541 | "x64"
542 | ],
543 | "dev": true,
544 | "optional": true,
545 | "os": [
546 | "netbsd"
547 | ],
548 | "engines": {
549 | "node": ">=12"
550 | }
551 | },
552 | "node_modules/@esbuild/openbsd-x64": {
553 | "version": "0.20.2",
554 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
555 | "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
556 | "cpu": [
557 | "x64"
558 | ],
559 | "dev": true,
560 | "optional": true,
561 | "os": [
562 | "openbsd"
563 | ],
564 | "engines": {
565 | "node": ">=12"
566 | }
567 | },
568 | "node_modules/@esbuild/sunos-x64": {
569 | "version": "0.20.2",
570 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
571 | "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
572 | "cpu": [
573 | "x64"
574 | ],
575 | "dev": true,
576 | "optional": true,
577 | "os": [
578 | "sunos"
579 | ],
580 | "engines": {
581 | "node": ">=12"
582 | }
583 | },
584 | "node_modules/@esbuild/win32-arm64": {
585 | "version": "0.20.2",
586 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
587 | "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
588 | "cpu": [
589 | "arm64"
590 | ],
591 | "dev": true,
592 | "optional": true,
593 | "os": [
594 | "win32"
595 | ],
596 | "engines": {
597 | "node": ">=12"
598 | }
599 | },
600 | "node_modules/@esbuild/win32-ia32": {
601 | "version": "0.20.2",
602 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
603 | "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
604 | "cpu": [
605 | "ia32"
606 | ],
607 | "dev": true,
608 | "optional": true,
609 | "os": [
610 | "win32"
611 | ],
612 | "engines": {
613 | "node": ">=12"
614 | }
615 | },
616 | "node_modules/@esbuild/win32-x64": {
617 | "version": "0.20.2",
618 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
619 | "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
620 | "cpu": [
621 | "x64"
622 | ],
623 | "dev": true,
624 | "optional": true,
625 | "os": [
626 | "win32"
627 | ],
628 | "engines": {
629 | "node": ">=12"
630 | }
631 | },
632 | "node_modules/@jridgewell/sourcemap-codec": {
633 | "version": "1.4.15",
634 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
635 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
636 | "dev": true
637 | },
638 | "node_modules/@rollup/rollup-android-arm-eabi": {
639 | "version": "4.18.0",
640 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz",
641 | "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==",
642 | "cpu": [
643 | "arm"
644 | ],
645 | "dev": true,
646 | "optional": true,
647 | "os": [
648 | "android"
649 | ]
650 | },
651 | "node_modules/@rollup/rollup-android-arm64": {
652 | "version": "4.18.0",
653 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz",
654 | "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==",
655 | "cpu": [
656 | "arm64"
657 | ],
658 | "dev": true,
659 | "optional": true,
660 | "os": [
661 | "android"
662 | ]
663 | },
664 | "node_modules/@rollup/rollup-darwin-arm64": {
665 | "version": "4.18.0",
666 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz",
667 | "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==",
668 | "cpu": [
669 | "arm64"
670 | ],
671 | "dev": true,
672 | "optional": true,
673 | "os": [
674 | "darwin"
675 | ]
676 | },
677 | "node_modules/@rollup/rollup-darwin-x64": {
678 | "version": "4.18.0",
679 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz",
680 | "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==",
681 | "cpu": [
682 | "x64"
683 | ],
684 | "dev": true,
685 | "optional": true,
686 | "os": [
687 | "darwin"
688 | ]
689 | },
690 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
691 | "version": "4.18.0",
692 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz",
693 | "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==",
694 | "cpu": [
695 | "arm"
696 | ],
697 | "dev": true,
698 | "optional": true,
699 | "os": [
700 | "linux"
701 | ]
702 | },
703 | "node_modules/@rollup/rollup-linux-arm-musleabihf": {
704 | "version": "4.18.0",
705 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz",
706 | "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==",
707 | "cpu": [
708 | "arm"
709 | ],
710 | "dev": true,
711 | "optional": true,
712 | "os": [
713 | "linux"
714 | ]
715 | },
716 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
717 | "version": "4.18.0",
718 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz",
719 | "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==",
720 | "cpu": [
721 | "arm64"
722 | ],
723 | "dev": true,
724 | "optional": true,
725 | "os": [
726 | "linux"
727 | ]
728 | },
729 | "node_modules/@rollup/rollup-linux-arm64-musl": {
730 | "version": "4.18.0",
731 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz",
732 | "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==",
733 | "cpu": [
734 | "arm64"
735 | ],
736 | "dev": true,
737 | "optional": true,
738 | "os": [
739 | "linux"
740 | ]
741 | },
742 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
743 | "version": "4.18.0",
744 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz",
745 | "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==",
746 | "cpu": [
747 | "ppc64"
748 | ],
749 | "dev": true,
750 | "optional": true,
751 | "os": [
752 | "linux"
753 | ]
754 | },
755 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
756 | "version": "4.18.0",
757 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz",
758 | "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==",
759 | "cpu": [
760 | "riscv64"
761 | ],
762 | "dev": true,
763 | "optional": true,
764 | "os": [
765 | "linux"
766 | ]
767 | },
768 | "node_modules/@rollup/rollup-linux-s390x-gnu": {
769 | "version": "4.18.0",
770 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz",
771 | "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==",
772 | "cpu": [
773 | "s390x"
774 | ],
775 | "dev": true,
776 | "optional": true,
777 | "os": [
778 | "linux"
779 | ]
780 | },
781 | "node_modules/@rollup/rollup-linux-x64-gnu": {
782 | "version": "4.18.0",
783 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
784 | "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
785 | "cpu": [
786 | "x64"
787 | ],
788 | "dev": true,
789 | "optional": true,
790 | "os": [
791 | "linux"
792 | ]
793 | },
794 | "node_modules/@rollup/rollup-linux-x64-musl": {
795 | "version": "4.18.0",
796 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz",
797 | "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==",
798 | "cpu": [
799 | "x64"
800 | ],
801 | "dev": true,
802 | "optional": true,
803 | "os": [
804 | "linux"
805 | ]
806 | },
807 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
808 | "version": "4.18.0",
809 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz",
810 | "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==",
811 | "cpu": [
812 | "arm64"
813 | ],
814 | "dev": true,
815 | "optional": true,
816 | "os": [
817 | "win32"
818 | ]
819 | },
820 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
821 | "version": "4.18.0",
822 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz",
823 | "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==",
824 | "cpu": [
825 | "ia32"
826 | ],
827 | "dev": true,
828 | "optional": true,
829 | "os": [
830 | "win32"
831 | ]
832 | },
833 | "node_modules/@rollup/rollup-win32-x64-msvc": {
834 | "version": "4.18.0",
835 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz",
836 | "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==",
837 | "cpu": [
838 | "x64"
839 | ],
840 | "dev": true,
841 | "optional": true,
842 | "os": [
843 | "win32"
844 | ]
845 | },
846 | "node_modules/@shikijs/core": {
847 | "version": "1.6.0",
848 | "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.6.0.tgz",
849 | "integrity": "sha512-NIEAi5U5R7BLkbW1pG/ZKu3eb1lzc3/+jD0lFsuxMT7zjaf9bbNwdNyMr7zh/Zl8EXQtQ+MYBAt5G+JLu+5DlA==",
850 | "dev": true
851 | },
852 | "node_modules/@shikijs/transformers": {
853 | "version": "1.6.0",
854 | "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.6.0.tgz",
855 | "integrity": "sha512-qGfHe1ECiqfE2STPWvfogIj/9Q0SK+MCRJdoITkW7AmFuB7DmbFnBT2US84+zklJOB51MzNO8RUXZiauWssJlQ==",
856 | "dev": true,
857 | "dependencies": {
858 | "shiki": "1.6.0"
859 | }
860 | },
861 | "node_modules/@types/estree": {
862 | "version": "1.0.5",
863 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
864 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
865 | "dev": true
866 | },
867 | "node_modules/@types/linkify-it": {
868 | "version": "5.0.0",
869 | "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
870 | "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
871 | "dev": true
872 | },
873 | "node_modules/@types/markdown-it": {
874 | "version": "14.1.1",
875 | "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.1.tgz",
876 | "integrity": "sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==",
877 | "dev": true,
878 | "dependencies": {
879 | "@types/linkify-it": "^5",
880 | "@types/mdurl": "^2"
881 | }
882 | },
883 | "node_modules/@types/mdurl": {
884 | "version": "2.0.0",
885 | "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
886 | "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
887 | "dev": true
888 | },
889 | "node_modules/@types/web-bluetooth": {
890 | "version": "0.0.20",
891 | "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz",
892 | "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==",
893 | "dev": true
894 | },
895 | "node_modules/@vitejs/plugin-vue": {
896 | "version": "5.0.4",
897 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz",
898 | "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==",
899 | "dev": true,
900 | "engines": {
901 | "node": "^18.0.0 || >=20.0.0"
902 | },
903 | "peerDependencies": {
904 | "vite": "^5.0.0",
905 | "vue": "^3.2.25"
906 | }
907 | },
908 | "node_modules/@vue/compiler-core": {
909 | "version": "3.4.27",
910 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
911 | "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
912 | "dev": true,
913 | "dependencies": {
914 | "@babel/parser": "^7.24.4",
915 | "@vue/shared": "3.4.27",
916 | "entities": "^4.5.0",
917 | "estree-walker": "^2.0.2",
918 | "source-map-js": "^1.2.0"
919 | }
920 | },
921 | "node_modules/@vue/compiler-dom": {
922 | "version": "3.4.27",
923 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
924 | "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
925 | "dev": true,
926 | "dependencies": {
927 | "@vue/compiler-core": "3.4.27",
928 | "@vue/shared": "3.4.27"
929 | }
930 | },
931 | "node_modules/@vue/compiler-sfc": {
932 | "version": "3.4.27",
933 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
934 | "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
935 | "dev": true,
936 | "dependencies": {
937 | "@babel/parser": "^7.24.4",
938 | "@vue/compiler-core": "3.4.27",
939 | "@vue/compiler-dom": "3.4.27",
940 | "@vue/compiler-ssr": "3.4.27",
941 | "@vue/shared": "3.4.27",
942 | "estree-walker": "^2.0.2",
943 | "magic-string": "^0.30.10",
944 | "postcss": "^8.4.38",
945 | "source-map-js": "^1.2.0"
946 | }
947 | },
948 | "node_modules/@vue/compiler-ssr": {
949 | "version": "3.4.27",
950 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
951 | "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
952 | "dev": true,
953 | "dependencies": {
954 | "@vue/compiler-dom": "3.4.27",
955 | "@vue/shared": "3.4.27"
956 | }
957 | },
958 | "node_modules/@vue/devtools-api": {
959 | "version": "7.2.1",
960 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.2.1.tgz",
961 | "integrity": "sha512-6oNCtyFOrNdqm6GUkFujsCgFlpbsHLnZqq7edeM/+cxAbMyCWvsaCsIMUaz7AiluKLccCGEM8fhOsjaKgBvb7g==",
962 | "dev": true,
963 | "dependencies": {
964 | "@vue/devtools-kit": "^7.2.1"
965 | }
966 | },
967 | "node_modules/@vue/devtools-kit": {
968 | "version": "7.2.1",
969 | "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.2.1.tgz",
970 | "integrity": "sha512-Wak/fin1X0Q8LLIfCAHBrdaaB+R6IdpSXsDByPHbQ3BmkCP0/cIo/oEGp9i0U2+gEqD4L3V9RDjNf1S34DTzQQ==",
971 | "dev": true,
972 | "dependencies": {
973 | "@vue/devtools-shared": "^7.2.1",
974 | "hookable": "^5.5.3",
975 | "mitt": "^3.0.1",
976 | "perfect-debounce": "^1.0.0",
977 | "speakingurl": "^14.0.1"
978 | },
979 | "peerDependencies": {
980 | "vue": "^3.0.0"
981 | }
982 | },
983 | "node_modules/@vue/devtools-shared": {
984 | "version": "7.2.1",
985 | "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.2.1.tgz",
986 | "integrity": "sha512-PCJF4UknJmOal68+X9XHyVeQ+idv0LFujkTOIW30+GaMJqwFVN9LkQKX4gLqn61KkGMdJTzQ1bt7EJag3TI6AA==",
987 | "dev": true,
988 | "dependencies": {
989 | "rfdc": "^1.3.1"
990 | }
991 | },
992 | "node_modules/@vue/reactivity": {
993 | "version": "3.4.27",
994 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz",
995 | "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==",
996 | "dev": true,
997 | "dependencies": {
998 | "@vue/shared": "3.4.27"
999 | }
1000 | },
1001 | "node_modules/@vue/runtime-core": {
1002 | "version": "3.4.27",
1003 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz",
1004 | "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==",
1005 | "dev": true,
1006 | "dependencies": {
1007 | "@vue/reactivity": "3.4.27",
1008 | "@vue/shared": "3.4.27"
1009 | }
1010 | },
1011 | "node_modules/@vue/runtime-dom": {
1012 | "version": "3.4.27",
1013 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz",
1014 | "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==",
1015 | "dev": true,
1016 | "dependencies": {
1017 | "@vue/runtime-core": "3.4.27",
1018 | "@vue/shared": "3.4.27",
1019 | "csstype": "^3.1.3"
1020 | }
1021 | },
1022 | "node_modules/@vue/server-renderer": {
1023 | "version": "3.4.27",
1024 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz",
1025 | "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==",
1026 | "dev": true,
1027 | "dependencies": {
1028 | "@vue/compiler-ssr": "3.4.27",
1029 | "@vue/shared": "3.4.27"
1030 | },
1031 | "peerDependencies": {
1032 | "vue": "3.4.27"
1033 | }
1034 | },
1035 | "node_modules/@vue/shared": {
1036 | "version": "3.4.27",
1037 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz",
1038 | "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==",
1039 | "dev": true
1040 | },
1041 | "node_modules/@vueuse/core": {
1042 | "version": "10.10.0",
1043 | "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.10.0.tgz",
1044 | "integrity": "sha512-vexJ/YXYs2S42B783rI95lMt3GzEwkxzC8Hb0Ndpd8rD+p+Lk/Za4bd797Ym7yq4jXqdSyj3JLChunF/vyYjUw==",
1045 | "dev": true,
1046 | "dependencies": {
1047 | "@types/web-bluetooth": "^0.0.20",
1048 | "@vueuse/metadata": "10.10.0",
1049 | "@vueuse/shared": "10.10.0",
1050 | "vue-demi": ">=0.14.7"
1051 | },
1052 | "funding": {
1053 | "url": "https://github.com/sponsors/antfu"
1054 | }
1055 | },
1056 | "node_modules/@vueuse/core/node_modules/vue-demi": {
1057 | "version": "0.14.7",
1058 | "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
1059 | "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
1060 | "dev": true,
1061 | "hasInstallScript": true,
1062 | "bin": {
1063 | "vue-demi-fix": "bin/vue-demi-fix.js",
1064 | "vue-demi-switch": "bin/vue-demi-switch.js"
1065 | },
1066 | "engines": {
1067 | "node": ">=12"
1068 | },
1069 | "funding": {
1070 | "url": "https://github.com/sponsors/antfu"
1071 | },
1072 | "peerDependencies": {
1073 | "@vue/composition-api": "^1.0.0-rc.1",
1074 | "vue": "^3.0.0-0 || ^2.6.0"
1075 | },
1076 | "peerDependenciesMeta": {
1077 | "@vue/composition-api": {
1078 | "optional": true
1079 | }
1080 | }
1081 | },
1082 | "node_modules/@vueuse/integrations": {
1083 | "version": "10.10.0",
1084 | "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.10.0.tgz",
1085 | "integrity": "sha512-vHGeK7X6mkdkpcm1eE9t3Cpm21pNVfZRwrjwwbrEs9XftnSgszF4831G2rei8Dt9cIYJIfFV+iyx/29muimJPQ==",
1086 | "dev": true,
1087 | "dependencies": {
1088 | "@vueuse/core": "10.10.0",
1089 | "@vueuse/shared": "10.10.0",
1090 | "vue-demi": ">=0.14.7"
1091 | },
1092 | "funding": {
1093 | "url": "https://github.com/sponsors/antfu"
1094 | },
1095 | "peerDependencies": {
1096 | "async-validator": "*",
1097 | "axios": "*",
1098 | "change-case": "*",
1099 | "drauu": "*",
1100 | "focus-trap": "*",
1101 | "fuse.js": "*",
1102 | "idb-keyval": "*",
1103 | "jwt-decode": "*",
1104 | "nprogress": "*",
1105 | "qrcode": "*",
1106 | "sortablejs": "*",
1107 | "universal-cookie": "*"
1108 | },
1109 | "peerDependenciesMeta": {
1110 | "async-validator": {
1111 | "optional": true
1112 | },
1113 | "axios": {
1114 | "optional": true
1115 | },
1116 | "change-case": {
1117 | "optional": true
1118 | },
1119 | "drauu": {
1120 | "optional": true
1121 | },
1122 | "focus-trap": {
1123 | "optional": true
1124 | },
1125 | "fuse.js": {
1126 | "optional": true
1127 | },
1128 | "idb-keyval": {
1129 | "optional": true
1130 | },
1131 | "jwt-decode": {
1132 | "optional": true
1133 | },
1134 | "nprogress": {
1135 | "optional": true
1136 | },
1137 | "qrcode": {
1138 | "optional": true
1139 | },
1140 | "sortablejs": {
1141 | "optional": true
1142 | },
1143 | "universal-cookie": {
1144 | "optional": true
1145 | }
1146 | }
1147 | },
1148 | "node_modules/@vueuse/integrations/node_modules/vue-demi": {
1149 | "version": "0.14.7",
1150 | "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
1151 | "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
1152 | "dev": true,
1153 | "hasInstallScript": true,
1154 | "bin": {
1155 | "vue-demi-fix": "bin/vue-demi-fix.js",
1156 | "vue-demi-switch": "bin/vue-demi-switch.js"
1157 | },
1158 | "engines": {
1159 | "node": ">=12"
1160 | },
1161 | "funding": {
1162 | "url": "https://github.com/sponsors/antfu"
1163 | },
1164 | "peerDependencies": {
1165 | "@vue/composition-api": "^1.0.0-rc.1",
1166 | "vue": "^3.0.0-0 || ^2.6.0"
1167 | },
1168 | "peerDependenciesMeta": {
1169 | "@vue/composition-api": {
1170 | "optional": true
1171 | }
1172 | }
1173 | },
1174 | "node_modules/@vueuse/metadata": {
1175 | "version": "10.10.0",
1176 | "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.10.0.tgz",
1177 | "integrity": "sha512-UNAo2sTCAW5ge6OErPEHb5z7NEAg3XcO9Cj7OK45aZXfLLH1QkexDcZD77HBi5zvEiLOm1An+p/4b5K3Worpug==",
1178 | "dev": true,
1179 | "funding": {
1180 | "url": "https://github.com/sponsors/antfu"
1181 | }
1182 | },
1183 | "node_modules/@vueuse/shared": {
1184 | "version": "10.10.0",
1185 | "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.10.0.tgz",
1186 | "integrity": "sha512-2aW33Ac0Uk0U+9yo3Ypg9s5KcR42cuehRWl7vnUHadQyFvCktseyxxEPBi1Eiq4D2yBGACOnqLZpx1eMc7g5Og==",
1187 | "dev": true,
1188 | "dependencies": {
1189 | "vue-demi": ">=0.14.7"
1190 | },
1191 | "funding": {
1192 | "url": "https://github.com/sponsors/antfu"
1193 | }
1194 | },
1195 | "node_modules/@vueuse/shared/node_modules/vue-demi": {
1196 | "version": "0.14.7",
1197 | "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
1198 | "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
1199 | "dev": true,
1200 | "hasInstallScript": true,
1201 | "bin": {
1202 | "vue-demi-fix": "bin/vue-demi-fix.js",
1203 | "vue-demi-switch": "bin/vue-demi-switch.js"
1204 | },
1205 | "engines": {
1206 | "node": ">=12"
1207 | },
1208 | "funding": {
1209 | "url": "https://github.com/sponsors/antfu"
1210 | },
1211 | "peerDependencies": {
1212 | "@vue/composition-api": "^1.0.0-rc.1",
1213 | "vue": "^3.0.0-0 || ^2.6.0"
1214 | },
1215 | "peerDependenciesMeta": {
1216 | "@vue/composition-api": {
1217 | "optional": true
1218 | }
1219 | }
1220 | },
1221 | "node_modules/algoliasearch": {
1222 | "version": "4.23.3",
1223 | "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.23.3.tgz",
1224 | "integrity": "sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==",
1225 | "dev": true,
1226 | "dependencies": {
1227 | "@algolia/cache-browser-local-storage": "4.23.3",
1228 | "@algolia/cache-common": "4.23.3",
1229 | "@algolia/cache-in-memory": "4.23.3",
1230 | "@algolia/client-account": "4.23.3",
1231 | "@algolia/client-analytics": "4.23.3",
1232 | "@algolia/client-common": "4.23.3",
1233 | "@algolia/client-personalization": "4.23.3",
1234 | "@algolia/client-search": "4.23.3",
1235 | "@algolia/logger-common": "4.23.3",
1236 | "@algolia/logger-console": "4.23.3",
1237 | "@algolia/recommend": "4.23.3",
1238 | "@algolia/requester-browser-xhr": "4.23.3",
1239 | "@algolia/requester-common": "4.23.3",
1240 | "@algolia/requester-node-http": "4.23.3",
1241 | "@algolia/transporter": "4.23.3"
1242 | }
1243 | },
1244 | "node_modules/csstype": {
1245 | "version": "3.1.3",
1246 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1247 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
1248 | "dev": true
1249 | },
1250 | "node_modules/entities": {
1251 | "version": "4.5.0",
1252 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
1253 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
1254 | "dev": true,
1255 | "engines": {
1256 | "node": ">=0.12"
1257 | },
1258 | "funding": {
1259 | "url": "https://github.com/fb55/entities?sponsor=1"
1260 | }
1261 | },
1262 | "node_modules/esbuild": {
1263 | "version": "0.20.2",
1264 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
1265 | "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
1266 | "dev": true,
1267 | "hasInstallScript": true,
1268 | "bin": {
1269 | "esbuild": "bin/esbuild"
1270 | },
1271 | "engines": {
1272 | "node": ">=12"
1273 | },
1274 | "optionalDependencies": {
1275 | "@esbuild/aix-ppc64": "0.20.2",
1276 | "@esbuild/android-arm": "0.20.2",
1277 | "@esbuild/android-arm64": "0.20.2",
1278 | "@esbuild/android-x64": "0.20.2",
1279 | "@esbuild/darwin-arm64": "0.20.2",
1280 | "@esbuild/darwin-x64": "0.20.2",
1281 | "@esbuild/freebsd-arm64": "0.20.2",
1282 | "@esbuild/freebsd-x64": "0.20.2",
1283 | "@esbuild/linux-arm": "0.20.2",
1284 | "@esbuild/linux-arm64": "0.20.2",
1285 | "@esbuild/linux-ia32": "0.20.2",
1286 | "@esbuild/linux-loong64": "0.20.2",
1287 | "@esbuild/linux-mips64el": "0.20.2",
1288 | "@esbuild/linux-ppc64": "0.20.2",
1289 | "@esbuild/linux-riscv64": "0.20.2",
1290 | "@esbuild/linux-s390x": "0.20.2",
1291 | "@esbuild/linux-x64": "0.20.2",
1292 | "@esbuild/netbsd-x64": "0.20.2",
1293 | "@esbuild/openbsd-x64": "0.20.2",
1294 | "@esbuild/sunos-x64": "0.20.2",
1295 | "@esbuild/win32-arm64": "0.20.2",
1296 | "@esbuild/win32-ia32": "0.20.2",
1297 | "@esbuild/win32-x64": "0.20.2"
1298 | }
1299 | },
1300 | "node_modules/estree-walker": {
1301 | "version": "2.0.2",
1302 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1303 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
1304 | "dev": true
1305 | },
1306 | "node_modules/focus-trap": {
1307 | "version": "7.5.4",
1308 | "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz",
1309 | "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==",
1310 | "dev": true,
1311 | "dependencies": {
1312 | "tabbable": "^6.2.0"
1313 | }
1314 | },
1315 | "node_modules/fsevents": {
1316 | "version": "2.3.3",
1317 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1318 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1319 | "dev": true,
1320 | "hasInstallScript": true,
1321 | "optional": true,
1322 | "os": [
1323 | "darwin"
1324 | ],
1325 | "engines": {
1326 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1327 | }
1328 | },
1329 | "node_modules/hookable": {
1330 | "version": "5.5.3",
1331 | "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
1332 | "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==",
1333 | "dev": true
1334 | },
1335 | "node_modules/magic-string": {
1336 | "version": "0.30.10",
1337 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
1338 | "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
1339 | "dev": true,
1340 | "dependencies": {
1341 | "@jridgewell/sourcemap-codec": "^1.4.15"
1342 | }
1343 | },
1344 | "node_modules/mark.js": {
1345 | "version": "8.11.1",
1346 | "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz",
1347 | "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==",
1348 | "dev": true
1349 | },
1350 | "node_modules/minisearch": {
1351 | "version": "6.3.0",
1352 | "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz",
1353 | "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==",
1354 | "dev": true
1355 | },
1356 | "node_modules/mitt": {
1357 | "version": "3.0.1",
1358 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
1359 | "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
1360 | "dev": true
1361 | },
1362 | "node_modules/nanoid": {
1363 | "version": "3.3.7",
1364 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
1365 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
1366 | "dev": true,
1367 | "funding": [
1368 | {
1369 | "type": "github",
1370 | "url": "https://github.com/sponsors/ai"
1371 | }
1372 | ],
1373 | "bin": {
1374 | "nanoid": "bin/nanoid.cjs"
1375 | },
1376 | "engines": {
1377 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1378 | }
1379 | },
1380 | "node_modules/perfect-debounce": {
1381 | "version": "1.0.0",
1382 | "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
1383 | "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
1384 | "dev": true
1385 | },
1386 | "node_modules/picocolors": {
1387 | "version": "1.0.1",
1388 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
1389 | "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
1390 | "dev": true
1391 | },
1392 | "node_modules/postcss": {
1393 | "version": "8.4.38",
1394 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
1395 | "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
1396 | "dev": true,
1397 | "funding": [
1398 | {
1399 | "type": "opencollective",
1400 | "url": "https://opencollective.com/postcss/"
1401 | },
1402 | {
1403 | "type": "tidelift",
1404 | "url": "https://tidelift.com/funding/github/npm/postcss"
1405 | },
1406 | {
1407 | "type": "github",
1408 | "url": "https://github.com/sponsors/ai"
1409 | }
1410 | ],
1411 | "dependencies": {
1412 | "nanoid": "^3.3.7",
1413 | "picocolors": "^1.0.0",
1414 | "source-map-js": "^1.2.0"
1415 | },
1416 | "engines": {
1417 | "node": "^10 || ^12 || >=14"
1418 | }
1419 | },
1420 | "node_modules/preact": {
1421 | "version": "10.22.0",
1422 | "resolved": "https://registry.npmjs.org/preact/-/preact-10.22.0.tgz",
1423 | "integrity": "sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==",
1424 | "dev": true,
1425 | "funding": {
1426 | "type": "opencollective",
1427 | "url": "https://opencollective.com/preact"
1428 | }
1429 | },
1430 | "node_modules/rfdc": {
1431 | "version": "1.3.1",
1432 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz",
1433 | "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==",
1434 | "dev": true
1435 | },
1436 | "node_modules/rollup": {
1437 | "version": "4.18.0",
1438 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz",
1439 | "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==",
1440 | "dev": true,
1441 | "dependencies": {
1442 | "@types/estree": "1.0.5"
1443 | },
1444 | "bin": {
1445 | "rollup": "dist/bin/rollup"
1446 | },
1447 | "engines": {
1448 | "node": ">=18.0.0",
1449 | "npm": ">=8.0.0"
1450 | },
1451 | "optionalDependencies": {
1452 | "@rollup/rollup-android-arm-eabi": "4.18.0",
1453 | "@rollup/rollup-android-arm64": "4.18.0",
1454 | "@rollup/rollup-darwin-arm64": "4.18.0",
1455 | "@rollup/rollup-darwin-x64": "4.18.0",
1456 | "@rollup/rollup-linux-arm-gnueabihf": "4.18.0",
1457 | "@rollup/rollup-linux-arm-musleabihf": "4.18.0",
1458 | "@rollup/rollup-linux-arm64-gnu": "4.18.0",
1459 | "@rollup/rollup-linux-arm64-musl": "4.18.0",
1460 | "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0",
1461 | "@rollup/rollup-linux-riscv64-gnu": "4.18.0",
1462 | "@rollup/rollup-linux-s390x-gnu": "4.18.0",
1463 | "@rollup/rollup-linux-x64-gnu": "4.18.0",
1464 | "@rollup/rollup-linux-x64-musl": "4.18.0",
1465 | "@rollup/rollup-win32-arm64-msvc": "4.18.0",
1466 | "@rollup/rollup-win32-ia32-msvc": "4.18.0",
1467 | "@rollup/rollup-win32-x64-msvc": "4.18.0",
1468 | "fsevents": "~2.3.2"
1469 | }
1470 | },
1471 | "node_modules/search-insights": {
1472 | "version": "2.14.0",
1473 | "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.14.0.tgz",
1474 | "integrity": "sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==",
1475 | "dev": true,
1476 | "peer": true
1477 | },
1478 | "node_modules/shiki": {
1479 | "version": "1.6.0",
1480 | "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.6.0.tgz",
1481 | "integrity": "sha512-P31ROeXcVgW/k3Z+vUUErcxoTah7ZRaimctOpzGuqAntqnnSmx1HOsvnbAB8Z2qfXPRhw61yptAzCsuKOhTHwQ==",
1482 | "dev": true,
1483 | "dependencies": {
1484 | "@shikijs/core": "1.6.0"
1485 | }
1486 | },
1487 | "node_modules/source-map-js": {
1488 | "version": "1.2.0",
1489 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
1490 | "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
1491 | "dev": true,
1492 | "engines": {
1493 | "node": ">=0.10.0"
1494 | }
1495 | },
1496 | "node_modules/speakingurl": {
1497 | "version": "14.0.1",
1498 | "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz",
1499 | "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==",
1500 | "dev": true,
1501 | "engines": {
1502 | "node": ">=0.10.0"
1503 | }
1504 | },
1505 | "node_modules/tabbable": {
1506 | "version": "6.2.0",
1507 | "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
1508 | "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==",
1509 | "dev": true
1510 | },
1511 | "node_modules/vite": {
1512 | "version": "5.2.11",
1513 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz",
1514 | "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==",
1515 | "dev": true,
1516 | "dependencies": {
1517 | "esbuild": "^0.20.1",
1518 | "postcss": "^8.4.38",
1519 | "rollup": "^4.13.0"
1520 | },
1521 | "bin": {
1522 | "vite": "bin/vite.js"
1523 | },
1524 | "engines": {
1525 | "node": "^18.0.0 || >=20.0.0"
1526 | },
1527 | "funding": {
1528 | "url": "https://github.com/vitejs/vite?sponsor=1"
1529 | },
1530 | "optionalDependencies": {
1531 | "fsevents": "~2.3.3"
1532 | },
1533 | "peerDependencies": {
1534 | "@types/node": "^18.0.0 || >=20.0.0",
1535 | "less": "*",
1536 | "lightningcss": "^1.21.0",
1537 | "sass": "*",
1538 | "stylus": "*",
1539 | "sugarss": "*",
1540 | "terser": "^5.4.0"
1541 | },
1542 | "peerDependenciesMeta": {
1543 | "@types/node": {
1544 | "optional": true
1545 | },
1546 | "less": {
1547 | "optional": true
1548 | },
1549 | "lightningcss": {
1550 | "optional": true
1551 | },
1552 | "sass": {
1553 | "optional": true
1554 | },
1555 | "stylus": {
1556 | "optional": true
1557 | },
1558 | "sugarss": {
1559 | "optional": true
1560 | },
1561 | "terser": {
1562 | "optional": true
1563 | }
1564 | }
1565 | },
1566 | "node_modules/vitepress": {
1567 | "version": "1.2.2",
1568 | "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.2.2.tgz",
1569 | "integrity": "sha512-uZ3nXR5NY4nYj3RJWCo5jev9qlNZAQo5SUXu1U0QSUx84cUm/o7hCTDVjZ4njVSVui+PsV1oAbdQOg8ygbaf4w==",
1570 | "dev": true,
1571 | "dependencies": {
1572 | "@docsearch/css": "^3.6.0",
1573 | "@docsearch/js": "^3.6.0",
1574 | "@shikijs/core": "^1.5.2",
1575 | "@shikijs/transformers": "^1.5.2",
1576 | "@types/markdown-it": "^14.1.1",
1577 | "@vitejs/plugin-vue": "^5.0.4",
1578 | "@vue/devtools-api": "^7.2.0",
1579 | "@vue/shared": "^3.4.27",
1580 | "@vueuse/core": "^10.9.0",
1581 | "@vueuse/integrations": "^10.9.0",
1582 | "focus-trap": "^7.5.4",
1583 | "mark.js": "8.11.1",
1584 | "minisearch": "^6.3.0",
1585 | "shiki": "^1.5.2",
1586 | "vite": "^5.2.11",
1587 | "vue": "^3.4.27"
1588 | },
1589 | "bin": {
1590 | "vitepress": "bin/vitepress.js"
1591 | },
1592 | "peerDependencies": {
1593 | "markdown-it-mathjax3": "^4",
1594 | "postcss": "^8"
1595 | },
1596 | "peerDependenciesMeta": {
1597 | "markdown-it-mathjax3": {
1598 | "optional": true
1599 | },
1600 | "postcss": {
1601 | "optional": true
1602 | }
1603 | }
1604 | },
1605 | "node_modules/vue": {
1606 | "version": "3.4.27",
1607 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz",
1608 | "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==",
1609 | "dev": true,
1610 | "dependencies": {
1611 | "@vue/compiler-dom": "3.4.27",
1612 | "@vue/compiler-sfc": "3.4.27",
1613 | "@vue/runtime-dom": "3.4.27",
1614 | "@vue/server-renderer": "3.4.27",
1615 | "@vue/shared": "3.4.27"
1616 | },
1617 | "peerDependencies": {
1618 | "typescript": "*"
1619 | },
1620 | "peerDependenciesMeta": {
1621 | "typescript": {
1622 | "optional": true
1623 | }
1624 | }
1625 | }
1626 | },
1627 | "dependencies": {
1628 | "@algolia/autocomplete-core": {
1629 | "version": "1.9.3",
1630 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz",
1631 | "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==",
1632 | "dev": true,
1633 | "requires": {
1634 | "@algolia/autocomplete-plugin-algolia-insights": "1.9.3",
1635 | "@algolia/autocomplete-shared": "1.9.3"
1636 | }
1637 | },
1638 | "@algolia/autocomplete-plugin-algolia-insights": {
1639 | "version": "1.9.3",
1640 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz",
1641 | "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==",
1642 | "dev": true,
1643 | "requires": {
1644 | "@algolia/autocomplete-shared": "1.9.3"
1645 | }
1646 | },
1647 | "@algolia/autocomplete-preset-algolia": {
1648 | "version": "1.9.3",
1649 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz",
1650 | "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==",
1651 | "dev": true,
1652 | "requires": {
1653 | "@algolia/autocomplete-shared": "1.9.3"
1654 | }
1655 | },
1656 | "@algolia/autocomplete-shared": {
1657 | "version": "1.9.3",
1658 | "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz",
1659 | "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==",
1660 | "dev": true,
1661 | "requires": {}
1662 | },
1663 | "@algolia/cache-browser-local-storage": {
1664 | "version": "4.23.3",
1665 | "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.3.tgz",
1666 | "integrity": "sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==",
1667 | "dev": true,
1668 | "requires": {
1669 | "@algolia/cache-common": "4.23.3"
1670 | }
1671 | },
1672 | "@algolia/cache-common": {
1673 | "version": "4.23.3",
1674 | "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.23.3.tgz",
1675 | "integrity": "sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==",
1676 | "dev": true
1677 | },
1678 | "@algolia/cache-in-memory": {
1679 | "version": "4.23.3",
1680 | "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.23.3.tgz",
1681 | "integrity": "sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==",
1682 | "dev": true,
1683 | "requires": {
1684 | "@algolia/cache-common": "4.23.3"
1685 | }
1686 | },
1687 | "@algolia/client-account": {
1688 | "version": "4.23.3",
1689 | "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.23.3.tgz",
1690 | "integrity": "sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==",
1691 | "dev": true,
1692 | "requires": {
1693 | "@algolia/client-common": "4.23.3",
1694 | "@algolia/client-search": "4.23.3",
1695 | "@algolia/transporter": "4.23.3"
1696 | }
1697 | },
1698 | "@algolia/client-analytics": {
1699 | "version": "4.23.3",
1700 | "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.23.3.tgz",
1701 | "integrity": "sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==",
1702 | "dev": true,
1703 | "requires": {
1704 | "@algolia/client-common": "4.23.3",
1705 | "@algolia/client-search": "4.23.3",
1706 | "@algolia/requester-common": "4.23.3",
1707 | "@algolia/transporter": "4.23.3"
1708 | }
1709 | },
1710 | "@algolia/client-common": {
1711 | "version": "4.23.3",
1712 | "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.23.3.tgz",
1713 | "integrity": "sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==",
1714 | "dev": true,
1715 | "requires": {
1716 | "@algolia/requester-common": "4.23.3",
1717 | "@algolia/transporter": "4.23.3"
1718 | }
1719 | },
1720 | "@algolia/client-personalization": {
1721 | "version": "4.23.3",
1722 | "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.23.3.tgz",
1723 | "integrity": "sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==",
1724 | "dev": true,
1725 | "requires": {
1726 | "@algolia/client-common": "4.23.3",
1727 | "@algolia/requester-common": "4.23.3",
1728 | "@algolia/transporter": "4.23.3"
1729 | }
1730 | },
1731 | "@algolia/client-search": {
1732 | "version": "4.23.3",
1733 | "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.23.3.tgz",
1734 | "integrity": "sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==",
1735 | "dev": true,
1736 | "requires": {
1737 | "@algolia/client-common": "4.23.3",
1738 | "@algolia/requester-common": "4.23.3",
1739 | "@algolia/transporter": "4.23.3"
1740 | }
1741 | },
1742 | "@algolia/logger-common": {
1743 | "version": "4.23.3",
1744 | "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.23.3.tgz",
1745 | "integrity": "sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==",
1746 | "dev": true
1747 | },
1748 | "@algolia/logger-console": {
1749 | "version": "4.23.3",
1750 | "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.23.3.tgz",
1751 | "integrity": "sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==",
1752 | "dev": true,
1753 | "requires": {
1754 | "@algolia/logger-common": "4.23.3"
1755 | }
1756 | },
1757 | "@algolia/recommend": {
1758 | "version": "4.23.3",
1759 | "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.23.3.tgz",
1760 | "integrity": "sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==",
1761 | "dev": true,
1762 | "requires": {
1763 | "@algolia/cache-browser-local-storage": "4.23.3",
1764 | "@algolia/cache-common": "4.23.3",
1765 | "@algolia/cache-in-memory": "4.23.3",
1766 | "@algolia/client-common": "4.23.3",
1767 | "@algolia/client-search": "4.23.3",
1768 | "@algolia/logger-common": "4.23.3",
1769 | "@algolia/logger-console": "4.23.3",
1770 | "@algolia/requester-browser-xhr": "4.23.3",
1771 | "@algolia/requester-common": "4.23.3",
1772 | "@algolia/requester-node-http": "4.23.3",
1773 | "@algolia/transporter": "4.23.3"
1774 | }
1775 | },
1776 | "@algolia/requester-browser-xhr": {
1777 | "version": "4.23.3",
1778 | "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.3.tgz",
1779 | "integrity": "sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==",
1780 | "dev": true,
1781 | "requires": {
1782 | "@algolia/requester-common": "4.23.3"
1783 | }
1784 | },
1785 | "@algolia/requester-common": {
1786 | "version": "4.23.3",
1787 | "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.23.3.tgz",
1788 | "integrity": "sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==",
1789 | "dev": true
1790 | },
1791 | "@algolia/requester-node-http": {
1792 | "version": "4.23.3",
1793 | "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.23.3.tgz",
1794 | "integrity": "sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==",
1795 | "dev": true,
1796 | "requires": {
1797 | "@algolia/requester-common": "4.23.3"
1798 | }
1799 | },
1800 | "@algolia/transporter": {
1801 | "version": "4.23.3",
1802 | "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.23.3.tgz",
1803 | "integrity": "sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==",
1804 | "dev": true,
1805 | "requires": {
1806 | "@algolia/cache-common": "4.23.3",
1807 | "@algolia/logger-common": "4.23.3",
1808 | "@algolia/requester-common": "4.23.3"
1809 | }
1810 | },
1811 | "@babel/parser": {
1812 | "version": "7.24.6",
1813 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz",
1814 | "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==",
1815 | "dev": true
1816 | },
1817 | "@docsearch/css": {
1818 | "version": "3.6.0",
1819 | "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz",
1820 | "integrity": "sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==",
1821 | "dev": true
1822 | },
1823 | "@docsearch/js": {
1824 | "version": "3.6.0",
1825 | "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.0.tgz",
1826 | "integrity": "sha512-QujhqINEElrkIfKwyyyTfbsfMAYCkylInLYMRqHy7PHc8xTBQCow73tlo/Kc7oIwBrCLf0P3YhjlOeV4v8hevQ==",
1827 | "dev": true,
1828 | "requires": {
1829 | "@docsearch/react": "3.6.0",
1830 | "preact": "^10.0.0"
1831 | }
1832 | },
1833 | "@docsearch/react": {
1834 | "version": "3.6.0",
1835 | "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.0.tgz",
1836 | "integrity": "sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==",
1837 | "dev": true,
1838 | "requires": {
1839 | "@algolia/autocomplete-core": "1.9.3",
1840 | "@algolia/autocomplete-preset-algolia": "1.9.3",
1841 | "@docsearch/css": "3.6.0",
1842 | "algoliasearch": "^4.19.1"
1843 | }
1844 | },
1845 | "@esbuild/aix-ppc64": {
1846 | "version": "0.20.2",
1847 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
1848 | "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
1849 | "dev": true,
1850 | "optional": true
1851 | },
1852 | "@esbuild/android-arm": {
1853 | "version": "0.20.2",
1854 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
1855 | "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
1856 | "dev": true,
1857 | "optional": true
1858 | },
1859 | "@esbuild/android-arm64": {
1860 | "version": "0.20.2",
1861 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
1862 | "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
1863 | "dev": true,
1864 | "optional": true
1865 | },
1866 | "@esbuild/android-x64": {
1867 | "version": "0.20.2",
1868 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
1869 | "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
1870 | "dev": true,
1871 | "optional": true
1872 | },
1873 | "@esbuild/darwin-arm64": {
1874 | "version": "0.20.2",
1875 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
1876 | "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
1877 | "dev": true,
1878 | "optional": true
1879 | },
1880 | "@esbuild/darwin-x64": {
1881 | "version": "0.20.2",
1882 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
1883 | "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
1884 | "dev": true,
1885 | "optional": true
1886 | },
1887 | "@esbuild/freebsd-arm64": {
1888 | "version": "0.20.2",
1889 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
1890 | "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
1891 | "dev": true,
1892 | "optional": true
1893 | },
1894 | "@esbuild/freebsd-x64": {
1895 | "version": "0.20.2",
1896 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
1897 | "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
1898 | "dev": true,
1899 | "optional": true
1900 | },
1901 | "@esbuild/linux-arm": {
1902 | "version": "0.20.2",
1903 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
1904 | "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
1905 | "dev": true,
1906 | "optional": true
1907 | },
1908 | "@esbuild/linux-arm64": {
1909 | "version": "0.20.2",
1910 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
1911 | "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
1912 | "dev": true,
1913 | "optional": true
1914 | },
1915 | "@esbuild/linux-ia32": {
1916 | "version": "0.20.2",
1917 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
1918 | "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
1919 | "dev": true,
1920 | "optional": true
1921 | },
1922 | "@esbuild/linux-loong64": {
1923 | "version": "0.20.2",
1924 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
1925 | "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
1926 | "dev": true,
1927 | "optional": true
1928 | },
1929 | "@esbuild/linux-mips64el": {
1930 | "version": "0.20.2",
1931 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
1932 | "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
1933 | "dev": true,
1934 | "optional": true
1935 | },
1936 | "@esbuild/linux-ppc64": {
1937 | "version": "0.20.2",
1938 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
1939 | "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
1940 | "dev": true,
1941 | "optional": true
1942 | },
1943 | "@esbuild/linux-riscv64": {
1944 | "version": "0.20.2",
1945 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
1946 | "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
1947 | "dev": true,
1948 | "optional": true
1949 | },
1950 | "@esbuild/linux-s390x": {
1951 | "version": "0.20.2",
1952 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
1953 | "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
1954 | "dev": true,
1955 | "optional": true
1956 | },
1957 | "@esbuild/linux-x64": {
1958 | "version": "0.20.2",
1959 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
1960 | "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
1961 | "dev": true,
1962 | "optional": true
1963 | },
1964 | "@esbuild/netbsd-x64": {
1965 | "version": "0.20.2",
1966 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
1967 | "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
1968 | "dev": true,
1969 | "optional": true
1970 | },
1971 | "@esbuild/openbsd-x64": {
1972 | "version": "0.20.2",
1973 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
1974 | "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
1975 | "dev": true,
1976 | "optional": true
1977 | },
1978 | "@esbuild/sunos-x64": {
1979 | "version": "0.20.2",
1980 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
1981 | "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
1982 | "dev": true,
1983 | "optional": true
1984 | },
1985 | "@esbuild/win32-arm64": {
1986 | "version": "0.20.2",
1987 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
1988 | "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
1989 | "dev": true,
1990 | "optional": true
1991 | },
1992 | "@esbuild/win32-ia32": {
1993 | "version": "0.20.2",
1994 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
1995 | "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
1996 | "dev": true,
1997 | "optional": true
1998 | },
1999 | "@esbuild/win32-x64": {
2000 | "version": "0.20.2",
2001 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
2002 | "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
2003 | "dev": true,
2004 | "optional": true
2005 | },
2006 | "@jridgewell/sourcemap-codec": {
2007 | "version": "1.4.15",
2008 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
2009 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
2010 | "dev": true
2011 | },
2012 | "@rollup/rollup-android-arm-eabi": {
2013 | "version": "4.18.0",
2014 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz",
2015 | "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==",
2016 | "dev": true,
2017 | "optional": true
2018 | },
2019 | "@rollup/rollup-android-arm64": {
2020 | "version": "4.18.0",
2021 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz",
2022 | "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==",
2023 | "dev": true,
2024 | "optional": true
2025 | },
2026 | "@rollup/rollup-darwin-arm64": {
2027 | "version": "4.18.0",
2028 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz",
2029 | "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==",
2030 | "dev": true,
2031 | "optional": true
2032 | },
2033 | "@rollup/rollup-darwin-x64": {
2034 | "version": "4.18.0",
2035 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz",
2036 | "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==",
2037 | "dev": true,
2038 | "optional": true
2039 | },
2040 | "@rollup/rollup-linux-arm-gnueabihf": {
2041 | "version": "4.18.0",
2042 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz",
2043 | "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==",
2044 | "dev": true,
2045 | "optional": true
2046 | },
2047 | "@rollup/rollup-linux-arm-musleabihf": {
2048 | "version": "4.18.0",
2049 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz",
2050 | "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==",
2051 | "dev": true,
2052 | "optional": true
2053 | },
2054 | "@rollup/rollup-linux-arm64-gnu": {
2055 | "version": "4.18.0",
2056 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz",
2057 | "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==",
2058 | "dev": true,
2059 | "optional": true
2060 | },
2061 | "@rollup/rollup-linux-arm64-musl": {
2062 | "version": "4.18.0",
2063 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz",
2064 | "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==",
2065 | "dev": true,
2066 | "optional": true
2067 | },
2068 | "@rollup/rollup-linux-powerpc64le-gnu": {
2069 | "version": "4.18.0",
2070 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz",
2071 | "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==",
2072 | "dev": true,
2073 | "optional": true
2074 | },
2075 | "@rollup/rollup-linux-riscv64-gnu": {
2076 | "version": "4.18.0",
2077 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz",
2078 | "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==",
2079 | "dev": true,
2080 | "optional": true
2081 | },
2082 | "@rollup/rollup-linux-s390x-gnu": {
2083 | "version": "4.18.0",
2084 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz",
2085 | "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==",
2086 | "dev": true,
2087 | "optional": true
2088 | },
2089 | "@rollup/rollup-linux-x64-gnu": {
2090 | "version": "4.18.0",
2091 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
2092 | "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
2093 | "dev": true,
2094 | "optional": true
2095 | },
2096 | "@rollup/rollup-linux-x64-musl": {
2097 | "version": "4.18.0",
2098 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz",
2099 | "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==",
2100 | "dev": true,
2101 | "optional": true
2102 | },
2103 | "@rollup/rollup-win32-arm64-msvc": {
2104 | "version": "4.18.0",
2105 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz",
2106 | "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==",
2107 | "dev": true,
2108 | "optional": true
2109 | },
2110 | "@rollup/rollup-win32-ia32-msvc": {
2111 | "version": "4.18.0",
2112 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz",
2113 | "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==",
2114 | "dev": true,
2115 | "optional": true
2116 | },
2117 | "@rollup/rollup-win32-x64-msvc": {
2118 | "version": "4.18.0",
2119 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz",
2120 | "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==",
2121 | "dev": true,
2122 | "optional": true
2123 | },
2124 | "@shikijs/core": {
2125 | "version": "1.6.0",
2126 | "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.6.0.tgz",
2127 | "integrity": "sha512-NIEAi5U5R7BLkbW1pG/ZKu3eb1lzc3/+jD0lFsuxMT7zjaf9bbNwdNyMr7zh/Zl8EXQtQ+MYBAt5G+JLu+5DlA==",
2128 | "dev": true
2129 | },
2130 | "@shikijs/transformers": {
2131 | "version": "1.6.0",
2132 | "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.6.0.tgz",
2133 | "integrity": "sha512-qGfHe1ECiqfE2STPWvfogIj/9Q0SK+MCRJdoITkW7AmFuB7DmbFnBT2US84+zklJOB51MzNO8RUXZiauWssJlQ==",
2134 | "dev": true,
2135 | "requires": {
2136 | "shiki": "1.6.0"
2137 | }
2138 | },
2139 | "@types/estree": {
2140 | "version": "1.0.5",
2141 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
2142 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
2143 | "dev": true
2144 | },
2145 | "@types/linkify-it": {
2146 | "version": "5.0.0",
2147 | "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
2148 | "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
2149 | "dev": true
2150 | },
2151 | "@types/markdown-it": {
2152 | "version": "14.1.1",
2153 | "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.1.tgz",
2154 | "integrity": "sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==",
2155 | "dev": true,
2156 | "requires": {
2157 | "@types/linkify-it": "^5",
2158 | "@types/mdurl": "^2"
2159 | }
2160 | },
2161 | "@types/mdurl": {
2162 | "version": "2.0.0",
2163 | "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
2164 | "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
2165 | "dev": true
2166 | },
2167 | "@types/web-bluetooth": {
2168 | "version": "0.0.20",
2169 | "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz",
2170 | "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==",
2171 | "dev": true
2172 | },
2173 | "@vitejs/plugin-vue": {
2174 | "version": "5.0.4",
2175 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz",
2176 | "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==",
2177 | "dev": true,
2178 | "requires": {}
2179 | },
2180 | "@vue/compiler-core": {
2181 | "version": "3.4.27",
2182 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
2183 | "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
2184 | "dev": true,
2185 | "requires": {
2186 | "@babel/parser": "^7.24.4",
2187 | "@vue/shared": "3.4.27",
2188 | "entities": "^4.5.0",
2189 | "estree-walker": "^2.0.2",
2190 | "source-map-js": "^1.2.0"
2191 | }
2192 | },
2193 | "@vue/compiler-dom": {
2194 | "version": "3.4.27",
2195 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
2196 | "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
2197 | "dev": true,
2198 | "requires": {
2199 | "@vue/compiler-core": "3.4.27",
2200 | "@vue/shared": "3.4.27"
2201 | }
2202 | },
2203 | "@vue/compiler-sfc": {
2204 | "version": "3.4.27",
2205 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
2206 | "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
2207 | "dev": true,
2208 | "requires": {
2209 | "@babel/parser": "^7.24.4",
2210 | "@vue/compiler-core": "3.4.27",
2211 | "@vue/compiler-dom": "3.4.27",
2212 | "@vue/compiler-ssr": "3.4.27",
2213 | "@vue/shared": "3.4.27",
2214 | "estree-walker": "^2.0.2",
2215 | "magic-string": "^0.30.10",
2216 | "postcss": "^8.4.38",
2217 | "source-map-js": "^1.2.0"
2218 | }
2219 | },
2220 | "@vue/compiler-ssr": {
2221 | "version": "3.4.27",
2222 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
2223 | "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
2224 | "dev": true,
2225 | "requires": {
2226 | "@vue/compiler-dom": "3.4.27",
2227 | "@vue/shared": "3.4.27"
2228 | }
2229 | },
2230 | "@vue/devtools-api": {
2231 | "version": "7.2.1",
2232 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.2.1.tgz",
2233 | "integrity": "sha512-6oNCtyFOrNdqm6GUkFujsCgFlpbsHLnZqq7edeM/+cxAbMyCWvsaCsIMUaz7AiluKLccCGEM8fhOsjaKgBvb7g==",
2234 | "dev": true,
2235 | "requires": {
2236 | "@vue/devtools-kit": "^7.2.1"
2237 | }
2238 | },
2239 | "@vue/devtools-kit": {
2240 | "version": "7.2.1",
2241 | "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.2.1.tgz",
2242 | "integrity": "sha512-Wak/fin1X0Q8LLIfCAHBrdaaB+R6IdpSXsDByPHbQ3BmkCP0/cIo/oEGp9i0U2+gEqD4L3V9RDjNf1S34DTzQQ==",
2243 | "dev": true,
2244 | "requires": {
2245 | "@vue/devtools-shared": "^7.2.1",
2246 | "hookable": "^5.5.3",
2247 | "mitt": "^3.0.1",
2248 | "perfect-debounce": "^1.0.0",
2249 | "speakingurl": "^14.0.1"
2250 | }
2251 | },
2252 | "@vue/devtools-shared": {
2253 | "version": "7.2.1",
2254 | "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.2.1.tgz",
2255 | "integrity": "sha512-PCJF4UknJmOal68+X9XHyVeQ+idv0LFujkTOIW30+GaMJqwFVN9LkQKX4gLqn61KkGMdJTzQ1bt7EJag3TI6AA==",
2256 | "dev": true,
2257 | "requires": {
2258 | "rfdc": "^1.3.1"
2259 | }
2260 | },
2261 | "@vue/reactivity": {
2262 | "version": "3.4.27",
2263 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz",
2264 | "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==",
2265 | "dev": true,
2266 | "requires": {
2267 | "@vue/shared": "3.4.27"
2268 | }
2269 | },
2270 | "@vue/runtime-core": {
2271 | "version": "3.4.27",
2272 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz",
2273 | "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==",
2274 | "dev": true,
2275 | "requires": {
2276 | "@vue/reactivity": "3.4.27",
2277 | "@vue/shared": "3.4.27"
2278 | }
2279 | },
2280 | "@vue/runtime-dom": {
2281 | "version": "3.4.27",
2282 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz",
2283 | "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==",
2284 | "dev": true,
2285 | "requires": {
2286 | "@vue/runtime-core": "3.4.27",
2287 | "@vue/shared": "3.4.27",
2288 | "csstype": "^3.1.3"
2289 | }
2290 | },
2291 | "@vue/server-renderer": {
2292 | "version": "3.4.27",
2293 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz",
2294 | "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==",
2295 | "dev": true,
2296 | "requires": {
2297 | "@vue/compiler-ssr": "3.4.27",
2298 | "@vue/shared": "3.4.27"
2299 | }
2300 | },
2301 | "@vue/shared": {
2302 | "version": "3.4.27",
2303 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz",
2304 | "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==",
2305 | "dev": true
2306 | },
2307 | "@vueuse/core": {
2308 | "version": "10.10.0",
2309 | "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.10.0.tgz",
2310 | "integrity": "sha512-vexJ/YXYs2S42B783rI95lMt3GzEwkxzC8Hb0Ndpd8rD+p+Lk/Za4bd797Ym7yq4jXqdSyj3JLChunF/vyYjUw==",
2311 | "dev": true,
2312 | "requires": {
2313 | "@types/web-bluetooth": "^0.0.20",
2314 | "@vueuse/metadata": "10.10.0",
2315 | "@vueuse/shared": "10.10.0",
2316 | "vue-demi": ">=0.14.7"
2317 | },
2318 | "dependencies": {
2319 | "vue-demi": {
2320 | "version": "0.14.7",
2321 | "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
2322 | "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
2323 | "dev": true,
2324 | "requires": {}
2325 | }
2326 | }
2327 | },
2328 | "@vueuse/integrations": {
2329 | "version": "10.10.0",
2330 | "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.10.0.tgz",
2331 | "integrity": "sha512-vHGeK7X6mkdkpcm1eE9t3Cpm21pNVfZRwrjwwbrEs9XftnSgszF4831G2rei8Dt9cIYJIfFV+iyx/29muimJPQ==",
2332 | "dev": true,
2333 | "requires": {
2334 | "@vueuse/core": "10.10.0",
2335 | "@vueuse/shared": "10.10.0",
2336 | "vue-demi": ">=0.14.7"
2337 | },
2338 | "dependencies": {
2339 | "vue-demi": {
2340 | "version": "0.14.7",
2341 | "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
2342 | "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
2343 | "dev": true,
2344 | "requires": {}
2345 | }
2346 | }
2347 | },
2348 | "@vueuse/metadata": {
2349 | "version": "10.10.0",
2350 | "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.10.0.tgz",
2351 | "integrity": "sha512-UNAo2sTCAW5ge6OErPEHb5z7NEAg3XcO9Cj7OK45aZXfLLH1QkexDcZD77HBi5zvEiLOm1An+p/4b5K3Worpug==",
2352 | "dev": true
2353 | },
2354 | "@vueuse/shared": {
2355 | "version": "10.10.0",
2356 | "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.10.0.tgz",
2357 | "integrity": "sha512-2aW33Ac0Uk0U+9yo3Ypg9s5KcR42cuehRWl7vnUHadQyFvCktseyxxEPBi1Eiq4D2yBGACOnqLZpx1eMc7g5Og==",
2358 | "dev": true,
2359 | "requires": {
2360 | "vue-demi": ">=0.14.7"
2361 | },
2362 | "dependencies": {
2363 | "vue-demi": {
2364 | "version": "0.14.7",
2365 | "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
2366 | "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
2367 | "dev": true,
2368 | "requires": {}
2369 | }
2370 | }
2371 | },
2372 | "algoliasearch": {
2373 | "version": "4.23.3",
2374 | "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.23.3.tgz",
2375 | "integrity": "sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==",
2376 | "dev": true,
2377 | "requires": {
2378 | "@algolia/cache-browser-local-storage": "4.23.3",
2379 | "@algolia/cache-common": "4.23.3",
2380 | "@algolia/cache-in-memory": "4.23.3",
2381 | "@algolia/client-account": "4.23.3",
2382 | "@algolia/client-analytics": "4.23.3",
2383 | "@algolia/client-common": "4.23.3",
2384 | "@algolia/client-personalization": "4.23.3",
2385 | "@algolia/client-search": "4.23.3",
2386 | "@algolia/logger-common": "4.23.3",
2387 | "@algolia/logger-console": "4.23.3",
2388 | "@algolia/recommend": "4.23.3",
2389 | "@algolia/requester-browser-xhr": "4.23.3",
2390 | "@algolia/requester-common": "4.23.3",
2391 | "@algolia/requester-node-http": "4.23.3",
2392 | "@algolia/transporter": "4.23.3"
2393 | }
2394 | },
2395 | "csstype": {
2396 | "version": "3.1.3",
2397 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
2398 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
2399 | "dev": true
2400 | },
2401 | "entities": {
2402 | "version": "4.5.0",
2403 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
2404 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
2405 | "dev": true
2406 | },
2407 | "esbuild": {
2408 | "version": "0.20.2",
2409 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
2410 | "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
2411 | "dev": true,
2412 | "requires": {
2413 | "@esbuild/aix-ppc64": "0.20.2",
2414 | "@esbuild/android-arm": "0.20.2",
2415 | "@esbuild/android-arm64": "0.20.2",
2416 | "@esbuild/android-x64": "0.20.2",
2417 | "@esbuild/darwin-arm64": "0.20.2",
2418 | "@esbuild/darwin-x64": "0.20.2",
2419 | "@esbuild/freebsd-arm64": "0.20.2",
2420 | "@esbuild/freebsd-x64": "0.20.2",
2421 | "@esbuild/linux-arm": "0.20.2",
2422 | "@esbuild/linux-arm64": "0.20.2",
2423 | "@esbuild/linux-ia32": "0.20.2",
2424 | "@esbuild/linux-loong64": "0.20.2",
2425 | "@esbuild/linux-mips64el": "0.20.2",
2426 | "@esbuild/linux-ppc64": "0.20.2",
2427 | "@esbuild/linux-riscv64": "0.20.2",
2428 | "@esbuild/linux-s390x": "0.20.2",
2429 | "@esbuild/linux-x64": "0.20.2",
2430 | "@esbuild/netbsd-x64": "0.20.2",
2431 | "@esbuild/openbsd-x64": "0.20.2",
2432 | "@esbuild/sunos-x64": "0.20.2",
2433 | "@esbuild/win32-arm64": "0.20.2",
2434 | "@esbuild/win32-ia32": "0.20.2",
2435 | "@esbuild/win32-x64": "0.20.2"
2436 | }
2437 | },
2438 | "estree-walker": {
2439 | "version": "2.0.2",
2440 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
2441 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
2442 | "dev": true
2443 | },
2444 | "focus-trap": {
2445 | "version": "7.5.4",
2446 | "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz",
2447 | "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==",
2448 | "dev": true,
2449 | "requires": {
2450 | "tabbable": "^6.2.0"
2451 | }
2452 | },
2453 | "fsevents": {
2454 | "version": "2.3.3",
2455 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
2456 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
2457 | "dev": true,
2458 | "optional": true
2459 | },
2460 | "hookable": {
2461 | "version": "5.5.3",
2462 | "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
2463 | "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==",
2464 | "dev": true
2465 | },
2466 | "magic-string": {
2467 | "version": "0.30.10",
2468 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
2469 | "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
2470 | "dev": true,
2471 | "requires": {
2472 | "@jridgewell/sourcemap-codec": "^1.4.15"
2473 | }
2474 | },
2475 | "mark.js": {
2476 | "version": "8.11.1",
2477 | "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz",
2478 | "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==",
2479 | "dev": true
2480 | },
2481 | "minisearch": {
2482 | "version": "6.3.0",
2483 | "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz",
2484 | "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==",
2485 | "dev": true
2486 | },
2487 | "mitt": {
2488 | "version": "3.0.1",
2489 | "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
2490 | "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
2491 | "dev": true
2492 | },
2493 | "nanoid": {
2494 | "version": "3.3.7",
2495 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
2496 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
2497 | "dev": true
2498 | },
2499 | "perfect-debounce": {
2500 | "version": "1.0.0",
2501 | "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
2502 | "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
2503 | "dev": true
2504 | },
2505 | "picocolors": {
2506 | "version": "1.0.1",
2507 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
2508 | "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==",
2509 | "dev": true
2510 | },
2511 | "postcss": {
2512 | "version": "8.4.38",
2513 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
2514 | "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
2515 | "dev": true,
2516 | "requires": {
2517 | "nanoid": "^3.3.7",
2518 | "picocolors": "^1.0.0",
2519 | "source-map-js": "^1.2.0"
2520 | }
2521 | },
2522 | "preact": {
2523 | "version": "10.22.0",
2524 | "resolved": "https://registry.npmjs.org/preact/-/preact-10.22.0.tgz",
2525 | "integrity": "sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==",
2526 | "dev": true
2527 | },
2528 | "rfdc": {
2529 | "version": "1.3.1",
2530 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz",
2531 | "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==",
2532 | "dev": true
2533 | },
2534 | "rollup": {
2535 | "version": "4.18.0",
2536 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz",
2537 | "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==",
2538 | "dev": true,
2539 | "requires": {
2540 | "@rollup/rollup-android-arm-eabi": "4.18.0",
2541 | "@rollup/rollup-android-arm64": "4.18.0",
2542 | "@rollup/rollup-darwin-arm64": "4.18.0",
2543 | "@rollup/rollup-darwin-x64": "4.18.0",
2544 | "@rollup/rollup-linux-arm-gnueabihf": "4.18.0",
2545 | "@rollup/rollup-linux-arm-musleabihf": "4.18.0",
2546 | "@rollup/rollup-linux-arm64-gnu": "4.18.0",
2547 | "@rollup/rollup-linux-arm64-musl": "4.18.0",
2548 | "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0",
2549 | "@rollup/rollup-linux-riscv64-gnu": "4.18.0",
2550 | "@rollup/rollup-linux-s390x-gnu": "4.18.0",
2551 | "@rollup/rollup-linux-x64-gnu": "4.18.0",
2552 | "@rollup/rollup-linux-x64-musl": "4.18.0",
2553 | "@rollup/rollup-win32-arm64-msvc": "4.18.0",
2554 | "@rollup/rollup-win32-ia32-msvc": "4.18.0",
2555 | "@rollup/rollup-win32-x64-msvc": "4.18.0",
2556 | "@types/estree": "1.0.5",
2557 | "fsevents": "~2.3.2"
2558 | }
2559 | },
2560 | "search-insights": {
2561 | "version": "2.14.0",
2562 | "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.14.0.tgz",
2563 | "integrity": "sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==",
2564 | "dev": true,
2565 | "peer": true
2566 | },
2567 | "shiki": {
2568 | "version": "1.6.0",
2569 | "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.6.0.tgz",
2570 | "integrity": "sha512-P31ROeXcVgW/k3Z+vUUErcxoTah7ZRaimctOpzGuqAntqnnSmx1HOsvnbAB8Z2qfXPRhw61yptAzCsuKOhTHwQ==",
2571 | "dev": true,
2572 | "requires": {
2573 | "@shikijs/core": "1.6.0"
2574 | }
2575 | },
2576 | "source-map-js": {
2577 | "version": "1.2.0",
2578 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
2579 | "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
2580 | "dev": true
2581 | },
2582 | "speakingurl": {
2583 | "version": "14.0.1",
2584 | "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz",
2585 | "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==",
2586 | "dev": true
2587 | },
2588 | "tabbable": {
2589 | "version": "6.2.0",
2590 | "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
2591 | "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==",
2592 | "dev": true
2593 | },
2594 | "vite": {
2595 | "version": "5.2.11",
2596 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz",
2597 | "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==",
2598 | "dev": true,
2599 | "requires": {
2600 | "esbuild": "^0.20.1",
2601 | "fsevents": "~2.3.3",
2602 | "postcss": "^8.4.38",
2603 | "rollup": "^4.13.0"
2604 | }
2605 | },
2606 | "vitepress": {
2607 | "version": "1.2.2",
2608 | "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.2.2.tgz",
2609 | "integrity": "sha512-uZ3nXR5NY4nYj3RJWCo5jev9qlNZAQo5SUXu1U0QSUx84cUm/o7hCTDVjZ4njVSVui+PsV1oAbdQOg8ygbaf4w==",
2610 | "dev": true,
2611 | "requires": {
2612 | "@docsearch/css": "^3.6.0",
2613 | "@docsearch/js": "^3.6.0",
2614 | "@shikijs/core": "^1.5.2",
2615 | "@shikijs/transformers": "^1.5.2",
2616 | "@types/markdown-it": "^14.1.1",
2617 | "@vitejs/plugin-vue": "^5.0.4",
2618 | "@vue/devtools-api": "^7.2.0",
2619 | "@vue/shared": "^3.4.27",
2620 | "@vueuse/core": "^10.9.0",
2621 | "@vueuse/integrations": "^10.9.0",
2622 | "focus-trap": "^7.5.4",
2623 | "mark.js": "8.11.1",
2624 | "minisearch": "^6.3.0",
2625 | "shiki": "^1.5.2",
2626 | "vite": "^5.2.11",
2627 | "vue": "^3.4.27"
2628 | }
2629 | },
2630 | "vue": {
2631 | "version": "3.4.27",
2632 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz",
2633 | "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==",
2634 | "dev": true,
2635 | "requires": {
2636 | "@vue/compiler-dom": "3.4.27",
2637 | "@vue/compiler-sfc": "3.4.27",
2638 | "@vue/runtime-dom": "3.4.27",
2639 | "@vue/server-renderer": "3.4.27",
2640 | "@vue/shared": "3.4.27"
2641 | }
2642 | }
2643 | }
2644 | }
2645 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "devDependencies": {
3 | "vitepress": "^1.2.0"
4 | },
5 | "scripts": {
6 | "docs:dev": "vitepress dev docs",
7 | "docs:build": "vitepress build docs",
8 | "docs:preview": "vitepress preview docs"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Bases/BaseHelpers.php:
--------------------------------------------------------------------------------
1 | argument('name');
35 |
36 | //Validate Name Class
37 | if (!$this->validateName($name)) {
38 | $this->notifyError('The name that you want to assign to the Helpers category is invalid, it must contain only letters and start each word with a capital letter without spaces or accents.');
39 |
40 | return;
41 | }
42 |
43 | //Generate Name
44 | $className = $this->studly($name);
45 | $fileName = $this->fileName($className);
46 |
47 | // Ensure the Helpers directory exists
48 | $path = $this->ensureDirectoryExists('Helpers');
49 |
50 | // Generate the content from a stub file
51 | $stub = $this->getStub($className);
52 |
53 | // Set the file path
54 | $filePath = $this->filePath($path, $fileName);
55 |
56 | // Put the generated content into the file
57 | if (!$this->fileExist($filePath) && $this->filePut($filePath, $stub)) {
58 | $this->notifyInfo("Helper class [$filePath] created successfully.");
59 | } else {
60 | $this->notifyError("Failed to create helper class [$filePath]. The class already exists");
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/Commands/CreateHelpersFunctions.php:
--------------------------------------------------------------------------------
1 | ensureDirectoryExists('Helpers');
35 |
36 | // Generate the content from a stub file
37 | $stub = $this->getStubFunction();
38 | $fileName = 'Functions.php';
39 |
40 | // Set the file path
41 | $filePath = $this->filePath($path, $fileName);
42 |
43 | // Put the generated content into the file
44 | if (!$this->fileExist($filePath) && $this->filePut($filePath, $stub)) {
45 | $this->notifyInfo("Helper file [$filePath] created successfully.");
46 | } else {
47 | $this->notifyError("Failed to create helper file [$filePath]. The file already exists.");
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/Commands/GenerateHelpers.php:
--------------------------------------------------------------------------------
1 | ensureDirectoryExists('Helpers');
48 |
49 | // Generate helper files
50 | foreach ($this->files as $file) {
51 | $filePath = $this->filePath($helpersPath, $file);
52 |
53 | if (!$this->fileExist($filePath)) {
54 | // Get the class name from the file path
55 | $className = $this->getClassName($filePath);
56 |
57 | // Get the content from a stub file
58 | $stub = $this->getStub($className);
59 | if ($this->filePut($filePath, $stub)) {
60 | $this->notifyInfo("Helper class [$filePath] created successfully.");
61 | } else {
62 | $this->notifyError("Failed to create helper class [$filePath].");
63 | }
64 | } else {
65 | $this->notifyError("Failed to create helper class [$filePath]. The class already exists");
66 | }
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/Commands/Traits/CommandUtilities.php:
--------------------------------------------------------------------------------
1 | components !== null;
30 | }
31 |
32 | /**
33 | * Display an error message using the 'components' property if available, otherwise use the default 'error' method.
34 | *
35 | * @param string $message
36 | *
37 | * @return void
38 | */
39 | private function notifyError($message)
40 | {
41 | if ($this->validateComponents()) {
42 | $this->components->error($message);
43 | } else {
44 | $this->error($message);
45 | }
46 | }
47 |
48 | /**
49 | * Display an info message using the 'components' property if available, otherwise use the default 'info' method.
50 | *
51 | * @param string $message
52 | *
53 | * @return void
54 | */
55 | private function notifyInfo($message)
56 | {
57 | if ($this->validateComponents()) {
58 | $this->components->info($message);
59 | } else {
60 | $this->info($message);
61 | }
62 | }
63 |
64 | /**
65 | * Convert a string to studly case.
66 | *
67 | * @param string $name
68 | *
69 | * @return string
70 | */
71 | private function studly($name)
72 | {
73 | return Str::studly($name);
74 | }
75 |
76 | /**
77 | * Generate the file name by adding '.php' extension to the given name.
78 | *
79 | * @param string $name
80 | *
81 | * @return string
82 | */
83 | private function fileName($name)
84 | {
85 | return $name.'.php';
86 | }
87 |
88 | /**
89 | * Ensure the existence of the 'Helpers' directory and return its path.
90 | *
91 | * @return string
92 | */
93 | private function ensureDirectoryExists($directory)
94 | {
95 | $path = app_path($directory);
96 | File::ensureDirectoryExists($path);
97 |
98 | return $path;
99 | }
100 |
101 | /**
102 | * Get the full file path by combining the directory path and the file name.
103 | *
104 | * @param string $path
105 | * @param string $fileName
106 | *
107 | * @return string
108 | */
109 | private function filePath($path, $fileName)
110 | {
111 | return $path.'/'.$fileName;
112 | }
113 |
114 | /**
115 | * Check if the file exists.
116 | *
117 | * @param string $filePath
118 | *
119 | * @return bool
120 | */
121 | private function fileExist($filePath)
122 | {
123 | return File::exists($filePath);
124 | }
125 |
126 | /**
127 | * Put the generated content into the file.
128 | *
129 | * @param string $filePath
130 | * @param string $stub
131 | *
132 | * @return bool
133 | */
134 | private function filePut($filePath, $stub)
135 | {
136 | return File::put($filePath, $stub);
137 | }
138 |
139 | /**
140 | * Get the content of a file.
141 | *
142 | * @param string $path
143 | *
144 | * @return string
145 | */
146 | private function fileGet($path)
147 | {
148 | return File::get($path);
149 | }
150 |
151 | /**
152 | * Replace a search string with a replace string in the target string.
153 | *
154 | * @param string $search
155 | * @param string $replace
156 | * @param string $target
157 | *
158 | * @return string
159 | */
160 | private function replaceString($search, $replace, $target)
161 | {
162 | return str_replace($search, $replace, $target);
163 | }
164 |
165 | /**
166 | * Generate the content from the stub file.
167 | *
168 | * @param string $className
169 | *
170 | * @return string
171 | */
172 | private function getStub($className)
173 | {
174 | $stubs = [
175 | 'Arr' => '/../../Stubs/Arr.stub',
176 | 'Date' => '/../../Stubs/Date.stub',
177 | 'File' => '/../../Stubs/File.stub',
178 | 'Number' => '/../../Stubs/Number.stub',
179 | 'Str' => '/../../Stubs/Str.stub',
180 | ];
181 |
182 | if (isset($stubs[$className])) {
183 | return $this->fileGet(__DIR__.$stubs[$className]);
184 | } else {
185 | return $this->replaceString('{{class}}', $className, $this->fileGet(__DIR__.'/../../Stubs/Custom.stub'));
186 | }
187 | }
188 |
189 | /**
190 | * Generate the content from the stub file.
191 | *
192 | * @return string
193 | */
194 | private function getStubFunction()
195 | {
196 | return $this->fileGet(__DIR__.'/../../Stubs/Functions.stub');
197 | }
198 |
199 | /**
200 | * Get the class name from the file path.
201 | *
202 | * @param string $filePath
203 | *
204 | * @return string
205 | */
206 | private function getClassName($filePath)
207 | {
208 | return pathinfo($filePath, PATHINFO_FILENAME);
209 | }
210 | }
211 |
--------------------------------------------------------------------------------
/src/Helpers.php:
--------------------------------------------------------------------------------
1 | registerCommands();
17 | }
18 |
19 | /**
20 | * Register the commands provided by the service provider.
21 | *
22 | * @return void
23 | */
24 | protected function registerCommands()
25 | {
26 | $this->commands([
27 | \Helpers\Illuminate\Support\Commands\GenerateHelpers::class,
28 | \Helpers\Illuminate\Support\Commands\CreateHelpers::class,
29 | \Helpers\Illuminate\Support\Commands\CreateHelpersFunctions::class,
30 | ]);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/Stubs/Arr.stub:
--------------------------------------------------------------------------------
1 | parseCallback(string $callback, ?string $default = null) Parse a Class[@]method style callback into class and method.
52 | * @method static string plural(string $value, int|array|\Countable $count = 2) Get the plural form of an English word.
53 | * @method static string pluralStudly(string $value, int|array|\Countable $count = 2) Pluralize the last word of an English, studly caps case string.
54 | * @method static string password(int $length = 32, bool $letters = true, bool $numbers = true, bool $symbols = true, bool $spaces = false) Generate a random, secure password.
55 | * @method static int|false position(string $haystack, string $needle, int $offset = 0, ?string $encoding = null) Find the multi-byte safe position of the first occurrence of a given substring in a string.
56 | * @method static string random(int $length = 16) Generate a more truly "random" alpha-numeric string.
57 | * @method static void createRandomStringsUsing(?callable $factory = null) Set the callable that will be used to generate random strings.
58 | * @method static void createRandomStringsUsingSequence(array $sequence, $whenMissing = null) Set the sequence that will be used to generate random strings.
59 | * @method static void createRandomStringsNormally() Indicate that random strings should be created normally and not using a custom factory.
60 | * @method static string repeat(string $string, int $times) Repeat the given string.
61 | * @method static string replaceArray(string $search, iterable $replace, string $subject) Replace a given value in the string sequentially with an array.
62 | * @method static string toStringOr(mixed $value, string $fallback) Convert the given value to a string or return the given fallback on failure.
63 | * @method static string|string[] replace(string|iterable $search, string|iterable $replace, string|iterable $subject, bool $caseSensitive = true) Replace the given value in the given string.
64 | * @method static string replaceFirst(string $search, string $replace, string $subject) Replace the first occurrence of a given value in the string.
65 | * @method static string replaceStart(string $search, string $replace, string $subject) Replace the first occurrence of the given value if it appears at the start of the string.
66 | * @method static string replaceLast(string $search, string $replace, string $subject) Replace the last occurrence of a given value in the string.
67 | * @method static string replaceEnd(string $search, string $replace, string $subject) Replace the last occurrence of a given value if it appears at the end of the string.
68 | * @method static string|string[]|null replaceMatches(array|string $pattern, \Closure|string[]|string $replace, array|string $subject, int $limit = -1) Replace the patterns matching the given regular expression.
69 | * @method static string remove(string|iterable $search, string|iterable $subject, bool $caseSensitive = true) Remove any occurrence of the given string in the subject.
70 | * @method static string reverse(string $value) Reverse the given string.
71 | * @method static string start(string $value, string $prefix) Begin a string with a single instance of a given value.
72 | * @method static string upper(string $value) Convert the given string to upper-case.
73 | * @method static string title(string $value) Convert the given string to proper case.
74 | * @method static string headline(string $value) Convert the given string to proper case for each word.
75 | * @method static string apa(string $value) Convert the given string to APA-style title case.
76 | * @method static string singular(string $value) Get the singular form of an English word.
77 | * @method static string slug(string $title, string $separator = '-', ?string $language = 'en', array $dictionary = ['@' => 'at']) Generate a URL friendly "slug" from a given string.
78 | * @method static string snake(string $value, string $delimiter = '_') Convert a string to snake case.
79 | * @method static string trim(string $value, ?string $charlist = null) Remove all whitespace from both ends of a string.
80 | * @method static string ltrim(string $value, ?string $charlist = null) Remove all whitespace from the beginning of a string.
81 | * @method static string rtrim(string $value, ?string $charlist = null) Remove all whitespace from the end of a string.
82 | * @method static string squish(string $value) Remove all "extra" blank space from the given string.
83 | * @method static bool startsWith(string $haystack, string|iterable $needles) Determine if a given string starts with a given substring.
84 | * @method static string studly(string $value) Convert a value to studly caps case.
85 | * @method static string substr(string $string, int $start, ?int $length = null, string $encoding = 'UTF-8') Returns the portion of the string specified by the start and length parameters.
86 | * @method static int substrCount(string $haystack, string $needle, int $offset = 0, ?int $length = null) Returns the number of substring occurrences.
87 | * @method static string|string[] substrReplace(string|string[] $string, string|string[] $replace, int|int[] $offset = 0, ?int|int[] $length = null) Replace text within a portion of a string.
88 | * @method static string swap(array $map, string $subject) Swap multiple keywords in a string with other keywords.
89 | * @method static string take(string $string, int $limit) Take the first or last {$limit} characters of a string.
90 | * @method static string toBase64(string $string) Convert the given string to Base64 encoding.
91 | * @method static string|false fromBase64(string $string, bool $strict = false) Decode the given Base64 encoded string.
92 | * @method static string lcfirst(string $string) Make a string's first character lowercase.
93 | * @method static string ucfirst(string $string) Make a string's first character uppercase.
94 | * @method static string[] ucsplit(string $string) Split a string into pieces by uppercase characters.
95 | * @method static int wordCount(string $string, ?string $characters = null) Get the number of words a string contains.
96 | * @method static \Ramsey\Uuid\UuidInterface uuid() Generate a UUID (version 4).
97 | * @method static \Ramsey\Uuid\UuidInterface orderedUuid() Generate a time-ordered UUID.
98 | * @method static void createUuidsUsing(?callable $factory = null) Set the callable that will be used to generate UUIDs.
99 | * @method static void createUuidsUsingSequence(array $sequence, $whenMissing = null) Set the sequence that will be used to generate UUIDs.
100 | * @method static \Ramsey\Uuid\UuidInterface freezeUuids(?Closure $callback = null) Always return the same UUID when generating new UUIDs.
101 | * @method static void createUuidsNormally() Indicate that UUIDs should be created normally and not using a custom factory.
102 | * @method static \Symfony\Component\Uid\Ulid ulid(\DateTimeInterface|null $time = null) Generate a ULID.
103 | * @method static void createUlidsNormally() Indicate that ULIDs should be created normally and not using a custom factory.
104 | * @method static void createUlidsUsing(?callable $factory = null) Set the callable that will be used to generate ULIDs.
105 | * @method static void createUlidsUsingSequence(array $sequence, $whenMissing = null) Set the sequence that will be used to generate ULIDs.
106 | * @method static Ulid freezeUlids(?Closure $callback = null) Always return the same ULID when generating new ULIDs.
107 | * @method static void flushCache() Remove all strings from the casing caches.
108 | */
109 |
110 | class Str extends BaseHelpers
111 | {
112 | use LaravelStrings;
113 |
114 | /**
115 | * Check for possible alphanumeric characters.
116 | *
117 | * @param string $string The string to check.
118 | *
119 | * @return bool True if the string is alphanumeric, false otherwise.
120 | */
121 | public static function isAlphanumeric(string $string)
122 | {
123 | return ctype_alnum($string);
124 | }
125 |
126 | /**
127 | * Check for possible alphabetic characters.
128 | *
129 | * @param string $string The string to check.
130 | *
131 | * @return bool True if the string is alphabetic, false otherwise.
132 | */
133 | public static function isAlpha(string $string)
134 | {
135 | return ctype_alpha($string);
136 | }
137 |
138 | /**
139 | * Check for possible control characters.
140 | *
141 | * @param string $string The string to check.
142 | *
143 | * @return bool True if the string contains control characters, false otherwise.
144 | */
145 | public static function isControl(string $string)
146 | {
147 | return ctype_cntrl($string);
148 | }
149 |
150 | /**
151 | * Check for possible numeric characters.
152 | *
153 | * @param string $string The string to check.
154 | *
155 | * @return bool True if the string contains numeric characters, false otherwise.
156 | */
157 | public static function isDigit(string $string)
158 | {
159 | return ctype_digit($string);
160 | }
161 |
162 | /**
163 | * Check for possible printable characters, excluding spaces.
164 | *
165 | * @param string $string The string to check.
166 | *
167 | * @return bool True if the string contains printable characters excluding spaces, false otherwise.
168 | */
169 | public static function isGraph(string $string)
170 | {
171 | return ctype_graph($string);
172 | }
173 |
174 | /**
175 | * Check for possible lowercase characters.
176 | *
177 | * @param string $string The string to check.
178 | *
179 | * @return bool True if the string contains lowercase characters, false otherwise.
180 | */
181 | public static function isLower(string $string)
182 | {
183 | return ctype_lower($string);
184 | }
185 |
186 | /**
187 | * Check for possible printable characters.
188 | *
189 | * @param string $string The string to check.
190 | *
191 | * @return bool True if the string contains printable characters, false otherwise.
192 | */
193 | public static function isPrint(string $string)
194 | {
195 | return ctype_print($string);
196 | }
197 |
198 | /**
199 | * Check for possible printable characters that are neither spaces nor alphanumeric.
200 | *
201 | * @param string $string The string to check.
202 | *
203 | * @return bool True if the string contains printable characters that are neither spaces nor alphanumeric, false otherwise.
204 | */
205 | public static function isPunct(string $string)
206 | {
207 | return ctype_punct($string);
208 | }
209 |
210 | /**
211 | * Check for possible whitespace characters.
212 | *
213 | * @param string $string The string to check.
214 | *
215 | * @return bool True if the string contains whitespace characters, false otherwise.
216 | */
217 | public static function isSpace(string $string)
218 | {
219 | return ctype_space($string);
220 | }
221 |
222 | /**
223 | * Check for possible uppercase characters.
224 | *
225 | * @param string $string The string to check.
226 | *
227 | * @return bool True if the string contains uppercase characters, false otherwise.
228 | */
229 | public static function isUpper(string $string)
230 | {
231 | return ctype_upper($string);
232 | }
233 |
234 | /**
235 | * Check for possible hexadecimal characters.
236 | *
237 | * @param string $string The string to check.
238 | *
239 | * @return bool True if the string contains hexadecimal characters, false otherwise.
240 | */
241 | public static function isHex(string $string)
242 | {
243 | return ctype_xdigit($string);
244 | }
245 | }
246 |
--------------------------------------------------------------------------------