├── .github
└── workflows
│ └── nextjs.yml
├── .gitignore
├── .idea
├── .gitignore
├── bionicpython.iml
├── misc.xml
├── modules.xml
└── vcs.xml
├── .idx
└── dev.nix
├── .vscode
└── settings.json
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── bionicpython
├── bionicpython.py
└── converter.py
├── cli
├── .coveragerc
├── .gitignore
├── .readthedocs.yml
├── AUTHORS.rst
├── CHANGELOG.rst
├── CONTRIBUTING.rst
├── LICENSE.txt
├── README.rst
├── docs
│ ├── Makefile
│ ├── _static
│ │ └── .gitignore
│ ├── authors.rst
│ ├── changelog.rst
│ ├── conf.py
│ ├── contributing.rst
│ ├── index.rst
│ ├── license.rst
│ ├── readme.rst
│ └── requirements.txt
├── pyproject.toml
├── setup.cfg
├── setup.py
├── src
│ └── cli
│ │ ├── __init__.py
│ │ ├── converter.py
│ │ └── skeleton.py
├── tests
│ ├── conftest.py
│ └── test_skeleton.py
└── tox.ini
├── eslint.config.mjs
├── image
└── README
│ ├── 1700793569388.png
│ └── 1700793580179.png
├── jsconfig.json
├── next.config.ts
├── package.json
├── pnpm-lock.yaml
├── postcss.config.mjs
├── public
├── file.svg
├── globe.svg
├── next.svg
├── vercel.svg
└── window.svg
├── requirements.txt
├── setup.ps1
├── setup.py
├── setup.sh
├── src
└── app
│ ├── favicon.ico
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx
├── tailwind.config.ts
└── tsconfig.json
/.github/workflows/nextjs.yml:
--------------------------------------------------------------------------------
1 | # Sample workflow for building and deploying a Next.js site to GitHub Pages
2 | #
3 | # To get started with Next.js see: https://nextjs.org/docs/getting-started
4 | # Testing
5 | name: Deploy Next.js site to Pages
6 |
7 | on:
8 | # Runs on pushes targeting the default branch
9 | push:
10 | branches: ["next"]
11 |
12 | # Allows you to run this workflow manually from the Actions tab
13 | workflow_dispatch:
14 |
15 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
16 | permissions:
17 | contents: read
18 | pages: write
19 | id-token: write
20 |
21 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
22 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
23 | concurrency:
24 | group: "pages"
25 | cancel-in-progress: false
26 |
27 | jobs:
28 | # Build job
29 | build:
30 | runs-on: ubuntu-latest
31 | steps:
32 | - name: Checkout
33 | uses: actions/checkout@v4
34 | - name: Detect package manager
35 | id: detect-package-manager
36 | run: |
37 | if [ -f "${{ github.workspace }}/yarn.lock" ]; then
38 | echo "manager=yarn" >> $GITHUB_OUTPUT
39 | echo "command=install" >> $GITHUB_OUTPUT
40 | echo "runner=yarn" >> $GITHUB_OUTPUT
41 | exit 0
42 | elif [ -f "${{ github.workspace }}/package-lock.json" ]; then
43 | echo "manager=npm" >> $GITHUB_OUTPUT
44 | echo "command=ci" >> $GITHUB_OUTPUT
45 | echo "runner=npx --no-install" >> $GITHUB_OUTPUT
46 | exit 0
47 | elif [ -f "${{ github.workspace }}/pnpm-lock.yaml" ]; then
48 | echo "manager=pnpm" >> $GITHUB_OUTPUT
49 | echo "command=install" >> $GITHUB_OUTPUT
50 | echo "runner=pnpm" >> $GITHUB_OUTPUT
51 | exit 0
52 | else
53 | echo "Unable to determine package manager"
54 | exit 1
55 | fi
56 | - name: Install pnpm
57 | uses: pnpm/action-setup@v3
58 | with:
59 | version: 8
60 | - name: Setup Node
61 | uses: actions/setup-node@v4
62 | with:
63 | node-version: "20"
64 | cache: "pnpm"
65 | - name: Setup Pages
66 | uses: actions/configure-pages@v5
67 | with:
68 | # Automatically inject basePath in your Next.js configuration file and disable
69 | # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
70 | #
71 | # You may remove this line if you want to manage the configuration yourself.
72 | static_site_generator: next
73 | - name: Restore cache
74 | uses: actions/cache@v4
75 | with:
76 | path: |
77 | .next/cache
78 | # Generate a new cache whenever packages or source files change.
79 | key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
80 | # If source files changed but packages didn't, rebuild from a prior cache.
81 | restore-keys: |
82 | ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-
83 | - name: Install dependencies
84 | run: ${{ steps.detect-package-manager.outputs.runner }} ${{ steps.detect-package-manager.outputs.command }}
85 | - name: Build with Next.js
86 | run: ${{ steps.detect-package-manager.outputs.runner }} build
87 | - name: Upload artifact
88 | uses: actions/upload-pages-artifact@v3
89 | with:
90 | path: ./out
91 |
92 | # Deployment job
93 | deploy:
94 | environment:
95 | name: github-pages
96 | url: ${{ steps.deployment.outputs.page_url }}
97 | runs-on: ubuntu-latest
98 | needs: build
99 | steps:
100 | - name: Deploy to GitHub Pages
101 | id: deployment
102 | uses: actions/deploy-pages@v4
103 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | target/
2 |
3 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
4 |
5 | # dependencies
6 | /node_modules
7 | /.pnp
8 | .pnp.*
9 | .yarn/*
10 | !.yarn/patches
11 | !.yarn/plugins
12 | !.yarn/releases
13 | !.yarn/versions
14 |
15 | # testing
16 | /coverage
17 |
18 | # next.js
19 | /.next/
20 | /out/
21 |
22 | # production
23 | /build
24 |
25 | # misc
26 | .DS_Store
27 | *.pem
28 |
29 | # debug
30 | npm-debug.log*
31 | yarn-debug.log*
32 | yarn-error.log*
33 | .pnpm-debug.log*
34 |
35 | # env files (can opt-in for committing if needed)
36 | .env*
37 |
38 | # vercel
39 | .vercel
40 |
41 | # typescript
42 | *.tsbuildinfo
43 | next-env.d.ts
44 | flow/
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 | # GitHub Copilot persisted chat sessions
10 | /copilot/chatSessions
11 |
--------------------------------------------------------------------------------
/.idea/bionicpython.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idx/dev.nix:
--------------------------------------------------------------------------------
1 | # To learn more about how to use Nix to configure your environment
2 | # see: https://developers.google.com/idx/guides/customize-idx-env
3 | { pkgs, ... }: {
4 | # Which nixpkgs channel to use.
5 | channel = "stable-23.11"; # or "unstable"
6 |
7 | # Use https://search.nixos.org/packages to find packages
8 | packages = [
9 | # pkgs.go
10 | # pkgs.python311
11 | # pkgs.python311Packages.pip
12 | # pkgs.nodejs_20
13 | # pkgs.nodePackages.nodemon
14 | pkgs.nodePackages.firebase-tools
15 | pkgs.jdk17
16 | pkgs.unzip
17 | pkgs.cargo
18 | # pkgs.rustc
19 | pkgs.clang
20 | pkgs.rustup
21 |
22 | ];
23 |
24 | # Sets environment variables in the workspace
25 | env = {};
26 | idx = {
27 | # Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
28 | extensions = [
29 | # "vscodevim.vim"
30 |
31 | "Dart-Code.flutter"
32 | "Dart-Code.dart-code"
33 |
34 | ];
35 |
36 | # Enable previews
37 | # previews = {
38 | # enable = true;
39 | # previews = {
40 | # # web = {
41 | # # # Example: run "npm run dev" with PORT set to IDX's defined port for previews,
42 | # # # and show it in IDX's web preview panel
43 | # # command = ["npm" "run" "dev"];
44 | # # manager = "web";
45 | # # env = {
46 | # # # Environment variables to set for your server
47 | # # PORT = "$PORT";
48 | # # };
49 | # # };
50 | # };
51 | # };
52 |
53 |
54 |
55 |
56 |
57 | workspace = {
58 |
59 |
60 | # Runs when a workspace is first created with this `dev.nix` file
61 | onCreate = {
62 | build-flutter = ''
63 | cd /home/user/myapp/android
64 |
65 | ./gradlew \
66 | --parallel \
67 | -Pverbose=true \
68 | -Ptarget-platform=android-x86 \
69 | -Ptarget=/home/user/myapp/lib/main.dart \
70 | -Pbase-application-name=android.app.Application \
71 | -Pdart-defines=RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC85NzU1MDkwN2I3MGY0ZjNiMzI4YjZjMTYwMGRmMjFmYWMxYTE4ODlhLw== \
72 | -Pdart-obfuscation=false \
73 | -Ptrack-widget-creation=true \
74 | -Ptree-shake-icons=false \
75 | -Pfilesystem-scheme=org-dartlang-root \
76 | assembleDebug
77 |
78 | # TODO: Execute web build in debug mode.
79 | # flutter run does this transparently either way
80 | # https://github.com/flutter/flutter/issues/96283#issuecomment-1144750411
81 | # flutter build web --profile --dart-define=Dart2jsOptimization=O0
82 |
83 | adb -s localhost:5555 wait-for-device
84 | '';
85 | };
86 |
87 | };
88 |
89 | # Enable previews and customize configuration
90 | previews = {
91 | enable = true;
92 | previews = {
93 | web = {
94 | command = ["flutter" "run" "--machine" "-d" "web-server" "--web-hostname" "0.0.0.0" "--web-port" "$PORT"];
95 | manager = "flutter";
96 | };
97 | android = {
98 | command = ["flutter" "run" "--machine" "-d" "android" "-d" "localhost:5555"];
99 | manager = "flutter";
100 | };
101 | };
102 | };
103 |
104 |
105 |
106 |
107 | # Workspace lifecycle hooks
108 | # workspace = {
109 | # # Runs when a workspace is first created
110 | # onCreate = {
111 | # # Example: install JS dependencies from NPM
112 | # # npm-install = "npm install";
113 | # };
114 | # # Runs when the workspace is (re)started
115 | # onStart = {
116 | # # Example: start a background task to watch and re-build backend code
117 | # # watch-backend = "npm run watch-backend";
118 | # };
119 | # };
120 | };
121 | }
122 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "IDX.aI.enableInlineCompletion": true,
3 | "IDX.aI.enableCodebaseIndexing": true
4 | }
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contribution
2 |
3 | please feel free to open a PR!
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 nathfavour
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.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # BionicPython 🚀✨
2 |
3 | Transform your PDFs and DOCX files into an eye-catching, easy-to-read **Bionic Reading** format in no time! 💥
4 |
5 | ## Why BionicPython? 🤔
6 | - Boost reading speed and comprehension.
7 | - Enjoy a visually stimulating reading experience.
8 | - Simplify conversion with a single command.
9 |
10 | ## Before & After 📸
11 | ### Normal Format
12 | 
13 | ### Bionic Format
14 | 
15 |
16 | ## Quick Start 🚦
17 | 1. **Clone this repository**
18 | `git clone https://github.com/username/bionicpython.git`
19 | 2. **Install requirements**
20 | ```bash
21 | pip install -r requirements.txt
22 | ```
23 | 3. **Convert your PDF/DOCX**
24 | ```bash
25 | python bionicpython/bionicpython.py
26 | ```
27 | 4. **Enjoy your new bionified file**
28 | A new DOCX is created in the same directory (convert to PDF if you want).
29 |
30 | > **Note**: If you're on macOS or Linux, try `setup.sh`. On Windows, run `setup.ps1`. Both aim to simplify setup.
31 |
32 | ## Roadmap 🛣️
33 | - [X] Provide usage guide
34 | - [X] Create a pip package
35 | - [ ] Add other ebook formats like EPUB
36 | - [X] Optimize performance
37 | - [X] Build a GUI (we’re on it!)
38 |
39 | ## Keeping You Posted 📰
40 | We're actively improving and appreciate your suggestions and contributions.
41 | Feel free to open an **issue** or **pull request** anytime!
42 |
43 | 
--------------------------------------------------------------------------------
/bionicpython/bionicpython.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import math
3 | from docx import Document
4 | import os
5 | import argparse
6 | import math
7 | from docx import Document
8 | import os
9 | import spacy
10 | import subprocess
11 | import sys
12 | import re
13 |
14 |
15 |
16 |
17 | def process_word(word, ratio):
18 | # Calculate the number of characters to make bold
19 | num_chars = math.ceil(len(word) * ratio)
20 |
21 | # Split the word into the part that should be bold and the part that shouldn't
22 | bold_part = word[:num_chars]
23 | normal_part = word[num_chars:]
24 |
25 | # Create runs for the bold part and the normal part
26 | bold_run = (bold_part, True)
27 | normal_run = (normal_part, False)
28 |
29 | # Return the runs as a list
30 | return [bold_run, normal_run]
31 |
32 |
33 |
34 |
35 | def process_document(doc_path, ratio):
36 | output_path = os.path.splitext(doc_path)[0] + '_modified.docx'
37 |
38 | # Check if the file path is for a .docx file
39 | if doc_path.endswith('.docx'):
40 | print("Already in docx format")
41 | elif doc_path.endswith('.pdf'):
42 | docx_path = doc_path.replace('.pdf', '.docx')
43 | try:
44 | # Run the conversion script as a subprocess
45 | subprocess.run([sys.executable, 'converter.py', '--pdf', doc_path, '--docx', docx_path])
46 |
47 | # Modify this command to run in the absolute path (with relation to this script) to converter.py
48 | subprocess.run([sys.executable, 'converter.py', '--pdf', doc_path, '--docx', docx_path])
49 |
50 | # Replace '.pdf' with '.docx' in the file path
51 | doc_path = docx_path
52 | except subprocess.CalledProcessError as e:
53 | print("Error converting PDF:", e)
54 | sys.exit(1)
55 | else:
56 | print("Files of this format are not supported yet")
57 | print("Please use either .pdf or .docx files")
58 | sys.exit()
59 |
60 | # Load the spacy model for word recognition (wrap in try-except)
61 | try:
62 | nlp = spacy.load('en_core_web_sm')
63 | except OSError as e:
64 | print("Error loading spaCy model:", e)
65 | sys.exit(1)
66 |
67 | try:
68 | # Open the .docx file
69 | word_doc = Document(doc_path)
70 |
71 | for paragraph in word_doc.paragraphs:
72 | for run in paragraph.runs:
73 | # Skip if the run is already bold
74 | if run.bold:
75 | continue
76 |
77 | # Split the run text into words
78 | words = run.text.split(' ')
79 | words = [' ' + word if i != 0 else word for i, word in enumerate(words)]
80 |
81 | # Process each word
82 | new_runs = []
83 | for word in words:
84 | # Use spacy to recognize the words
85 | doc = nlp(word)
86 | for token in doc:
87 | # Bolden a ratio of the characters in the word
88 | runs = process_word(token.text, ratio)
89 | new_runs.extend(runs)
90 |
91 | # Clear the original run
92 | run.text = ''
93 |
94 | # Add new runs with the appropriate formatting
95 | for text, is_bold in new_runs:
96 | new_run = paragraph.add_run(text)
97 | new_run.bold = is_bold
98 |
99 | # Save the document (wrap in try-except)
100 | try:
101 | word_doc.save(output_path)
102 | except PermissionError as e:
103 | print("Error saving document:", e)
104 | sys.exit(1)
105 |
106 | except Exception as e: # Catch any other unexpected errors
107 | print("Unexpected error processing document:", e)
108 | sys.exit(1)
109 |
110 | # Get the directory and filename from the input path
111 | dir_name, file_name = os.path.split(doc_path)
112 |
113 | # Prepend 'processed_' to the filename
114 | new_file_name = 'processed_' + file_name
115 |
116 | # Combine the directory and new filename to get the output path
117 | # output_path = os.path.splitext(doc_path)[0] + '_modified.docx'
118 | print(output_path)
119 |
120 |
121 | def main():
122 | parser = argparse.ArgumentParser()
123 | parser.add_argument('doc_path', help='Path to the .docx file')
124 | parser.add_argument('--ratio', type=float, default=0.5, help='Ratio of characters to make bold')
125 | args = parser.parse_args()
126 |
127 | process_document(args.doc_path, args.ratio)
128 |
129 | if __name__ == '__main__':
130 | main()
131 |
132 | # def process_document(doc_path, ratio):
133 | # # Check if the file path is for a .docx file
134 | # if not doc_path.endswith('.docx'):
135 | # print("Invalid file format. Please provide a .docx file.")
136 | # return
137 |
138 | # # Load the spacy model for word recognition
139 | # nlp = spacy.load('en_core_web_sm')
140 |
141 | # # Open the .docx file
142 | # doc = Document(doc_path)
143 |
144 | # for paragraph in doc.paragraphs:
145 | # for run in paragraph.runs:
146 | # # Skip if the run is already bold
147 | # if run.bold:
148 | # continue
149 |
150 | # # Split the run text into words
151 | # words = run.text.split()
152 |
153 | # # Process each word
154 | # new_runs = []
155 | # for word in words:
156 | # # Use spacy to recognize the words
157 | # doc = nlp(word)
158 | # for token in doc:
159 | # # Bolden a ratio of the characters in the word
160 | # runs = process_word(token.text, ratio)
161 | # new_runs.extend(runs)
162 |
163 | # # Clear the original run
164 | # run.text = ''
165 |
166 | # # Add new runs with the appropriate formatting
167 | # for text, is_bold in new_runs:
168 | # new_run = paragraph.add_run(text)
169 | # new_run.bold = is_bold
170 |
171 |
172 | # # Get the directory and filename from the input path
173 | # dir_name, file_name = os.path.split(doc_path)
174 |
175 | # # Prepend 'processed_' to the filename
176 | # new_file_name = 'processed_' + file_name
177 |
178 | # # Combine the directory and new filename to get the output path
179 | # output_path = os.path.join(dir_name, new_file_name)
180 |
181 | # doc.save(output_path)
182 |
183 |
184 | # def process_word(word, ratio):
185 | # # Calculate the number of characters to make bold
186 | # num_chars = math.ceil(len(word) * ratio)
187 |
188 | # # Make the specified number of characters bold
189 | # bold_word = word[:num_chars] + word[num_chars:].bold()
190 |
191 | # return bold_word
192 |
193 | # def process_document(doc_path, ratio):
194 | # # Check if the file path is for a .docx file
195 | # if not doc_path.endswith('.docx'):
196 | # print("Invalid file format. Please provide a .docx file.")
197 | # return
198 |
199 | # # Load the spacy model for word recognition
200 | # nlp = spacy.load('en_core_web_sm')
201 |
202 | # # Open the .docx file
203 | # doc = Document(doc_path)
204 |
205 | # for paragraph in doc.paragraphs:
206 | # for run in paragraph.runs:
207 | # # Skip if the run is already bold
208 | # if run.bold:
209 | # continue
210 |
211 | # # Split the run text into words
212 | # words = run.text.split()
213 |
214 | # # Process each word
215 | # new_words = []
216 | # for word in words:
217 | # # Use spacy to recognize the words
218 | # doc = nlp(word)
219 | # for token in doc:
220 | # # Bolden a ratio of the characters in the word
221 | # bold_word = process_word(token.text, ratio)
222 | # new_words.append(bold_word)
223 |
224 | # # Replace the run text with the processed words
225 | # run.text = ' '.join(new_words)
226 | # print("processed another paragraph...")
227 |
228 | # # Get the directory and filename from the input path
229 | # dir_name, file_name = os.path.split(doc_path)
230 |
231 | # # Prepend 'processed_' to the filename
232 | # new_file_name = 'processed_' + file_name
233 |
234 | # # Combine the directory and new filename to get the output path
235 | # output_path = os.path.join(dir_name, new_file_name)
236 |
237 | # doc.save(output_path)
238 |
239 |
240 | # def main():
241 | # parser = argparse.ArgumentParser()
242 | # parser.add_argument('doc_path', help='Path to the .docx file')
243 | # parser.add_argument('--ratio', type=float, default=0.5, help='Ratio of characters to make bold')
244 | # args = parser.parse_args()
245 |
246 | # process_document(args.doc_path, args.ratio)
247 |
248 | # if __name__ == '__main__':
249 | # main()
250 |
251 |
252 |
253 |
254 | # python bionic.py /path/to/your/document.docx
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 | # def process_word(word, ratio):
279 | # # Calculate the number of characters to make bold
280 | # num_bold_chars = math.ceil(len(word) * ratio)
281 |
282 | # # Create a new run for each part of the word
283 | # bold_run = word[:num_bold_chars]
284 | # normal_run = word[num_bold_chars:]
285 |
286 | # return bold_run, normal_run
287 |
288 | # # def process_document(doc_path, ratio):
289 | # # doc = Document(doc_path)
290 |
291 | # # for paragraph in doc.paragraphs:
292 | # # for run in paragraph.runs:
293 | # # # Skip if the run is already bold
294 | # # if run.bold:
295 | # # continue
296 |
297 | # # # Split the run text into words
298 | # # words = run.text.split()
299 |
300 | # # # Process each word
301 | # # new_words = []
302 | # # for word in words:
303 | # # bold_run, normal_run = process_word(word, ratio)
304 | # # new_words.append(bold_run)
305 | # # new_words.append(normal_run)
306 |
307 | # # # Replace the run text with the processed words
308 | # # run.text = ' '.join(new_words)
309 |
310 | # # doc.save('processed_' + doc_path)
311 |
312 | # # def process_document(doc_path, ratio):
313 | # # doc = Document(doc_path)
314 |
315 | # # for paragraph in doc.paragraphs:
316 | # # for run in paragraph.runs:
317 | # # # Skip if the run is already bold
318 | # # if run.bold:
319 | # # continue
320 |
321 | # # # Split the run text into words
322 | # # words = run.text.split()
323 |
324 | # # # Process each word
325 | # # new_words = []
326 | # # for word in words:
327 | # # bold_run, normal_run = process_word(word, ratio)
328 | # # new_words.append(bold_run)
329 | # # new_words.append(normal_run)
330 |
331 | # # # Replace the run text with the processed words
332 | # # run.text = ' '.join(new_words)
333 |
334 | # # # Get the directory and filename from the input path
335 | # # dir_name, file_name = os.path.split(doc_path)
336 |
337 | # # # Prepend 'processed_' to the filename
338 | # # new_file_name = 'processed_' + file_name
339 |
340 | # # # Combine the directory and new filename to get the output path
341 | # # output_path = os.path.join(dir_name, new_file_name)
342 |
343 | # # doc.save(output_path)
344 |
345 | # def process_document(doc_path, ratio):
346 | # doc = Document(doc_path)
347 | # new_doc = Document()
348 |
349 | # for paragraph in doc.paragraphs:
350 | # new_paragraph = new_doc.add_paragraph()
351 |
352 | # for run in paragraph.runs:
353 | # # Skip if the run is already bold
354 | # if run.bold:
355 | # continue
356 |
357 | # # Split the run text into words
358 | # words = run.text.split()
359 |
360 | # # Process each word
361 | # for word in words:
362 | # bold_run_text, normal_run_text = process_word(word, ratio)
363 |
364 | # # Add new runs to the new paragraph
365 | # if bold_run_text:
366 | # bold_run = new_paragraph.add_run(bold_run_text)
367 | # bold_run.bold = True
368 |
369 | # if normal_run_text:
370 | # normal_run = new_paragraph.add_run(normal_run_text)
371 |
372 | # # Get the directory and filename from the input path
373 | # dir_name, file_name = os.path.split(doc_path)
374 |
375 | # # Prepend 'processed_' to the filename
376 | # new_file_name = 'processed_' + file_name
377 |
378 | # # Combine the directory and new filename to get the output path
379 | # output_path = os.path.join(dir_name, new_file_name)
380 |
381 | # new_doc.save(output_path)
382 |
383 |
384 | # def main():
385 | # parser = argparse.ArgumentParser()
386 | # parser.add_argument('doc_path', help='Path to the .docx file')
387 | # parser.add_argument('--ratio', type=float, default=0.5, help='Ratio of characters to make bold')
388 | # args = parser.parse_args()
389 |
390 | # process_document(args.doc_path, args.ratio)
391 |
392 | # if __name__ == '__main__':
393 | # main()
394 |
395 |
396 |
397 |
398 |
--------------------------------------------------------------------------------
/bionicpython/converter.py:
--------------------------------------------------------------------------------
1 | # from pdf2docx import Converter
2 |
3 | # pdf_file = '/Users/xcode/Downloads/maths.pdf'
4 | # docx_file = '/Users/xcode/Downloads/maths.docx'
5 |
6 | # # convert pdf to docx
7 | # cv = Converter(pdf_file)
8 | # cv.convert(docx_file) # all pages by default
9 | # cv.close()
10 |
11 | import argparse
12 | from pdf2docx import Converter
13 |
14 | parser = argparse.ArgumentParser(description='Convert PDF to DOCX')
15 | parser.add_argument('--pdf', help='Path to the PDF file', required=True)
16 | parser.add_argument('--docx', help='Path to the output DOCX file', required=True)
17 |
18 | args = parser.parse_args()
19 |
20 | pdf_file = args.pdf
21 | docx_file = args.docx
22 |
23 | # convert pdf to docx
24 | cv = Converter(pdf_file)
25 | cv.convert(docx_file) # all pages by default
26 | cv.close()
--------------------------------------------------------------------------------
/cli/.coveragerc:
--------------------------------------------------------------------------------
1 | # .coveragerc to control coverage.py
2 | [run]
3 | branch = True
4 | source = cli
5 | # omit = bad_file.py
6 |
7 | [paths]
8 | source =
9 | src/
10 | */site-packages/
11 |
12 | [report]
13 | # Regexes for lines to exclude from consideration
14 | exclude_lines =
15 | # Have to re-enable the standard pragma
16 | pragma: no cover
17 |
18 | # Don't complain about missing debug-only code:
19 | def __repr__
20 | if self\.debug
21 |
22 | # Don't complain if tests don't hit defensive assertion code:
23 | raise AssertionError
24 | raise NotImplementedError
25 |
26 | # Don't complain if non-runnable code isn't run:
27 | if 0:
28 | if __name__ == .__main__.:
29 |
--------------------------------------------------------------------------------
/cli/.gitignore:
--------------------------------------------------------------------------------
1 | # Temporary and binary files
2 | *~
3 | *.py[cod]
4 | *.so
5 | *.cfg
6 | !.isort.cfg
7 | !setup.cfg
8 | *.orig
9 | *.log
10 | *.pot
11 | __pycache__/*
12 | .cache/*
13 | .*.swp
14 | */.ipynb_checkpoints/*
15 | .DS_Store
16 |
17 | # Project files
18 | .ropeproject
19 | .project
20 | .pydevproject
21 | .settings
22 | .idea
23 | .vscode
24 | tags
25 |
26 | # Package files
27 | *.egg
28 | *.eggs/
29 | .installed.cfg
30 | *.egg-info
31 |
32 | # Unittest and coverage
33 | htmlcov/*
34 | .coverage
35 | .coverage.*
36 | .tox
37 | junit*.xml
38 | coverage.xml
39 | .pytest_cache/
40 |
41 | # Build and docs folder/files
42 | build/*
43 | dist/*
44 | sdist/*
45 | docs/api/*
46 | docs/_rst/*
47 | docs/_build/*
48 | cover/*
49 | MANIFEST
50 |
51 | # Per-project virtualenvs
52 | .venv*/
53 | .conda*/
54 | .python-version
55 |
--------------------------------------------------------------------------------
/cli/.readthedocs.yml:
--------------------------------------------------------------------------------
1 | # Read the Docs configuration file
2 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3 |
4 | # Required
5 | version: 2
6 |
7 | # Build documentation in the docs/ directory with Sphinx
8 | sphinx:
9 | configuration: docs/conf.py
10 |
11 | # Build documentation with MkDocs
12 | #mkdocs:
13 | # configuration: mkdocs.yml
14 |
15 | # Optionally build your docs in additional formats such as PDF
16 | formats:
17 | - pdf
18 |
19 | build:
20 | os: ubuntu-22.04
21 | tools:
22 | python: "3.11"
23 |
24 | python:
25 | install:
26 | - requirements: docs/requirements.txt
27 | - {path: ., method: pip}
28 |
--------------------------------------------------------------------------------
/cli/AUTHORS.rst:
--------------------------------------------------------------------------------
1 | ============
2 | Contributors
3 | ============
4 |
5 | * nathfavour <116535483+nathfavour@users.noreply.github.com>
6 |
--------------------------------------------------------------------------------
/cli/CHANGELOG.rst:
--------------------------------------------------------------------------------
1 | =========
2 | Changelog
3 | =========
4 |
5 | Version 0.1
6 | ===========
7 |
8 | - Feature A added
9 | - FIX: nasty bug #1729 fixed
10 | - add your changes here!
11 |
--------------------------------------------------------------------------------
/cli/CONTRIBUTING.rst:
--------------------------------------------------------------------------------
1 | .. todo:: THIS IS SUPPOSED TO BE AN EXAMPLE. MODIFY IT ACCORDING TO YOUR NEEDS!
2 |
3 | The document assumes you are using a source repository service that promotes a
4 | contribution model similar to `GitHub's fork and pull request workflow`_.
5 | While this is true for the majority of services (like GitHub, GitLab,
6 | BitBucket), it might not be the case for private repositories (e.g., when
7 | using Gerrit).
8 |
9 | Also notice that the code examples might refer to GitHub URLs or the text
10 | might use GitHub specific terminology (e.g., *Pull Request* instead of *Merge
11 | Request*).
12 |
13 | Please make sure to check the document having these assumptions in mind
14 | and update things accordingly.
15 |
16 | .. todo:: Provide the correct links/replacements at the bottom of the document.
17 |
18 | .. todo:: You might want to have a look on `PyScaffold's contributor's guide`_,
19 |
20 | especially if your project is open source. The text should be very similar to
21 | this template, but there are a few extra contents that you might decide to
22 | also include, like mentioning labels of your issue tracker or automated
23 | releases.
24 |
25 |
26 | ============
27 | Contributing
28 | ============
29 |
30 | Welcome to ``cli`` contributor's guide.
31 |
32 | This document focuses on getting any potential contributor familiarized
33 | with the development processes, but `other kinds of contributions`_ are also
34 | appreciated.
35 |
36 | If you are new to using git_ or have never collaborated in a project previously,
37 | please have a look at `contribution-guide.org`_. Other resources are also
38 | listed in the excellent `guide created by FreeCodeCamp`_ [#contrib1]_.
39 |
40 | Please notice, all users and contributors are expected to be **open,
41 | considerate, reasonable, and respectful**. When in doubt, `Python Software
42 | Foundation's Code of Conduct`_ is a good reference in terms of behavior
43 | guidelines.
44 |
45 |
46 | Issue Reports
47 | =============
48 |
49 | If you experience bugs or general issues with ``cli``, please have a look
50 | on the `issue tracker`_. If you don't see anything useful there, please feel
51 | free to fire an issue report.
52 |
53 | .. tip::
54 | Please don't forget to include the closed issues in your search.
55 | Sometimes a solution was already reported, and the problem is considered
56 | **solved**.
57 |
58 | New issue reports should include information about your programming environment
59 | (e.g., operating system, Python version) and steps to reproduce the problem.
60 | Please try also to simplify the reproduction steps to a very minimal example
61 | that still illustrates the problem you are facing. By removing other factors,
62 | you help us to identify the root cause of the issue.
63 |
64 |
65 | Documentation Improvements
66 | ==========================
67 |
68 | You can help improve ``cli`` docs by making them more readable and coherent, or
69 | by adding missing information and correcting mistakes.
70 |
71 | ``cli`` documentation uses Sphinx_ as its main documentation compiler.
72 | This means that the docs are kept in the same repository as the project code, and
73 | that any documentation update is done in the same way was a code contribution.
74 |
75 | .. todo:: Don't forget to mention which markup language you are using.
76 |
77 | e.g., reStructuredText_ or CommonMark_ with MyST_ extensions.
78 |
79 | .. todo:: If your project is hosted on GitHub, you can also mention the following tip:
80 |
81 | .. tip::
82 | Please notice that the `GitHub web interface`_ provides a quick way of
83 | propose changes in ``cli``'s files. While this mechanism can
84 | be tricky for normal code contributions, it works perfectly fine for
85 | contributing to the docs, and can be quite handy.
86 |
87 | If you are interested in trying this method out, please navigate to
88 | the ``docs`` folder in the source repository_, find which file you
89 | would like to propose changes and click in the little pencil icon at the
90 | top, to open `GitHub's code editor`_. Once you finish editing the file,
91 | please write a message in the form at the bottom of the page describing
92 | which changes have you made and what are the motivations behind them and
93 | submit your proposal.
94 |
95 | When working on documentation changes in your local machine, you can
96 | compile them using |tox|_::
97 |
98 | tox -e docs
99 |
100 | and use Python's built-in web server for a preview in your web browser
101 | (``http://localhost:8000``)::
102 |
103 | python3 -m http.server --directory 'docs/_build/html'
104 |
105 |
106 | Code Contributions
107 | ==================
108 |
109 | .. todo:: Please include a reference or explanation about the internals of the project.
110 |
111 | An architecture description, design principles or at least a summary of the
112 | main concepts will make it easy for potential contributors to get started
113 | quickly.
114 |
115 | Submit an issue
116 | ---------------
117 |
118 | Before you work on any non-trivial code contribution it's best to first create
119 | a report in the `issue tracker`_ to start a discussion on the subject.
120 | This often provides additional considerations and avoids unnecessary work.
121 |
122 | Create an environment
123 | ---------------------
124 |
125 | Before you start coding, we recommend creating an isolated `virtual
126 | environment`_ to avoid any problems with your installed Python packages.
127 | This can easily be done via either |virtualenv|_::
128 |
129 | virtualenv
130 | source /bin/activate
131 |
132 | or Miniconda_::
133 |
134 | conda create -n cli python=3 six virtualenv pytest pytest-cov
135 | conda activate cli
136 |
137 | Clone the repository
138 | --------------------
139 |
140 | #. Create an user account on |the repository service| if you do not already have one.
141 | #. Fork the project repository_: click on the *Fork* button near the top of the
142 | page. This creates a copy of the code under your account on |the repository service|.
143 | #. Clone this copy to your local disk::
144 |
145 | git clone git@github.com:YourLogin/cli.git
146 | cd cli
147 |
148 | #. You should run::
149 |
150 | pip install -U pip setuptools -e .
151 |
152 | to be able to import the package under development in the Python REPL.
153 |
154 | .. todo:: if you are not using pre-commit, please remove the following item:
155 |
156 | #. Install |pre-commit|_::
157 |
158 | pip install pre-commit
159 | pre-commit install
160 |
161 | ``cli`` comes with a lot of hooks configured to automatically help the
162 | developer to check the code being written.
163 |
164 | Implement your changes
165 | ----------------------
166 |
167 | #. Create a branch to hold your changes::
168 |
169 | git checkout -b my-feature
170 |
171 | and start making changes. Never work on the main branch!
172 |
173 | #. Start your work on this branch. Don't forget to add docstrings_ to new
174 | functions, modules and classes, especially if they are part of public APIs.
175 |
176 | #. Add yourself to the list of contributors in ``AUTHORS.rst``.
177 |
178 | #. When you’re done editing, do::
179 |
180 | git add
181 | git commit
182 |
183 | to record your changes in git_.
184 |
185 | .. todo:: if you are not using pre-commit, please remove the following item:
186 |
187 | Please make sure to see the validation messages from |pre-commit|_ and fix
188 | any eventual issues.
189 | This should automatically use flake8_/black_ to check/fix the code style
190 | in a way that is compatible with the project.
191 |
192 | .. important:: Don't forget to add unit tests and documentation in case your
193 | contribution adds an additional feature and is not just a bugfix.
194 |
195 | Moreover, writing a `descriptive commit message`_ is highly recommended.
196 | In case of doubt, you can check the commit history with::
197 |
198 | git log --graph --decorate --pretty=oneline --abbrev-commit --all
199 |
200 | to look for recurring communication patterns.
201 |
202 | #. Please check that your changes don't break any unit tests with::
203 |
204 | tox
205 |
206 | (after having installed |tox|_ with ``pip install tox`` or ``pipx``).
207 |
208 | You can also use |tox|_ to run several other pre-configured tasks in the
209 | repository. Try ``tox -av`` to see a list of the available checks.
210 |
211 | Submit your contribution
212 | ------------------------
213 |
214 | #. If everything works fine, push your local branch to |the repository service| with::
215 |
216 | git push -u origin my-feature
217 |
218 | #. Go to the web page of your fork and click |contribute button|
219 | to send your changes for review.
220 |
221 | .. todo:: if you are using GitHub, you can uncomment the following paragraph
222 |
223 | Find more detailed information in `creating a PR`_. You might also want to open
224 | the PR as a draft first and mark it as ready for review after the feedbacks
225 | from the continuous integration (CI) system or any required fixes.
226 |
227 |
228 | Troubleshooting
229 | ---------------
230 |
231 | The following tips can be used when facing problems to build or test the
232 | package:
233 |
234 | #. Make sure to fetch all the tags from the upstream repository_.
235 | The command ``git describe --abbrev=0 --tags`` should return the version you
236 | are expecting. If you are trying to run CI scripts in a fork repository,
237 | make sure to push all the tags.
238 | You can also try to remove all the egg files or the complete egg folder, i.e.,
239 | ``.eggs``, as well as the ``*.egg-info`` folders in the ``src`` folder or
240 | potentially in the root of your project.
241 |
242 | #. Sometimes |tox|_ misses out when new dependencies are added, especially to
243 | ``setup.cfg`` and ``docs/requirements.txt``. If you find any problems with
244 | missing dependencies when running a command with |tox|_, try to recreate the
245 | ``tox`` environment using the ``-r`` flag. For example, instead of::
246 |
247 | tox -e docs
248 |
249 | Try running::
250 |
251 | tox -r -e docs
252 |
253 | #. Make sure to have a reliable |tox|_ installation that uses the correct
254 | Python version (e.g., 3.7+). When in doubt you can run::
255 |
256 | tox --version
257 | # OR
258 | which tox
259 |
260 | If you have trouble and are seeing weird errors upon running |tox|_, you can
261 | also try to create a dedicated `virtual environment`_ with a |tox|_ binary
262 | freshly installed. For example::
263 |
264 | virtualenv .venv
265 | source .venv/bin/activate
266 | .venv/bin/pip install tox
267 | .venv/bin/tox -e all
268 |
269 | #. `Pytest can drop you`_ in an interactive session in the case an error occurs.
270 | In order to do that you need to pass a ``--pdb`` option (for example by
271 | running ``tox -- -k --pdb``).
272 | You can also setup breakpoints manually instead of using the ``--pdb`` option.
273 |
274 |
275 | Maintainer tasks
276 | ================
277 |
278 | Releases
279 | --------
280 |
281 | .. todo:: This section assumes you are using PyPI to publicly release your package.
282 |
283 | If instead you are using a different/private package index, please update
284 | the instructions accordingly.
285 |
286 | If you are part of the group of maintainers and have correct user permissions
287 | on PyPI_, the following steps can be used to release a new version for
288 | ``cli``:
289 |
290 | #. Make sure all unit tests are successful.
291 | #. Tag the current commit on the main branch with a release tag, e.g., ``v1.2.3``.
292 | #. Push the new tag to the upstream repository_, e.g., ``git push upstream v1.2.3``
293 | #. Clean up the ``dist`` and ``build`` folders with ``tox -e clean``
294 | (or ``rm -rf dist build``)
295 | to avoid confusion with old builds and Sphinx docs.
296 | #. Run ``tox -e build`` and check that the files in ``dist`` have
297 | the correct version (no ``.dirty`` or git_ hash) according to the git_ tag.
298 | Also check the sizes of the distributions, if they are too big (e.g., >
299 | 500KB), unwanted clutter may have been accidentally included.
300 | #. Run ``tox -e publish -- --repository pypi`` and check that everything was
301 | uploaded to PyPI_ correctly.
302 |
303 |
304 |
305 | .. [#contrib1] Even though, these resources focus on open source projects and
306 | communities, the general ideas behind collaborating with other developers
307 | to collectively create software are general and can be applied to all sorts
308 | of environments, including private companies and proprietary code bases.
309 |
310 |
311 | .. <-- start -->
312 | .. todo:: Please review and change the following definitions:
313 |
314 | .. |the repository service| replace:: GitHub
315 | .. |contribute button| replace:: "Create pull request"
316 |
317 | .. _repository: https://github.com//cli
318 | .. _issue tracker: https://github.com//cli/issues
319 | .. <-- end -->
320 |
321 |
322 | .. |virtualenv| replace:: ``virtualenv``
323 | .. |pre-commit| replace:: ``pre-commit``
324 | .. |tox| replace:: ``tox``
325 |
326 |
327 | .. _black: https://pypi.org/project/black/
328 | .. _CommonMark: https://commonmark.org/
329 | .. _contribution-guide.org: https://www.contribution-guide.org/
330 | .. _creating a PR: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
331 | .. _descriptive commit message: https://chris.beams.io/posts/git-commit
332 | .. _docstrings: https://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html
333 | .. _first-contributions tutorial: https://github.com/firstcontributions/first-contributions
334 | .. _flake8: https://flake8.pycqa.org/en/stable/
335 | .. _git: https://git-scm.com
336 | .. _GitHub's fork and pull request workflow: https://guides.github.com/activities/forking/
337 | .. _guide created by FreeCodeCamp: https://github.com/FreeCodeCamp/how-to-contribute-to-open-source
338 | .. _Miniconda: https://docs.conda.io/en/latest/miniconda.html
339 | .. _MyST: https://myst-parser.readthedocs.io/en/latest/syntax/syntax.html
340 | .. _other kinds of contributions: https://opensource.guide/how-to-contribute
341 | .. _pre-commit: https://pre-commit.com/
342 | .. _PyPI: https://pypi.org/
343 | .. _PyScaffold's contributor's guide: https://pyscaffold.org/en/stable/contributing.html
344 | .. _Pytest can drop you: https://docs.pytest.org/en/stable/how-to/failures.html#using-python-library-pdb-with-pytest
345 | .. _Python Software Foundation's Code of Conduct: https://www.python.org/psf/conduct/
346 | .. _reStructuredText: https://www.sphinx-doc.org/en/master/usage/restructuredtext/
347 | .. _Sphinx: https://www.sphinx-doc.org/en/master/
348 | .. _tox: https://tox.wiki/en/stable/
349 | .. _virtual environment: https://realpython.com/python-virtual-environments-a-primer/
350 | .. _virtualenv: https://virtualenv.pypa.io/en/stable/
351 |
352 | .. _GitHub web interface: https://docs.github.com/en/repositories/working-with-files/managing-files/editing-files
353 | .. _GitHub's code editor: https://docs.github.com/en/repositories/working-with-files/managing-files/editing-files
354 |
--------------------------------------------------------------------------------
/cli/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2025 nathfavour
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.
22 |
--------------------------------------------------------------------------------
/cli/README.rst:
--------------------------------------------------------------------------------
1 | .. These are examples of badges you might want to add to your README:
2 | please update the URLs accordingly
3 |
4 | .. image:: https://api.cirrus-ci.com/github//cli.svg?branch=main
5 | :alt: Built Status
6 | :target: https://cirrus-ci.com/github//cli
7 | .. image:: https://readthedocs.org/projects/cli/badge/?version=latest
8 | :alt: ReadTheDocs
9 | :target: https://cli.readthedocs.io/en/stable/
10 | .. image:: https://img.shields.io/coveralls/github//cli/main.svg
11 | :alt: Coveralls
12 | :target: https://coveralls.io/r//cli
13 | .. image:: https://img.shields.io/pypi/v/cli.svg
14 | :alt: PyPI-Server
15 | :target: https://pypi.org/project/cli/
16 | .. image:: https://img.shields.io/conda/vn/conda-forge/cli.svg
17 | :alt: Conda-Forge
18 | :target: https://anaconda.org/conda-forge/cli
19 | .. image:: https://pepy.tech/badge/cli/month
20 | :alt: Monthly Downloads
21 | :target: https://pepy.tech/project/cli
22 | .. image:: https://img.shields.io/twitter/url/http/shields.io.svg?style=social&label=Twitter
23 | :alt: Twitter
24 | :target: https://twitter.com/cli
25 |
26 | .. image:: https://img.shields.io/badge/-PyScaffold-005CA0?logo=pyscaffold
27 | :alt: Project generated with PyScaffold
28 | :target: https://pyscaffold.org/
29 |
30 | |
31 |
32 | ===
33 | cli
34 | ===
35 |
36 |
37 | Add a short description here!
38 |
39 |
40 | A longer description of your project goes here...
41 |
42 |
43 | .. _pyscaffold-notes:
44 |
45 | Note
46 | ====
47 |
48 | This project has been set up using PyScaffold 4.6. For details and usage
49 | information on PyScaffold see https://pyscaffold.org/.
50 |
--------------------------------------------------------------------------------
/cli/docs/Makefile:
--------------------------------------------------------------------------------
1 | # Makefile for Sphinx documentation
2 | #
3 |
4 | # You can set these variables from the command line, and also
5 | # from the environment for the first two.
6 | SPHINXOPTS ?=
7 | SPHINXBUILD ?= sphinx-build
8 | SOURCEDIR = .
9 | BUILDDIR = _build
10 | AUTODOCDIR = api
11 |
12 | # User-friendly check for sphinx-build
13 | ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $?), 1)
14 | $(error "The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from https://sphinx-doc.org/")
15 | endif
16 |
17 | .PHONY: help clean Makefile
18 |
19 | # Put it first so that "make" without argument is like "make help".
20 | help:
21 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
22 |
23 | clean:
24 | rm -rf $(BUILDDIR)/* $(AUTODOCDIR)
25 |
26 | # Catch-all target: route all unknown targets to Sphinx using the new
27 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
28 | %: Makefile
29 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
30 |
--------------------------------------------------------------------------------
/cli/docs/_static/.gitignore:
--------------------------------------------------------------------------------
1 | # Empty directory
2 |
--------------------------------------------------------------------------------
/cli/docs/authors.rst:
--------------------------------------------------------------------------------
1 | .. _authors:
2 | .. include:: ../AUTHORS.rst
3 |
--------------------------------------------------------------------------------
/cli/docs/changelog.rst:
--------------------------------------------------------------------------------
1 | .. _changes:
2 | .. include:: ../CHANGELOG.rst
3 |
--------------------------------------------------------------------------------
/cli/docs/conf.py:
--------------------------------------------------------------------------------
1 | # This file is execfile()d with the current directory set to its containing dir.
2 | #
3 | # This file only contains a selection of the most common options. For a full
4 | # list see the documentation:
5 | # https://www.sphinx-doc.org/en/master/usage/configuration.html
6 | #
7 | # All configuration values have a default; values that are commented out
8 | # serve to show the default.
9 |
10 | import os
11 | import sys
12 | import shutil
13 |
14 | # -- Path setup --------------------------------------------------------------
15 |
16 | __location__ = os.path.dirname(__file__)
17 |
18 | # If extensions (or modules to document with autodoc) are in another directory,
19 | # add these directories to sys.path here. If the directory is relative to the
20 | # documentation root, use os.path.abspath to make it absolute, like shown here.
21 | sys.path.insert(0, os.path.join(__location__, "../src"))
22 |
23 | # -- Run sphinx-apidoc -------------------------------------------------------
24 | # This hack is necessary since RTD does not issue `sphinx-apidoc` before running
25 | # `sphinx-build -b html . _build/html`. See Issue:
26 | # https://github.com/readthedocs/readthedocs.org/issues/1139
27 | # DON'T FORGET: Check the box "Install your project inside a virtualenv using
28 | # setup.py install" in the RTD Advanced Settings.
29 | # Additionally it helps us to avoid running apidoc manually
30 |
31 | try: # for Sphinx >= 1.7
32 | from sphinx.ext import apidoc
33 | except ImportError:
34 | from sphinx import apidoc
35 |
36 | output_dir = os.path.join(__location__, "api")
37 | module_dir = os.path.join(__location__, "../src/cli")
38 | try:
39 | shutil.rmtree(output_dir)
40 | except FileNotFoundError:
41 | pass
42 |
43 | try:
44 | import sphinx
45 |
46 | cmd_line = f"sphinx-apidoc --implicit-namespaces -f -o {output_dir} {module_dir}"
47 |
48 | args = cmd_line.split(" ")
49 | if tuple(sphinx.__version__.split(".")) >= ("1", "7"):
50 | # This is a rudimentary parse_version to avoid external dependencies
51 | args = args[1:]
52 |
53 | apidoc.main(args)
54 | except Exception as e:
55 | print("Running `sphinx-apidoc` failed!\n{}".format(e))
56 |
57 | # -- General configuration ---------------------------------------------------
58 |
59 | # If your documentation needs a minimal Sphinx version, state it here.
60 | # needs_sphinx = '1.0'
61 |
62 | # Add any Sphinx extension module names here, as strings. They can be extensions
63 | # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
64 | extensions = [
65 | "sphinx.ext.autodoc",
66 | "sphinx.ext.intersphinx",
67 | "sphinx.ext.todo",
68 | "sphinx.ext.autosummary",
69 | "sphinx.ext.viewcode",
70 | "sphinx.ext.coverage",
71 | "sphinx.ext.doctest",
72 | "sphinx.ext.ifconfig",
73 | "sphinx.ext.mathjax",
74 | "sphinx.ext.napoleon",
75 | ]
76 |
77 | # Add any paths that contain templates here, relative to this directory.
78 | templates_path = ["_templates"]
79 |
80 | # The suffix of source filenames.
81 | source_suffix = ".rst"
82 |
83 | # The encoding of source files.
84 | # source_encoding = 'utf-8-sig'
85 |
86 | # The master toctree document.
87 | master_doc = "index"
88 |
89 | # General information about the project.
90 | project = "cli"
91 | copyright = "2025, nathfavour"
92 |
93 | # The version info for the project you're documenting, acts as replacement for
94 | # |version| and |release|, also used in various other places throughout the
95 | # built documents.
96 | #
97 | # version: The short X.Y version.
98 | # release: The full version, including alpha/beta/rc tags.
99 | # If you don’t need the separation provided between version and release,
100 | # just set them both to the same value.
101 | try:
102 | from cli import __version__ as version
103 | except ImportError:
104 | version = ""
105 |
106 | if not version or version.lower() == "unknown":
107 | version = os.getenv("READTHEDOCS_VERSION", "unknown") # automatically set by RTD
108 |
109 | release = version
110 |
111 | # The language for content autogenerated by Sphinx. Refer to documentation
112 | # for a list of supported languages.
113 | # language = None
114 |
115 | # There are two options for replacing |today|: either, you set today to some
116 | # non-false value, then it is used:
117 | # today = ''
118 | # Else, today_fmt is used as the format for a strftime call.
119 | # today_fmt = '%B %d, %Y'
120 |
121 | # List of patterns, relative to source directory, that match files and
122 | # directories to ignore when looking for source files.
123 | exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", ".venv"]
124 |
125 | # The reST default role (used for this markup: `text`) to use for all documents.
126 | # default_role = None
127 |
128 | # If true, '()' will be appended to :func: etc. cross-reference text.
129 | # add_function_parentheses = True
130 |
131 | # If true, the current module name will be prepended to all description
132 | # unit titles (such as .. function::).
133 | # add_module_names = True
134 |
135 | # If true, sectionauthor and moduleauthor directives will be shown in the
136 | # output. They are ignored by default.
137 | # show_authors = False
138 |
139 | # The name of the Pygments (syntax highlighting) style to use.
140 | pygments_style = "sphinx"
141 |
142 | # A list of ignored prefixes for module index sorting.
143 | # modindex_common_prefix = []
144 |
145 | # If true, keep warnings as "system message" paragraphs in the built documents.
146 | # keep_warnings = False
147 |
148 | # If this is True, todo emits a warning for each TODO entries. The default is False.
149 | todo_emit_warnings = True
150 |
151 |
152 | # -- Options for HTML output -------------------------------------------------
153 |
154 | # The theme to use for HTML and HTML Help pages. See the documentation for
155 | # a list of builtin themes.
156 | html_theme = "alabaster"
157 |
158 | # Theme options are theme-specific and customize the look and feel of a theme
159 | # further. For a list of options available for each theme, see the
160 | # documentation.
161 | html_theme_options = {
162 | "sidebar_width": "300px",
163 | "page_width": "1200px"
164 | }
165 |
166 | # Add any paths that contain custom themes here, relative to this directory.
167 | # html_theme_path = []
168 |
169 | # The name for this set of Sphinx documents. If None, it defaults to
170 | # " v documentation".
171 | # html_title = None
172 |
173 | # A shorter title for the navigation bar. Default is the same as html_title.
174 | # html_short_title = None
175 |
176 | # The name of an image file (relative to this directory) to place at the top
177 | # of the sidebar.
178 | # html_logo = ""
179 |
180 | # The name of an image file (within the static path) to use as favicon of the
181 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
182 | # pixels large.
183 | # html_favicon = None
184 |
185 | # Add any paths that contain custom static files (such as style sheets) here,
186 | # relative to this directory. They are copied after the builtin static files,
187 | # so a file named "default.css" will overwrite the builtin "default.css".
188 | html_static_path = ["_static"]
189 |
190 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
191 | # using the given strftime format.
192 | # html_last_updated_fmt = '%b %d, %Y'
193 |
194 | # If true, SmartyPants will be used to convert quotes and dashes to
195 | # typographically correct entities.
196 | # html_use_smartypants = True
197 |
198 | # Custom sidebar templates, maps document names to template names.
199 | # html_sidebars = {}
200 |
201 | # Additional templates that should be rendered to pages, maps page names to
202 | # template names.
203 | # html_additional_pages = {}
204 |
205 | # If false, no module index is generated.
206 | # html_domain_indices = True
207 |
208 | # If false, no index is generated.
209 | # html_use_index = True
210 |
211 | # If true, the index is split into individual pages for each letter.
212 | # html_split_index = False
213 |
214 | # If true, links to the reST sources are added to the pages.
215 | # html_show_sourcelink = True
216 |
217 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
218 | # html_show_sphinx = True
219 |
220 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
221 | # html_show_copyright = True
222 |
223 | # If true, an OpenSearch description file will be output, and all pages will
224 | # contain a tag referring to it. The value of this option must be the
225 | # base URL from which the finished HTML is served.
226 | # html_use_opensearch = ''
227 |
228 | # This is the file name suffix for HTML files (e.g. ".xhtml").
229 | # html_file_suffix = None
230 |
231 | # Output file base name for HTML help builder.
232 | htmlhelp_basename = "cli-doc"
233 |
234 |
235 | # -- Options for LaTeX output ------------------------------------------------
236 |
237 | latex_elements = {
238 | # The paper size ("letterpaper" or "a4paper").
239 | # "papersize": "letterpaper",
240 | # The font size ("10pt", "11pt" or "12pt").
241 | # "pointsize": "10pt",
242 | # Additional stuff for the LaTeX preamble.
243 | # "preamble": "",
244 | }
245 |
246 | # Grouping the document tree into LaTeX files. List of tuples
247 | # (source start file, target name, title, author, documentclass [howto/manual]).
248 | latex_documents = [
249 | ("index", "user_guide.tex", "cli Documentation", "nathfavour", "manual")
250 | ]
251 |
252 | # The name of an image file (relative to this directory) to place at the top of
253 | # the title page.
254 | # latex_logo = ""
255 |
256 | # For "manual" documents, if this is true, then toplevel headings are parts,
257 | # not chapters.
258 | # latex_use_parts = False
259 |
260 | # If true, show page references after internal links.
261 | # latex_show_pagerefs = False
262 |
263 | # If true, show URL addresses after external links.
264 | # latex_show_urls = False
265 |
266 | # Documents to append as an appendix to all manuals.
267 | # latex_appendices = []
268 |
269 | # If false, no module index is generated.
270 | # latex_domain_indices = True
271 |
272 | # -- External mapping --------------------------------------------------------
273 | python_version = ".".join(map(str, sys.version_info[0:2]))
274 | intersphinx_mapping = {
275 | "sphinx": ("https://www.sphinx-doc.org/en/master", None),
276 | "python": ("https://docs.python.org/" + python_version, None),
277 | "matplotlib": ("https://matplotlib.org", None),
278 | "numpy": ("https://numpy.org/doc/stable", None),
279 | "sklearn": ("https://scikit-learn.org/stable", None),
280 | "pandas": ("https://pandas.pydata.org/pandas-docs/stable", None),
281 | "scipy": ("https://docs.scipy.org/doc/scipy/reference", None),
282 | "setuptools": ("https://setuptools.pypa.io/en/stable/", None),
283 | "pyscaffold": ("https://pyscaffold.org/en/stable", None),
284 | }
285 |
286 | print(f"loading configurations for {project} {version} ...", file=sys.stderr)
287 |
--------------------------------------------------------------------------------
/cli/docs/contributing.rst:
--------------------------------------------------------------------------------
1 | .. include:: ../CONTRIBUTING.rst
2 |
--------------------------------------------------------------------------------
/cli/docs/index.rst:
--------------------------------------------------------------------------------
1 | ===
2 | cli
3 | ===
4 |
5 | This is the documentation of **cli**.
6 |
7 | .. note::
8 |
9 | This is the main page of your project's `Sphinx`_ documentation.
10 | It is formatted in `reStructuredText`_. Add additional pages
11 | by creating rst-files in ``docs`` and adding them to the `toctree`_ below.
12 | Use then `references`_ in order to link them from this page, e.g.
13 | :ref:`authors` and :ref:`changes`.
14 |
15 | It is also possible to refer to the documentation of other Python packages
16 | with the `Python domain syntax`_. By default you can reference the
17 | documentation of `Sphinx`_, `Python`_, `NumPy`_, `SciPy`_, `matplotlib`_,
18 | `Pandas`_, `Scikit-Learn`_. You can add more by extending the
19 | ``intersphinx_mapping`` in your Sphinx's ``conf.py``.
20 |
21 | The pretty useful extension `autodoc`_ is activated by default and lets
22 | you include documentation from docstrings. Docstrings can be written in
23 | `Google style`_ (recommended!), `NumPy style`_ and `classical style`_.
24 |
25 |
26 | Contents
27 | ========
28 |
29 | .. toctree::
30 | :maxdepth: 2
31 |
32 | Overview
33 | Contributions & Help
34 | License
35 | Authors
36 | Changelog
37 | Module Reference
38 |
39 |
40 | Indices and tables
41 | ==================
42 |
43 | * :ref:`genindex`
44 | * :ref:`modindex`
45 | * :ref:`search`
46 |
47 | .. _toctree: https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html
48 | .. _reStructuredText: https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
49 | .. _references: https://www.sphinx-doc.org/en/stable/markup/inline.html
50 | .. _Python domain syntax: https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#the-python-domain
51 | .. _Sphinx: https://www.sphinx-doc.org/
52 | .. _Python: https://docs.python.org/
53 | .. _Numpy: https://numpy.org/doc/stable
54 | .. _SciPy: https://docs.scipy.org/doc/scipy/reference/
55 | .. _matplotlib: https://matplotlib.org/contents.html#
56 | .. _Pandas: https://pandas.pydata.org/pandas-docs/stable
57 | .. _Scikit-Learn: https://scikit-learn.org/stable
58 | .. _autodoc: https://www.sphinx-doc.org/en/master/ext/autodoc.html
59 | .. _Google style: https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings
60 | .. _NumPy style: https://numpydoc.readthedocs.io/en/latest/format.html
61 | .. _classical style: https://www.sphinx-doc.org/en/master/domains.html#info-field-lists
62 |
--------------------------------------------------------------------------------
/cli/docs/license.rst:
--------------------------------------------------------------------------------
1 | .. _license:
2 |
3 | =======
4 | License
5 | =======
6 |
7 | .. include:: ../LICENSE.txt
8 |
--------------------------------------------------------------------------------
/cli/docs/readme.rst:
--------------------------------------------------------------------------------
1 | .. _readme:
2 | .. include:: ../README.rst
3 |
--------------------------------------------------------------------------------
/cli/docs/requirements.txt:
--------------------------------------------------------------------------------
1 | # Requirements file for ReadTheDocs, check .readthedocs.yml.
2 | # To build the module reference correctly, make sure every external package
3 | # under `install_requires` in `setup.cfg` is also listed here!
4 | sphinx>=3.2.1
5 | # sphinx_rtd_theme
6 |
--------------------------------------------------------------------------------
/cli/pyproject.toml:
--------------------------------------------------------------------------------
1 | [build-system]
2 | # AVOID CHANGING REQUIRES: IT WILL BE UPDATED BY PYSCAFFOLD!
3 | requires = ["setuptools>=46.1.0", "setuptools_scm[toml]>=5"]
4 | build-backend = "setuptools.build_meta"
5 |
6 | [tool.setuptools_scm]
7 | # For smarter version schemes and other configuration options,
8 | # check out https://github.com/pypa/setuptools_scm
9 | version_scheme = "no-guess-dev"
10 |
--------------------------------------------------------------------------------
/cli/setup.cfg:
--------------------------------------------------------------------------------
1 | # This file is used to configure your project.
2 | # Read more about the various options under:
3 | # https://setuptools.pypa.io/en/latest/userguide/declarative_config.html
4 | # https://setuptools.pypa.io/en/latest/references/keywords.html
5 |
6 | [metadata]
7 | name = cli
8 | description = Add a short description here!
9 | author = nathfavour
10 | author_email = 116535483+nathfavour@users.noreply.github.com
11 | license = MIT
12 | license_files = LICENSE.txt
13 | long_description = file: README.rst
14 | long_description_content_type = text/x-rst; charset=UTF-8
15 | url = https://github.com/pyscaffold/pyscaffold/
16 | # Add here related links, for example:
17 | project_urls =
18 | Documentation = https://pyscaffold.org/
19 | # Source = https://github.com/pyscaffold/pyscaffold/
20 | # Changelog = https://pyscaffold.org/en/latest/changelog.html
21 | # Tracker = https://github.com/pyscaffold/pyscaffold/issues
22 | # Conda-Forge = https://anaconda.org/conda-forge/pyscaffold
23 | # Download = https://pypi.org/project/PyScaffold/#files
24 | # Twitter = https://twitter.com/PyScaffold
25 |
26 | # Change if running only on Windows, Mac or Linux (comma-separated)
27 | platforms = any
28 |
29 | # Add here all kinds of additional classifiers as defined under
30 | # https://pypi.org/classifiers/
31 | classifiers =
32 | Development Status :: 4 - Beta
33 | Programming Language :: Python
34 |
35 |
36 | [options]
37 | zip_safe = False
38 | packages = find_namespace:
39 | include_package_data = True
40 | package_dir =
41 | =src
42 |
43 | # Require a min/specific Python version (comma-separated conditions)
44 | # python_requires = >=3.8
45 |
46 | # Add here dependencies of your project (line-separated), e.g. requests>=2.2,<3.0.
47 | # Version specifiers like >=2.2,<3.0 avoid problems due to API changes in
48 | # new major versions. This works if the required packages follow Semantic Versioning.
49 | # For more information, check out https://semver.org/.
50 | install_requires =
51 | importlib-metadata; python_version<"3.8"
52 |
53 |
54 | [options.packages.find]
55 | where = src
56 | exclude =
57 | tests
58 |
59 | [options.extras_require]
60 | # Add here additional requirements for extra features, to install with:
61 | # `pip install cli[PDF]` like:
62 | # PDF = ReportLab; RXP
63 |
64 | # Add here test requirements (semicolon/line-separated)
65 | testing =
66 | setuptools
67 | pytest
68 | pytest-cov
69 |
70 | [options.entry_points]
71 | # Add here console scripts like:
72 | # console_scripts =
73 | # script_name = cli.module:function
74 | # For example:
75 | # console_scripts =
76 | # fibonacci = cli.skeleton:run
77 | # And any other entry points, for example:
78 | # pyscaffold.cli =
79 | # awesome = pyscaffoldext.awesome.extension:AwesomeExtension
80 |
81 | [tool:pytest]
82 | # Specify command line options as you would do when invoking pytest directly.
83 | # e.g. --cov-report html (or xml) for html/xml output or --junitxml junit.xml
84 | # in order to write a coverage file that can be read by Jenkins.
85 | # CAUTION: --cov flags may prohibit setting breakpoints while debugging.
86 | # Comment those flags to avoid this pytest issue.
87 | addopts =
88 | --cov cli --cov-report term-missing
89 | --verbose
90 | norecursedirs =
91 | dist
92 | build
93 | .tox
94 | testpaths = tests
95 | # Use pytest markers to select/deselect specific tests
96 | # markers =
97 | # slow: mark tests as slow (deselect with '-m "not slow"')
98 | # system: mark end-to-end system tests
99 |
100 | [devpi:upload]
101 | # Options for the devpi: PyPI server and packaging tool
102 | # VCS export must be deactivated since we are using setuptools-scm
103 | no_vcs = 1
104 | formats = bdist_wheel
105 |
106 | [flake8]
107 | # Some sane defaults for the code style checker flake8
108 | max_line_length = 88
109 | extend_ignore = E203, W503
110 | # ^ Black-compatible
111 | # E203 and W503 have edge cases handled by black
112 | exclude =
113 | .tox
114 | build
115 | dist
116 | .eggs
117 | docs/conf.py
118 |
119 | [pyscaffold]
120 | # PyScaffold's parameters when the project was created.
121 | # This will be used when updating. Do not change!
122 | version = 4.6
123 | package = cli
124 |
--------------------------------------------------------------------------------
/cli/setup.py:
--------------------------------------------------------------------------------
1 | """
2 | Setup file for cli.
3 | Use setup.cfg to configure your project.
4 |
5 | This file was generated with PyScaffold 4.6.
6 | PyScaffold helps you to put up the scaffold of your new Python project.
7 | Learn more under: https://pyscaffold.org/
8 | """
9 |
10 | from setuptools import setup
11 |
12 | if __name__ == "__main__":
13 | try:
14 | setup(use_scm_version={"version_scheme": "no-guess-dev"})
15 | except: # noqa
16 | print(
17 | "\n\nAn error occurred while building the project, "
18 | "please ensure you have the most updated version of setuptools, "
19 | "setuptools_scm and wheel with:\n"
20 | " pip install -U setuptools setuptools_scm wheel\n\n"
21 | )
22 | raise
23 |
--------------------------------------------------------------------------------
/cli/src/cli/__init__.py:
--------------------------------------------------------------------------------
1 | import sys
2 |
3 | if sys.version_info[:2] >= (3, 8):
4 | # TODO: Import directly (no need for conditional) when `python_requires = >= 3.8`
5 | from importlib.metadata import PackageNotFoundError, version # pragma: no cover
6 | else:
7 | from importlib_metadata import PackageNotFoundError, version # pragma: no cover
8 |
9 | try:
10 | # Change here if project is renamed and does not equal the package name
11 | dist_name = __name__
12 | __version__ = version(dist_name)
13 | except PackageNotFoundError: # pragma: no cover
14 | __version__ = "unknown"
15 | finally:
16 | del version, PackageNotFoundError
17 |
--------------------------------------------------------------------------------
/cli/src/cli/converter.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathfavour/bionicpython/ecc18760935cf22dc2b5769d830902db990390fc/cli/src/cli/converter.py
--------------------------------------------------------------------------------
/cli/src/cli/skeleton.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathfavour/bionicpython/ecc18760935cf22dc2b5769d830902db990390fc/cli/src/cli/skeleton.py
--------------------------------------------------------------------------------
/cli/tests/conftest.py:
--------------------------------------------------------------------------------
1 | """
2 | Dummy conftest.py for cli.
3 |
4 | If you don't know what this is for, just leave it empty.
5 | Read more about conftest.py under:
6 | - https://docs.pytest.org/en/stable/fixture.html
7 | - https://docs.pytest.org/en/stable/writing_plugins.html
8 | """
9 |
10 | # import pytest
11 |
--------------------------------------------------------------------------------
/cli/tests/test_skeleton.py:
--------------------------------------------------------------------------------
1 | import pytest
2 |
3 | from cli.skeleton import fib, main
4 |
5 | __author__ = "nathfavour"
6 | __copyright__ = "nathfavour"
7 | __license__ = "MIT"
8 |
9 |
10 | def test_fib():
11 | """API Tests"""
12 | assert fib(1) == 1
13 | assert fib(2) == 1
14 | assert fib(7) == 13
15 | with pytest.raises(AssertionError):
16 | fib(-10)
17 |
18 |
19 | def test_main(capsys):
20 | """CLI Tests"""
21 | # capsys is a pytest fixture that allows asserts against stdout/stderr
22 | # https://docs.pytest.org/en/stable/capture.html
23 | main(["7"])
24 | captured = capsys.readouterr()
25 | assert "The 7-th Fibonacci number is 13" in captured.out
26 |
--------------------------------------------------------------------------------
/cli/tox.ini:
--------------------------------------------------------------------------------
1 | # Tox configuration file
2 | # Read more under https://tox.wiki/
3 | # THIS SCRIPT IS SUPPOSED TO BE AN EXAMPLE. MODIFY IT ACCORDING TO YOUR NEEDS!
4 |
5 | [tox]
6 | minversion = 3.24
7 | envlist = default
8 | isolated_build = True
9 |
10 |
11 | [testenv]
12 | description = Invoke pytest to run automated tests
13 | setenv =
14 | TOXINIDIR = {toxinidir}
15 | passenv =
16 | HOME
17 | SETUPTOOLS_*
18 | extras =
19 | testing
20 | commands =
21 | pytest {posargs}
22 |
23 |
24 | # # To run `tox -e lint` you need to make sure you have a
25 | # # `.pre-commit-config.yaml` file. See https://pre-commit.com
26 | # [testenv:lint]
27 | # description = Perform static analysis and style checks
28 | # skip_install = True
29 | # deps = pre-commit
30 | # passenv =
31 | # HOMEPATH
32 | # PROGRAMDATA
33 | # SETUPTOOLS_*
34 | # commands =
35 | # pre-commit run --all-files {posargs:--show-diff-on-failure}
36 |
37 |
38 | [testenv:{build,clean}]
39 | description =
40 | build: Build the package in isolation according to PEP517, see https://github.com/pypa/build
41 | clean: Remove old distribution files and temporary build artifacts (./build and ./dist)
42 | # https://setuptools.pypa.io/en/stable/build_meta.html#how-to-use-it
43 | skip_install = True
44 | changedir = {toxinidir}
45 | deps =
46 | build: build[virtualenv]
47 | passenv =
48 | SETUPTOOLS_*
49 | commands =
50 | clean: python -c 'import shutil; [shutil.rmtree(p, True) for p in ("build", "dist", "docs/_build")]'
51 | clean: python -c 'import pathlib, shutil; [shutil.rmtree(p, True) for p in pathlib.Path("src").glob("*.egg-info")]'
52 | build: python -m build {posargs}
53 | # By default, both `sdist` and `wheel` are built. If your sdist is too big or you don't want
54 | # to make it available, consider running: `tox -e build -- --wheel`
55 |
56 |
57 | [testenv:{docs,doctests,linkcheck}]
58 | description =
59 | docs: Invoke sphinx-build to build the docs
60 | doctests: Invoke sphinx-build to run doctests
61 | linkcheck: Check for broken links in the documentation
62 | passenv =
63 | SETUPTOOLS_*
64 | setenv =
65 | DOCSDIR = {toxinidir}/docs
66 | BUILDDIR = {toxinidir}/docs/_build
67 | docs: BUILD = html
68 | doctests: BUILD = doctest
69 | linkcheck: BUILD = linkcheck
70 | deps =
71 | -r {toxinidir}/docs/requirements.txt
72 | # ^ requirements.txt shared with Read The Docs
73 | commands =
74 | sphinx-build --color -b {env:BUILD} -d "{env:BUILDDIR}/doctrees" "{env:DOCSDIR}" "{env:BUILDDIR}/{env:BUILD}" {posargs}
75 |
76 |
77 | [testenv:publish]
78 | description =
79 | Publish the package you have been developing to a package index server.
80 | By default, it uses testpypi. If you really want to publish your package
81 | to be publicly accessible in PyPI, use the `-- --repository pypi` option.
82 | skip_install = True
83 | changedir = {toxinidir}
84 | passenv =
85 | # See: https://twine.readthedocs.io/en/latest/
86 | TWINE_USERNAME
87 | TWINE_PASSWORD
88 | TWINE_REPOSITORY
89 | TWINE_REPOSITORY_URL
90 | deps = twine
91 | commands =
92 | python -m twine check dist/*
93 | python -m twine upload {posargs:--repository {env:TWINE_REPOSITORY:testpypi}} dist/*
94 |
--------------------------------------------------------------------------------
/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { dirname } from "path";
2 | import { fileURLToPath } from "url";
3 | import { FlatCompat } from "@eslint/eslintrc";
4 |
5 | const __filename = fileURLToPath(import.meta.url);
6 | const __dirname = dirname(__filename);
7 |
8 | const compat = new FlatCompat({
9 | baseDirectory: __dirname,
10 | });
11 |
12 | const eslintConfig = [
13 | ...compat.extends("next/core-web-vitals", "next/typescript"),
14 | ];
15 |
16 | export default eslintConfig;
17 |
--------------------------------------------------------------------------------
/image/README/1700793569388.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathfavour/bionicpython/ecc18760935cf22dc2b5769d830902db990390fc/image/README/1700793569388.png
--------------------------------------------------------------------------------
/image/README/1700793580179.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathfavour/bionicpython/ecc18760935cf22dc2b5769d830902db990390fc/image/README/1700793580179.png
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "paths": {
5 | "@/*": ["./*"]
6 | }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/next.config.ts:
--------------------------------------------------------------------------------
1 | import type { NextConfig } from "next";
2 |
3 | const nextConfig: NextConfig = {
4 | /* config options here */
5 | };
6 |
7 | export default nextConfig;
8 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "webapp",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev --turbopack",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "react": "^19.0.0",
13 | "react-dom": "^19.0.0",
14 | "next": "15.1.6"
15 | },
16 | "devDependencies": {
17 | "typescript": "^5",
18 | "@types/node": "^20",
19 | "@types/react": "^19",
20 | "@types/react-dom": "^19",
21 | "postcss": "^8",
22 | "tailwindcss": "^3.4.1",
23 | "eslint": "^9",
24 | "eslint-config-next": "15.1.6",
25 | "@eslint/eslintrc": "^3"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | next:
12 | specifier: 15.1.6
13 | version: 15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
14 | react:
15 | specifier: ^19.0.0
16 | version: 19.0.0
17 | react-dom:
18 | specifier: ^19.0.0
19 | version: 19.0.0(react@19.0.0)
20 | devDependencies:
21 | '@eslint/eslintrc':
22 | specifier: ^3
23 | version: 3.2.0
24 | '@types/node':
25 | specifier: ^20
26 | version: 20.17.17
27 | '@types/react':
28 | specifier: ^19
29 | version: 19.0.8
30 | '@types/react-dom':
31 | specifier: ^19
32 | version: 19.0.3(@types/react@19.0.8)
33 | eslint:
34 | specifier: ^9
35 | version: 9.20.0(jiti@1.21.7)
36 | eslint-config-next:
37 | specifier: 15.1.6
38 | version: 15.1.6(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)
39 | postcss:
40 | specifier: ^8
41 | version: 8.5.1
42 | tailwindcss:
43 | specifier: ^3.4.1
44 | version: 3.4.17
45 | typescript:
46 | specifier: ^5
47 | version: 5.7.3
48 |
49 | packages:
50 |
51 | '@alloc/quick-lru@5.2.0':
52 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
53 | engines: {node: '>=10'}
54 |
55 | '@emnapi/runtime@1.3.1':
56 | resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
57 |
58 | '@eslint-community/eslint-utils@4.4.1':
59 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
60 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
61 | peerDependencies:
62 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
63 |
64 | '@eslint-community/regexpp@4.12.1':
65 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
66 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
67 |
68 | '@eslint/config-array@0.19.2':
69 | resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==}
70 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
71 |
72 | '@eslint/core@0.10.0':
73 | resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==}
74 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
75 |
76 | '@eslint/core@0.11.0':
77 | resolution: {integrity: sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==}
78 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
79 |
80 | '@eslint/eslintrc@3.2.0':
81 | resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==}
82 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
83 |
84 | '@eslint/js@9.20.0':
85 | resolution: {integrity: sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==}
86 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
87 |
88 | '@eslint/object-schema@2.1.6':
89 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
90 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
91 |
92 | '@eslint/plugin-kit@0.2.5':
93 | resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==}
94 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
95 |
96 | '@humanfs/core@0.19.1':
97 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
98 | engines: {node: '>=18.18.0'}
99 |
100 | '@humanfs/node@0.16.6':
101 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
102 | engines: {node: '>=18.18.0'}
103 |
104 | '@humanwhocodes/module-importer@1.0.1':
105 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
106 | engines: {node: '>=12.22'}
107 |
108 | '@humanwhocodes/retry@0.3.1':
109 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
110 | engines: {node: '>=18.18'}
111 |
112 | '@humanwhocodes/retry@0.4.1':
113 | resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
114 | engines: {node: '>=18.18'}
115 |
116 | '@img/sharp-darwin-arm64@0.33.5':
117 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
118 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
119 | cpu: [arm64]
120 | os: [darwin]
121 |
122 | '@img/sharp-darwin-x64@0.33.5':
123 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
124 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
125 | cpu: [x64]
126 | os: [darwin]
127 |
128 | '@img/sharp-libvips-darwin-arm64@1.0.4':
129 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
130 | cpu: [arm64]
131 | os: [darwin]
132 |
133 | '@img/sharp-libvips-darwin-x64@1.0.4':
134 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
135 | cpu: [x64]
136 | os: [darwin]
137 |
138 | '@img/sharp-libvips-linux-arm64@1.0.4':
139 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
140 | cpu: [arm64]
141 | os: [linux]
142 |
143 | '@img/sharp-libvips-linux-arm@1.0.5':
144 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
145 | cpu: [arm]
146 | os: [linux]
147 |
148 | '@img/sharp-libvips-linux-s390x@1.0.4':
149 | resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
150 | cpu: [s390x]
151 | os: [linux]
152 |
153 | '@img/sharp-libvips-linux-x64@1.0.4':
154 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
155 | cpu: [x64]
156 | os: [linux]
157 |
158 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
159 | resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
160 | cpu: [arm64]
161 | os: [linux]
162 |
163 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
164 | resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
165 | cpu: [x64]
166 | os: [linux]
167 |
168 | '@img/sharp-linux-arm64@0.33.5':
169 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
170 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
171 | cpu: [arm64]
172 | os: [linux]
173 |
174 | '@img/sharp-linux-arm@0.33.5':
175 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
176 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
177 | cpu: [arm]
178 | os: [linux]
179 |
180 | '@img/sharp-linux-s390x@0.33.5':
181 | resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
182 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
183 | cpu: [s390x]
184 | os: [linux]
185 |
186 | '@img/sharp-linux-x64@0.33.5':
187 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
188 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
189 | cpu: [x64]
190 | os: [linux]
191 |
192 | '@img/sharp-linuxmusl-arm64@0.33.5':
193 | resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
194 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
195 | cpu: [arm64]
196 | os: [linux]
197 |
198 | '@img/sharp-linuxmusl-x64@0.33.5':
199 | resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
200 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
201 | cpu: [x64]
202 | os: [linux]
203 |
204 | '@img/sharp-wasm32@0.33.5':
205 | resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
206 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
207 | cpu: [wasm32]
208 |
209 | '@img/sharp-win32-ia32@0.33.5':
210 | resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
211 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
212 | cpu: [ia32]
213 | os: [win32]
214 |
215 | '@img/sharp-win32-x64@0.33.5':
216 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
217 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
218 | cpu: [x64]
219 | os: [win32]
220 |
221 | '@isaacs/cliui@8.0.2':
222 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
223 | engines: {node: '>=12'}
224 |
225 | '@jridgewell/gen-mapping@0.3.8':
226 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
227 | engines: {node: '>=6.0.0'}
228 |
229 | '@jridgewell/resolve-uri@3.1.2':
230 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
231 | engines: {node: '>=6.0.0'}
232 |
233 | '@jridgewell/set-array@1.2.1':
234 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
235 | engines: {node: '>=6.0.0'}
236 |
237 | '@jridgewell/sourcemap-codec@1.5.0':
238 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
239 |
240 | '@jridgewell/trace-mapping@0.3.25':
241 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
242 |
243 | '@next/env@15.1.6':
244 | resolution: {integrity: sha512-d9AFQVPEYNr+aqokIiPLNK/MTyt3DWa/dpKveiAaVccUadFbhFEvY6FXYX2LJO2Hv7PHnLBu2oWwB4uBuHjr/w==}
245 |
246 | '@next/eslint-plugin-next@15.1.6':
247 | resolution: {integrity: sha512-+slMxhTgILUntZDGNgsKEYHUvpn72WP1YTlkmEhS51vnVd7S9jEEy0n9YAMcI21vUG4akTw9voWH02lrClt/yw==}
248 |
249 | '@next/swc-darwin-arm64@15.1.6':
250 | resolution: {integrity: sha512-u7lg4Mpl9qWpKgy6NzEkz/w0/keEHtOybmIl0ykgItBxEM5mYotS5PmqTpo+Rhg8FiOiWgwr8USxmKQkqLBCrw==}
251 | engines: {node: '>= 10'}
252 | cpu: [arm64]
253 | os: [darwin]
254 |
255 | '@next/swc-darwin-x64@15.1.6':
256 | resolution: {integrity: sha512-x1jGpbHbZoZ69nRuogGL2MYPLqohlhnT9OCU6E6QFewwup+z+M6r8oU47BTeJcWsF2sdBahp5cKiAcDbwwK/lg==}
257 | engines: {node: '>= 10'}
258 | cpu: [x64]
259 | os: [darwin]
260 |
261 | '@next/swc-linux-arm64-gnu@15.1.6':
262 | resolution: {integrity: sha512-jar9sFw0XewXsBzPf9runGzoivajeWJUc/JkfbLTC4it9EhU8v7tCRLH7l5Y1ReTMN6zKJO0kKAGqDk8YSO2bg==}
263 | engines: {node: '>= 10'}
264 | cpu: [arm64]
265 | os: [linux]
266 |
267 | '@next/swc-linux-arm64-musl@15.1.6':
268 | resolution: {integrity: sha512-+n3u//bfsrIaZch4cgOJ3tXCTbSxz0s6brJtU3SzLOvkJlPQMJ+eHVRi6qM2kKKKLuMY+tcau8XD9CJ1OjeSQQ==}
269 | engines: {node: '>= 10'}
270 | cpu: [arm64]
271 | os: [linux]
272 |
273 | '@next/swc-linux-x64-gnu@15.1.6':
274 | resolution: {integrity: sha512-SpuDEXixM3PycniL4iVCLyUyvcl6Lt0mtv3am08sucskpG0tYkW1KlRhTgj4LI5ehyxriVVcfdoxuuP8csi3kQ==}
275 | engines: {node: '>= 10'}
276 | cpu: [x64]
277 | os: [linux]
278 |
279 | '@next/swc-linux-x64-musl@15.1.6':
280 | resolution: {integrity: sha512-L4druWmdFSZIIRhF+G60API5sFB7suTbDRhYWSjiw0RbE+15igQvE2g2+S973pMGvwN3guw7cJUjA/TmbPWTHQ==}
281 | engines: {node: '>= 10'}
282 | cpu: [x64]
283 | os: [linux]
284 |
285 | '@next/swc-win32-arm64-msvc@15.1.6':
286 | resolution: {integrity: sha512-s8w6EeqNmi6gdvM19tqKKWbCyOBvXFbndkGHl+c9YrzsLARRdCHsD9S1fMj8gsXm9v8vhC8s3N8rjuC/XrtkEg==}
287 | engines: {node: '>= 10'}
288 | cpu: [arm64]
289 | os: [win32]
290 |
291 | '@next/swc-win32-x64-msvc@15.1.6':
292 | resolution: {integrity: sha512-6xomMuu54FAFxttYr5PJbEfu96godcxBTRk1OhAvJq0/EnmFU/Ybiax30Snis4vdWZ9LGpf7Roy5fSs7v/5ROQ==}
293 | engines: {node: '>= 10'}
294 | cpu: [x64]
295 | os: [win32]
296 |
297 | '@nodelib/fs.scandir@2.1.5':
298 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
299 | engines: {node: '>= 8'}
300 |
301 | '@nodelib/fs.stat@2.0.5':
302 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
303 | engines: {node: '>= 8'}
304 |
305 | '@nodelib/fs.walk@1.2.8':
306 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
307 | engines: {node: '>= 8'}
308 |
309 | '@nolyfill/is-core-module@1.0.39':
310 | resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
311 | engines: {node: '>=12.4.0'}
312 |
313 | '@pkgjs/parseargs@0.11.0':
314 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
315 | engines: {node: '>=14'}
316 |
317 | '@rtsao/scc@1.1.0':
318 | resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
319 |
320 | '@rushstack/eslint-patch@1.10.5':
321 | resolution: {integrity: sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==}
322 |
323 | '@swc/counter@0.1.3':
324 | resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
325 |
326 | '@swc/helpers@0.5.15':
327 | resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
328 |
329 | '@types/estree@1.0.6':
330 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
331 |
332 | '@types/json-schema@7.0.15':
333 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
334 |
335 | '@types/json5@0.0.29':
336 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
337 |
338 | '@types/node@20.17.17':
339 | resolution: {integrity: sha512-/WndGO4kIfMicEQLTi/mDANUu/iVUhT7KboZPdEqqHQ4aTS+3qT3U5gIqWDFV+XouorjfgGqvKILJeHhuQgFYg==}
340 |
341 | '@types/react-dom@19.0.3':
342 | resolution: {integrity: sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==}
343 | peerDependencies:
344 | '@types/react': ^19.0.0
345 |
346 | '@types/react@19.0.8':
347 | resolution: {integrity: sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw==}
348 |
349 | '@typescript-eslint/eslint-plugin@8.23.0':
350 | resolution: {integrity: sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==}
351 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
352 | peerDependencies:
353 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
354 | eslint: ^8.57.0 || ^9.0.0
355 | typescript: '>=4.8.4 <5.8.0'
356 |
357 | '@typescript-eslint/parser@8.23.0':
358 | resolution: {integrity: sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==}
359 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
360 | peerDependencies:
361 | eslint: ^8.57.0 || ^9.0.0
362 | typescript: '>=4.8.4 <5.8.0'
363 |
364 | '@typescript-eslint/scope-manager@8.23.0':
365 | resolution: {integrity: sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==}
366 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
367 |
368 | '@typescript-eslint/type-utils@8.23.0':
369 | resolution: {integrity: sha512-iIuLdYpQWZKbiH+RkCGc6iu+VwscP5rCtQ1lyQ7TYuKLrcZoeJVpcLiG8DliXVkUxirW/PWlmS+d6yD51L9jvA==}
370 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
371 | peerDependencies:
372 | eslint: ^8.57.0 || ^9.0.0
373 | typescript: '>=4.8.4 <5.8.0'
374 |
375 | '@typescript-eslint/types@8.23.0':
376 | resolution: {integrity: sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==}
377 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
378 |
379 | '@typescript-eslint/typescript-estree@8.23.0':
380 | resolution: {integrity: sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==}
381 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
382 | peerDependencies:
383 | typescript: '>=4.8.4 <5.8.0'
384 |
385 | '@typescript-eslint/utils@8.23.0':
386 | resolution: {integrity: sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==}
387 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
388 | peerDependencies:
389 | eslint: ^8.57.0 || ^9.0.0
390 | typescript: '>=4.8.4 <5.8.0'
391 |
392 | '@typescript-eslint/visitor-keys@8.23.0':
393 | resolution: {integrity: sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==}
394 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
395 |
396 | acorn-jsx@5.3.2:
397 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
398 | peerDependencies:
399 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
400 |
401 | acorn@8.14.0:
402 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
403 | engines: {node: '>=0.4.0'}
404 | hasBin: true
405 |
406 | ajv@6.12.6:
407 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
408 |
409 | ansi-regex@5.0.1:
410 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
411 | engines: {node: '>=8'}
412 |
413 | ansi-regex@6.1.0:
414 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
415 | engines: {node: '>=12'}
416 |
417 | ansi-styles@4.3.0:
418 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
419 | engines: {node: '>=8'}
420 |
421 | ansi-styles@6.2.1:
422 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
423 | engines: {node: '>=12'}
424 |
425 | any-promise@1.3.0:
426 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
427 |
428 | anymatch@3.1.3:
429 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
430 | engines: {node: '>= 8'}
431 |
432 | arg@5.0.2:
433 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
434 |
435 | argparse@2.0.1:
436 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
437 |
438 | aria-query@5.3.2:
439 | resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
440 | engines: {node: '>= 0.4'}
441 |
442 | array-buffer-byte-length@1.0.2:
443 | resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
444 | engines: {node: '>= 0.4'}
445 |
446 | array-includes@3.1.8:
447 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
448 | engines: {node: '>= 0.4'}
449 |
450 | array.prototype.findlast@1.2.5:
451 | resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
452 | engines: {node: '>= 0.4'}
453 |
454 | array.prototype.findlastindex@1.2.5:
455 | resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==}
456 | engines: {node: '>= 0.4'}
457 |
458 | array.prototype.flat@1.3.3:
459 | resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
460 | engines: {node: '>= 0.4'}
461 |
462 | array.prototype.flatmap@1.3.3:
463 | resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
464 | engines: {node: '>= 0.4'}
465 |
466 | array.prototype.tosorted@1.1.4:
467 | resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
468 | engines: {node: '>= 0.4'}
469 |
470 | arraybuffer.prototype.slice@1.0.4:
471 | resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
472 | engines: {node: '>= 0.4'}
473 |
474 | ast-types-flow@0.0.8:
475 | resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
476 |
477 | async-function@1.0.0:
478 | resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
479 | engines: {node: '>= 0.4'}
480 |
481 | available-typed-arrays@1.0.7:
482 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
483 | engines: {node: '>= 0.4'}
484 |
485 | axe-core@4.10.2:
486 | resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==}
487 | engines: {node: '>=4'}
488 |
489 | axobject-query@4.1.0:
490 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
491 | engines: {node: '>= 0.4'}
492 |
493 | balanced-match@1.0.2:
494 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
495 |
496 | binary-extensions@2.3.0:
497 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
498 | engines: {node: '>=8'}
499 |
500 | brace-expansion@1.1.11:
501 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
502 |
503 | brace-expansion@2.0.1:
504 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
505 |
506 | braces@3.0.3:
507 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
508 | engines: {node: '>=8'}
509 |
510 | busboy@1.6.0:
511 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
512 | engines: {node: '>=10.16.0'}
513 |
514 | call-bind-apply-helpers@1.0.1:
515 | resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==}
516 | engines: {node: '>= 0.4'}
517 |
518 | call-bind@1.0.8:
519 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
520 | engines: {node: '>= 0.4'}
521 |
522 | call-bound@1.0.3:
523 | resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==}
524 | engines: {node: '>= 0.4'}
525 |
526 | callsites@3.1.0:
527 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
528 | engines: {node: '>=6'}
529 |
530 | camelcase-css@2.0.1:
531 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
532 | engines: {node: '>= 6'}
533 |
534 | caniuse-lite@1.0.30001699:
535 | resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==}
536 |
537 | chalk@4.1.2:
538 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
539 | engines: {node: '>=10'}
540 |
541 | chokidar@3.6.0:
542 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
543 | engines: {node: '>= 8.10.0'}
544 |
545 | client-only@0.0.1:
546 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
547 |
548 | color-convert@2.0.1:
549 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
550 | engines: {node: '>=7.0.0'}
551 |
552 | color-name@1.1.4:
553 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
554 |
555 | color-string@1.9.1:
556 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
557 |
558 | color@4.2.3:
559 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
560 | engines: {node: '>=12.5.0'}
561 |
562 | commander@4.1.1:
563 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
564 | engines: {node: '>= 6'}
565 |
566 | concat-map@0.0.1:
567 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
568 |
569 | cross-spawn@7.0.6:
570 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
571 | engines: {node: '>= 8'}
572 |
573 | cssesc@3.0.0:
574 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
575 | engines: {node: '>=4'}
576 | hasBin: true
577 |
578 | csstype@3.1.3:
579 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
580 |
581 | damerau-levenshtein@1.0.8:
582 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
583 |
584 | data-view-buffer@1.0.2:
585 | resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
586 | engines: {node: '>= 0.4'}
587 |
588 | data-view-byte-length@1.0.2:
589 | resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
590 | engines: {node: '>= 0.4'}
591 |
592 | data-view-byte-offset@1.0.1:
593 | resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
594 | engines: {node: '>= 0.4'}
595 |
596 | debug@3.2.7:
597 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
598 | peerDependencies:
599 | supports-color: '*'
600 | peerDependenciesMeta:
601 | supports-color:
602 | optional: true
603 |
604 | debug@4.4.0:
605 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
606 | engines: {node: '>=6.0'}
607 | peerDependencies:
608 | supports-color: '*'
609 | peerDependenciesMeta:
610 | supports-color:
611 | optional: true
612 |
613 | deep-is@0.1.4:
614 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
615 |
616 | define-data-property@1.1.4:
617 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
618 | engines: {node: '>= 0.4'}
619 |
620 | define-properties@1.2.1:
621 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
622 | engines: {node: '>= 0.4'}
623 |
624 | detect-libc@2.0.3:
625 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
626 | engines: {node: '>=8'}
627 |
628 | didyoumean@1.2.2:
629 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
630 |
631 | dlv@1.1.3:
632 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
633 |
634 | doctrine@2.1.0:
635 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
636 | engines: {node: '>=0.10.0'}
637 |
638 | dunder-proto@1.0.1:
639 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
640 | engines: {node: '>= 0.4'}
641 |
642 | eastasianwidth@0.2.0:
643 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
644 |
645 | emoji-regex@8.0.0:
646 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
647 |
648 | emoji-regex@9.2.2:
649 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
650 |
651 | enhanced-resolve@5.18.1:
652 | resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
653 | engines: {node: '>=10.13.0'}
654 |
655 | es-abstract@1.23.9:
656 | resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==}
657 | engines: {node: '>= 0.4'}
658 |
659 | es-define-property@1.0.1:
660 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
661 | engines: {node: '>= 0.4'}
662 |
663 | es-errors@1.3.0:
664 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
665 | engines: {node: '>= 0.4'}
666 |
667 | es-iterator-helpers@1.2.1:
668 | resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==}
669 | engines: {node: '>= 0.4'}
670 |
671 | es-object-atoms@1.1.1:
672 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
673 | engines: {node: '>= 0.4'}
674 |
675 | es-set-tostringtag@2.1.0:
676 | resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
677 | engines: {node: '>= 0.4'}
678 |
679 | es-shim-unscopables@1.0.2:
680 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
681 |
682 | es-to-primitive@1.3.0:
683 | resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
684 | engines: {node: '>= 0.4'}
685 |
686 | escape-string-regexp@4.0.0:
687 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
688 | engines: {node: '>=10'}
689 |
690 | eslint-config-next@15.1.6:
691 | resolution: {integrity: sha512-Wd1uy6y7nBbXUSg9QAuQ+xYEKli5CgUhLjz1QHW11jLDis5vK5XB3PemL6jEmy7HrdhaRFDz+GTZ/3FoH+EUjg==}
692 | peerDependencies:
693 | eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
694 | typescript: '>=3.3.1'
695 | peerDependenciesMeta:
696 | typescript:
697 | optional: true
698 |
699 | eslint-import-resolver-node@0.3.9:
700 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
701 |
702 | eslint-import-resolver-typescript@3.7.0:
703 | resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==}
704 | engines: {node: ^14.18.0 || >=16.0.0}
705 | peerDependencies:
706 | eslint: '*'
707 | eslint-plugin-import: '*'
708 | eslint-plugin-import-x: '*'
709 | peerDependenciesMeta:
710 | eslint-plugin-import:
711 | optional: true
712 | eslint-plugin-import-x:
713 | optional: true
714 |
715 | eslint-module-utils@2.12.0:
716 | resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==}
717 | engines: {node: '>=4'}
718 | peerDependencies:
719 | '@typescript-eslint/parser': '*'
720 | eslint: '*'
721 | eslint-import-resolver-node: '*'
722 | eslint-import-resolver-typescript: '*'
723 | eslint-import-resolver-webpack: '*'
724 | peerDependenciesMeta:
725 | '@typescript-eslint/parser':
726 | optional: true
727 | eslint:
728 | optional: true
729 | eslint-import-resolver-node:
730 | optional: true
731 | eslint-import-resolver-typescript:
732 | optional: true
733 | eslint-import-resolver-webpack:
734 | optional: true
735 |
736 | eslint-plugin-import@2.31.0:
737 | resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==}
738 | engines: {node: '>=4'}
739 | peerDependencies:
740 | '@typescript-eslint/parser': '*'
741 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
742 | peerDependenciesMeta:
743 | '@typescript-eslint/parser':
744 | optional: true
745 |
746 | eslint-plugin-jsx-a11y@6.10.2:
747 | resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==}
748 | engines: {node: '>=4.0'}
749 | peerDependencies:
750 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
751 |
752 | eslint-plugin-react-hooks@5.1.0:
753 | resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==}
754 | engines: {node: '>=10'}
755 | peerDependencies:
756 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
757 |
758 | eslint-plugin-react@7.37.4:
759 | resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==}
760 | engines: {node: '>=4'}
761 | peerDependencies:
762 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
763 |
764 | eslint-scope@8.2.0:
765 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==}
766 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
767 |
768 | eslint-visitor-keys@3.4.3:
769 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
770 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
771 |
772 | eslint-visitor-keys@4.2.0:
773 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
774 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
775 |
776 | eslint@9.20.0:
777 | resolution: {integrity: sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==}
778 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
779 | hasBin: true
780 | peerDependencies:
781 | jiti: '*'
782 | peerDependenciesMeta:
783 | jiti:
784 | optional: true
785 |
786 | espree@10.3.0:
787 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
788 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
789 |
790 | esquery@1.6.0:
791 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
792 | engines: {node: '>=0.10'}
793 |
794 | esrecurse@4.3.0:
795 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
796 | engines: {node: '>=4.0'}
797 |
798 | estraverse@5.3.0:
799 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
800 | engines: {node: '>=4.0'}
801 |
802 | esutils@2.0.3:
803 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
804 | engines: {node: '>=0.10.0'}
805 |
806 | fast-deep-equal@3.1.3:
807 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
808 |
809 | fast-glob@3.3.1:
810 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
811 | engines: {node: '>=8.6.0'}
812 |
813 | fast-glob@3.3.3:
814 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
815 | engines: {node: '>=8.6.0'}
816 |
817 | fast-json-stable-stringify@2.1.0:
818 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
819 |
820 | fast-levenshtein@2.0.6:
821 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
822 |
823 | fastq@1.19.0:
824 | resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==}
825 |
826 | file-entry-cache@8.0.0:
827 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
828 | engines: {node: '>=16.0.0'}
829 |
830 | fill-range@7.1.1:
831 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
832 | engines: {node: '>=8'}
833 |
834 | find-up@5.0.0:
835 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
836 | engines: {node: '>=10'}
837 |
838 | flat-cache@4.0.1:
839 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
840 | engines: {node: '>=16'}
841 |
842 | flatted@3.3.2:
843 | resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
844 |
845 | for-each@0.3.4:
846 | resolution: {integrity: sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==}
847 | engines: {node: '>= 0.4'}
848 |
849 | foreground-child@3.3.0:
850 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
851 | engines: {node: '>=14'}
852 |
853 | fsevents@2.3.3:
854 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
855 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
856 | os: [darwin]
857 |
858 | function-bind@1.1.2:
859 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
860 |
861 | function.prototype.name@1.1.8:
862 | resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
863 | engines: {node: '>= 0.4'}
864 |
865 | functions-have-names@1.2.3:
866 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
867 |
868 | get-intrinsic@1.2.7:
869 | resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==}
870 | engines: {node: '>= 0.4'}
871 |
872 | get-proto@1.0.1:
873 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
874 | engines: {node: '>= 0.4'}
875 |
876 | get-symbol-description@1.1.0:
877 | resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
878 | engines: {node: '>= 0.4'}
879 |
880 | get-tsconfig@4.10.0:
881 | resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==}
882 |
883 | glob-parent@5.1.2:
884 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
885 | engines: {node: '>= 6'}
886 |
887 | glob-parent@6.0.2:
888 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
889 | engines: {node: '>=10.13.0'}
890 |
891 | glob@10.4.5:
892 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
893 | hasBin: true
894 |
895 | globals@14.0.0:
896 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
897 | engines: {node: '>=18'}
898 |
899 | globalthis@1.0.4:
900 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
901 | engines: {node: '>= 0.4'}
902 |
903 | gopd@1.2.0:
904 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
905 | engines: {node: '>= 0.4'}
906 |
907 | graceful-fs@4.2.11:
908 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
909 |
910 | graphemer@1.4.0:
911 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
912 |
913 | has-bigints@1.1.0:
914 | resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
915 | engines: {node: '>= 0.4'}
916 |
917 | has-flag@4.0.0:
918 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
919 | engines: {node: '>=8'}
920 |
921 | has-property-descriptors@1.0.2:
922 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
923 |
924 | has-proto@1.2.0:
925 | resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
926 | engines: {node: '>= 0.4'}
927 |
928 | has-symbols@1.1.0:
929 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
930 | engines: {node: '>= 0.4'}
931 |
932 | has-tostringtag@1.0.2:
933 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
934 | engines: {node: '>= 0.4'}
935 |
936 | hasown@2.0.2:
937 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
938 | engines: {node: '>= 0.4'}
939 |
940 | ignore@5.3.2:
941 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
942 | engines: {node: '>= 4'}
943 |
944 | import-fresh@3.3.1:
945 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
946 | engines: {node: '>=6'}
947 |
948 | imurmurhash@0.1.4:
949 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
950 | engines: {node: '>=0.8.19'}
951 |
952 | internal-slot@1.1.0:
953 | resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
954 | engines: {node: '>= 0.4'}
955 |
956 | is-array-buffer@3.0.5:
957 | resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
958 | engines: {node: '>= 0.4'}
959 |
960 | is-arrayish@0.3.2:
961 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
962 |
963 | is-async-function@2.1.1:
964 | resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
965 | engines: {node: '>= 0.4'}
966 |
967 | is-bigint@1.1.0:
968 | resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
969 | engines: {node: '>= 0.4'}
970 |
971 | is-binary-path@2.1.0:
972 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
973 | engines: {node: '>=8'}
974 |
975 | is-boolean-object@1.2.2:
976 | resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
977 | engines: {node: '>= 0.4'}
978 |
979 | is-bun-module@1.3.0:
980 | resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==}
981 |
982 | is-callable@1.2.7:
983 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
984 | engines: {node: '>= 0.4'}
985 |
986 | is-core-module@2.16.1:
987 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
988 | engines: {node: '>= 0.4'}
989 |
990 | is-data-view@1.0.2:
991 | resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
992 | engines: {node: '>= 0.4'}
993 |
994 | is-date-object@1.1.0:
995 | resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
996 | engines: {node: '>= 0.4'}
997 |
998 | is-extglob@2.1.1:
999 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1000 | engines: {node: '>=0.10.0'}
1001 |
1002 | is-finalizationregistry@1.1.1:
1003 | resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
1004 | engines: {node: '>= 0.4'}
1005 |
1006 | is-fullwidth-code-point@3.0.0:
1007 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1008 | engines: {node: '>=8'}
1009 |
1010 | is-generator-function@1.1.0:
1011 | resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
1012 | engines: {node: '>= 0.4'}
1013 |
1014 | is-glob@4.0.3:
1015 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1016 | engines: {node: '>=0.10.0'}
1017 |
1018 | is-map@2.0.3:
1019 | resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
1020 | engines: {node: '>= 0.4'}
1021 |
1022 | is-number-object@1.1.1:
1023 | resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
1024 | engines: {node: '>= 0.4'}
1025 |
1026 | is-number@7.0.0:
1027 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1028 | engines: {node: '>=0.12.0'}
1029 |
1030 | is-regex@1.2.1:
1031 | resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
1032 | engines: {node: '>= 0.4'}
1033 |
1034 | is-set@2.0.3:
1035 | resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
1036 | engines: {node: '>= 0.4'}
1037 |
1038 | is-shared-array-buffer@1.0.4:
1039 | resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
1040 | engines: {node: '>= 0.4'}
1041 |
1042 | is-string@1.1.1:
1043 | resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
1044 | engines: {node: '>= 0.4'}
1045 |
1046 | is-symbol@1.1.1:
1047 | resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
1048 | engines: {node: '>= 0.4'}
1049 |
1050 | is-typed-array@1.1.15:
1051 | resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
1052 | engines: {node: '>= 0.4'}
1053 |
1054 | is-weakmap@2.0.2:
1055 | resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
1056 | engines: {node: '>= 0.4'}
1057 |
1058 | is-weakref@1.1.1:
1059 | resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
1060 | engines: {node: '>= 0.4'}
1061 |
1062 | is-weakset@2.0.4:
1063 | resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
1064 | engines: {node: '>= 0.4'}
1065 |
1066 | isarray@2.0.5:
1067 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
1068 |
1069 | isexe@2.0.0:
1070 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1071 |
1072 | iterator.prototype@1.1.5:
1073 | resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
1074 | engines: {node: '>= 0.4'}
1075 |
1076 | jackspeak@3.4.3:
1077 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
1078 |
1079 | jiti@1.21.7:
1080 | resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
1081 | hasBin: true
1082 |
1083 | js-tokens@4.0.0:
1084 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1085 |
1086 | js-yaml@4.1.0:
1087 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1088 | hasBin: true
1089 |
1090 | json-buffer@3.0.1:
1091 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1092 |
1093 | json-schema-traverse@0.4.1:
1094 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1095 |
1096 | json-stable-stringify-without-jsonify@1.0.1:
1097 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1098 |
1099 | json5@1.0.2:
1100 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
1101 | hasBin: true
1102 |
1103 | jsx-ast-utils@3.3.5:
1104 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
1105 | engines: {node: '>=4.0'}
1106 |
1107 | keyv@4.5.4:
1108 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1109 |
1110 | language-subtag-registry@0.3.23:
1111 | resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
1112 |
1113 | language-tags@1.0.9:
1114 | resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
1115 | engines: {node: '>=0.10'}
1116 |
1117 | levn@0.4.1:
1118 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1119 | engines: {node: '>= 0.8.0'}
1120 |
1121 | lilconfig@3.1.3:
1122 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
1123 | engines: {node: '>=14'}
1124 |
1125 | lines-and-columns@1.2.4:
1126 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1127 |
1128 | locate-path@6.0.0:
1129 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1130 | engines: {node: '>=10'}
1131 |
1132 | lodash.merge@4.6.2:
1133 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1134 |
1135 | loose-envify@1.4.0:
1136 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1137 | hasBin: true
1138 |
1139 | lru-cache@10.4.3:
1140 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
1141 |
1142 | math-intrinsics@1.1.0:
1143 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
1144 | engines: {node: '>= 0.4'}
1145 |
1146 | merge2@1.4.1:
1147 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1148 | engines: {node: '>= 8'}
1149 |
1150 | micromatch@4.0.8:
1151 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
1152 | engines: {node: '>=8.6'}
1153 |
1154 | minimatch@3.1.2:
1155 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1156 |
1157 | minimatch@9.0.5:
1158 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
1159 | engines: {node: '>=16 || 14 >=14.17'}
1160 |
1161 | minimist@1.2.8:
1162 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1163 |
1164 | minipass@7.1.2:
1165 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
1166 | engines: {node: '>=16 || 14 >=14.17'}
1167 |
1168 | ms@2.1.3:
1169 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1170 |
1171 | mz@2.7.0:
1172 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1173 |
1174 | nanoid@3.3.8:
1175 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
1176 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1177 | hasBin: true
1178 |
1179 | natural-compare@1.4.0:
1180 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1181 |
1182 | next@15.1.6:
1183 | resolution: {integrity: sha512-Hch4wzbaX0vKQtalpXvUiw5sYivBy4cm5rzUKrBnUB/y436LGrvOUqYvlSeNVCWFO/770gDlltR9gqZH62ct4Q==}
1184 | engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
1185 | hasBin: true
1186 | peerDependencies:
1187 | '@opentelemetry/api': ^1.1.0
1188 | '@playwright/test': ^1.41.2
1189 | babel-plugin-react-compiler: '*'
1190 | react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
1191 | react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
1192 | sass: ^1.3.0
1193 | peerDependenciesMeta:
1194 | '@opentelemetry/api':
1195 | optional: true
1196 | '@playwright/test':
1197 | optional: true
1198 | babel-plugin-react-compiler:
1199 | optional: true
1200 | sass:
1201 | optional: true
1202 |
1203 | normalize-path@3.0.0:
1204 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1205 | engines: {node: '>=0.10.0'}
1206 |
1207 | object-assign@4.1.1:
1208 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1209 | engines: {node: '>=0.10.0'}
1210 |
1211 | object-hash@3.0.0:
1212 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
1213 | engines: {node: '>= 6'}
1214 |
1215 | object-inspect@1.13.4:
1216 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
1217 | engines: {node: '>= 0.4'}
1218 |
1219 | object-keys@1.1.1:
1220 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1221 | engines: {node: '>= 0.4'}
1222 |
1223 | object.assign@4.1.7:
1224 | resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
1225 | engines: {node: '>= 0.4'}
1226 |
1227 | object.entries@1.1.8:
1228 | resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==}
1229 | engines: {node: '>= 0.4'}
1230 |
1231 | object.fromentries@2.0.8:
1232 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
1233 | engines: {node: '>= 0.4'}
1234 |
1235 | object.groupby@1.0.3:
1236 | resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
1237 | engines: {node: '>= 0.4'}
1238 |
1239 | object.values@1.2.1:
1240 | resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
1241 | engines: {node: '>= 0.4'}
1242 |
1243 | optionator@0.9.4:
1244 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1245 | engines: {node: '>= 0.8.0'}
1246 |
1247 | own-keys@1.0.1:
1248 | resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
1249 | engines: {node: '>= 0.4'}
1250 |
1251 | p-limit@3.1.0:
1252 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1253 | engines: {node: '>=10'}
1254 |
1255 | p-locate@5.0.0:
1256 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1257 | engines: {node: '>=10'}
1258 |
1259 | package-json-from-dist@1.0.1:
1260 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
1261 |
1262 | parent-module@1.0.1:
1263 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1264 | engines: {node: '>=6'}
1265 |
1266 | path-exists@4.0.0:
1267 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1268 | engines: {node: '>=8'}
1269 |
1270 | path-key@3.1.1:
1271 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1272 | engines: {node: '>=8'}
1273 |
1274 | path-parse@1.0.7:
1275 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1276 |
1277 | path-scurry@1.11.1:
1278 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
1279 | engines: {node: '>=16 || 14 >=14.18'}
1280 |
1281 | picocolors@1.1.1:
1282 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1283 |
1284 | picomatch@2.3.1:
1285 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1286 | engines: {node: '>=8.6'}
1287 |
1288 | pify@2.3.0:
1289 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
1290 | engines: {node: '>=0.10.0'}
1291 |
1292 | pirates@4.0.6:
1293 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1294 | engines: {node: '>= 6'}
1295 |
1296 | possible-typed-array-names@1.1.0:
1297 | resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
1298 | engines: {node: '>= 0.4'}
1299 |
1300 | postcss-import@15.1.0:
1301 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
1302 | engines: {node: '>=14.0.0'}
1303 | peerDependencies:
1304 | postcss: ^8.0.0
1305 |
1306 | postcss-js@4.0.1:
1307 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
1308 | engines: {node: ^12 || ^14 || >= 16}
1309 | peerDependencies:
1310 | postcss: ^8.4.21
1311 |
1312 | postcss-load-config@4.0.2:
1313 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
1314 | engines: {node: '>= 14'}
1315 | peerDependencies:
1316 | postcss: '>=8.0.9'
1317 | ts-node: '>=9.0.0'
1318 | peerDependenciesMeta:
1319 | postcss:
1320 | optional: true
1321 | ts-node:
1322 | optional: true
1323 |
1324 | postcss-nested@6.2.0:
1325 | resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
1326 | engines: {node: '>=12.0'}
1327 | peerDependencies:
1328 | postcss: ^8.2.14
1329 |
1330 | postcss-selector-parser@6.1.2:
1331 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
1332 | engines: {node: '>=4'}
1333 |
1334 | postcss-value-parser@4.2.0:
1335 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1336 |
1337 | postcss@8.4.31:
1338 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
1339 | engines: {node: ^10 || ^12 || >=14}
1340 |
1341 | postcss@8.5.1:
1342 | resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==}
1343 | engines: {node: ^10 || ^12 || >=14}
1344 |
1345 | prelude-ls@1.2.1:
1346 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1347 | engines: {node: '>= 0.8.0'}
1348 |
1349 | prop-types@15.8.1:
1350 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
1351 |
1352 | punycode@2.3.1:
1353 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1354 | engines: {node: '>=6'}
1355 |
1356 | queue-microtask@1.2.3:
1357 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1358 |
1359 | react-dom@19.0.0:
1360 | resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
1361 | peerDependencies:
1362 | react: ^19.0.0
1363 |
1364 | react-is@16.13.1:
1365 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
1366 |
1367 | react@19.0.0:
1368 | resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
1369 | engines: {node: '>=0.10.0'}
1370 |
1371 | read-cache@1.0.0:
1372 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
1373 |
1374 | readdirp@3.6.0:
1375 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1376 | engines: {node: '>=8.10.0'}
1377 |
1378 | reflect.getprototypeof@1.0.10:
1379 | resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
1380 | engines: {node: '>= 0.4'}
1381 |
1382 | regexp.prototype.flags@1.5.4:
1383 | resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
1384 | engines: {node: '>= 0.4'}
1385 |
1386 | resolve-from@4.0.0:
1387 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1388 | engines: {node: '>=4'}
1389 |
1390 | resolve-pkg-maps@1.0.0:
1391 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
1392 |
1393 | resolve@1.22.10:
1394 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
1395 | engines: {node: '>= 0.4'}
1396 | hasBin: true
1397 |
1398 | resolve@2.0.0-next.5:
1399 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
1400 | hasBin: true
1401 |
1402 | reusify@1.0.4:
1403 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1404 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1405 |
1406 | run-parallel@1.2.0:
1407 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1408 |
1409 | safe-array-concat@1.1.3:
1410 | resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
1411 | engines: {node: '>=0.4'}
1412 |
1413 | safe-push-apply@1.0.0:
1414 | resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
1415 | engines: {node: '>= 0.4'}
1416 |
1417 | safe-regex-test@1.1.0:
1418 | resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
1419 | engines: {node: '>= 0.4'}
1420 |
1421 | scheduler@0.25.0:
1422 | resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
1423 |
1424 | semver@6.3.1:
1425 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
1426 | hasBin: true
1427 |
1428 | semver@7.7.1:
1429 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
1430 | engines: {node: '>=10'}
1431 | hasBin: true
1432 |
1433 | set-function-length@1.2.2:
1434 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
1435 | engines: {node: '>= 0.4'}
1436 |
1437 | set-function-name@2.0.2:
1438 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
1439 | engines: {node: '>= 0.4'}
1440 |
1441 | set-proto@1.0.0:
1442 | resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
1443 | engines: {node: '>= 0.4'}
1444 |
1445 | sharp@0.33.5:
1446 | resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
1447 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
1448 |
1449 | shebang-command@2.0.0:
1450 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1451 | engines: {node: '>=8'}
1452 |
1453 | shebang-regex@3.0.0:
1454 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1455 | engines: {node: '>=8'}
1456 |
1457 | side-channel-list@1.0.0:
1458 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
1459 | engines: {node: '>= 0.4'}
1460 |
1461 | side-channel-map@1.0.1:
1462 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
1463 | engines: {node: '>= 0.4'}
1464 |
1465 | side-channel-weakmap@1.0.2:
1466 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
1467 | engines: {node: '>= 0.4'}
1468 |
1469 | side-channel@1.1.0:
1470 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
1471 | engines: {node: '>= 0.4'}
1472 |
1473 | signal-exit@4.1.0:
1474 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1475 | engines: {node: '>=14'}
1476 |
1477 | simple-swizzle@0.2.2:
1478 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
1479 |
1480 | source-map-js@1.2.1:
1481 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1482 | engines: {node: '>=0.10.0'}
1483 |
1484 | stable-hash@0.0.4:
1485 | resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==}
1486 |
1487 | streamsearch@1.1.0:
1488 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
1489 | engines: {node: '>=10.0.0'}
1490 |
1491 | string-width@4.2.3:
1492 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1493 | engines: {node: '>=8'}
1494 |
1495 | string-width@5.1.2:
1496 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1497 | engines: {node: '>=12'}
1498 |
1499 | string.prototype.includes@2.0.1:
1500 | resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
1501 | engines: {node: '>= 0.4'}
1502 |
1503 | string.prototype.matchall@4.0.12:
1504 | resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
1505 | engines: {node: '>= 0.4'}
1506 |
1507 | string.prototype.repeat@1.0.0:
1508 | resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
1509 |
1510 | string.prototype.trim@1.2.10:
1511 | resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
1512 | engines: {node: '>= 0.4'}
1513 |
1514 | string.prototype.trimend@1.0.9:
1515 | resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
1516 | engines: {node: '>= 0.4'}
1517 |
1518 | string.prototype.trimstart@1.0.8:
1519 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
1520 | engines: {node: '>= 0.4'}
1521 |
1522 | strip-ansi@6.0.1:
1523 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1524 | engines: {node: '>=8'}
1525 |
1526 | strip-ansi@7.1.0:
1527 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1528 | engines: {node: '>=12'}
1529 |
1530 | strip-bom@3.0.0:
1531 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1532 | engines: {node: '>=4'}
1533 |
1534 | strip-json-comments@3.1.1:
1535 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
1536 | engines: {node: '>=8'}
1537 |
1538 | styled-jsx@5.1.6:
1539 | resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
1540 | engines: {node: '>= 12.0.0'}
1541 | peerDependencies:
1542 | '@babel/core': '*'
1543 | babel-plugin-macros: '*'
1544 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
1545 | peerDependenciesMeta:
1546 | '@babel/core':
1547 | optional: true
1548 | babel-plugin-macros:
1549 | optional: true
1550 |
1551 | sucrase@3.35.0:
1552 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
1553 | engines: {node: '>=16 || 14 >=14.17'}
1554 | hasBin: true
1555 |
1556 | supports-color@7.2.0:
1557 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1558 | engines: {node: '>=8'}
1559 |
1560 | supports-preserve-symlinks-flag@1.0.0:
1561 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1562 | engines: {node: '>= 0.4'}
1563 |
1564 | tailwindcss@3.4.17:
1565 | resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==}
1566 | engines: {node: '>=14.0.0'}
1567 | hasBin: true
1568 |
1569 | tapable@2.2.1:
1570 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
1571 | engines: {node: '>=6'}
1572 |
1573 | thenify-all@1.6.0:
1574 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
1575 | engines: {node: '>=0.8'}
1576 |
1577 | thenify@3.3.1:
1578 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1579 |
1580 | to-regex-range@5.0.1:
1581 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1582 | engines: {node: '>=8.0'}
1583 |
1584 | ts-api-utils@2.0.1:
1585 | resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==}
1586 | engines: {node: '>=18.12'}
1587 | peerDependencies:
1588 | typescript: '>=4.8.4'
1589 |
1590 | ts-interface-checker@0.1.13:
1591 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
1592 |
1593 | tsconfig-paths@3.15.0:
1594 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
1595 |
1596 | tslib@2.8.1:
1597 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
1598 |
1599 | type-check@0.4.0:
1600 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1601 | engines: {node: '>= 0.8.0'}
1602 |
1603 | typed-array-buffer@1.0.3:
1604 | resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
1605 | engines: {node: '>= 0.4'}
1606 |
1607 | typed-array-byte-length@1.0.3:
1608 | resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
1609 | engines: {node: '>= 0.4'}
1610 |
1611 | typed-array-byte-offset@1.0.4:
1612 | resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
1613 | engines: {node: '>= 0.4'}
1614 |
1615 | typed-array-length@1.0.7:
1616 | resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
1617 | engines: {node: '>= 0.4'}
1618 |
1619 | typescript@5.7.3:
1620 | resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
1621 | engines: {node: '>=14.17'}
1622 | hasBin: true
1623 |
1624 | unbox-primitive@1.1.0:
1625 | resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
1626 | engines: {node: '>= 0.4'}
1627 |
1628 | undici-types@6.19.8:
1629 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
1630 |
1631 | uri-js@4.4.1:
1632 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1633 |
1634 | util-deprecate@1.0.2:
1635 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1636 |
1637 | which-boxed-primitive@1.1.1:
1638 | resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
1639 | engines: {node: '>= 0.4'}
1640 |
1641 | which-builtin-type@1.2.1:
1642 | resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
1643 | engines: {node: '>= 0.4'}
1644 |
1645 | which-collection@1.0.2:
1646 | resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
1647 | engines: {node: '>= 0.4'}
1648 |
1649 | which-typed-array@1.1.18:
1650 | resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==}
1651 | engines: {node: '>= 0.4'}
1652 |
1653 | which@2.0.2:
1654 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1655 | engines: {node: '>= 8'}
1656 | hasBin: true
1657 |
1658 | word-wrap@1.2.5:
1659 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1660 | engines: {node: '>=0.10.0'}
1661 |
1662 | wrap-ansi@7.0.0:
1663 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1664 | engines: {node: '>=10'}
1665 |
1666 | wrap-ansi@8.1.0:
1667 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
1668 | engines: {node: '>=12'}
1669 |
1670 | yaml@2.7.0:
1671 | resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==}
1672 | engines: {node: '>= 14'}
1673 | hasBin: true
1674 |
1675 | yocto-queue@0.1.0:
1676 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1677 | engines: {node: '>=10'}
1678 |
1679 | snapshots:
1680 |
1681 | '@alloc/quick-lru@5.2.0': {}
1682 |
1683 | '@emnapi/runtime@1.3.1':
1684 | dependencies:
1685 | tslib: 2.8.1
1686 | optional: true
1687 |
1688 | '@eslint-community/eslint-utils@4.4.1(eslint@9.20.0(jiti@1.21.7))':
1689 | dependencies:
1690 | eslint: 9.20.0(jiti@1.21.7)
1691 | eslint-visitor-keys: 3.4.3
1692 |
1693 | '@eslint-community/regexpp@4.12.1': {}
1694 |
1695 | '@eslint/config-array@0.19.2':
1696 | dependencies:
1697 | '@eslint/object-schema': 2.1.6
1698 | debug: 4.4.0
1699 | minimatch: 3.1.2
1700 | transitivePeerDependencies:
1701 | - supports-color
1702 |
1703 | '@eslint/core@0.10.0':
1704 | dependencies:
1705 | '@types/json-schema': 7.0.15
1706 |
1707 | '@eslint/core@0.11.0':
1708 | dependencies:
1709 | '@types/json-schema': 7.0.15
1710 |
1711 | '@eslint/eslintrc@3.2.0':
1712 | dependencies:
1713 | ajv: 6.12.6
1714 | debug: 4.4.0
1715 | espree: 10.3.0
1716 | globals: 14.0.0
1717 | ignore: 5.3.2
1718 | import-fresh: 3.3.1
1719 | js-yaml: 4.1.0
1720 | minimatch: 3.1.2
1721 | strip-json-comments: 3.1.1
1722 | transitivePeerDependencies:
1723 | - supports-color
1724 |
1725 | '@eslint/js@9.20.0': {}
1726 |
1727 | '@eslint/object-schema@2.1.6': {}
1728 |
1729 | '@eslint/plugin-kit@0.2.5':
1730 | dependencies:
1731 | '@eslint/core': 0.10.0
1732 | levn: 0.4.1
1733 |
1734 | '@humanfs/core@0.19.1': {}
1735 |
1736 | '@humanfs/node@0.16.6':
1737 | dependencies:
1738 | '@humanfs/core': 0.19.1
1739 | '@humanwhocodes/retry': 0.3.1
1740 |
1741 | '@humanwhocodes/module-importer@1.0.1': {}
1742 |
1743 | '@humanwhocodes/retry@0.3.1': {}
1744 |
1745 | '@humanwhocodes/retry@0.4.1': {}
1746 |
1747 | '@img/sharp-darwin-arm64@0.33.5':
1748 | optionalDependencies:
1749 | '@img/sharp-libvips-darwin-arm64': 1.0.4
1750 | optional: true
1751 |
1752 | '@img/sharp-darwin-x64@0.33.5':
1753 | optionalDependencies:
1754 | '@img/sharp-libvips-darwin-x64': 1.0.4
1755 | optional: true
1756 |
1757 | '@img/sharp-libvips-darwin-arm64@1.0.4':
1758 | optional: true
1759 |
1760 | '@img/sharp-libvips-darwin-x64@1.0.4':
1761 | optional: true
1762 |
1763 | '@img/sharp-libvips-linux-arm64@1.0.4':
1764 | optional: true
1765 |
1766 | '@img/sharp-libvips-linux-arm@1.0.5':
1767 | optional: true
1768 |
1769 | '@img/sharp-libvips-linux-s390x@1.0.4':
1770 | optional: true
1771 |
1772 | '@img/sharp-libvips-linux-x64@1.0.4':
1773 | optional: true
1774 |
1775 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
1776 | optional: true
1777 |
1778 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
1779 | optional: true
1780 |
1781 | '@img/sharp-linux-arm64@0.33.5':
1782 | optionalDependencies:
1783 | '@img/sharp-libvips-linux-arm64': 1.0.4
1784 | optional: true
1785 |
1786 | '@img/sharp-linux-arm@0.33.5':
1787 | optionalDependencies:
1788 | '@img/sharp-libvips-linux-arm': 1.0.5
1789 | optional: true
1790 |
1791 | '@img/sharp-linux-s390x@0.33.5':
1792 | optionalDependencies:
1793 | '@img/sharp-libvips-linux-s390x': 1.0.4
1794 | optional: true
1795 |
1796 | '@img/sharp-linux-x64@0.33.5':
1797 | optionalDependencies:
1798 | '@img/sharp-libvips-linux-x64': 1.0.4
1799 | optional: true
1800 |
1801 | '@img/sharp-linuxmusl-arm64@0.33.5':
1802 | optionalDependencies:
1803 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
1804 | optional: true
1805 |
1806 | '@img/sharp-linuxmusl-x64@0.33.5':
1807 | optionalDependencies:
1808 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
1809 | optional: true
1810 |
1811 | '@img/sharp-wasm32@0.33.5':
1812 | dependencies:
1813 | '@emnapi/runtime': 1.3.1
1814 | optional: true
1815 |
1816 | '@img/sharp-win32-ia32@0.33.5':
1817 | optional: true
1818 |
1819 | '@img/sharp-win32-x64@0.33.5':
1820 | optional: true
1821 |
1822 | '@isaacs/cliui@8.0.2':
1823 | dependencies:
1824 | string-width: 5.1.2
1825 | string-width-cjs: string-width@4.2.3
1826 | strip-ansi: 7.1.0
1827 | strip-ansi-cjs: strip-ansi@6.0.1
1828 | wrap-ansi: 8.1.0
1829 | wrap-ansi-cjs: wrap-ansi@7.0.0
1830 |
1831 | '@jridgewell/gen-mapping@0.3.8':
1832 | dependencies:
1833 | '@jridgewell/set-array': 1.2.1
1834 | '@jridgewell/sourcemap-codec': 1.5.0
1835 | '@jridgewell/trace-mapping': 0.3.25
1836 |
1837 | '@jridgewell/resolve-uri@3.1.2': {}
1838 |
1839 | '@jridgewell/set-array@1.2.1': {}
1840 |
1841 | '@jridgewell/sourcemap-codec@1.5.0': {}
1842 |
1843 | '@jridgewell/trace-mapping@0.3.25':
1844 | dependencies:
1845 | '@jridgewell/resolve-uri': 3.1.2
1846 | '@jridgewell/sourcemap-codec': 1.5.0
1847 |
1848 | '@next/env@15.1.6': {}
1849 |
1850 | '@next/eslint-plugin-next@15.1.6':
1851 | dependencies:
1852 | fast-glob: 3.3.1
1853 |
1854 | '@next/swc-darwin-arm64@15.1.6':
1855 | optional: true
1856 |
1857 | '@next/swc-darwin-x64@15.1.6':
1858 | optional: true
1859 |
1860 | '@next/swc-linux-arm64-gnu@15.1.6':
1861 | optional: true
1862 |
1863 | '@next/swc-linux-arm64-musl@15.1.6':
1864 | optional: true
1865 |
1866 | '@next/swc-linux-x64-gnu@15.1.6':
1867 | optional: true
1868 |
1869 | '@next/swc-linux-x64-musl@15.1.6':
1870 | optional: true
1871 |
1872 | '@next/swc-win32-arm64-msvc@15.1.6':
1873 | optional: true
1874 |
1875 | '@next/swc-win32-x64-msvc@15.1.6':
1876 | optional: true
1877 |
1878 | '@nodelib/fs.scandir@2.1.5':
1879 | dependencies:
1880 | '@nodelib/fs.stat': 2.0.5
1881 | run-parallel: 1.2.0
1882 |
1883 | '@nodelib/fs.stat@2.0.5': {}
1884 |
1885 | '@nodelib/fs.walk@1.2.8':
1886 | dependencies:
1887 | '@nodelib/fs.scandir': 2.1.5
1888 | fastq: 1.19.0
1889 |
1890 | '@nolyfill/is-core-module@1.0.39': {}
1891 |
1892 | '@pkgjs/parseargs@0.11.0':
1893 | optional: true
1894 |
1895 | '@rtsao/scc@1.1.0': {}
1896 |
1897 | '@rushstack/eslint-patch@1.10.5': {}
1898 |
1899 | '@swc/counter@0.1.3': {}
1900 |
1901 | '@swc/helpers@0.5.15':
1902 | dependencies:
1903 | tslib: 2.8.1
1904 |
1905 | '@types/estree@1.0.6': {}
1906 |
1907 | '@types/json-schema@7.0.15': {}
1908 |
1909 | '@types/json5@0.0.29': {}
1910 |
1911 | '@types/node@20.17.17':
1912 | dependencies:
1913 | undici-types: 6.19.8
1914 |
1915 | '@types/react-dom@19.0.3(@types/react@19.0.8)':
1916 | dependencies:
1917 | '@types/react': 19.0.8
1918 |
1919 | '@types/react@19.0.8':
1920 | dependencies:
1921 | csstype: 3.1.3
1922 |
1923 | '@typescript-eslint/eslint-plugin@8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)':
1924 | dependencies:
1925 | '@eslint-community/regexpp': 4.12.1
1926 | '@typescript-eslint/parser': 8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)
1927 | '@typescript-eslint/scope-manager': 8.23.0
1928 | '@typescript-eslint/type-utils': 8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)
1929 | '@typescript-eslint/utils': 8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)
1930 | '@typescript-eslint/visitor-keys': 8.23.0
1931 | eslint: 9.20.0(jiti@1.21.7)
1932 | graphemer: 1.4.0
1933 | ignore: 5.3.2
1934 | natural-compare: 1.4.0
1935 | ts-api-utils: 2.0.1(typescript@5.7.3)
1936 | typescript: 5.7.3
1937 | transitivePeerDependencies:
1938 | - supports-color
1939 |
1940 | '@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)':
1941 | dependencies:
1942 | '@typescript-eslint/scope-manager': 8.23.0
1943 | '@typescript-eslint/types': 8.23.0
1944 | '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3)
1945 | '@typescript-eslint/visitor-keys': 8.23.0
1946 | debug: 4.4.0
1947 | eslint: 9.20.0(jiti@1.21.7)
1948 | typescript: 5.7.3
1949 | transitivePeerDependencies:
1950 | - supports-color
1951 |
1952 | '@typescript-eslint/scope-manager@8.23.0':
1953 | dependencies:
1954 | '@typescript-eslint/types': 8.23.0
1955 | '@typescript-eslint/visitor-keys': 8.23.0
1956 |
1957 | '@typescript-eslint/type-utils@8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)':
1958 | dependencies:
1959 | '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3)
1960 | '@typescript-eslint/utils': 8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)
1961 | debug: 4.4.0
1962 | eslint: 9.20.0(jiti@1.21.7)
1963 | ts-api-utils: 2.0.1(typescript@5.7.3)
1964 | typescript: 5.7.3
1965 | transitivePeerDependencies:
1966 | - supports-color
1967 |
1968 | '@typescript-eslint/types@8.23.0': {}
1969 |
1970 | '@typescript-eslint/typescript-estree@8.23.0(typescript@5.7.3)':
1971 | dependencies:
1972 | '@typescript-eslint/types': 8.23.0
1973 | '@typescript-eslint/visitor-keys': 8.23.0
1974 | debug: 4.4.0
1975 | fast-glob: 3.3.3
1976 | is-glob: 4.0.3
1977 | minimatch: 9.0.5
1978 | semver: 7.7.1
1979 | ts-api-utils: 2.0.1(typescript@5.7.3)
1980 | typescript: 5.7.3
1981 | transitivePeerDependencies:
1982 | - supports-color
1983 |
1984 | '@typescript-eslint/utils@8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)':
1985 | dependencies:
1986 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.0(jiti@1.21.7))
1987 | '@typescript-eslint/scope-manager': 8.23.0
1988 | '@typescript-eslint/types': 8.23.0
1989 | '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3)
1990 | eslint: 9.20.0(jiti@1.21.7)
1991 | typescript: 5.7.3
1992 | transitivePeerDependencies:
1993 | - supports-color
1994 |
1995 | '@typescript-eslint/visitor-keys@8.23.0':
1996 | dependencies:
1997 | '@typescript-eslint/types': 8.23.0
1998 | eslint-visitor-keys: 4.2.0
1999 |
2000 | acorn-jsx@5.3.2(acorn@8.14.0):
2001 | dependencies:
2002 | acorn: 8.14.0
2003 |
2004 | acorn@8.14.0: {}
2005 |
2006 | ajv@6.12.6:
2007 | dependencies:
2008 | fast-deep-equal: 3.1.3
2009 | fast-json-stable-stringify: 2.1.0
2010 | json-schema-traverse: 0.4.1
2011 | uri-js: 4.4.1
2012 |
2013 | ansi-regex@5.0.1: {}
2014 |
2015 | ansi-regex@6.1.0: {}
2016 |
2017 | ansi-styles@4.3.0:
2018 | dependencies:
2019 | color-convert: 2.0.1
2020 |
2021 | ansi-styles@6.2.1: {}
2022 |
2023 | any-promise@1.3.0: {}
2024 |
2025 | anymatch@3.1.3:
2026 | dependencies:
2027 | normalize-path: 3.0.0
2028 | picomatch: 2.3.1
2029 |
2030 | arg@5.0.2: {}
2031 |
2032 | argparse@2.0.1: {}
2033 |
2034 | aria-query@5.3.2: {}
2035 |
2036 | array-buffer-byte-length@1.0.2:
2037 | dependencies:
2038 | call-bound: 1.0.3
2039 | is-array-buffer: 3.0.5
2040 |
2041 | array-includes@3.1.8:
2042 | dependencies:
2043 | call-bind: 1.0.8
2044 | define-properties: 1.2.1
2045 | es-abstract: 1.23.9
2046 | es-object-atoms: 1.1.1
2047 | get-intrinsic: 1.2.7
2048 | is-string: 1.1.1
2049 |
2050 | array.prototype.findlast@1.2.5:
2051 | dependencies:
2052 | call-bind: 1.0.8
2053 | define-properties: 1.2.1
2054 | es-abstract: 1.23.9
2055 | es-errors: 1.3.0
2056 | es-object-atoms: 1.1.1
2057 | es-shim-unscopables: 1.0.2
2058 |
2059 | array.prototype.findlastindex@1.2.5:
2060 | dependencies:
2061 | call-bind: 1.0.8
2062 | define-properties: 1.2.1
2063 | es-abstract: 1.23.9
2064 | es-errors: 1.3.0
2065 | es-object-atoms: 1.1.1
2066 | es-shim-unscopables: 1.0.2
2067 |
2068 | array.prototype.flat@1.3.3:
2069 | dependencies:
2070 | call-bind: 1.0.8
2071 | define-properties: 1.2.1
2072 | es-abstract: 1.23.9
2073 | es-shim-unscopables: 1.0.2
2074 |
2075 | array.prototype.flatmap@1.3.3:
2076 | dependencies:
2077 | call-bind: 1.0.8
2078 | define-properties: 1.2.1
2079 | es-abstract: 1.23.9
2080 | es-shim-unscopables: 1.0.2
2081 |
2082 | array.prototype.tosorted@1.1.4:
2083 | dependencies:
2084 | call-bind: 1.0.8
2085 | define-properties: 1.2.1
2086 | es-abstract: 1.23.9
2087 | es-errors: 1.3.0
2088 | es-shim-unscopables: 1.0.2
2089 |
2090 | arraybuffer.prototype.slice@1.0.4:
2091 | dependencies:
2092 | array-buffer-byte-length: 1.0.2
2093 | call-bind: 1.0.8
2094 | define-properties: 1.2.1
2095 | es-abstract: 1.23.9
2096 | es-errors: 1.3.0
2097 | get-intrinsic: 1.2.7
2098 | is-array-buffer: 3.0.5
2099 |
2100 | ast-types-flow@0.0.8: {}
2101 |
2102 | async-function@1.0.0: {}
2103 |
2104 | available-typed-arrays@1.0.7:
2105 | dependencies:
2106 | possible-typed-array-names: 1.1.0
2107 |
2108 | axe-core@4.10.2: {}
2109 |
2110 | axobject-query@4.1.0: {}
2111 |
2112 | balanced-match@1.0.2: {}
2113 |
2114 | binary-extensions@2.3.0: {}
2115 |
2116 | brace-expansion@1.1.11:
2117 | dependencies:
2118 | balanced-match: 1.0.2
2119 | concat-map: 0.0.1
2120 |
2121 | brace-expansion@2.0.1:
2122 | dependencies:
2123 | balanced-match: 1.0.2
2124 |
2125 | braces@3.0.3:
2126 | dependencies:
2127 | fill-range: 7.1.1
2128 |
2129 | busboy@1.6.0:
2130 | dependencies:
2131 | streamsearch: 1.1.0
2132 |
2133 | call-bind-apply-helpers@1.0.1:
2134 | dependencies:
2135 | es-errors: 1.3.0
2136 | function-bind: 1.1.2
2137 |
2138 | call-bind@1.0.8:
2139 | dependencies:
2140 | call-bind-apply-helpers: 1.0.1
2141 | es-define-property: 1.0.1
2142 | get-intrinsic: 1.2.7
2143 | set-function-length: 1.2.2
2144 |
2145 | call-bound@1.0.3:
2146 | dependencies:
2147 | call-bind-apply-helpers: 1.0.1
2148 | get-intrinsic: 1.2.7
2149 |
2150 | callsites@3.1.0: {}
2151 |
2152 | camelcase-css@2.0.1: {}
2153 |
2154 | caniuse-lite@1.0.30001699: {}
2155 |
2156 | chalk@4.1.2:
2157 | dependencies:
2158 | ansi-styles: 4.3.0
2159 | supports-color: 7.2.0
2160 |
2161 | chokidar@3.6.0:
2162 | dependencies:
2163 | anymatch: 3.1.3
2164 | braces: 3.0.3
2165 | glob-parent: 5.1.2
2166 | is-binary-path: 2.1.0
2167 | is-glob: 4.0.3
2168 | normalize-path: 3.0.0
2169 | readdirp: 3.6.0
2170 | optionalDependencies:
2171 | fsevents: 2.3.3
2172 |
2173 | client-only@0.0.1: {}
2174 |
2175 | color-convert@2.0.1:
2176 | dependencies:
2177 | color-name: 1.1.4
2178 |
2179 | color-name@1.1.4: {}
2180 |
2181 | color-string@1.9.1:
2182 | dependencies:
2183 | color-name: 1.1.4
2184 | simple-swizzle: 0.2.2
2185 | optional: true
2186 |
2187 | color@4.2.3:
2188 | dependencies:
2189 | color-convert: 2.0.1
2190 | color-string: 1.9.1
2191 | optional: true
2192 |
2193 | commander@4.1.1: {}
2194 |
2195 | concat-map@0.0.1: {}
2196 |
2197 | cross-spawn@7.0.6:
2198 | dependencies:
2199 | path-key: 3.1.1
2200 | shebang-command: 2.0.0
2201 | which: 2.0.2
2202 |
2203 | cssesc@3.0.0: {}
2204 |
2205 | csstype@3.1.3: {}
2206 |
2207 | damerau-levenshtein@1.0.8: {}
2208 |
2209 | data-view-buffer@1.0.2:
2210 | dependencies:
2211 | call-bound: 1.0.3
2212 | es-errors: 1.3.0
2213 | is-data-view: 1.0.2
2214 |
2215 | data-view-byte-length@1.0.2:
2216 | dependencies:
2217 | call-bound: 1.0.3
2218 | es-errors: 1.3.0
2219 | is-data-view: 1.0.2
2220 |
2221 | data-view-byte-offset@1.0.1:
2222 | dependencies:
2223 | call-bound: 1.0.3
2224 | es-errors: 1.3.0
2225 | is-data-view: 1.0.2
2226 |
2227 | debug@3.2.7:
2228 | dependencies:
2229 | ms: 2.1.3
2230 |
2231 | debug@4.4.0:
2232 | dependencies:
2233 | ms: 2.1.3
2234 |
2235 | deep-is@0.1.4: {}
2236 |
2237 | define-data-property@1.1.4:
2238 | dependencies:
2239 | es-define-property: 1.0.1
2240 | es-errors: 1.3.0
2241 | gopd: 1.2.0
2242 |
2243 | define-properties@1.2.1:
2244 | dependencies:
2245 | define-data-property: 1.1.4
2246 | has-property-descriptors: 1.0.2
2247 | object-keys: 1.1.1
2248 |
2249 | detect-libc@2.0.3:
2250 | optional: true
2251 |
2252 | didyoumean@1.2.2: {}
2253 |
2254 | dlv@1.1.3: {}
2255 |
2256 | doctrine@2.1.0:
2257 | dependencies:
2258 | esutils: 2.0.3
2259 |
2260 | dunder-proto@1.0.1:
2261 | dependencies:
2262 | call-bind-apply-helpers: 1.0.1
2263 | es-errors: 1.3.0
2264 | gopd: 1.2.0
2265 |
2266 | eastasianwidth@0.2.0: {}
2267 |
2268 | emoji-regex@8.0.0: {}
2269 |
2270 | emoji-regex@9.2.2: {}
2271 |
2272 | enhanced-resolve@5.18.1:
2273 | dependencies:
2274 | graceful-fs: 4.2.11
2275 | tapable: 2.2.1
2276 |
2277 | es-abstract@1.23.9:
2278 | dependencies:
2279 | array-buffer-byte-length: 1.0.2
2280 | arraybuffer.prototype.slice: 1.0.4
2281 | available-typed-arrays: 1.0.7
2282 | call-bind: 1.0.8
2283 | call-bound: 1.0.3
2284 | data-view-buffer: 1.0.2
2285 | data-view-byte-length: 1.0.2
2286 | data-view-byte-offset: 1.0.1
2287 | es-define-property: 1.0.1
2288 | es-errors: 1.3.0
2289 | es-object-atoms: 1.1.1
2290 | es-set-tostringtag: 2.1.0
2291 | es-to-primitive: 1.3.0
2292 | function.prototype.name: 1.1.8
2293 | get-intrinsic: 1.2.7
2294 | get-proto: 1.0.1
2295 | get-symbol-description: 1.1.0
2296 | globalthis: 1.0.4
2297 | gopd: 1.2.0
2298 | has-property-descriptors: 1.0.2
2299 | has-proto: 1.2.0
2300 | has-symbols: 1.1.0
2301 | hasown: 2.0.2
2302 | internal-slot: 1.1.0
2303 | is-array-buffer: 3.0.5
2304 | is-callable: 1.2.7
2305 | is-data-view: 1.0.2
2306 | is-regex: 1.2.1
2307 | is-shared-array-buffer: 1.0.4
2308 | is-string: 1.1.1
2309 | is-typed-array: 1.1.15
2310 | is-weakref: 1.1.1
2311 | math-intrinsics: 1.1.0
2312 | object-inspect: 1.13.4
2313 | object-keys: 1.1.1
2314 | object.assign: 4.1.7
2315 | own-keys: 1.0.1
2316 | regexp.prototype.flags: 1.5.4
2317 | safe-array-concat: 1.1.3
2318 | safe-push-apply: 1.0.0
2319 | safe-regex-test: 1.1.0
2320 | set-proto: 1.0.0
2321 | string.prototype.trim: 1.2.10
2322 | string.prototype.trimend: 1.0.9
2323 | string.prototype.trimstart: 1.0.8
2324 | typed-array-buffer: 1.0.3
2325 | typed-array-byte-length: 1.0.3
2326 | typed-array-byte-offset: 1.0.4
2327 | typed-array-length: 1.0.7
2328 | unbox-primitive: 1.1.0
2329 | which-typed-array: 1.1.18
2330 |
2331 | es-define-property@1.0.1: {}
2332 |
2333 | es-errors@1.3.0: {}
2334 |
2335 | es-iterator-helpers@1.2.1:
2336 | dependencies:
2337 | call-bind: 1.0.8
2338 | call-bound: 1.0.3
2339 | define-properties: 1.2.1
2340 | es-abstract: 1.23.9
2341 | es-errors: 1.3.0
2342 | es-set-tostringtag: 2.1.0
2343 | function-bind: 1.1.2
2344 | get-intrinsic: 1.2.7
2345 | globalthis: 1.0.4
2346 | gopd: 1.2.0
2347 | has-property-descriptors: 1.0.2
2348 | has-proto: 1.2.0
2349 | has-symbols: 1.1.0
2350 | internal-slot: 1.1.0
2351 | iterator.prototype: 1.1.5
2352 | safe-array-concat: 1.1.3
2353 |
2354 | es-object-atoms@1.1.1:
2355 | dependencies:
2356 | es-errors: 1.3.0
2357 |
2358 | es-set-tostringtag@2.1.0:
2359 | dependencies:
2360 | es-errors: 1.3.0
2361 | get-intrinsic: 1.2.7
2362 | has-tostringtag: 1.0.2
2363 | hasown: 2.0.2
2364 |
2365 | es-shim-unscopables@1.0.2:
2366 | dependencies:
2367 | hasown: 2.0.2
2368 |
2369 | es-to-primitive@1.3.0:
2370 | dependencies:
2371 | is-callable: 1.2.7
2372 | is-date-object: 1.1.0
2373 | is-symbol: 1.1.1
2374 |
2375 | escape-string-regexp@4.0.0: {}
2376 |
2377 | eslint-config-next@15.1.6(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3):
2378 | dependencies:
2379 | '@next/eslint-plugin-next': 15.1.6
2380 | '@rushstack/eslint-patch': 1.10.5
2381 | '@typescript-eslint/eslint-plugin': 8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)
2382 | '@typescript-eslint/parser': 8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)
2383 | eslint: 9.20.0(jiti@1.21.7)
2384 | eslint-import-resolver-node: 0.3.9
2385 | eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.20.0(jiti@1.21.7))
2386 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.20.0(jiti@1.21.7))
2387 | eslint-plugin-jsx-a11y: 6.10.2(eslint@9.20.0(jiti@1.21.7))
2388 | eslint-plugin-react: 7.37.4(eslint@9.20.0(jiti@1.21.7))
2389 | eslint-plugin-react-hooks: 5.1.0(eslint@9.20.0(jiti@1.21.7))
2390 | optionalDependencies:
2391 | typescript: 5.7.3
2392 | transitivePeerDependencies:
2393 | - eslint-import-resolver-webpack
2394 | - eslint-plugin-import-x
2395 | - supports-color
2396 |
2397 | eslint-import-resolver-node@0.3.9:
2398 | dependencies:
2399 | debug: 3.2.7
2400 | is-core-module: 2.16.1
2401 | resolve: 1.22.10
2402 | transitivePeerDependencies:
2403 | - supports-color
2404 |
2405 | eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.20.0(jiti@1.21.7)):
2406 | dependencies:
2407 | '@nolyfill/is-core-module': 1.0.39
2408 | debug: 4.4.0
2409 | enhanced-resolve: 5.18.1
2410 | eslint: 9.20.0(jiti@1.21.7)
2411 | fast-glob: 3.3.3
2412 | get-tsconfig: 4.10.0
2413 | is-bun-module: 1.3.0
2414 | is-glob: 4.0.3
2415 | stable-hash: 0.0.4
2416 | optionalDependencies:
2417 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.20.0(jiti@1.21.7))
2418 | transitivePeerDependencies:
2419 | - supports-color
2420 |
2421 | eslint-module-utils@2.12.0(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.20.0(jiti@1.21.7)):
2422 | dependencies:
2423 | debug: 3.2.7
2424 | optionalDependencies:
2425 | '@typescript-eslint/parser': 8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)
2426 | eslint: 9.20.0(jiti@1.21.7)
2427 | eslint-import-resolver-node: 0.3.9
2428 | eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.20.0(jiti@1.21.7))
2429 | transitivePeerDependencies:
2430 | - supports-color
2431 |
2432 | eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.20.0(jiti@1.21.7)):
2433 | dependencies:
2434 | '@rtsao/scc': 1.1.0
2435 | array-includes: 3.1.8
2436 | array.prototype.findlastindex: 1.2.5
2437 | array.prototype.flat: 1.3.3
2438 | array.prototype.flatmap: 1.3.3
2439 | debug: 3.2.7
2440 | doctrine: 2.1.0
2441 | eslint: 9.20.0(jiti@1.21.7)
2442 | eslint-import-resolver-node: 0.3.9
2443 | eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.20.0(jiti@1.21.7))
2444 | hasown: 2.0.2
2445 | is-core-module: 2.16.1
2446 | is-glob: 4.0.3
2447 | minimatch: 3.1.2
2448 | object.fromentries: 2.0.8
2449 | object.groupby: 1.0.3
2450 | object.values: 1.2.1
2451 | semver: 6.3.1
2452 | string.prototype.trimend: 1.0.9
2453 | tsconfig-paths: 3.15.0
2454 | optionalDependencies:
2455 | '@typescript-eslint/parser': 8.23.0(eslint@9.20.0(jiti@1.21.7))(typescript@5.7.3)
2456 | transitivePeerDependencies:
2457 | - eslint-import-resolver-typescript
2458 | - eslint-import-resolver-webpack
2459 | - supports-color
2460 |
2461 | eslint-plugin-jsx-a11y@6.10.2(eslint@9.20.0(jiti@1.21.7)):
2462 | dependencies:
2463 | aria-query: 5.3.2
2464 | array-includes: 3.1.8
2465 | array.prototype.flatmap: 1.3.3
2466 | ast-types-flow: 0.0.8
2467 | axe-core: 4.10.2
2468 | axobject-query: 4.1.0
2469 | damerau-levenshtein: 1.0.8
2470 | emoji-regex: 9.2.2
2471 | eslint: 9.20.0(jiti@1.21.7)
2472 | hasown: 2.0.2
2473 | jsx-ast-utils: 3.3.5
2474 | language-tags: 1.0.9
2475 | minimatch: 3.1.2
2476 | object.fromentries: 2.0.8
2477 | safe-regex-test: 1.1.0
2478 | string.prototype.includes: 2.0.1
2479 |
2480 | eslint-plugin-react-hooks@5.1.0(eslint@9.20.0(jiti@1.21.7)):
2481 | dependencies:
2482 | eslint: 9.20.0(jiti@1.21.7)
2483 |
2484 | eslint-plugin-react@7.37.4(eslint@9.20.0(jiti@1.21.7)):
2485 | dependencies:
2486 | array-includes: 3.1.8
2487 | array.prototype.findlast: 1.2.5
2488 | array.prototype.flatmap: 1.3.3
2489 | array.prototype.tosorted: 1.1.4
2490 | doctrine: 2.1.0
2491 | es-iterator-helpers: 1.2.1
2492 | eslint: 9.20.0(jiti@1.21.7)
2493 | estraverse: 5.3.0
2494 | hasown: 2.0.2
2495 | jsx-ast-utils: 3.3.5
2496 | minimatch: 3.1.2
2497 | object.entries: 1.1.8
2498 | object.fromentries: 2.0.8
2499 | object.values: 1.2.1
2500 | prop-types: 15.8.1
2501 | resolve: 2.0.0-next.5
2502 | semver: 6.3.1
2503 | string.prototype.matchall: 4.0.12
2504 | string.prototype.repeat: 1.0.0
2505 |
2506 | eslint-scope@8.2.0:
2507 | dependencies:
2508 | esrecurse: 4.3.0
2509 | estraverse: 5.3.0
2510 |
2511 | eslint-visitor-keys@3.4.3: {}
2512 |
2513 | eslint-visitor-keys@4.2.0: {}
2514 |
2515 | eslint@9.20.0(jiti@1.21.7):
2516 | dependencies:
2517 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.20.0(jiti@1.21.7))
2518 | '@eslint-community/regexpp': 4.12.1
2519 | '@eslint/config-array': 0.19.2
2520 | '@eslint/core': 0.11.0
2521 | '@eslint/eslintrc': 3.2.0
2522 | '@eslint/js': 9.20.0
2523 | '@eslint/plugin-kit': 0.2.5
2524 | '@humanfs/node': 0.16.6
2525 | '@humanwhocodes/module-importer': 1.0.1
2526 | '@humanwhocodes/retry': 0.4.1
2527 | '@types/estree': 1.0.6
2528 | '@types/json-schema': 7.0.15
2529 | ajv: 6.12.6
2530 | chalk: 4.1.2
2531 | cross-spawn: 7.0.6
2532 | debug: 4.4.0
2533 | escape-string-regexp: 4.0.0
2534 | eslint-scope: 8.2.0
2535 | eslint-visitor-keys: 4.2.0
2536 | espree: 10.3.0
2537 | esquery: 1.6.0
2538 | esutils: 2.0.3
2539 | fast-deep-equal: 3.1.3
2540 | file-entry-cache: 8.0.0
2541 | find-up: 5.0.0
2542 | glob-parent: 6.0.2
2543 | ignore: 5.3.2
2544 | imurmurhash: 0.1.4
2545 | is-glob: 4.0.3
2546 | json-stable-stringify-without-jsonify: 1.0.1
2547 | lodash.merge: 4.6.2
2548 | minimatch: 3.1.2
2549 | natural-compare: 1.4.0
2550 | optionator: 0.9.4
2551 | optionalDependencies:
2552 | jiti: 1.21.7
2553 | transitivePeerDependencies:
2554 | - supports-color
2555 |
2556 | espree@10.3.0:
2557 | dependencies:
2558 | acorn: 8.14.0
2559 | acorn-jsx: 5.3.2(acorn@8.14.0)
2560 | eslint-visitor-keys: 4.2.0
2561 |
2562 | esquery@1.6.0:
2563 | dependencies:
2564 | estraverse: 5.3.0
2565 |
2566 | esrecurse@4.3.0:
2567 | dependencies:
2568 | estraverse: 5.3.0
2569 |
2570 | estraverse@5.3.0: {}
2571 |
2572 | esutils@2.0.3: {}
2573 |
2574 | fast-deep-equal@3.1.3: {}
2575 |
2576 | fast-glob@3.3.1:
2577 | dependencies:
2578 | '@nodelib/fs.stat': 2.0.5
2579 | '@nodelib/fs.walk': 1.2.8
2580 | glob-parent: 5.1.2
2581 | merge2: 1.4.1
2582 | micromatch: 4.0.8
2583 |
2584 | fast-glob@3.3.3:
2585 | dependencies:
2586 | '@nodelib/fs.stat': 2.0.5
2587 | '@nodelib/fs.walk': 1.2.8
2588 | glob-parent: 5.1.2
2589 | merge2: 1.4.1
2590 | micromatch: 4.0.8
2591 |
2592 | fast-json-stable-stringify@2.1.0: {}
2593 |
2594 | fast-levenshtein@2.0.6: {}
2595 |
2596 | fastq@1.19.0:
2597 | dependencies:
2598 | reusify: 1.0.4
2599 |
2600 | file-entry-cache@8.0.0:
2601 | dependencies:
2602 | flat-cache: 4.0.1
2603 |
2604 | fill-range@7.1.1:
2605 | dependencies:
2606 | to-regex-range: 5.0.1
2607 |
2608 | find-up@5.0.0:
2609 | dependencies:
2610 | locate-path: 6.0.0
2611 | path-exists: 4.0.0
2612 |
2613 | flat-cache@4.0.1:
2614 | dependencies:
2615 | flatted: 3.3.2
2616 | keyv: 4.5.4
2617 |
2618 | flatted@3.3.2: {}
2619 |
2620 | for-each@0.3.4:
2621 | dependencies:
2622 | is-callable: 1.2.7
2623 |
2624 | foreground-child@3.3.0:
2625 | dependencies:
2626 | cross-spawn: 7.0.6
2627 | signal-exit: 4.1.0
2628 |
2629 | fsevents@2.3.3:
2630 | optional: true
2631 |
2632 | function-bind@1.1.2: {}
2633 |
2634 | function.prototype.name@1.1.8:
2635 | dependencies:
2636 | call-bind: 1.0.8
2637 | call-bound: 1.0.3
2638 | define-properties: 1.2.1
2639 | functions-have-names: 1.2.3
2640 | hasown: 2.0.2
2641 | is-callable: 1.2.7
2642 |
2643 | functions-have-names@1.2.3: {}
2644 |
2645 | get-intrinsic@1.2.7:
2646 | dependencies:
2647 | call-bind-apply-helpers: 1.0.1
2648 | es-define-property: 1.0.1
2649 | es-errors: 1.3.0
2650 | es-object-atoms: 1.1.1
2651 | function-bind: 1.1.2
2652 | get-proto: 1.0.1
2653 | gopd: 1.2.0
2654 | has-symbols: 1.1.0
2655 | hasown: 2.0.2
2656 | math-intrinsics: 1.1.0
2657 |
2658 | get-proto@1.0.1:
2659 | dependencies:
2660 | dunder-proto: 1.0.1
2661 | es-object-atoms: 1.1.1
2662 |
2663 | get-symbol-description@1.1.0:
2664 | dependencies:
2665 | call-bound: 1.0.3
2666 | es-errors: 1.3.0
2667 | get-intrinsic: 1.2.7
2668 |
2669 | get-tsconfig@4.10.0:
2670 | dependencies:
2671 | resolve-pkg-maps: 1.0.0
2672 |
2673 | glob-parent@5.1.2:
2674 | dependencies:
2675 | is-glob: 4.0.3
2676 |
2677 | glob-parent@6.0.2:
2678 | dependencies:
2679 | is-glob: 4.0.3
2680 |
2681 | glob@10.4.5:
2682 | dependencies:
2683 | foreground-child: 3.3.0
2684 | jackspeak: 3.4.3
2685 | minimatch: 9.0.5
2686 | minipass: 7.1.2
2687 | package-json-from-dist: 1.0.1
2688 | path-scurry: 1.11.1
2689 |
2690 | globals@14.0.0: {}
2691 |
2692 | globalthis@1.0.4:
2693 | dependencies:
2694 | define-properties: 1.2.1
2695 | gopd: 1.2.0
2696 |
2697 | gopd@1.2.0: {}
2698 |
2699 | graceful-fs@4.2.11: {}
2700 |
2701 | graphemer@1.4.0: {}
2702 |
2703 | has-bigints@1.1.0: {}
2704 |
2705 | has-flag@4.0.0: {}
2706 |
2707 | has-property-descriptors@1.0.2:
2708 | dependencies:
2709 | es-define-property: 1.0.1
2710 |
2711 | has-proto@1.2.0:
2712 | dependencies:
2713 | dunder-proto: 1.0.1
2714 |
2715 | has-symbols@1.1.0: {}
2716 |
2717 | has-tostringtag@1.0.2:
2718 | dependencies:
2719 | has-symbols: 1.1.0
2720 |
2721 | hasown@2.0.2:
2722 | dependencies:
2723 | function-bind: 1.1.2
2724 |
2725 | ignore@5.3.2: {}
2726 |
2727 | import-fresh@3.3.1:
2728 | dependencies:
2729 | parent-module: 1.0.1
2730 | resolve-from: 4.0.0
2731 |
2732 | imurmurhash@0.1.4: {}
2733 |
2734 | internal-slot@1.1.0:
2735 | dependencies:
2736 | es-errors: 1.3.0
2737 | hasown: 2.0.2
2738 | side-channel: 1.1.0
2739 |
2740 | is-array-buffer@3.0.5:
2741 | dependencies:
2742 | call-bind: 1.0.8
2743 | call-bound: 1.0.3
2744 | get-intrinsic: 1.2.7
2745 |
2746 | is-arrayish@0.3.2:
2747 | optional: true
2748 |
2749 | is-async-function@2.1.1:
2750 | dependencies:
2751 | async-function: 1.0.0
2752 | call-bound: 1.0.3
2753 | get-proto: 1.0.1
2754 | has-tostringtag: 1.0.2
2755 | safe-regex-test: 1.1.0
2756 |
2757 | is-bigint@1.1.0:
2758 | dependencies:
2759 | has-bigints: 1.1.0
2760 |
2761 | is-binary-path@2.1.0:
2762 | dependencies:
2763 | binary-extensions: 2.3.0
2764 |
2765 | is-boolean-object@1.2.2:
2766 | dependencies:
2767 | call-bound: 1.0.3
2768 | has-tostringtag: 1.0.2
2769 |
2770 | is-bun-module@1.3.0:
2771 | dependencies:
2772 | semver: 7.7.1
2773 |
2774 | is-callable@1.2.7: {}
2775 |
2776 | is-core-module@2.16.1:
2777 | dependencies:
2778 | hasown: 2.0.2
2779 |
2780 | is-data-view@1.0.2:
2781 | dependencies:
2782 | call-bound: 1.0.3
2783 | get-intrinsic: 1.2.7
2784 | is-typed-array: 1.1.15
2785 |
2786 | is-date-object@1.1.0:
2787 | dependencies:
2788 | call-bound: 1.0.3
2789 | has-tostringtag: 1.0.2
2790 |
2791 | is-extglob@2.1.1: {}
2792 |
2793 | is-finalizationregistry@1.1.1:
2794 | dependencies:
2795 | call-bound: 1.0.3
2796 |
2797 | is-fullwidth-code-point@3.0.0: {}
2798 |
2799 | is-generator-function@1.1.0:
2800 | dependencies:
2801 | call-bound: 1.0.3
2802 | get-proto: 1.0.1
2803 | has-tostringtag: 1.0.2
2804 | safe-regex-test: 1.1.0
2805 |
2806 | is-glob@4.0.3:
2807 | dependencies:
2808 | is-extglob: 2.1.1
2809 |
2810 | is-map@2.0.3: {}
2811 |
2812 | is-number-object@1.1.1:
2813 | dependencies:
2814 | call-bound: 1.0.3
2815 | has-tostringtag: 1.0.2
2816 |
2817 | is-number@7.0.0: {}
2818 |
2819 | is-regex@1.2.1:
2820 | dependencies:
2821 | call-bound: 1.0.3
2822 | gopd: 1.2.0
2823 | has-tostringtag: 1.0.2
2824 | hasown: 2.0.2
2825 |
2826 | is-set@2.0.3: {}
2827 |
2828 | is-shared-array-buffer@1.0.4:
2829 | dependencies:
2830 | call-bound: 1.0.3
2831 |
2832 | is-string@1.1.1:
2833 | dependencies:
2834 | call-bound: 1.0.3
2835 | has-tostringtag: 1.0.2
2836 |
2837 | is-symbol@1.1.1:
2838 | dependencies:
2839 | call-bound: 1.0.3
2840 | has-symbols: 1.1.0
2841 | safe-regex-test: 1.1.0
2842 |
2843 | is-typed-array@1.1.15:
2844 | dependencies:
2845 | which-typed-array: 1.1.18
2846 |
2847 | is-weakmap@2.0.2: {}
2848 |
2849 | is-weakref@1.1.1:
2850 | dependencies:
2851 | call-bound: 1.0.3
2852 |
2853 | is-weakset@2.0.4:
2854 | dependencies:
2855 | call-bound: 1.0.3
2856 | get-intrinsic: 1.2.7
2857 |
2858 | isarray@2.0.5: {}
2859 |
2860 | isexe@2.0.0: {}
2861 |
2862 | iterator.prototype@1.1.5:
2863 | dependencies:
2864 | define-data-property: 1.1.4
2865 | es-object-atoms: 1.1.1
2866 | get-intrinsic: 1.2.7
2867 | get-proto: 1.0.1
2868 | has-symbols: 1.1.0
2869 | set-function-name: 2.0.2
2870 |
2871 | jackspeak@3.4.3:
2872 | dependencies:
2873 | '@isaacs/cliui': 8.0.2
2874 | optionalDependencies:
2875 | '@pkgjs/parseargs': 0.11.0
2876 |
2877 | jiti@1.21.7: {}
2878 |
2879 | js-tokens@4.0.0: {}
2880 |
2881 | js-yaml@4.1.0:
2882 | dependencies:
2883 | argparse: 2.0.1
2884 |
2885 | json-buffer@3.0.1: {}
2886 |
2887 | json-schema-traverse@0.4.1: {}
2888 |
2889 | json-stable-stringify-without-jsonify@1.0.1: {}
2890 |
2891 | json5@1.0.2:
2892 | dependencies:
2893 | minimist: 1.2.8
2894 |
2895 | jsx-ast-utils@3.3.5:
2896 | dependencies:
2897 | array-includes: 3.1.8
2898 | array.prototype.flat: 1.3.3
2899 | object.assign: 4.1.7
2900 | object.values: 1.2.1
2901 |
2902 | keyv@4.5.4:
2903 | dependencies:
2904 | json-buffer: 3.0.1
2905 |
2906 | language-subtag-registry@0.3.23: {}
2907 |
2908 | language-tags@1.0.9:
2909 | dependencies:
2910 | language-subtag-registry: 0.3.23
2911 |
2912 | levn@0.4.1:
2913 | dependencies:
2914 | prelude-ls: 1.2.1
2915 | type-check: 0.4.0
2916 |
2917 | lilconfig@3.1.3: {}
2918 |
2919 | lines-and-columns@1.2.4: {}
2920 |
2921 | locate-path@6.0.0:
2922 | dependencies:
2923 | p-locate: 5.0.0
2924 |
2925 | lodash.merge@4.6.2: {}
2926 |
2927 | loose-envify@1.4.0:
2928 | dependencies:
2929 | js-tokens: 4.0.0
2930 |
2931 | lru-cache@10.4.3: {}
2932 |
2933 | math-intrinsics@1.1.0: {}
2934 |
2935 | merge2@1.4.1: {}
2936 |
2937 | micromatch@4.0.8:
2938 | dependencies:
2939 | braces: 3.0.3
2940 | picomatch: 2.3.1
2941 |
2942 | minimatch@3.1.2:
2943 | dependencies:
2944 | brace-expansion: 1.1.11
2945 |
2946 | minimatch@9.0.5:
2947 | dependencies:
2948 | brace-expansion: 2.0.1
2949 |
2950 | minimist@1.2.8: {}
2951 |
2952 | minipass@7.1.2: {}
2953 |
2954 | ms@2.1.3: {}
2955 |
2956 | mz@2.7.0:
2957 | dependencies:
2958 | any-promise: 1.3.0
2959 | object-assign: 4.1.1
2960 | thenify-all: 1.6.0
2961 |
2962 | nanoid@3.3.8: {}
2963 |
2964 | natural-compare@1.4.0: {}
2965 |
2966 | next@15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
2967 | dependencies:
2968 | '@next/env': 15.1.6
2969 | '@swc/counter': 0.1.3
2970 | '@swc/helpers': 0.5.15
2971 | busboy: 1.6.0
2972 | caniuse-lite: 1.0.30001699
2973 | postcss: 8.4.31
2974 | react: 19.0.0
2975 | react-dom: 19.0.0(react@19.0.0)
2976 | styled-jsx: 5.1.6(react@19.0.0)
2977 | optionalDependencies:
2978 | '@next/swc-darwin-arm64': 15.1.6
2979 | '@next/swc-darwin-x64': 15.1.6
2980 | '@next/swc-linux-arm64-gnu': 15.1.6
2981 | '@next/swc-linux-arm64-musl': 15.1.6
2982 | '@next/swc-linux-x64-gnu': 15.1.6
2983 | '@next/swc-linux-x64-musl': 15.1.6
2984 | '@next/swc-win32-arm64-msvc': 15.1.6
2985 | '@next/swc-win32-x64-msvc': 15.1.6
2986 | sharp: 0.33.5
2987 | transitivePeerDependencies:
2988 | - '@babel/core'
2989 | - babel-plugin-macros
2990 |
2991 | normalize-path@3.0.0: {}
2992 |
2993 | object-assign@4.1.1: {}
2994 |
2995 | object-hash@3.0.0: {}
2996 |
2997 | object-inspect@1.13.4: {}
2998 |
2999 | object-keys@1.1.1: {}
3000 |
3001 | object.assign@4.1.7:
3002 | dependencies:
3003 | call-bind: 1.0.8
3004 | call-bound: 1.0.3
3005 | define-properties: 1.2.1
3006 | es-object-atoms: 1.1.1
3007 | has-symbols: 1.1.0
3008 | object-keys: 1.1.1
3009 |
3010 | object.entries@1.1.8:
3011 | dependencies:
3012 | call-bind: 1.0.8
3013 | define-properties: 1.2.1
3014 | es-object-atoms: 1.1.1
3015 |
3016 | object.fromentries@2.0.8:
3017 | dependencies:
3018 | call-bind: 1.0.8
3019 | define-properties: 1.2.1
3020 | es-abstract: 1.23.9
3021 | es-object-atoms: 1.1.1
3022 |
3023 | object.groupby@1.0.3:
3024 | dependencies:
3025 | call-bind: 1.0.8
3026 | define-properties: 1.2.1
3027 | es-abstract: 1.23.9
3028 |
3029 | object.values@1.2.1:
3030 | dependencies:
3031 | call-bind: 1.0.8
3032 | call-bound: 1.0.3
3033 | define-properties: 1.2.1
3034 | es-object-atoms: 1.1.1
3035 |
3036 | optionator@0.9.4:
3037 | dependencies:
3038 | deep-is: 0.1.4
3039 | fast-levenshtein: 2.0.6
3040 | levn: 0.4.1
3041 | prelude-ls: 1.2.1
3042 | type-check: 0.4.0
3043 | word-wrap: 1.2.5
3044 |
3045 | own-keys@1.0.1:
3046 | dependencies:
3047 | get-intrinsic: 1.2.7
3048 | object-keys: 1.1.1
3049 | safe-push-apply: 1.0.0
3050 |
3051 | p-limit@3.1.0:
3052 | dependencies:
3053 | yocto-queue: 0.1.0
3054 |
3055 | p-locate@5.0.0:
3056 | dependencies:
3057 | p-limit: 3.1.0
3058 |
3059 | package-json-from-dist@1.0.1: {}
3060 |
3061 | parent-module@1.0.1:
3062 | dependencies:
3063 | callsites: 3.1.0
3064 |
3065 | path-exists@4.0.0: {}
3066 |
3067 | path-key@3.1.1: {}
3068 |
3069 | path-parse@1.0.7: {}
3070 |
3071 | path-scurry@1.11.1:
3072 | dependencies:
3073 | lru-cache: 10.4.3
3074 | minipass: 7.1.2
3075 |
3076 | picocolors@1.1.1: {}
3077 |
3078 | picomatch@2.3.1: {}
3079 |
3080 | pify@2.3.0: {}
3081 |
3082 | pirates@4.0.6: {}
3083 |
3084 | possible-typed-array-names@1.1.0: {}
3085 |
3086 | postcss-import@15.1.0(postcss@8.5.1):
3087 | dependencies:
3088 | postcss: 8.5.1
3089 | postcss-value-parser: 4.2.0
3090 | read-cache: 1.0.0
3091 | resolve: 1.22.10
3092 |
3093 | postcss-js@4.0.1(postcss@8.5.1):
3094 | dependencies:
3095 | camelcase-css: 2.0.1
3096 | postcss: 8.5.1
3097 |
3098 | postcss-load-config@4.0.2(postcss@8.5.1):
3099 | dependencies:
3100 | lilconfig: 3.1.3
3101 | yaml: 2.7.0
3102 | optionalDependencies:
3103 | postcss: 8.5.1
3104 |
3105 | postcss-nested@6.2.0(postcss@8.5.1):
3106 | dependencies:
3107 | postcss: 8.5.1
3108 | postcss-selector-parser: 6.1.2
3109 |
3110 | postcss-selector-parser@6.1.2:
3111 | dependencies:
3112 | cssesc: 3.0.0
3113 | util-deprecate: 1.0.2
3114 |
3115 | postcss-value-parser@4.2.0: {}
3116 |
3117 | postcss@8.4.31:
3118 | dependencies:
3119 | nanoid: 3.3.8
3120 | picocolors: 1.1.1
3121 | source-map-js: 1.2.1
3122 |
3123 | postcss@8.5.1:
3124 | dependencies:
3125 | nanoid: 3.3.8
3126 | picocolors: 1.1.1
3127 | source-map-js: 1.2.1
3128 |
3129 | prelude-ls@1.2.1: {}
3130 |
3131 | prop-types@15.8.1:
3132 | dependencies:
3133 | loose-envify: 1.4.0
3134 | object-assign: 4.1.1
3135 | react-is: 16.13.1
3136 |
3137 | punycode@2.3.1: {}
3138 |
3139 | queue-microtask@1.2.3: {}
3140 |
3141 | react-dom@19.0.0(react@19.0.0):
3142 | dependencies:
3143 | react: 19.0.0
3144 | scheduler: 0.25.0
3145 |
3146 | react-is@16.13.1: {}
3147 |
3148 | react@19.0.0: {}
3149 |
3150 | read-cache@1.0.0:
3151 | dependencies:
3152 | pify: 2.3.0
3153 |
3154 | readdirp@3.6.0:
3155 | dependencies:
3156 | picomatch: 2.3.1
3157 |
3158 | reflect.getprototypeof@1.0.10:
3159 | dependencies:
3160 | call-bind: 1.0.8
3161 | define-properties: 1.2.1
3162 | es-abstract: 1.23.9
3163 | es-errors: 1.3.0
3164 | es-object-atoms: 1.1.1
3165 | get-intrinsic: 1.2.7
3166 | get-proto: 1.0.1
3167 | which-builtin-type: 1.2.1
3168 |
3169 | regexp.prototype.flags@1.5.4:
3170 | dependencies:
3171 | call-bind: 1.0.8
3172 | define-properties: 1.2.1
3173 | es-errors: 1.3.0
3174 | get-proto: 1.0.1
3175 | gopd: 1.2.0
3176 | set-function-name: 2.0.2
3177 |
3178 | resolve-from@4.0.0: {}
3179 |
3180 | resolve-pkg-maps@1.0.0: {}
3181 |
3182 | resolve@1.22.10:
3183 | dependencies:
3184 | is-core-module: 2.16.1
3185 | path-parse: 1.0.7
3186 | supports-preserve-symlinks-flag: 1.0.0
3187 |
3188 | resolve@2.0.0-next.5:
3189 | dependencies:
3190 | is-core-module: 2.16.1
3191 | path-parse: 1.0.7
3192 | supports-preserve-symlinks-flag: 1.0.0
3193 |
3194 | reusify@1.0.4: {}
3195 |
3196 | run-parallel@1.2.0:
3197 | dependencies:
3198 | queue-microtask: 1.2.3
3199 |
3200 | safe-array-concat@1.1.3:
3201 | dependencies:
3202 | call-bind: 1.0.8
3203 | call-bound: 1.0.3
3204 | get-intrinsic: 1.2.7
3205 | has-symbols: 1.1.0
3206 | isarray: 2.0.5
3207 |
3208 | safe-push-apply@1.0.0:
3209 | dependencies:
3210 | es-errors: 1.3.0
3211 | isarray: 2.0.5
3212 |
3213 | safe-regex-test@1.1.0:
3214 | dependencies:
3215 | call-bound: 1.0.3
3216 | es-errors: 1.3.0
3217 | is-regex: 1.2.1
3218 |
3219 | scheduler@0.25.0: {}
3220 |
3221 | semver@6.3.1: {}
3222 |
3223 | semver@7.7.1: {}
3224 |
3225 | set-function-length@1.2.2:
3226 | dependencies:
3227 | define-data-property: 1.1.4
3228 | es-errors: 1.3.0
3229 | function-bind: 1.1.2
3230 | get-intrinsic: 1.2.7
3231 | gopd: 1.2.0
3232 | has-property-descriptors: 1.0.2
3233 |
3234 | set-function-name@2.0.2:
3235 | dependencies:
3236 | define-data-property: 1.1.4
3237 | es-errors: 1.3.0
3238 | functions-have-names: 1.2.3
3239 | has-property-descriptors: 1.0.2
3240 |
3241 | set-proto@1.0.0:
3242 | dependencies:
3243 | dunder-proto: 1.0.1
3244 | es-errors: 1.3.0
3245 | es-object-atoms: 1.1.1
3246 |
3247 | sharp@0.33.5:
3248 | dependencies:
3249 | color: 4.2.3
3250 | detect-libc: 2.0.3
3251 | semver: 7.7.1
3252 | optionalDependencies:
3253 | '@img/sharp-darwin-arm64': 0.33.5
3254 | '@img/sharp-darwin-x64': 0.33.5
3255 | '@img/sharp-libvips-darwin-arm64': 1.0.4
3256 | '@img/sharp-libvips-darwin-x64': 1.0.4
3257 | '@img/sharp-libvips-linux-arm': 1.0.5
3258 | '@img/sharp-libvips-linux-arm64': 1.0.4
3259 | '@img/sharp-libvips-linux-s390x': 1.0.4
3260 | '@img/sharp-libvips-linux-x64': 1.0.4
3261 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
3262 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
3263 | '@img/sharp-linux-arm': 0.33.5
3264 | '@img/sharp-linux-arm64': 0.33.5
3265 | '@img/sharp-linux-s390x': 0.33.5
3266 | '@img/sharp-linux-x64': 0.33.5
3267 | '@img/sharp-linuxmusl-arm64': 0.33.5
3268 | '@img/sharp-linuxmusl-x64': 0.33.5
3269 | '@img/sharp-wasm32': 0.33.5
3270 | '@img/sharp-win32-ia32': 0.33.5
3271 | '@img/sharp-win32-x64': 0.33.5
3272 | optional: true
3273 |
3274 | shebang-command@2.0.0:
3275 | dependencies:
3276 | shebang-regex: 3.0.0
3277 |
3278 | shebang-regex@3.0.0: {}
3279 |
3280 | side-channel-list@1.0.0:
3281 | dependencies:
3282 | es-errors: 1.3.0
3283 | object-inspect: 1.13.4
3284 |
3285 | side-channel-map@1.0.1:
3286 | dependencies:
3287 | call-bound: 1.0.3
3288 | es-errors: 1.3.0
3289 | get-intrinsic: 1.2.7
3290 | object-inspect: 1.13.4
3291 |
3292 | side-channel-weakmap@1.0.2:
3293 | dependencies:
3294 | call-bound: 1.0.3
3295 | es-errors: 1.3.0
3296 | get-intrinsic: 1.2.7
3297 | object-inspect: 1.13.4
3298 | side-channel-map: 1.0.1
3299 |
3300 | side-channel@1.1.0:
3301 | dependencies:
3302 | es-errors: 1.3.0
3303 | object-inspect: 1.13.4
3304 | side-channel-list: 1.0.0
3305 | side-channel-map: 1.0.1
3306 | side-channel-weakmap: 1.0.2
3307 |
3308 | signal-exit@4.1.0: {}
3309 |
3310 | simple-swizzle@0.2.2:
3311 | dependencies:
3312 | is-arrayish: 0.3.2
3313 | optional: true
3314 |
3315 | source-map-js@1.2.1: {}
3316 |
3317 | stable-hash@0.0.4: {}
3318 |
3319 | streamsearch@1.1.0: {}
3320 |
3321 | string-width@4.2.3:
3322 | dependencies:
3323 | emoji-regex: 8.0.0
3324 | is-fullwidth-code-point: 3.0.0
3325 | strip-ansi: 6.0.1
3326 |
3327 | string-width@5.1.2:
3328 | dependencies:
3329 | eastasianwidth: 0.2.0
3330 | emoji-regex: 9.2.2
3331 | strip-ansi: 7.1.0
3332 |
3333 | string.prototype.includes@2.0.1:
3334 | dependencies:
3335 | call-bind: 1.0.8
3336 | define-properties: 1.2.1
3337 | es-abstract: 1.23.9
3338 |
3339 | string.prototype.matchall@4.0.12:
3340 | dependencies:
3341 | call-bind: 1.0.8
3342 | call-bound: 1.0.3
3343 | define-properties: 1.2.1
3344 | es-abstract: 1.23.9
3345 | es-errors: 1.3.0
3346 | es-object-atoms: 1.1.1
3347 | get-intrinsic: 1.2.7
3348 | gopd: 1.2.0
3349 | has-symbols: 1.1.0
3350 | internal-slot: 1.1.0
3351 | regexp.prototype.flags: 1.5.4
3352 | set-function-name: 2.0.2
3353 | side-channel: 1.1.0
3354 |
3355 | string.prototype.repeat@1.0.0:
3356 | dependencies:
3357 | define-properties: 1.2.1
3358 | es-abstract: 1.23.9
3359 |
3360 | string.prototype.trim@1.2.10:
3361 | dependencies:
3362 | call-bind: 1.0.8
3363 | call-bound: 1.0.3
3364 | define-data-property: 1.1.4
3365 | define-properties: 1.2.1
3366 | es-abstract: 1.23.9
3367 | es-object-atoms: 1.1.1
3368 | has-property-descriptors: 1.0.2
3369 |
3370 | string.prototype.trimend@1.0.9:
3371 | dependencies:
3372 | call-bind: 1.0.8
3373 | call-bound: 1.0.3
3374 | define-properties: 1.2.1
3375 | es-object-atoms: 1.1.1
3376 |
3377 | string.prototype.trimstart@1.0.8:
3378 | dependencies:
3379 | call-bind: 1.0.8
3380 | define-properties: 1.2.1
3381 | es-object-atoms: 1.1.1
3382 |
3383 | strip-ansi@6.0.1:
3384 | dependencies:
3385 | ansi-regex: 5.0.1
3386 |
3387 | strip-ansi@7.1.0:
3388 | dependencies:
3389 | ansi-regex: 6.1.0
3390 |
3391 | strip-bom@3.0.0: {}
3392 |
3393 | strip-json-comments@3.1.1: {}
3394 |
3395 | styled-jsx@5.1.6(react@19.0.0):
3396 | dependencies:
3397 | client-only: 0.0.1
3398 | react: 19.0.0
3399 |
3400 | sucrase@3.35.0:
3401 | dependencies:
3402 | '@jridgewell/gen-mapping': 0.3.8
3403 | commander: 4.1.1
3404 | glob: 10.4.5
3405 | lines-and-columns: 1.2.4
3406 | mz: 2.7.0
3407 | pirates: 4.0.6
3408 | ts-interface-checker: 0.1.13
3409 |
3410 | supports-color@7.2.0:
3411 | dependencies:
3412 | has-flag: 4.0.0
3413 |
3414 | supports-preserve-symlinks-flag@1.0.0: {}
3415 |
3416 | tailwindcss@3.4.17:
3417 | dependencies:
3418 | '@alloc/quick-lru': 5.2.0
3419 | arg: 5.0.2
3420 | chokidar: 3.6.0
3421 | didyoumean: 1.2.2
3422 | dlv: 1.1.3
3423 | fast-glob: 3.3.3
3424 | glob-parent: 6.0.2
3425 | is-glob: 4.0.3
3426 | jiti: 1.21.7
3427 | lilconfig: 3.1.3
3428 | micromatch: 4.0.8
3429 | normalize-path: 3.0.0
3430 | object-hash: 3.0.0
3431 | picocolors: 1.1.1
3432 | postcss: 8.5.1
3433 | postcss-import: 15.1.0(postcss@8.5.1)
3434 | postcss-js: 4.0.1(postcss@8.5.1)
3435 | postcss-load-config: 4.0.2(postcss@8.5.1)
3436 | postcss-nested: 6.2.0(postcss@8.5.1)
3437 | postcss-selector-parser: 6.1.2
3438 | resolve: 1.22.10
3439 | sucrase: 3.35.0
3440 | transitivePeerDependencies:
3441 | - ts-node
3442 |
3443 | tapable@2.2.1: {}
3444 |
3445 | thenify-all@1.6.0:
3446 | dependencies:
3447 | thenify: 3.3.1
3448 |
3449 | thenify@3.3.1:
3450 | dependencies:
3451 | any-promise: 1.3.0
3452 |
3453 | to-regex-range@5.0.1:
3454 | dependencies:
3455 | is-number: 7.0.0
3456 |
3457 | ts-api-utils@2.0.1(typescript@5.7.3):
3458 | dependencies:
3459 | typescript: 5.7.3
3460 |
3461 | ts-interface-checker@0.1.13: {}
3462 |
3463 | tsconfig-paths@3.15.0:
3464 | dependencies:
3465 | '@types/json5': 0.0.29
3466 | json5: 1.0.2
3467 | minimist: 1.2.8
3468 | strip-bom: 3.0.0
3469 |
3470 | tslib@2.8.1: {}
3471 |
3472 | type-check@0.4.0:
3473 | dependencies:
3474 | prelude-ls: 1.2.1
3475 |
3476 | typed-array-buffer@1.0.3:
3477 | dependencies:
3478 | call-bound: 1.0.3
3479 | es-errors: 1.3.0
3480 | is-typed-array: 1.1.15
3481 |
3482 | typed-array-byte-length@1.0.3:
3483 | dependencies:
3484 | call-bind: 1.0.8
3485 | for-each: 0.3.4
3486 | gopd: 1.2.0
3487 | has-proto: 1.2.0
3488 | is-typed-array: 1.1.15
3489 |
3490 | typed-array-byte-offset@1.0.4:
3491 | dependencies:
3492 | available-typed-arrays: 1.0.7
3493 | call-bind: 1.0.8
3494 | for-each: 0.3.4
3495 | gopd: 1.2.0
3496 | has-proto: 1.2.0
3497 | is-typed-array: 1.1.15
3498 | reflect.getprototypeof: 1.0.10
3499 |
3500 | typed-array-length@1.0.7:
3501 | dependencies:
3502 | call-bind: 1.0.8
3503 | for-each: 0.3.4
3504 | gopd: 1.2.0
3505 | is-typed-array: 1.1.15
3506 | possible-typed-array-names: 1.1.0
3507 | reflect.getprototypeof: 1.0.10
3508 |
3509 | typescript@5.7.3: {}
3510 |
3511 | unbox-primitive@1.1.0:
3512 | dependencies:
3513 | call-bound: 1.0.3
3514 | has-bigints: 1.1.0
3515 | has-symbols: 1.1.0
3516 | which-boxed-primitive: 1.1.1
3517 |
3518 | undici-types@6.19.8: {}
3519 |
3520 | uri-js@4.4.1:
3521 | dependencies:
3522 | punycode: 2.3.1
3523 |
3524 | util-deprecate@1.0.2: {}
3525 |
3526 | which-boxed-primitive@1.1.1:
3527 | dependencies:
3528 | is-bigint: 1.1.0
3529 | is-boolean-object: 1.2.2
3530 | is-number-object: 1.1.1
3531 | is-string: 1.1.1
3532 | is-symbol: 1.1.1
3533 |
3534 | which-builtin-type@1.2.1:
3535 | dependencies:
3536 | call-bound: 1.0.3
3537 | function.prototype.name: 1.1.8
3538 | has-tostringtag: 1.0.2
3539 | is-async-function: 2.1.1
3540 | is-date-object: 1.1.0
3541 | is-finalizationregistry: 1.1.1
3542 | is-generator-function: 1.1.0
3543 | is-regex: 1.2.1
3544 | is-weakref: 1.1.1
3545 | isarray: 2.0.5
3546 | which-boxed-primitive: 1.1.1
3547 | which-collection: 1.0.2
3548 | which-typed-array: 1.1.18
3549 |
3550 | which-collection@1.0.2:
3551 | dependencies:
3552 | is-map: 2.0.3
3553 | is-set: 2.0.3
3554 | is-weakmap: 2.0.2
3555 | is-weakset: 2.0.4
3556 |
3557 | which-typed-array@1.1.18:
3558 | dependencies:
3559 | available-typed-arrays: 1.0.7
3560 | call-bind: 1.0.8
3561 | call-bound: 1.0.3
3562 | for-each: 0.3.4
3563 | gopd: 1.2.0
3564 | has-tostringtag: 1.0.2
3565 |
3566 | which@2.0.2:
3567 | dependencies:
3568 | isexe: 2.0.0
3569 |
3570 | word-wrap@1.2.5: {}
3571 |
3572 | wrap-ansi@7.0.0:
3573 | dependencies:
3574 | ansi-styles: 4.3.0
3575 | string-width: 4.2.3
3576 | strip-ansi: 6.0.1
3577 |
3578 | wrap-ansi@8.1.0:
3579 | dependencies:
3580 | ansi-styles: 6.2.1
3581 | string-width: 5.1.2
3582 | strip-ansi: 7.1.0
3583 |
3584 | yaml@2.7.0: {}
3585 |
3586 | yocto-queue@0.1.0: {}
3587 |
--------------------------------------------------------------------------------
/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | /** @type {import('postcss-load-config').Config} */
2 | const config = {
3 | plugins: {
4 | tailwindcss: {},
5 | },
6 | };
7 |
8 | export default config;
9 |
--------------------------------------------------------------------------------
/public/file.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/globe.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/next.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/vercel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/window.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | pdf2docx
2 | python-docx
3 | spacy
--------------------------------------------------------------------------------
/setup.ps1:
--------------------------------------------------------------------------------
1 | # Check if a command exists
2 | function Test-CommandExists {
3 | param (
4 | [string]$Command
5 | )
6 | $exists = $null -ne (Get-Command $Command -ErrorAction SilentlyContinue)
7 | return $exists
8 | }
9 |
10 | # Install Python on Windows
11 | function Install-PythonWindows {
12 | Write-Host "Attempting to install Python 3.11..."
13 | # Python installation on Windows should be done manually or through an installer
14 | Write-Host "Please install Python 3.11 manually from the official website."
15 | exit
16 | }
17 |
18 | # 1. Check if Python is installed
19 | if (-not (Test-CommandExists "python") -and -not (Test-CommandExists "python3")) {
20 | Write-Host "Python is not installed. Attempting to install..."
21 | Install-PythonWindows
22 | # Recheck if Python is installed
23 | if (-not (Test-CommandExists "python") -and -not (Test-CommandExists "python3")) {
24 | Write-Host "Python installation failed. Please install Python manually."
25 | exit
26 | }
27 | } else {
28 | Write-Host "Python is already installed."
29 | }
30 |
31 | # 2. Check if Flutter is installed
32 | if (-not (Test-CommandExists "flutter")) {
33 | Write-Host "Warning: If you want to build the GUI, you might need Flutter (optionally)."
34 | }
35 |
36 | # 3. Install requirements using pip
37 | try {
38 | pip install -r requirements.txt -ErrorAction Stop
39 | } catch {
40 | try {
41 | pip3 install -r requirements.txt -ErrorAction Stop
42 | } catch {
43 | Write-Host "Failed to install requirements with pip and pip3. Attempting to install pip..."
44 | python -m ensurepip
45 | if ($LASTEXITCODE -ne 0) {
46 | python3 -m ensurepip
47 | }
48 | if ($LASTEXITCODE -ne 0) {
49 | Write-Host "Failed to install pip. Please reinstall Python manually."
50 | exit
51 | }
52 | pip install -r requirements.txt
53 | }
54 | }
55 |
56 | # 4. Download spacy model
57 | try {
58 | python -m spacy download en_core_web_sm -ErrorAction Stop
59 | } catch {
60 | python3 -m spacy download en_core_web_sm
61 | if ($LASTEXITCODE -ne 0) {
62 | Write-Host "Failed to download spacy model. Please check your Python installation."
63 | exit
64 | }
65 | }
66 |
67 | # 5. Inform the user about the next steps
68 | Write-Host "To use the CLI, run the following command from the current directory:"
69 | Write-Host "python bionicpython/bionicpython.py ''"
70 | Write-Host "Remember to insert the path in quotes if it isn't already."
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import setup, find_packages
2 |
3 | setup(
4 | name='Your-Package-Name',
5 | version='0.1',
6 | packages=find_packages(),
7 | description='convert your pdfs and docx to bionic reading format.',
8 | author='Nathaniel',
9 | # author_email='your.email@example.com',
10 | url='https://github.com/nathfavour/bionicpython',
11 | install_requires=[
12 | 'pdf2docx',
13 | 'python-docx',
14 | 'spacy',
15 | ],
16 | )
--------------------------------------------------------------------------------
/setup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Function to check if command exists
4 | command_exists() {
5 | command -v "$1" >/dev/null 2>&1
6 | }
7 |
8 | # Function to install Python on macOS
9 | install_python_macos() {
10 | echo "Installing Python 3.11 using Homebrew..."
11 | brew install python@3.11
12 | }
13 |
14 | # Function to install Python on Linux
15 | install_python_linux() {
16 | echo "Installing Python 3.11 using apt..."
17 | sudo apt update
18 | sudo apt install python3.11 -y
19 | }
20 |
21 | # 1. Check if Python is installed
22 | if ! command_exists python && ! command_exists python3; then
23 | echo "Python is not installed. Attempting to install..."
24 | if [[ "$OSTYPE" == "darwin"* ]]; then
25 | install_python_macos
26 | else
27 | install_python_linux
28 | fi
29 | # Open a new terminal to check if installation was successful
30 | if ! command_exists python && ! command_exists python3; then
31 | echo "Python installation failed. Please install Python manually."
32 | exit 1
33 | fi
34 | else
35 | echo "Python is already installed."
36 | fi
37 |
38 | # 2. Check if Flutter is installed
39 | if ! command_exists flutter; then
40 | echo "Warning: If you want to build the GUI, you might need Flutter (optionally)."
41 | fi
42 |
43 | # 3. Install requirements using pip
44 | open_new_terminal_and_run() {
45 | if [[ "$OSTYPE" == "darwin"* ]]; then
46 | osascript -e 'tell app "Terminal" to do script "'"$1"'"'
47 | else
48 | x-terminal-emulator -e $1
49 | fi
50 | }
51 |
52 | open_new_terminal_and_run "
53 | if ! pip install -r requirements.txt && ! pip3 install -r requirements.txt; then
54 | if ! command_exists pip; then
55 | python -m ensurepip || python3 -m ensurepip
56 | fi
57 | if ! pip install -r requirements.txt && ! pip3 install -r requirements.txt; then
58 | echo 'Failed to install requirements. Please reinstall Python manually.'
59 | exit 1
60 | fi
61 | fi
62 | "
63 |
64 | # 4. Download spacy model
65 | if ! python -m spacy download en_core_web_sm && ! python3 -m spacy download en_core_web_sm; then
66 | echo "Failed to download spacy model. Please check your Python installation."
67 | exit 1
68 | fi
69 |
70 | # 5. Inform the user about the next steps
71 | echo "To use the CLI, run the following command from the current directory:"
72 | echo "python bionicpython/bionicpython.py ''"
73 | echo "Remember to insert the path in quotes if it isn't already."
--------------------------------------------------------------------------------
/src/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nathfavour/bionicpython/ecc18760935cf22dc2b5769d830902db990390fc/src/app/favicon.ico
--------------------------------------------------------------------------------
/src/app/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | :root {
6 | --background: #ffffff;
7 | --foreground: #171717;
8 | }
9 |
10 | @media (prefers-color-scheme: dark) {
11 | :root {
12 | --background: #0a0a0a;
13 | --foreground: #ededed;
14 | }
15 | }
16 |
17 | body {
18 | color: var(--foreground);
19 | background: var(--background);
20 | font-family: Arial, Helvetica, sans-serif;
21 | }
22 |
--------------------------------------------------------------------------------
/src/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type { Metadata } from "next";
2 | import { Geist, Geist_Mono } from "next/font/google";
3 | import "./globals.css";
4 |
5 | const geistSans = Geist({
6 | variable: "--font-geist-sans",
7 | subsets: ["latin"],
8 | });
9 |
10 | const geistMono = Geist_Mono({
11 | variable: "--font-geist-mono",
12 | subsets: ["latin"],
13 | });
14 |
15 | export const metadata: Metadata = {
16 | title: "Create Next App",
17 | description: "Generated by create next app",
18 | };
19 |
20 | export default function RootLayout({
21 | children,
22 | }: Readonly<{
23 | children: React.ReactNode;
24 | }>) {
25 | return (
26 |
27 |
30 | {children}
31 |
32 |
33 | );
34 | }
35 |
--------------------------------------------------------------------------------
/src/app/page.tsx:
--------------------------------------------------------------------------------
1 | import Image from "next/image";
2 |
3 | export default function Home() {
4 | return (
5 |
6 |
7 |
15 |
16 | -
17 | Get started by editing{" "}
18 |
19 | src/app/page.tsx
20 |
21 | .
22 |
23 | - Save and see your changes instantly.
24 |
25 |
26 |
51 |
52 |
99 |
100 | );
101 | }
102 |
--------------------------------------------------------------------------------
/tailwind.config.ts:
--------------------------------------------------------------------------------
1 | import type { Config } from "tailwindcss";
2 |
3 | export default {
4 | content: [
5 | "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
6 | "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
7 | "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
8 | ],
9 | theme: {
10 | extend: {
11 | colors: {
12 | background: "var(--background)",
13 | foreground: "var(--foreground)",
14 | },
15 | },
16 | },
17 | plugins: [],
18 | } satisfies Config;
19 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2017",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "moduleResolution": "bundler",
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "jsx": "preserve",
15 | "incremental": true,
16 | "plugins": [
17 | {
18 | "name": "next"
19 | }
20 | ],
21 | "paths": {
22 | "@/*": ["./src/*"]
23 | }
24 | },
25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "../next.config.ts"],
26 | "exclude": ["node_modules"]
27 | }
28 |
--------------------------------------------------------------------------------