├── .eslintignore ├── .github └── workflows │ └── publish.yaml ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc.json ├── CHANGELOG.md ├── README.md ├── demo ├── .gitignore ├── README.md ├── astro.config.mjs ├── package.json ├── pnpm-lock.yaml ├── public │ └── favicon.svg ├── src │ ├── env.d.ts │ ├── lib │ │ └── form.tsx │ └── pages │ │ └── index.astro ├── tailwind.config.cjs └── tsconfig.json ├── package.json ├── pnpm-lock.yaml ├── src ├── client │ └── index.ts ├── index.ts ├── result.ts ├── server │ ├── index.ts │ ├── multipart-form.ts │ ├── request.ts │ ├── response.ts │ └── result.ts └── utils.ts ├── test └── index.ts └── tsconfig.json /.eslintignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build -------------------------------------------------------------------------------- /.github/workflows/publish.yaml: -------------------------------------------------------------------------------- 1 | name: "Check and publish to NPM" 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | jobs: 8 | publish: 9 | name: Publish 10 | runs-on: ubuntu-latest 11 | if: github.event_name == 'push' && github.ref == 'refs/heads/main' 12 | steps: 13 | - uses: actions/checkout@v3 14 | - name: node 15 | uses: actions/setup-node@v3 16 | with: 17 | node-version: 18 18 | registry-url: https://registry.npmjs.org 19 | - name: publish 20 | env: 21 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} 22 | run: | 23 | npm i -g pnpm 24 | pnpm install --no-frozen-lockfile 25 | pnpm build 26 | pnpm release 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /dist 3 | .DS_Store 4 | .env 5 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | /dist 3 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "trailingComma": "none", 4 | "pluginSearchDirs": ["."] 5 | } 6 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ### 0.4.1 4 | 5 | - [Fix] Proper types for `result.inputValues` for `action()` 6 | 7 | ### 0.4.0 8 | 9 | - [Breaking] Rename `handleFormSubmission()` to `action()` 10 | - [Breaking] Rename `result.redirect_location` to `result.redirectLocation` for return type of `submitForm()` 11 | 12 | ### 0.3.2 13 | 14 | - Remove unused code 15 | 16 | ### 0.3.1 17 | 18 | - Remove `parse-multipart-data` dependency 19 | - Remove Node dependencies 20 | 21 | ### 0.3.0 22 | 23 | - Enable CSRF protection by default 24 | - [Breaking] Remove `redirected` from `handleFormSubmission` result, add `redirectLocation` 25 | - [Breaking] `inputValues` in `handleFormSubmission` result omits file values 26 | - Make body parameter for `resolve` optional 27 | 28 | ### 0.2.3 29 | 30 | - Update README 31 | 32 | ### 0.2.2 33 | 34 | - [Fix] Fix package.json 35 | 36 | ### 0.2.1 37 | 38 | - [Fix] Proper types for `handleFormSubmission` -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Astro form actions 2 | 3 | Use progressive form enhancement and handle form submissions in Astro. This library only uses native Web APIs and can be used in any runtime. 4 | 5 | ``` 6 | npm i astro-form-actions 7 | pnpm add astro-form-actions 8 | yarn add astro-form-actions 9 | ``` 10 | 11 | **Documentation: https://github.com/pilcrowOnPaper/astro-form-actions/wiki** 12 | 13 | **Demo: https://astro-form-actions.vercel.app** 14 | 15 | > Need a library to parse your forms? Check out my other project [Adria](https://github.com/pilcrowOnPaper/adria)! 16 | 17 | ### Features 18 | 19 | - Simple 20 | - Type inference 21 | - Supports multipart form data 22 | - Framework agnostic 23 | 24 | ## Overview 25 | 26 | This library is made up of 2 parts: server side and client side. 27 | 28 | ### Server side 29 | 30 | `handleFormSubmission` will handle all POST requests to the page. 31 | 32 | ```ts 33 | // inside .astro page 34 | import { 35 | handleFormSubmission, 36 | reject, 37 | resolve, 38 | redirect 39 | } from "astro-form-actions"; 40 | 41 | const { response, error, inputValues, body } = await handleFormSubmission( 42 | Astro, 43 | async (formData) => { 44 | const message = formData.get("message"); 45 | if (typeof notes !== "string") 46 | return reject(400, { 47 | message: "bad input" 48 | }); 49 | // do some stuff 50 | return resolve({ 51 | success: true 52 | }); 53 | } 54 | ); 55 | if (response) return response; 56 | ``` 57 | 58 | ### Client side 59 | 60 | You can use a regular HTML form: 61 | 62 | ```html 63 |
64 | 65 | 66 |
67 | ``` 68 | 69 | Or, by using component frameworks like Solid (or just even vanilla JS), you can use `submitForm` to make the submission. 70 | 71 | ```tsx 72 | import { submitForm } from "astro-form-actions/client"; 73 | 74 | export default () => { 75 | return ( 76 |
{ 79 | e.preventDefault(); 80 | const { error } = await submitForm< 81 | { 82 | success: boolean; 83 | }, 84 | { 85 | message: string; 86 | } 87 | >(e.currentTarget); 88 | }} 89 | > 90 | 91 | 92 |
93 | ); 94 | }; 95 | ``` 96 | 97 | ## Other 98 | 99 | Parts of the library is from https://github.com/nachomazzara/parse-multipart-data. 100 | -------------------------------------------------------------------------------- /demo/.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | 4 | # dependencies 5 | node_modules/ 6 | 7 | # logs 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | pnpm-debug.log* 12 | 13 | 14 | # environment variables 15 | .env 16 | .env.production 17 | 18 | # macOS-specific files 19 | .DS_Store 20 | 21 | .vscode/ 22 | .vercel/ -------------------------------------------------------------------------------- /demo/README.md: -------------------------------------------------------------------------------- 1 | # Astro form actions demo -------------------------------------------------------------------------------- /demo/astro.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'astro/config'; 2 | 3 | import tailwind from "@astrojs/tailwind"; 4 | import solidJs from "@astrojs/solid-js"; 5 | import vercel from "@astrojs/vercel/serverless"; 6 | 7 | export default defineConfig({ 8 | integrations: [tailwind(), solidJs()], 9 | output: "server", 10 | adapter: vercel() 11 | }); -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "astro-form-actions", 3 | "type": "module", 4 | "version": "0.0.1", 5 | "private": true, 6 | "scripts": { 7 | "dev": "astro dev", 8 | "start": "astro dev", 9 | "build": "astro build", 10 | "preview": "astro preview", 11 | "astro": "astro" 12 | }, 13 | "dependencies": { 14 | "@astrojs/solid-js": "^1.2.3", 15 | "@astrojs/tailwind": "^2.1.3", 16 | "@astrojs/vercel": "^2.4.0", 17 | "astro": "^1.9.2", 18 | "astro-form-actions": "0.4.1", 19 | "solid-js": "^1.6.9", 20 | "tailwindcss": "^3.2.4" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /demo/public/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /demo/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /demo/src/lib/form.tsx: -------------------------------------------------------------------------------- 1 | import { createSignal } from "solid-js"; 2 | import { submitForm } from "astro-form-actions/client"; 3 | 4 | type ErrorData = { 5 | message: string; 6 | }; 7 | 8 | export default ({ 9 | error, 10 | notes 11 | }: { 12 | error: ErrorData | null; 13 | notes: string; 14 | }) => { 15 | const [errorMessage, setErrorMessage] = createSignal(error?.message ?? null); 16 | return ( 17 |
{ 22 | e.preventDefault() 23 | const { error } = await submitForm<{}, ErrorData>(e.currentTarget); 24 | setErrorMessage(error?.message ?? null); 25 | }} 26 | > 27 |

Type "invalid" to error, "redirect" to redirect

28 | 36 |

{errorMessage()}

37 | 42 |
43 | ); 44 | }; 45 | -------------------------------------------------------------------------------- /demo/src/pages/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import { action, reject, resolve, redirect } from "astro-form-actions"; 3 | import Form from "../lib/form"; 4 | 5 | const { response, error, inputValues } = await action( 6 | Astro, 7 | async (formData) => { 8 | const notes = formData.get("notes") 9 | if (typeof notes !== "string") 10 | return reject(400, { 11 | message: "bad input" 12 | }); 13 | if (notes === "invalid") 14 | return reject(400, { 15 | message: "invalid input" 16 | }); 17 | if (notes === "redirect") 18 | return redirect( 19 | 302, 20 | "https://github.com/pilcrowOnPaper/astro-form-actions" 21 | ); 22 | Astro.cookies.set("notes", encodeURI(notes), { 23 | path: "/", 24 | httpOnly: true 25 | }); 26 | return resolve({}); 27 | } 28 | ); 29 | if (response) return response; 30 | const storedNotes = decodeURI(Astro.cookies.get("notes").value ?? ""); 31 | const notes = inputValues.notes ?? storedNotes; 32 | --- 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | Astro form actions demo 41 | 42 | 43 |

Astro form actions

44 |

This form works without JavaScript as well.

45 |

Notes

46 |
47 | Github repo 51 | 52 | 53 | -------------------------------------------------------------------------------- /demo/tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [], 8 | } 9 | -------------------------------------------------------------------------------- /demo/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "astro/tsconfigs/strict", 3 | "compilerOptions": { 4 | "jsx": "preserve", 5 | "jsxImportSource": "solid-js" 6 | } 7 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "astro-form-actions", 3 | "version": "0.4.1", 4 | "description": "Forms in Astro made easy", 5 | "main": "index.js", 6 | "types": "index.d.ts", 7 | "module": "index.js", 8 | "type": "module", 9 | "files": [ 10 | "**/*" 11 | ], 12 | "scripts": { 13 | "build": "shx rm -rf ./dist/* && tsc && shx cp ./package.json ./dist && shx cp ./README.md ./dist", 14 | "release": "pnpm build && cd dist && pnpm install --no-frozen-lockfile && pnpm publish --no-git-checks --access public && cd ../", 15 | "test": "pnpm exec ts-node --esm -T test/index.ts" 16 | }, 17 | "keywords": [], 18 | "repository": { 19 | "type": "git", 20 | "url": "", 21 | "directory": "/" 22 | }, 23 | "author": "", 24 | "license": "MIT", 25 | "exports": { 26 | ".": "./index.js", 27 | "./client": "./client/index.js" 28 | }, 29 | "typesVersions": { 30 | "*": { 31 | "client": [ 32 | "client/index.d.ts" 33 | ] 34 | } 35 | }, 36 | "devDependencies": { 37 | "@types/node": "^18.11.18", 38 | "astro": "^1.9.2", 39 | "prettier": "^2.8.3", 40 | "shx": "^0.3.4", 41 | "ts-node": "^10.9.1", 42 | "typescript": "^4.9.4" 43 | }, 44 | "peerDependencies": { 45 | "astro": "1.x" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@types/node': ^18.11.18 5 | astro: ^1.9.2 6 | prettier: ^2.8.3 7 | shx: ^0.3.4 8 | ts-node: ^10.9.1 9 | typescript: ^4.9.4 10 | 11 | devDependencies: 12 | '@types/node': 18.11.18 13 | astro: 1.9.2_zfha7dvnw4nti6zkbsmhmn6xo4 14 | prettier: 2.8.3 15 | shx: 0.3.4 16 | ts-node: 10.9.1_awa2wsr5thmg3i7jqycphctjfq 17 | typescript: 4.9.4 18 | 19 | packages: 20 | 21 | /@ampproject/remapping/2.2.0: 22 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} 23 | engines: {node: '>=6.0.0'} 24 | dependencies: 25 | '@jridgewell/gen-mapping': 0.1.1 26 | '@jridgewell/trace-mapping': 0.3.9 27 | dev: true 28 | 29 | /@astrojs/compiler/0.31.4: 30 | resolution: {integrity: sha512-6bBFeDTtPOn4jZaiD3p0f05MEGQL9pw2Zbfj546oFETNmjJFWO3nzHz6/m+P53calknCvyVzZ5YhoBLIvzn5iw==} 31 | dev: true 32 | 33 | /@astrojs/language-server/0.28.3: 34 | resolution: {integrity: sha512-fPovAX/X46eE2w03jNRMpQ7W9m2mAvNt4Ay65lD9wl1Z5vIQYxlg7Enp9qP225muTr4jSVB5QiLumFJmZMAaVA==} 35 | hasBin: true 36 | dependencies: 37 | '@vscode/emmet-helper': 2.8.6 38 | events: 3.3.0 39 | prettier: 2.8.3 40 | prettier-plugin-astro: 0.7.2 41 | source-map: 0.7.4 42 | vscode-css-languageservice: 6.2.1 43 | vscode-html-languageservice: 5.0.3 44 | vscode-languageserver: 8.0.2 45 | vscode-languageserver-protocol: 3.17.2 46 | vscode-languageserver-textdocument: 1.0.8 47 | vscode-languageserver-types: 3.17.2 48 | vscode-uri: 3.0.7 49 | dev: true 50 | 51 | /@astrojs/markdown-remark/1.2.0: 52 | resolution: {integrity: sha512-Cb+uhSuukyfERknfJ8K4iJLeKJaiZWi1BTwPS4fzw0bc9kGKe5VeTRzd2E25+vaMnRTk0tN/y6QfYEMMN3Q97g==} 53 | dependencies: 54 | '@astrojs/micromark-extension-mdx-jsx': 1.0.3 55 | '@astrojs/prism': 1.0.2 56 | acorn: 8.8.1 57 | acorn-jsx: 5.3.2_acorn@8.8.1 58 | github-slugger: 1.5.0 59 | hast-util-to-html: 8.0.4 60 | import-meta-resolve: 2.2.1 61 | mdast-util-from-markdown: 1.2.0 62 | mdast-util-mdx-expression: 1.3.1 63 | mdast-util-mdx-jsx: 1.2.0 64 | micromark-extension-mdx-expression: 1.0.3 65 | micromark-extension-mdx-md: 1.0.0 66 | micromark-util-combine-extensions: 1.0.0 67 | rehype-raw: 6.1.1 68 | rehype-stringify: 9.0.3 69 | remark-gfm: 3.0.1 70 | remark-parse: 10.0.1 71 | remark-rehype: 10.1.0 72 | remark-smartypants: 2.0.0 73 | shiki: 0.11.1 74 | unified: 10.1.2 75 | unist-util-map: 3.1.2 76 | unist-util-visit: 4.1.1 77 | vfile: 5.3.6 78 | transitivePeerDependencies: 79 | - supports-color 80 | dev: true 81 | 82 | /@astrojs/micromark-extension-mdx-jsx/1.0.3: 83 | resolution: {integrity: sha512-O15+i2DGG0qb1R/1SYbFXgOKDGbYdV8iJMtuboVb1S9YFQfMOJxaCMco0bhXQI7PmZcQ4pZWIjT5oZ64dXUtRA==} 84 | dependencies: 85 | '@types/acorn': 4.0.6 86 | estree-util-is-identifier-name: 2.0.1 87 | micromark-factory-mdx-expression: 1.0.6 88 | micromark-factory-space: 1.0.0 89 | micromark-util-character: 1.1.0 90 | micromark-util-symbol: 1.0.1 91 | micromark-util-types: 1.0.2 92 | uvu: 0.5.6 93 | vfile-message: 3.1.3 94 | dev: true 95 | 96 | /@astrojs/prism/1.0.2: 97 | resolution: {integrity: sha512-o3cUVoAuALDqdN5puNlsN2eO4Yi1kDh68YO8V7o6U4Ts+J/mMayzlJ7JsgYAmob0xrf/XnADVgu8khfMv/w3uA==} 98 | engines: {node: ^14.18.0 || >=16.12.0} 99 | dependencies: 100 | prismjs: 1.29.0 101 | dev: true 102 | 103 | /@astrojs/telemetry/1.0.1: 104 | resolution: {integrity: sha512-SJVfZHp00f8VZsT1fsx1+6acJGUNt/84xZytV5znPzzNE8RXjlE0rv03llgTsEeUHYZc6uJah91jNojS7RldFg==} 105 | engines: {node: ^14.18.0 || >=16.12.0} 106 | dependencies: 107 | ci-info: 3.7.1 108 | debug: 4.3.4 109 | dlv: 1.1.3 110 | dset: 3.1.2 111 | is-docker: 3.0.0 112 | is-wsl: 2.2.0 113 | node-fetch: 3.3.0 114 | which-pm-runs: 1.1.0 115 | transitivePeerDependencies: 116 | - supports-color 117 | dev: true 118 | 119 | /@astrojs/webapi/1.1.1: 120 | resolution: {integrity: sha512-yeUvP27PoiBK/WCxyQzC4HLYZo4Hg6dzRd/dTsL50WGlAQVCwWcqzVJrIZKvzNDNaW/fIXutZTmdj6nec0PIGg==} 121 | dependencies: 122 | global-agent: 3.0.0 123 | node-fetch: 3.3.0 124 | dev: true 125 | 126 | /@babel/code-frame/7.18.6: 127 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 128 | engines: {node: '>=6.9.0'} 129 | dependencies: 130 | '@babel/highlight': 7.18.6 131 | dev: true 132 | 133 | /@babel/compat-data/7.20.10: 134 | resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==} 135 | engines: {node: '>=6.9.0'} 136 | dev: true 137 | 138 | /@babel/core/7.20.12: 139 | resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} 140 | engines: {node: '>=6.9.0'} 141 | dependencies: 142 | '@ampproject/remapping': 2.2.0 143 | '@babel/code-frame': 7.18.6 144 | '@babel/generator': 7.20.7 145 | '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 146 | '@babel/helper-module-transforms': 7.20.11 147 | '@babel/helpers': 7.20.7 148 | '@babel/parser': 7.20.7 149 | '@babel/template': 7.20.7 150 | '@babel/traverse': 7.20.12 151 | '@babel/types': 7.20.7 152 | convert-source-map: 1.9.0 153 | debug: 4.3.4 154 | gensync: 1.0.0-beta.2 155 | json5: 2.2.3 156 | semver: 6.3.0 157 | transitivePeerDependencies: 158 | - supports-color 159 | dev: true 160 | 161 | /@babel/generator/7.20.7: 162 | resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} 163 | engines: {node: '>=6.9.0'} 164 | dependencies: 165 | '@babel/types': 7.20.7 166 | '@jridgewell/gen-mapping': 0.3.2 167 | jsesc: 2.5.2 168 | dev: true 169 | 170 | /@babel/helper-annotate-as-pure/7.18.6: 171 | resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} 172 | engines: {node: '>=6.9.0'} 173 | dependencies: 174 | '@babel/types': 7.20.7 175 | dev: true 176 | 177 | /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: 178 | resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} 179 | engines: {node: '>=6.9.0'} 180 | peerDependencies: 181 | '@babel/core': ^7.0.0 182 | dependencies: 183 | '@babel/compat-data': 7.20.10 184 | '@babel/core': 7.20.12 185 | '@babel/helper-validator-option': 7.18.6 186 | browserslist: 4.21.4 187 | lru-cache: 5.1.1 188 | semver: 6.3.0 189 | dev: true 190 | 191 | /@babel/helper-environment-visitor/7.18.9: 192 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} 193 | engines: {node: '>=6.9.0'} 194 | dev: true 195 | 196 | /@babel/helper-function-name/7.19.0: 197 | resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} 198 | engines: {node: '>=6.9.0'} 199 | dependencies: 200 | '@babel/template': 7.20.7 201 | '@babel/types': 7.20.7 202 | dev: true 203 | 204 | /@babel/helper-hoist-variables/7.18.6: 205 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 206 | engines: {node: '>=6.9.0'} 207 | dependencies: 208 | '@babel/types': 7.20.7 209 | dev: true 210 | 211 | /@babel/helper-module-imports/7.18.6: 212 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 213 | engines: {node: '>=6.9.0'} 214 | dependencies: 215 | '@babel/types': 7.20.7 216 | dev: true 217 | 218 | /@babel/helper-module-transforms/7.20.11: 219 | resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} 220 | engines: {node: '>=6.9.0'} 221 | dependencies: 222 | '@babel/helper-environment-visitor': 7.18.9 223 | '@babel/helper-module-imports': 7.18.6 224 | '@babel/helper-simple-access': 7.20.2 225 | '@babel/helper-split-export-declaration': 7.18.6 226 | '@babel/helper-validator-identifier': 7.19.1 227 | '@babel/template': 7.20.7 228 | '@babel/traverse': 7.20.12 229 | '@babel/types': 7.20.7 230 | transitivePeerDependencies: 231 | - supports-color 232 | dev: true 233 | 234 | /@babel/helper-plugin-utils/7.20.2: 235 | resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} 236 | engines: {node: '>=6.9.0'} 237 | dev: true 238 | 239 | /@babel/helper-simple-access/7.20.2: 240 | resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} 241 | engines: {node: '>=6.9.0'} 242 | dependencies: 243 | '@babel/types': 7.20.7 244 | dev: true 245 | 246 | /@babel/helper-split-export-declaration/7.18.6: 247 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 248 | engines: {node: '>=6.9.0'} 249 | dependencies: 250 | '@babel/types': 7.20.7 251 | dev: true 252 | 253 | /@babel/helper-string-parser/7.19.4: 254 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 255 | engines: {node: '>=6.9.0'} 256 | dev: true 257 | 258 | /@babel/helper-validator-identifier/7.19.1: 259 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 260 | engines: {node: '>=6.9.0'} 261 | dev: true 262 | 263 | /@babel/helper-validator-option/7.18.6: 264 | resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} 265 | engines: {node: '>=6.9.0'} 266 | dev: true 267 | 268 | /@babel/helpers/7.20.7: 269 | resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} 270 | engines: {node: '>=6.9.0'} 271 | dependencies: 272 | '@babel/template': 7.20.7 273 | '@babel/traverse': 7.20.12 274 | '@babel/types': 7.20.7 275 | transitivePeerDependencies: 276 | - supports-color 277 | dev: true 278 | 279 | /@babel/highlight/7.18.6: 280 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 281 | engines: {node: '>=6.9.0'} 282 | dependencies: 283 | '@babel/helper-validator-identifier': 7.19.1 284 | chalk: 2.4.2 285 | js-tokens: 4.0.0 286 | dev: true 287 | 288 | /@babel/parser/7.20.7: 289 | resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} 290 | engines: {node: '>=6.0.0'} 291 | hasBin: true 292 | dependencies: 293 | '@babel/types': 7.20.7 294 | dev: true 295 | 296 | /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: 297 | resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} 298 | engines: {node: '>=6.9.0'} 299 | peerDependencies: 300 | '@babel/core': ^7.0.0-0 301 | dependencies: 302 | '@babel/core': 7.20.12 303 | '@babel/helper-plugin-utils': 7.20.2 304 | dev: true 305 | 306 | /@babel/plugin-transform-react-jsx/7.20.7_@babel+core@7.20.12: 307 | resolution: {integrity: sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==} 308 | engines: {node: '>=6.9.0'} 309 | peerDependencies: 310 | '@babel/core': ^7.0.0-0 311 | dependencies: 312 | '@babel/core': 7.20.12 313 | '@babel/helper-annotate-as-pure': 7.18.6 314 | '@babel/helper-module-imports': 7.18.6 315 | '@babel/helper-plugin-utils': 7.20.2 316 | '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 317 | '@babel/types': 7.20.7 318 | dev: true 319 | 320 | /@babel/template/7.20.7: 321 | resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} 322 | engines: {node: '>=6.9.0'} 323 | dependencies: 324 | '@babel/code-frame': 7.18.6 325 | '@babel/parser': 7.20.7 326 | '@babel/types': 7.20.7 327 | dev: true 328 | 329 | /@babel/traverse/7.20.12: 330 | resolution: {integrity: sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==} 331 | engines: {node: '>=6.9.0'} 332 | dependencies: 333 | '@babel/code-frame': 7.18.6 334 | '@babel/generator': 7.20.7 335 | '@babel/helper-environment-visitor': 7.18.9 336 | '@babel/helper-function-name': 7.19.0 337 | '@babel/helper-hoist-variables': 7.18.6 338 | '@babel/helper-split-export-declaration': 7.18.6 339 | '@babel/parser': 7.20.7 340 | '@babel/types': 7.20.7 341 | debug: 4.3.4 342 | globals: 11.12.0 343 | transitivePeerDependencies: 344 | - supports-color 345 | dev: true 346 | 347 | /@babel/types/7.20.7: 348 | resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} 349 | engines: {node: '>=6.9.0'} 350 | dependencies: 351 | '@babel/helper-string-parser': 7.19.4 352 | '@babel/helper-validator-identifier': 7.19.1 353 | to-fast-properties: 2.0.0 354 | dev: true 355 | 356 | /@cspotcode/source-map-support/0.8.1: 357 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 358 | engines: {node: '>=12'} 359 | dependencies: 360 | '@jridgewell/trace-mapping': 0.3.9 361 | dev: true 362 | 363 | /@emmetio/abbreviation/2.2.3: 364 | resolution: {integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==} 365 | dependencies: 366 | '@emmetio/scanner': 1.0.0 367 | dev: true 368 | 369 | /@emmetio/css-abbreviation/2.1.4: 370 | resolution: {integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==} 371 | dependencies: 372 | '@emmetio/scanner': 1.0.0 373 | dev: true 374 | 375 | /@emmetio/scanner/1.0.0: 376 | resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} 377 | dev: true 378 | 379 | /@esbuild/android-arm/0.15.18: 380 | resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} 381 | engines: {node: '>=12'} 382 | cpu: [arm] 383 | os: [android] 384 | requiresBuild: true 385 | dev: true 386 | optional: true 387 | 388 | /@esbuild/linux-loong64/0.15.18: 389 | resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} 390 | engines: {node: '>=12'} 391 | cpu: [loong64] 392 | os: [linux] 393 | requiresBuild: true 394 | dev: true 395 | optional: true 396 | 397 | /@jridgewell/gen-mapping/0.1.1: 398 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} 399 | engines: {node: '>=6.0.0'} 400 | dependencies: 401 | '@jridgewell/set-array': 1.1.2 402 | '@jridgewell/sourcemap-codec': 1.4.14 403 | dev: true 404 | 405 | /@jridgewell/gen-mapping/0.3.2: 406 | resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} 407 | engines: {node: '>=6.0.0'} 408 | dependencies: 409 | '@jridgewell/set-array': 1.1.2 410 | '@jridgewell/sourcemap-codec': 1.4.14 411 | '@jridgewell/trace-mapping': 0.3.9 412 | dev: true 413 | 414 | /@jridgewell/resolve-uri/3.1.0: 415 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 416 | engines: {node: '>=6.0.0'} 417 | dev: true 418 | 419 | /@jridgewell/set-array/1.1.2: 420 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 421 | engines: {node: '>=6.0.0'} 422 | dev: true 423 | 424 | /@jridgewell/sourcemap-codec/1.4.14: 425 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 426 | dev: true 427 | 428 | /@jridgewell/trace-mapping/0.3.9: 429 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 430 | dependencies: 431 | '@jridgewell/resolve-uri': 3.1.0 432 | '@jridgewell/sourcemap-codec': 1.4.14 433 | dev: true 434 | 435 | /@ljharb/has-package-exports-patterns/0.0.2: 436 | resolution: {integrity: sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==} 437 | dev: true 438 | 439 | /@nodelib/fs.scandir/2.1.5: 440 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 441 | engines: {node: '>= 8'} 442 | dependencies: 443 | '@nodelib/fs.stat': 2.0.5 444 | run-parallel: 1.2.0 445 | dev: true 446 | 447 | /@nodelib/fs.stat/2.0.5: 448 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 449 | engines: {node: '>= 8'} 450 | dev: true 451 | 452 | /@nodelib/fs.walk/1.2.8: 453 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 454 | engines: {node: '>= 8'} 455 | dependencies: 456 | '@nodelib/fs.scandir': 2.1.5 457 | fastq: 1.15.0 458 | dev: true 459 | 460 | /@pkgr/utils/2.3.1: 461 | resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} 462 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 463 | dependencies: 464 | cross-spawn: 7.0.3 465 | is-glob: 4.0.3 466 | open: 8.4.0 467 | picocolors: 1.0.0 468 | tiny-glob: 0.2.9 469 | tslib: 2.4.1 470 | dev: true 471 | 472 | /@polka/url/1.0.0-next.21: 473 | resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} 474 | dev: true 475 | 476 | /@proload/core/0.3.3: 477 | resolution: {integrity: sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==} 478 | dependencies: 479 | deepmerge: 4.2.2 480 | escalade: 3.1.1 481 | dev: true 482 | 483 | /@proload/plugin-tsm/0.2.1_@proload+core@0.3.3: 484 | resolution: {integrity: sha512-Ex1sL2BxU+g8MHdAdq9SZKz+pU34o8Zcl9PHWo2WaG9hrnlZme607PU6gnpoAYsDBpHX327+eu60wWUk+d/b+A==} 485 | peerDependencies: 486 | '@proload/core': ^0.3.2 487 | dependencies: 488 | '@proload/core': 0.3.3 489 | tsm: 2.3.0 490 | dev: true 491 | 492 | /@tsconfig/node10/1.0.9: 493 | resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} 494 | dev: true 495 | 496 | /@tsconfig/node12/1.0.11: 497 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 498 | dev: true 499 | 500 | /@tsconfig/node14/1.0.3: 501 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 502 | dev: true 503 | 504 | /@tsconfig/node16/1.0.3: 505 | resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} 506 | dev: true 507 | 508 | /@types/acorn/4.0.6: 509 | resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} 510 | dependencies: 511 | '@types/estree': 1.0.0 512 | dev: true 513 | 514 | /@types/babel__core/7.1.20: 515 | resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} 516 | dependencies: 517 | '@babel/parser': 7.20.7 518 | '@babel/types': 7.20.7 519 | '@types/babel__generator': 7.6.4 520 | '@types/babel__template': 7.4.1 521 | '@types/babel__traverse': 7.18.3 522 | dev: true 523 | 524 | /@types/babel__generator/7.6.4: 525 | resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} 526 | dependencies: 527 | '@babel/types': 7.20.7 528 | dev: true 529 | 530 | /@types/babel__template/7.4.1: 531 | resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} 532 | dependencies: 533 | '@babel/parser': 7.20.7 534 | '@babel/types': 7.20.7 535 | dev: true 536 | 537 | /@types/babel__traverse/7.18.3: 538 | resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} 539 | dependencies: 540 | '@babel/types': 7.20.7 541 | dev: true 542 | 543 | /@types/debug/4.1.7: 544 | resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} 545 | dependencies: 546 | '@types/ms': 0.7.31 547 | dev: true 548 | 549 | /@types/estree-jsx/0.0.1: 550 | resolution: {integrity: sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==} 551 | dependencies: 552 | '@types/estree': 1.0.0 553 | dev: true 554 | 555 | /@types/estree-jsx/1.0.0: 556 | resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} 557 | dependencies: 558 | '@types/estree': 1.0.0 559 | dev: true 560 | 561 | /@types/estree/1.0.0: 562 | resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} 563 | dev: true 564 | 565 | /@types/hast/2.3.4: 566 | resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} 567 | dependencies: 568 | '@types/unist': 2.0.6 569 | dev: true 570 | 571 | /@types/html-escaper/3.0.0: 572 | resolution: {integrity: sha512-OcJcvP3Yk8mjYwf/IdXZtTE1tb/u0WF0qa29ER07ZHCYUBZXSN29Z1mBS+/96+kNMGTFUAbSz9X+pHmHpZrTCw==} 573 | dev: true 574 | 575 | /@types/json5/0.0.30: 576 | resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} 577 | dev: true 578 | 579 | /@types/mdast/3.0.10: 580 | resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} 581 | dependencies: 582 | '@types/unist': 2.0.6 583 | dev: true 584 | 585 | /@types/ms/0.7.31: 586 | resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} 587 | dev: true 588 | 589 | /@types/nlcst/1.0.0: 590 | resolution: {integrity: sha512-3TGCfOcy8R8mMQ4CNSNOe3PG66HttvjcLzCoOpvXvDtfWOTi+uT/rxeOKm/qEwbM4SNe1O/PjdiBK2YcTjU4OQ==} 591 | dependencies: 592 | '@types/unist': 2.0.6 593 | dev: true 594 | 595 | /@types/node/18.11.18: 596 | resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} 597 | dev: true 598 | 599 | /@types/parse5/6.0.3: 600 | resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} 601 | dev: true 602 | 603 | /@types/resolve/1.20.2: 604 | resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} 605 | dev: true 606 | 607 | /@types/unist/2.0.6: 608 | resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} 609 | dev: true 610 | 611 | /@types/yargs-parser/21.0.0: 612 | resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} 613 | dev: true 614 | 615 | /@vscode/emmet-helper/2.8.6: 616 | resolution: {integrity: sha512-IIB8jbiKy37zN8bAIHx59YmnIelY78CGHtThnibD/d3tQOKRY83bYVi9blwmZVUZh6l9nfkYH3tvReaiNxY9EQ==} 617 | dependencies: 618 | emmet: 2.3.6 619 | jsonc-parser: 2.3.1 620 | vscode-languageserver-textdocument: 1.0.8 621 | vscode-languageserver-types: 3.17.2 622 | vscode-uri: 2.1.2 623 | dev: true 624 | 625 | /@vscode/l10n/0.0.10: 626 | resolution: {integrity: sha512-E1OCmDcDWa0Ya7vtSjp/XfHFGqYJfh+YPC1RkATU71fTac+j1JjCcB3qwSzmlKAighx2WxhLlfhS0RwAN++PFQ==} 627 | dev: true 628 | 629 | /acorn-jsx/5.3.2_acorn@8.8.1: 630 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 631 | peerDependencies: 632 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 633 | dependencies: 634 | acorn: 8.8.1 635 | dev: true 636 | 637 | /acorn-walk/8.2.0: 638 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 639 | engines: {node: '>=0.4.0'} 640 | dev: true 641 | 642 | /acorn/8.8.1: 643 | resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} 644 | engines: {node: '>=0.4.0'} 645 | hasBin: true 646 | dev: true 647 | 648 | /ansi-align/3.0.1: 649 | resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} 650 | dependencies: 651 | string-width: 4.2.3 652 | dev: true 653 | 654 | /ansi-regex/5.0.1: 655 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 656 | engines: {node: '>=8'} 657 | dev: true 658 | 659 | /ansi-regex/6.0.1: 660 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 661 | engines: {node: '>=12'} 662 | dev: true 663 | 664 | /ansi-styles/3.2.1: 665 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 666 | engines: {node: '>=4'} 667 | dependencies: 668 | color-convert: 1.9.3 669 | dev: true 670 | 671 | /ansi-styles/4.3.0: 672 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 673 | engines: {node: '>=8'} 674 | dependencies: 675 | color-convert: 2.0.1 676 | dev: true 677 | 678 | /ansi-styles/6.2.1: 679 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 680 | engines: {node: '>=12'} 681 | dev: true 682 | 683 | /arg/4.1.3: 684 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 685 | dev: true 686 | 687 | /argparse/1.0.10: 688 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 689 | dependencies: 690 | sprintf-js: 1.0.3 691 | dev: true 692 | 693 | /array-iterate/2.0.1: 694 | resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} 695 | dev: true 696 | 697 | /ast-types/0.14.2: 698 | resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} 699 | engines: {node: '>=4'} 700 | dependencies: 701 | tslib: 2.4.1 702 | dev: true 703 | 704 | /astro/1.9.2_zfha7dvnw4nti6zkbsmhmn6xo4: 705 | resolution: {integrity: sha512-L+Ma0eR0Aa6QZg7RF0lEs+106Ye1/zukvtq3KtsYIogAojltlwllwU9X5CwMBzFwA55NxpNp4gSRh5US/xb+8Q==} 706 | engines: {node: ^14.18.0 || >=16.12.0, npm: '>=6.14.0'} 707 | hasBin: true 708 | dependencies: 709 | '@astrojs/compiler': 0.31.4 710 | '@astrojs/language-server': 0.28.3 711 | '@astrojs/markdown-remark': 1.2.0 712 | '@astrojs/telemetry': 1.0.1 713 | '@astrojs/webapi': 1.1.1 714 | '@babel/core': 7.20.12 715 | '@babel/generator': 7.20.7 716 | '@babel/parser': 7.20.7 717 | '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 718 | '@babel/traverse': 7.20.12 719 | '@babel/types': 7.20.7 720 | '@proload/core': 0.3.3 721 | '@proload/plugin-tsm': 0.2.1_@proload+core@0.3.3 722 | '@types/babel__core': 7.1.20 723 | '@types/html-escaper': 3.0.0 724 | '@types/yargs-parser': 21.0.0 725 | acorn: 8.8.1 726 | boxen: 6.2.1 727 | ci-info: 3.7.1 728 | common-ancestor-path: 1.0.1 729 | cookie: 0.5.0 730 | debug: 4.3.4 731 | deepmerge-ts: 4.2.2 732 | devalue: 4.2.2 733 | diff: 5.1.0 734 | es-module-lexer: 1.1.0 735 | estree-walker: 3.0.2 736 | execa: 6.1.0 737 | fast-glob: 3.2.12 738 | github-slugger: 2.0.0 739 | gray-matter: 4.0.3 740 | html-entities: 2.3.3 741 | html-escaper: 3.0.3 742 | import-meta-resolve: 2.2.1 743 | kleur: 4.1.5 744 | magic-string: 0.27.0 745 | mime: 3.0.0 746 | ora: 6.1.2 747 | path-browserify: 1.0.1 748 | path-to-regexp: 6.2.1 749 | postcss: 8.4.21 750 | postcss-load-config: 3.1.4_aesdjsunmf4wiehhujt67my7tu 751 | preferred-pm: 3.0.3 752 | prompts: 2.4.2 753 | recast: 0.20.5 754 | rehype: 12.0.1 755 | resolve: 1.22.1 756 | rollup: 2.79.1 757 | semver: 7.3.8 758 | shiki: 0.11.1 759 | sirv: 2.0.2 760 | slash: 4.0.0 761 | string-width: 5.1.2 762 | strip-ansi: 7.0.1 763 | supports-esm: 1.0.0 764 | tsconfig-resolver: 3.0.1 765 | typescript: 4.9.4 766 | unist-util-visit: 4.1.1 767 | vfile: 5.3.6 768 | vite: 3.2.5_@types+node@18.11.18 769 | vitefu: 0.2.4_vite@3.2.5 770 | yargs-parser: 21.1.1 771 | zod: 3.20.2 772 | transitivePeerDependencies: 773 | - '@types/node' 774 | - less 775 | - sass 776 | - stylus 777 | - sugarss 778 | - supports-color 779 | - terser 780 | - ts-node 781 | dev: true 782 | 783 | /bail/2.0.2: 784 | resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} 785 | dev: true 786 | 787 | /balanced-match/1.0.2: 788 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 789 | dev: true 790 | 791 | /base64-js/1.5.1: 792 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 793 | dev: true 794 | 795 | /bl/5.1.0: 796 | resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} 797 | dependencies: 798 | buffer: 6.0.3 799 | inherits: 2.0.4 800 | readable-stream: 3.6.0 801 | dev: true 802 | 803 | /boolean/3.2.0: 804 | resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} 805 | dev: true 806 | 807 | /boxen/6.2.1: 808 | resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} 809 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 810 | dependencies: 811 | ansi-align: 3.0.1 812 | camelcase: 6.3.0 813 | chalk: 4.1.2 814 | cli-boxes: 3.0.0 815 | string-width: 5.1.2 816 | type-fest: 2.19.0 817 | widest-line: 4.0.1 818 | wrap-ansi: 8.0.1 819 | dev: true 820 | 821 | /brace-expansion/1.1.11: 822 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 823 | dependencies: 824 | balanced-match: 1.0.2 825 | concat-map: 0.0.1 826 | dev: true 827 | 828 | /braces/3.0.2: 829 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 830 | engines: {node: '>=8'} 831 | dependencies: 832 | fill-range: 7.0.1 833 | dev: true 834 | 835 | /browserslist/4.21.4: 836 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 837 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 838 | hasBin: true 839 | dependencies: 840 | caniuse-lite: 1.0.30001445 841 | electron-to-chromium: 1.4.284 842 | node-releases: 2.0.8 843 | update-browserslist-db: 1.0.10_browserslist@4.21.4 844 | dev: true 845 | 846 | /buffer/6.0.3: 847 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 848 | dependencies: 849 | base64-js: 1.5.1 850 | ieee754: 1.2.1 851 | dev: true 852 | 853 | /camelcase/6.3.0: 854 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 855 | engines: {node: '>=10'} 856 | dev: true 857 | 858 | /caniuse-lite/1.0.30001445: 859 | resolution: {integrity: sha512-8sdQIdMztYmzfTMO6KfLny878Ln9c2M0fc7EH60IjlP4Dc4PiCy7K2Vl3ITmWgOyPgVQKa5x+UP/KqFsxj4mBg==} 860 | dev: true 861 | 862 | /ccount/2.0.1: 863 | resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 864 | dev: true 865 | 866 | /chalk/2.4.2: 867 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 868 | engines: {node: '>=4'} 869 | dependencies: 870 | ansi-styles: 3.2.1 871 | escape-string-regexp: 1.0.5 872 | supports-color: 5.5.0 873 | dev: true 874 | 875 | /chalk/4.1.2: 876 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 877 | engines: {node: '>=10'} 878 | dependencies: 879 | ansi-styles: 4.3.0 880 | supports-color: 7.2.0 881 | dev: true 882 | 883 | /chalk/5.2.0: 884 | resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} 885 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 886 | dev: true 887 | 888 | /character-entities-html4/2.1.0: 889 | resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} 890 | dev: true 891 | 892 | /character-entities-legacy/3.0.0: 893 | resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} 894 | dev: true 895 | 896 | /character-entities/2.0.2: 897 | resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} 898 | dev: true 899 | 900 | /character-reference-invalid/2.0.1: 901 | resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} 902 | dev: true 903 | 904 | /ci-info/3.7.1: 905 | resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} 906 | engines: {node: '>=8'} 907 | dev: true 908 | 909 | /cli-boxes/3.0.0: 910 | resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} 911 | engines: {node: '>=10'} 912 | dev: true 913 | 914 | /cli-cursor/4.0.0: 915 | resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} 916 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 917 | dependencies: 918 | restore-cursor: 4.0.0 919 | dev: true 920 | 921 | /cli-spinners/2.7.0: 922 | resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} 923 | engines: {node: '>=6'} 924 | dev: true 925 | 926 | /clone/1.0.4: 927 | resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} 928 | engines: {node: '>=0.8'} 929 | dev: true 930 | 931 | /color-convert/1.9.3: 932 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 933 | dependencies: 934 | color-name: 1.1.3 935 | dev: true 936 | 937 | /color-convert/2.0.1: 938 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 939 | engines: {node: '>=7.0.0'} 940 | dependencies: 941 | color-name: 1.1.4 942 | dev: true 943 | 944 | /color-name/1.1.3: 945 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 946 | dev: true 947 | 948 | /color-name/1.1.4: 949 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 950 | dev: true 951 | 952 | /comma-separated-tokens/2.0.3: 953 | resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 954 | dev: true 955 | 956 | /common-ancestor-path/1.0.1: 957 | resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} 958 | dev: true 959 | 960 | /concat-map/0.0.1: 961 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 962 | dev: true 963 | 964 | /convert-source-map/1.9.0: 965 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 966 | dev: true 967 | 968 | /cookie/0.5.0: 969 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 970 | engines: {node: '>= 0.6'} 971 | dev: true 972 | 973 | /create-require/1.1.1: 974 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 975 | dev: true 976 | 977 | /cross-spawn/7.0.3: 978 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 979 | engines: {node: '>= 8'} 980 | dependencies: 981 | path-key: 3.1.1 982 | shebang-command: 2.0.0 983 | which: 2.0.2 984 | dev: true 985 | 986 | /data-uri-to-buffer/4.0.1: 987 | resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} 988 | engines: {node: '>= 12'} 989 | dev: true 990 | 991 | /debug/4.3.4: 992 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 993 | engines: {node: '>=6.0'} 994 | peerDependencies: 995 | supports-color: '*' 996 | peerDependenciesMeta: 997 | supports-color: 998 | optional: true 999 | dependencies: 1000 | ms: 2.1.2 1001 | dev: true 1002 | 1003 | /decode-named-character-reference/1.0.2: 1004 | resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} 1005 | dependencies: 1006 | character-entities: 2.0.2 1007 | dev: true 1008 | 1009 | /deepmerge-ts/4.2.2: 1010 | resolution: {integrity: sha512-Ka3Kb21tiWjvQvS9U+1Dx+aqFAHsdTnMdYptLTmC2VAmDFMugWMY1e15aTODstipmCun8iNuqeSfcx6rsUUk0Q==} 1011 | engines: {node: '>=12.4.0'} 1012 | dev: true 1013 | 1014 | /deepmerge/4.2.2: 1015 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 1016 | engines: {node: '>=0.10.0'} 1017 | dev: true 1018 | 1019 | /defaults/1.0.4: 1020 | resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} 1021 | dependencies: 1022 | clone: 1.0.4 1023 | dev: true 1024 | 1025 | /define-lazy-prop/2.0.0: 1026 | resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} 1027 | engines: {node: '>=8'} 1028 | dev: true 1029 | 1030 | /define-properties/1.1.4: 1031 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 1032 | engines: {node: '>= 0.4'} 1033 | dependencies: 1034 | has-property-descriptors: 1.0.0 1035 | object-keys: 1.1.1 1036 | dev: true 1037 | 1038 | /dequal/2.0.3: 1039 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1040 | engines: {node: '>=6'} 1041 | dev: true 1042 | 1043 | /detect-node/2.1.0: 1044 | resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} 1045 | dev: true 1046 | 1047 | /devalue/4.2.2: 1048 | resolution: {integrity: sha512-Pkwd8qrI9O20VJ14fBNHu+on99toTNZFbgWRpZbC0zbDXpnE2WHYcrC1fHhMsF/3Ee+2yaW7vEujAT7fCYgqrA==} 1049 | dev: true 1050 | 1051 | /diff/4.0.2: 1052 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 1053 | engines: {node: '>=0.3.1'} 1054 | dev: true 1055 | 1056 | /diff/5.1.0: 1057 | resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} 1058 | engines: {node: '>=0.3.1'} 1059 | dev: true 1060 | 1061 | /dlv/1.1.3: 1062 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1063 | dev: true 1064 | 1065 | /dset/3.1.2: 1066 | resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==} 1067 | engines: {node: '>=4'} 1068 | dev: true 1069 | 1070 | /eastasianwidth/0.2.0: 1071 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1072 | dev: true 1073 | 1074 | /electron-to-chromium/1.4.284: 1075 | resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} 1076 | dev: true 1077 | 1078 | /emmet/2.3.6: 1079 | resolution: {integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==} 1080 | dependencies: 1081 | '@emmetio/abbreviation': 2.2.3 1082 | '@emmetio/css-abbreviation': 2.1.4 1083 | dev: true 1084 | 1085 | /emoji-regex/8.0.0: 1086 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1087 | dev: true 1088 | 1089 | /emoji-regex/9.2.2: 1090 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1091 | dev: true 1092 | 1093 | /es-module-lexer/1.1.0: 1094 | resolution: {integrity: sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==} 1095 | dev: true 1096 | 1097 | /es6-error/4.1.1: 1098 | resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} 1099 | dev: true 1100 | 1101 | /esbuild-android-64/0.15.18: 1102 | resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} 1103 | engines: {node: '>=12'} 1104 | cpu: [x64] 1105 | os: [android] 1106 | requiresBuild: true 1107 | dev: true 1108 | optional: true 1109 | 1110 | /esbuild-android-arm64/0.15.18: 1111 | resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} 1112 | engines: {node: '>=12'} 1113 | cpu: [arm64] 1114 | os: [android] 1115 | requiresBuild: true 1116 | dev: true 1117 | optional: true 1118 | 1119 | /esbuild-darwin-64/0.15.18: 1120 | resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} 1121 | engines: {node: '>=12'} 1122 | cpu: [x64] 1123 | os: [darwin] 1124 | requiresBuild: true 1125 | dev: true 1126 | optional: true 1127 | 1128 | /esbuild-darwin-arm64/0.15.18: 1129 | resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} 1130 | engines: {node: '>=12'} 1131 | cpu: [arm64] 1132 | os: [darwin] 1133 | requiresBuild: true 1134 | dev: true 1135 | optional: true 1136 | 1137 | /esbuild-freebsd-64/0.15.18: 1138 | resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} 1139 | engines: {node: '>=12'} 1140 | cpu: [x64] 1141 | os: [freebsd] 1142 | requiresBuild: true 1143 | dev: true 1144 | optional: true 1145 | 1146 | /esbuild-freebsd-arm64/0.15.18: 1147 | resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} 1148 | engines: {node: '>=12'} 1149 | cpu: [arm64] 1150 | os: [freebsd] 1151 | requiresBuild: true 1152 | dev: true 1153 | optional: true 1154 | 1155 | /esbuild-linux-32/0.15.18: 1156 | resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} 1157 | engines: {node: '>=12'} 1158 | cpu: [ia32] 1159 | os: [linux] 1160 | requiresBuild: true 1161 | dev: true 1162 | optional: true 1163 | 1164 | /esbuild-linux-64/0.15.18: 1165 | resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} 1166 | engines: {node: '>=12'} 1167 | cpu: [x64] 1168 | os: [linux] 1169 | requiresBuild: true 1170 | dev: true 1171 | optional: true 1172 | 1173 | /esbuild-linux-arm/0.15.18: 1174 | resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} 1175 | engines: {node: '>=12'} 1176 | cpu: [arm] 1177 | os: [linux] 1178 | requiresBuild: true 1179 | dev: true 1180 | optional: true 1181 | 1182 | /esbuild-linux-arm64/0.15.18: 1183 | resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} 1184 | engines: {node: '>=12'} 1185 | cpu: [arm64] 1186 | os: [linux] 1187 | requiresBuild: true 1188 | dev: true 1189 | optional: true 1190 | 1191 | /esbuild-linux-mips64le/0.15.18: 1192 | resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} 1193 | engines: {node: '>=12'} 1194 | cpu: [mips64el] 1195 | os: [linux] 1196 | requiresBuild: true 1197 | dev: true 1198 | optional: true 1199 | 1200 | /esbuild-linux-ppc64le/0.15.18: 1201 | resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} 1202 | engines: {node: '>=12'} 1203 | cpu: [ppc64] 1204 | os: [linux] 1205 | requiresBuild: true 1206 | dev: true 1207 | optional: true 1208 | 1209 | /esbuild-linux-riscv64/0.15.18: 1210 | resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} 1211 | engines: {node: '>=12'} 1212 | cpu: [riscv64] 1213 | os: [linux] 1214 | requiresBuild: true 1215 | dev: true 1216 | optional: true 1217 | 1218 | /esbuild-linux-s390x/0.15.18: 1219 | resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} 1220 | engines: {node: '>=12'} 1221 | cpu: [s390x] 1222 | os: [linux] 1223 | requiresBuild: true 1224 | dev: true 1225 | optional: true 1226 | 1227 | /esbuild-netbsd-64/0.15.18: 1228 | resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} 1229 | engines: {node: '>=12'} 1230 | cpu: [x64] 1231 | os: [netbsd] 1232 | requiresBuild: true 1233 | dev: true 1234 | optional: true 1235 | 1236 | /esbuild-openbsd-64/0.15.18: 1237 | resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} 1238 | engines: {node: '>=12'} 1239 | cpu: [x64] 1240 | os: [openbsd] 1241 | requiresBuild: true 1242 | dev: true 1243 | optional: true 1244 | 1245 | /esbuild-sunos-64/0.15.18: 1246 | resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} 1247 | engines: {node: '>=12'} 1248 | cpu: [x64] 1249 | os: [sunos] 1250 | requiresBuild: true 1251 | dev: true 1252 | optional: true 1253 | 1254 | /esbuild-windows-32/0.15.18: 1255 | resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} 1256 | engines: {node: '>=12'} 1257 | cpu: [ia32] 1258 | os: [win32] 1259 | requiresBuild: true 1260 | dev: true 1261 | optional: true 1262 | 1263 | /esbuild-windows-64/0.15.18: 1264 | resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} 1265 | engines: {node: '>=12'} 1266 | cpu: [x64] 1267 | os: [win32] 1268 | requiresBuild: true 1269 | dev: true 1270 | optional: true 1271 | 1272 | /esbuild-windows-arm64/0.15.18: 1273 | resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} 1274 | engines: {node: '>=12'} 1275 | cpu: [arm64] 1276 | os: [win32] 1277 | requiresBuild: true 1278 | dev: true 1279 | optional: true 1280 | 1281 | /esbuild/0.15.18: 1282 | resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} 1283 | engines: {node: '>=12'} 1284 | hasBin: true 1285 | requiresBuild: true 1286 | optionalDependencies: 1287 | '@esbuild/android-arm': 0.15.18 1288 | '@esbuild/linux-loong64': 0.15.18 1289 | esbuild-android-64: 0.15.18 1290 | esbuild-android-arm64: 0.15.18 1291 | esbuild-darwin-64: 0.15.18 1292 | esbuild-darwin-arm64: 0.15.18 1293 | esbuild-freebsd-64: 0.15.18 1294 | esbuild-freebsd-arm64: 0.15.18 1295 | esbuild-linux-32: 0.15.18 1296 | esbuild-linux-64: 0.15.18 1297 | esbuild-linux-arm: 0.15.18 1298 | esbuild-linux-arm64: 0.15.18 1299 | esbuild-linux-mips64le: 0.15.18 1300 | esbuild-linux-ppc64le: 0.15.18 1301 | esbuild-linux-riscv64: 0.15.18 1302 | esbuild-linux-s390x: 0.15.18 1303 | esbuild-netbsd-64: 0.15.18 1304 | esbuild-openbsd-64: 0.15.18 1305 | esbuild-sunos-64: 0.15.18 1306 | esbuild-windows-32: 0.15.18 1307 | esbuild-windows-64: 0.15.18 1308 | esbuild-windows-arm64: 0.15.18 1309 | dev: true 1310 | 1311 | /escalade/3.1.1: 1312 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1313 | engines: {node: '>=6'} 1314 | dev: true 1315 | 1316 | /escape-string-regexp/1.0.5: 1317 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1318 | engines: {node: '>=0.8.0'} 1319 | dev: true 1320 | 1321 | /escape-string-regexp/4.0.0: 1322 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1323 | engines: {node: '>=10'} 1324 | dev: true 1325 | 1326 | /escape-string-regexp/5.0.0: 1327 | resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1328 | engines: {node: '>=12'} 1329 | dev: true 1330 | 1331 | /esprima/4.0.1: 1332 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1333 | engines: {node: '>=4'} 1334 | hasBin: true 1335 | dev: true 1336 | 1337 | /estree-util-is-identifier-name/2.0.1: 1338 | resolution: {integrity: sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==} 1339 | dev: true 1340 | 1341 | /estree-util-visit/1.2.0: 1342 | resolution: {integrity: sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==} 1343 | dependencies: 1344 | '@types/estree-jsx': 1.0.0 1345 | '@types/unist': 2.0.6 1346 | dev: true 1347 | 1348 | /estree-walker/3.0.2: 1349 | resolution: {integrity: sha512-C03BvXCQIH/po+PNPONx/zSM9ziPr9weX8xNhYb/IJtdJ9z+L4z9VKPTB+UTHdmhnIopA2kc419ueyVyHVktwA==} 1350 | dev: true 1351 | 1352 | /events/3.3.0: 1353 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 1354 | engines: {node: '>=0.8.x'} 1355 | dev: true 1356 | 1357 | /execa/6.1.0: 1358 | resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} 1359 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1360 | dependencies: 1361 | cross-spawn: 7.0.3 1362 | get-stream: 6.0.1 1363 | human-signals: 3.0.1 1364 | is-stream: 3.0.0 1365 | merge-stream: 2.0.0 1366 | npm-run-path: 5.1.0 1367 | onetime: 6.0.0 1368 | signal-exit: 3.0.7 1369 | strip-final-newline: 3.0.0 1370 | dev: true 1371 | 1372 | /extend-shallow/2.0.1: 1373 | resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} 1374 | engines: {node: '>=0.10.0'} 1375 | dependencies: 1376 | is-extendable: 0.1.1 1377 | dev: true 1378 | 1379 | /extend/3.0.2: 1380 | resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1381 | dev: true 1382 | 1383 | /fast-glob/3.2.12: 1384 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1385 | engines: {node: '>=8.6.0'} 1386 | dependencies: 1387 | '@nodelib/fs.stat': 2.0.5 1388 | '@nodelib/fs.walk': 1.2.8 1389 | glob-parent: 5.1.2 1390 | merge2: 1.4.1 1391 | micromatch: 4.0.5 1392 | dev: true 1393 | 1394 | /fastq/1.15.0: 1395 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1396 | dependencies: 1397 | reusify: 1.0.4 1398 | dev: true 1399 | 1400 | /fetch-blob/3.2.0: 1401 | resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 1402 | engines: {node: ^12.20 || >= 14.13} 1403 | dependencies: 1404 | node-domexception: 1.0.0 1405 | web-streams-polyfill: 3.2.1 1406 | dev: true 1407 | 1408 | /fill-range/7.0.1: 1409 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1410 | engines: {node: '>=8'} 1411 | dependencies: 1412 | to-regex-range: 5.0.1 1413 | dev: true 1414 | 1415 | /find-up/4.1.0: 1416 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1417 | engines: {node: '>=8'} 1418 | dependencies: 1419 | locate-path: 5.0.0 1420 | path-exists: 4.0.0 1421 | dev: true 1422 | 1423 | /find-up/5.0.0: 1424 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1425 | engines: {node: '>=10'} 1426 | dependencies: 1427 | locate-path: 6.0.0 1428 | path-exists: 4.0.0 1429 | dev: true 1430 | 1431 | /find-yarn-workspace-root2/1.2.16: 1432 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} 1433 | dependencies: 1434 | micromatch: 4.0.5 1435 | pkg-dir: 4.2.0 1436 | dev: true 1437 | 1438 | /formdata-polyfill/4.0.10: 1439 | resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 1440 | engines: {node: '>=12.20.0'} 1441 | dependencies: 1442 | fetch-blob: 3.2.0 1443 | dev: true 1444 | 1445 | /fs.realpath/1.0.0: 1446 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1447 | dev: true 1448 | 1449 | /fsevents/2.3.2: 1450 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1451 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1452 | os: [darwin] 1453 | requiresBuild: true 1454 | dev: true 1455 | optional: true 1456 | 1457 | /function-bind/1.1.1: 1458 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1459 | dev: true 1460 | 1461 | /gensync/1.0.0-beta.2: 1462 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1463 | engines: {node: '>=6.9.0'} 1464 | dev: true 1465 | 1466 | /get-intrinsic/1.1.3: 1467 | resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} 1468 | dependencies: 1469 | function-bind: 1.1.1 1470 | has: 1.0.3 1471 | has-symbols: 1.0.3 1472 | dev: true 1473 | 1474 | /get-stream/6.0.1: 1475 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1476 | engines: {node: '>=10'} 1477 | dev: true 1478 | 1479 | /github-slugger/1.5.0: 1480 | resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} 1481 | dev: true 1482 | 1483 | /github-slugger/2.0.0: 1484 | resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} 1485 | dev: true 1486 | 1487 | /glob-parent/5.1.2: 1488 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1489 | engines: {node: '>= 6'} 1490 | dependencies: 1491 | is-glob: 4.0.3 1492 | dev: true 1493 | 1494 | /glob/7.2.3: 1495 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1496 | dependencies: 1497 | fs.realpath: 1.0.0 1498 | inflight: 1.0.6 1499 | inherits: 2.0.4 1500 | minimatch: 3.1.2 1501 | once: 1.4.0 1502 | path-is-absolute: 1.0.1 1503 | dev: true 1504 | 1505 | /global-agent/3.0.0: 1506 | resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} 1507 | engines: {node: '>=10.0'} 1508 | dependencies: 1509 | boolean: 3.2.0 1510 | es6-error: 4.1.1 1511 | matcher: 3.0.0 1512 | roarr: 2.15.4 1513 | semver: 7.3.8 1514 | serialize-error: 7.0.1 1515 | dev: true 1516 | 1517 | /globals/11.12.0: 1518 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1519 | engines: {node: '>=4'} 1520 | dev: true 1521 | 1522 | /globalthis/1.0.3: 1523 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1524 | engines: {node: '>= 0.4'} 1525 | dependencies: 1526 | define-properties: 1.1.4 1527 | dev: true 1528 | 1529 | /globalyzer/0.1.0: 1530 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1531 | dev: true 1532 | 1533 | /globrex/0.1.2: 1534 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1535 | dev: true 1536 | 1537 | /graceful-fs/4.2.10: 1538 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1539 | dev: true 1540 | 1541 | /gray-matter/4.0.3: 1542 | resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} 1543 | engines: {node: '>=6.0'} 1544 | dependencies: 1545 | js-yaml: 3.14.1 1546 | kind-of: 6.0.3 1547 | section-matter: 1.0.0 1548 | strip-bom-string: 1.0.0 1549 | dev: true 1550 | 1551 | /has-flag/3.0.0: 1552 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1553 | engines: {node: '>=4'} 1554 | dev: true 1555 | 1556 | /has-flag/4.0.0: 1557 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1558 | engines: {node: '>=8'} 1559 | dev: true 1560 | 1561 | /has-package-exports/1.3.0: 1562 | resolution: {integrity: sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==} 1563 | dependencies: 1564 | '@ljharb/has-package-exports-patterns': 0.0.2 1565 | dev: true 1566 | 1567 | /has-property-descriptors/1.0.0: 1568 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1569 | dependencies: 1570 | get-intrinsic: 1.1.3 1571 | dev: true 1572 | 1573 | /has-symbols/1.0.3: 1574 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1575 | engines: {node: '>= 0.4'} 1576 | dev: true 1577 | 1578 | /has/1.0.3: 1579 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1580 | engines: {node: '>= 0.4.0'} 1581 | dependencies: 1582 | function-bind: 1.1.1 1583 | dev: true 1584 | 1585 | /hast-util-from-parse5/7.1.1: 1586 | resolution: {integrity: sha512-R6PoNcUs89ZxLJmMWsVbwSWuz95/9OriyQZ3e2ybwqGsRXzhA6gv49rgGmQvLbZuSNDv9fCg7vV7gXUsvtUFaA==} 1587 | dependencies: 1588 | '@types/hast': 2.3.4 1589 | '@types/unist': 2.0.6 1590 | hastscript: 7.2.0 1591 | property-information: 6.2.0 1592 | vfile: 5.3.6 1593 | vfile-location: 4.0.1 1594 | web-namespaces: 2.0.1 1595 | dev: true 1596 | 1597 | /hast-util-parse-selector/3.1.1: 1598 | resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} 1599 | dependencies: 1600 | '@types/hast': 2.3.4 1601 | dev: true 1602 | 1603 | /hast-util-raw/7.2.3: 1604 | resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} 1605 | dependencies: 1606 | '@types/hast': 2.3.4 1607 | '@types/parse5': 6.0.3 1608 | hast-util-from-parse5: 7.1.1 1609 | hast-util-to-parse5: 7.1.0 1610 | html-void-elements: 2.0.1 1611 | parse5: 6.0.1 1612 | unist-util-position: 4.0.3 1613 | unist-util-visit: 4.1.1 1614 | vfile: 5.3.6 1615 | web-namespaces: 2.0.1 1616 | zwitch: 2.0.4 1617 | dev: true 1618 | 1619 | /hast-util-to-html/8.0.4: 1620 | resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} 1621 | dependencies: 1622 | '@types/hast': 2.3.4 1623 | '@types/unist': 2.0.6 1624 | ccount: 2.0.1 1625 | comma-separated-tokens: 2.0.3 1626 | hast-util-raw: 7.2.3 1627 | hast-util-whitespace: 2.0.1 1628 | html-void-elements: 2.0.1 1629 | property-information: 6.2.0 1630 | space-separated-tokens: 2.0.2 1631 | stringify-entities: 4.0.3 1632 | zwitch: 2.0.4 1633 | dev: true 1634 | 1635 | /hast-util-to-parse5/7.1.0: 1636 | resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} 1637 | dependencies: 1638 | '@types/hast': 2.3.4 1639 | comma-separated-tokens: 2.0.3 1640 | property-information: 6.2.0 1641 | space-separated-tokens: 2.0.2 1642 | web-namespaces: 2.0.1 1643 | zwitch: 2.0.4 1644 | dev: true 1645 | 1646 | /hast-util-whitespace/2.0.1: 1647 | resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} 1648 | dev: true 1649 | 1650 | /hastscript/7.2.0: 1651 | resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} 1652 | dependencies: 1653 | '@types/hast': 2.3.4 1654 | comma-separated-tokens: 2.0.3 1655 | hast-util-parse-selector: 3.1.1 1656 | property-information: 6.2.0 1657 | space-separated-tokens: 2.0.2 1658 | dev: true 1659 | 1660 | /html-entities/2.3.3: 1661 | resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} 1662 | dev: true 1663 | 1664 | /html-escaper/3.0.3: 1665 | resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} 1666 | dev: true 1667 | 1668 | /html-void-elements/2.0.1: 1669 | resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} 1670 | dev: true 1671 | 1672 | /human-signals/3.0.1: 1673 | resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} 1674 | engines: {node: '>=12.20.0'} 1675 | dev: true 1676 | 1677 | /ieee754/1.2.1: 1678 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1679 | dev: true 1680 | 1681 | /import-meta-resolve/2.2.1: 1682 | resolution: {integrity: sha512-C6lLL7EJPY44kBvA80gq4uMsVFw5x3oSKfuMl1cuZ2RkI5+UJqQXgn+6hlUew0y4ig7Ypt4CObAAIzU53Nfpuw==} 1683 | dev: true 1684 | 1685 | /inflight/1.0.6: 1686 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1687 | dependencies: 1688 | once: 1.4.0 1689 | wrappy: 1.0.2 1690 | dev: true 1691 | 1692 | /inherits/2.0.4: 1693 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1694 | dev: true 1695 | 1696 | /interpret/1.4.0: 1697 | resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} 1698 | engines: {node: '>= 0.10'} 1699 | dev: true 1700 | 1701 | /is-alphabetical/2.0.1: 1702 | resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} 1703 | dev: true 1704 | 1705 | /is-alphanumerical/2.0.1: 1706 | resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} 1707 | dependencies: 1708 | is-alphabetical: 2.0.1 1709 | is-decimal: 2.0.1 1710 | dev: true 1711 | 1712 | /is-buffer/2.0.5: 1713 | resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} 1714 | engines: {node: '>=4'} 1715 | dev: true 1716 | 1717 | /is-core-module/2.11.0: 1718 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 1719 | dependencies: 1720 | has: 1.0.3 1721 | dev: true 1722 | 1723 | /is-decimal/2.0.1: 1724 | resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} 1725 | dev: true 1726 | 1727 | /is-docker/2.2.1: 1728 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} 1729 | engines: {node: '>=8'} 1730 | hasBin: true 1731 | dev: true 1732 | 1733 | /is-docker/3.0.0: 1734 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 1735 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1736 | hasBin: true 1737 | dev: true 1738 | 1739 | /is-extendable/0.1.1: 1740 | resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} 1741 | engines: {node: '>=0.10.0'} 1742 | dev: true 1743 | 1744 | /is-extglob/2.1.1: 1745 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1746 | engines: {node: '>=0.10.0'} 1747 | dev: true 1748 | 1749 | /is-fullwidth-code-point/3.0.0: 1750 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1751 | engines: {node: '>=8'} 1752 | dev: true 1753 | 1754 | /is-glob/4.0.3: 1755 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1756 | engines: {node: '>=0.10.0'} 1757 | dependencies: 1758 | is-extglob: 2.1.1 1759 | dev: true 1760 | 1761 | /is-hexadecimal/2.0.1: 1762 | resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} 1763 | dev: true 1764 | 1765 | /is-interactive/2.0.0: 1766 | resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} 1767 | engines: {node: '>=12'} 1768 | dev: true 1769 | 1770 | /is-number/7.0.0: 1771 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1772 | engines: {node: '>=0.12.0'} 1773 | dev: true 1774 | 1775 | /is-plain-obj/4.1.0: 1776 | resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 1777 | engines: {node: '>=12'} 1778 | dev: true 1779 | 1780 | /is-stream/3.0.0: 1781 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 1782 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1783 | dev: true 1784 | 1785 | /is-unicode-supported/1.3.0: 1786 | resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} 1787 | engines: {node: '>=12'} 1788 | dev: true 1789 | 1790 | /is-wsl/2.2.0: 1791 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} 1792 | engines: {node: '>=8'} 1793 | dependencies: 1794 | is-docker: 2.2.1 1795 | dev: true 1796 | 1797 | /isexe/2.0.0: 1798 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1799 | dev: true 1800 | 1801 | /js-tokens/4.0.0: 1802 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1803 | dev: true 1804 | 1805 | /js-yaml/3.14.1: 1806 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1807 | hasBin: true 1808 | dependencies: 1809 | argparse: 1.0.10 1810 | esprima: 4.0.1 1811 | dev: true 1812 | 1813 | /jsesc/2.5.2: 1814 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1815 | engines: {node: '>=4'} 1816 | hasBin: true 1817 | dev: true 1818 | 1819 | /json-stringify-safe/5.0.1: 1820 | resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} 1821 | dev: true 1822 | 1823 | /json5/2.2.3: 1824 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1825 | engines: {node: '>=6'} 1826 | hasBin: true 1827 | dev: true 1828 | 1829 | /jsonc-parser/2.3.1: 1830 | resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} 1831 | dev: true 1832 | 1833 | /jsonc-parser/3.2.0: 1834 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} 1835 | dev: true 1836 | 1837 | /kind-of/6.0.3: 1838 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 1839 | engines: {node: '>=0.10.0'} 1840 | dev: true 1841 | 1842 | /kleur/3.0.3: 1843 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 1844 | engines: {node: '>=6'} 1845 | dev: true 1846 | 1847 | /kleur/4.1.5: 1848 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1849 | engines: {node: '>=6'} 1850 | dev: true 1851 | 1852 | /lilconfig/2.0.6: 1853 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} 1854 | engines: {node: '>=10'} 1855 | dev: true 1856 | 1857 | /load-yaml-file/0.2.0: 1858 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} 1859 | engines: {node: '>=6'} 1860 | dependencies: 1861 | graceful-fs: 4.2.10 1862 | js-yaml: 3.14.1 1863 | pify: 4.0.1 1864 | strip-bom: 3.0.0 1865 | dev: true 1866 | 1867 | /locate-path/5.0.0: 1868 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1869 | engines: {node: '>=8'} 1870 | dependencies: 1871 | p-locate: 4.1.0 1872 | dev: true 1873 | 1874 | /locate-path/6.0.0: 1875 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1876 | engines: {node: '>=10'} 1877 | dependencies: 1878 | p-locate: 5.0.0 1879 | dev: true 1880 | 1881 | /log-symbols/5.1.0: 1882 | resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} 1883 | engines: {node: '>=12'} 1884 | dependencies: 1885 | chalk: 5.2.0 1886 | is-unicode-supported: 1.3.0 1887 | dev: true 1888 | 1889 | /longest-streak/3.1.0: 1890 | resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 1891 | dev: true 1892 | 1893 | /lru-cache/5.1.1: 1894 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1895 | dependencies: 1896 | yallist: 3.1.1 1897 | dev: true 1898 | 1899 | /lru-cache/6.0.0: 1900 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1901 | engines: {node: '>=10'} 1902 | dependencies: 1903 | yallist: 4.0.0 1904 | dev: true 1905 | 1906 | /magic-string/0.27.0: 1907 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 1908 | engines: {node: '>=12'} 1909 | dependencies: 1910 | '@jridgewell/sourcemap-codec': 1.4.14 1911 | dev: true 1912 | 1913 | /make-error/1.3.6: 1914 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1915 | dev: true 1916 | 1917 | /markdown-table/3.0.3: 1918 | resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} 1919 | dev: true 1920 | 1921 | /matcher/3.0.0: 1922 | resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} 1923 | engines: {node: '>=10'} 1924 | dependencies: 1925 | escape-string-regexp: 4.0.0 1926 | dev: true 1927 | 1928 | /mdast-util-definitions/5.1.1: 1929 | resolution: {integrity: sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==} 1930 | dependencies: 1931 | '@types/mdast': 3.0.10 1932 | '@types/unist': 2.0.6 1933 | unist-util-visit: 4.1.1 1934 | dev: true 1935 | 1936 | /mdast-util-find-and-replace/2.2.1: 1937 | resolution: {integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==} 1938 | dependencies: 1939 | escape-string-regexp: 5.0.0 1940 | unist-util-is: 5.1.1 1941 | unist-util-visit-parents: 5.1.1 1942 | dev: true 1943 | 1944 | /mdast-util-from-markdown/1.2.0: 1945 | resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} 1946 | dependencies: 1947 | '@types/mdast': 3.0.10 1948 | '@types/unist': 2.0.6 1949 | decode-named-character-reference: 1.0.2 1950 | mdast-util-to-string: 3.1.0 1951 | micromark: 3.1.0 1952 | micromark-util-decode-numeric-character-reference: 1.0.0 1953 | micromark-util-decode-string: 1.0.2 1954 | micromark-util-normalize-identifier: 1.0.0 1955 | micromark-util-symbol: 1.0.1 1956 | micromark-util-types: 1.0.2 1957 | unist-util-stringify-position: 3.0.2 1958 | uvu: 0.5.6 1959 | transitivePeerDependencies: 1960 | - supports-color 1961 | dev: true 1962 | 1963 | /mdast-util-gfm-autolink-literal/1.0.2: 1964 | resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==} 1965 | dependencies: 1966 | '@types/mdast': 3.0.10 1967 | ccount: 2.0.1 1968 | mdast-util-find-and-replace: 2.2.1 1969 | micromark-util-character: 1.1.0 1970 | dev: true 1971 | 1972 | /mdast-util-gfm-footnote/1.0.1: 1973 | resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==} 1974 | dependencies: 1975 | '@types/mdast': 3.0.10 1976 | mdast-util-to-markdown: 1.5.0 1977 | micromark-util-normalize-identifier: 1.0.0 1978 | dev: true 1979 | 1980 | /mdast-util-gfm-strikethrough/1.0.2: 1981 | resolution: {integrity: sha512-T/4DVHXcujH6jx1yqpcAYYwd+z5lAYMw4Ls6yhTfbMMtCt0PHY4gEfhW9+lKsLBtyhUGKRIzcUA2FATVqnvPDA==} 1982 | dependencies: 1983 | '@types/mdast': 3.0.10 1984 | mdast-util-to-markdown: 1.5.0 1985 | dev: true 1986 | 1987 | /mdast-util-gfm-table/1.0.6: 1988 | resolution: {integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==} 1989 | dependencies: 1990 | '@types/mdast': 3.0.10 1991 | markdown-table: 3.0.3 1992 | mdast-util-from-markdown: 1.2.0 1993 | mdast-util-to-markdown: 1.5.0 1994 | transitivePeerDependencies: 1995 | - supports-color 1996 | dev: true 1997 | 1998 | /mdast-util-gfm-task-list-item/1.0.1: 1999 | resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==} 2000 | dependencies: 2001 | '@types/mdast': 3.0.10 2002 | mdast-util-to-markdown: 1.5.0 2003 | dev: true 2004 | 2005 | /mdast-util-gfm/2.0.1: 2006 | resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} 2007 | dependencies: 2008 | mdast-util-from-markdown: 1.2.0 2009 | mdast-util-gfm-autolink-literal: 1.0.2 2010 | mdast-util-gfm-footnote: 1.0.1 2011 | mdast-util-gfm-strikethrough: 1.0.2 2012 | mdast-util-gfm-table: 1.0.6 2013 | mdast-util-gfm-task-list-item: 1.0.1 2014 | mdast-util-to-markdown: 1.5.0 2015 | transitivePeerDependencies: 2016 | - supports-color 2017 | dev: true 2018 | 2019 | /mdast-util-mdx-expression/1.3.1: 2020 | resolution: {integrity: sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==} 2021 | dependencies: 2022 | '@types/estree-jsx': 1.0.0 2023 | '@types/hast': 2.3.4 2024 | '@types/mdast': 3.0.10 2025 | mdast-util-from-markdown: 1.2.0 2026 | mdast-util-to-markdown: 1.5.0 2027 | transitivePeerDependencies: 2028 | - supports-color 2029 | dev: true 2030 | 2031 | /mdast-util-mdx-jsx/1.2.0: 2032 | resolution: {integrity: sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==} 2033 | dependencies: 2034 | '@types/estree-jsx': 0.0.1 2035 | '@types/mdast': 3.0.10 2036 | mdast-util-to-markdown: 1.5.0 2037 | parse-entities: 4.0.0 2038 | stringify-entities: 4.0.3 2039 | unist-util-remove-position: 4.0.1 2040 | unist-util-stringify-position: 3.0.2 2041 | vfile-message: 3.1.3 2042 | dev: true 2043 | 2044 | /mdast-util-phrasing/3.0.0: 2045 | resolution: {integrity: sha512-S+QYsDRLkGi8U7o5JF1agKa/sdP+CNGXXLqC17pdTVL8FHHgQEiwFGa9yE5aYtUxNiFGYoaDy9V1kC85Sz86Gg==} 2046 | dependencies: 2047 | '@types/mdast': 3.0.10 2048 | unist-util-is: 5.1.1 2049 | dev: true 2050 | 2051 | /mdast-util-to-hast/12.2.5: 2052 | resolution: {integrity: sha512-EFNhT35ZR/VZ85/EedDdCNTq0oFM+NM/+qBomVGQ0+Lcg0nhI8xIwmdCzNMlVlCJNXRprpobtKP/IUh8cfz6zQ==} 2053 | dependencies: 2054 | '@types/hast': 2.3.4 2055 | '@types/mdast': 3.0.10 2056 | mdast-util-definitions: 5.1.1 2057 | micromark-util-sanitize-uri: 1.1.0 2058 | trim-lines: 3.0.1 2059 | unist-builder: 3.0.0 2060 | unist-util-generated: 2.0.0 2061 | unist-util-position: 4.0.3 2062 | unist-util-visit: 4.1.1 2063 | dev: true 2064 | 2065 | /mdast-util-to-markdown/1.5.0: 2066 | resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} 2067 | dependencies: 2068 | '@types/mdast': 3.0.10 2069 | '@types/unist': 2.0.6 2070 | longest-streak: 3.1.0 2071 | mdast-util-phrasing: 3.0.0 2072 | mdast-util-to-string: 3.1.0 2073 | micromark-util-decode-string: 1.0.2 2074 | unist-util-visit: 4.1.1 2075 | zwitch: 2.0.4 2076 | dev: true 2077 | 2078 | /mdast-util-to-string/3.1.0: 2079 | resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} 2080 | dev: true 2081 | 2082 | /merge-stream/2.0.0: 2083 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2084 | dev: true 2085 | 2086 | /merge2/1.4.1: 2087 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2088 | engines: {node: '>= 8'} 2089 | dev: true 2090 | 2091 | /micromark-core-commonmark/1.0.6: 2092 | resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} 2093 | dependencies: 2094 | decode-named-character-reference: 1.0.2 2095 | micromark-factory-destination: 1.0.0 2096 | micromark-factory-label: 1.0.2 2097 | micromark-factory-space: 1.0.0 2098 | micromark-factory-title: 1.0.2 2099 | micromark-factory-whitespace: 1.0.0 2100 | micromark-util-character: 1.1.0 2101 | micromark-util-chunked: 1.0.0 2102 | micromark-util-classify-character: 1.0.0 2103 | micromark-util-html-tag-name: 1.1.0 2104 | micromark-util-normalize-identifier: 1.0.0 2105 | micromark-util-resolve-all: 1.0.0 2106 | micromark-util-subtokenize: 1.0.2 2107 | micromark-util-symbol: 1.0.1 2108 | micromark-util-types: 1.0.2 2109 | uvu: 0.5.6 2110 | dev: true 2111 | 2112 | /micromark-extension-gfm-autolink-literal/1.0.3: 2113 | resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} 2114 | dependencies: 2115 | micromark-util-character: 1.1.0 2116 | micromark-util-sanitize-uri: 1.1.0 2117 | micromark-util-symbol: 1.0.1 2118 | micromark-util-types: 1.0.2 2119 | uvu: 0.5.6 2120 | dev: true 2121 | 2122 | /micromark-extension-gfm-footnote/1.0.4: 2123 | resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} 2124 | dependencies: 2125 | micromark-core-commonmark: 1.0.6 2126 | micromark-factory-space: 1.0.0 2127 | micromark-util-character: 1.1.0 2128 | micromark-util-normalize-identifier: 1.0.0 2129 | micromark-util-sanitize-uri: 1.1.0 2130 | micromark-util-symbol: 1.0.1 2131 | micromark-util-types: 1.0.2 2132 | uvu: 0.5.6 2133 | dev: true 2134 | 2135 | /micromark-extension-gfm-strikethrough/1.0.4: 2136 | resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} 2137 | dependencies: 2138 | micromark-util-chunked: 1.0.0 2139 | micromark-util-classify-character: 1.0.0 2140 | micromark-util-resolve-all: 1.0.0 2141 | micromark-util-symbol: 1.0.1 2142 | micromark-util-types: 1.0.2 2143 | uvu: 0.5.6 2144 | dev: true 2145 | 2146 | /micromark-extension-gfm-table/1.0.5: 2147 | resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} 2148 | dependencies: 2149 | micromark-factory-space: 1.0.0 2150 | micromark-util-character: 1.1.0 2151 | micromark-util-symbol: 1.0.1 2152 | micromark-util-types: 1.0.2 2153 | uvu: 0.5.6 2154 | dev: true 2155 | 2156 | /micromark-extension-gfm-tagfilter/1.0.1: 2157 | resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} 2158 | dependencies: 2159 | micromark-util-types: 1.0.2 2160 | dev: true 2161 | 2162 | /micromark-extension-gfm-task-list-item/1.0.3: 2163 | resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} 2164 | dependencies: 2165 | micromark-factory-space: 1.0.0 2166 | micromark-util-character: 1.1.0 2167 | micromark-util-symbol: 1.0.1 2168 | micromark-util-types: 1.0.2 2169 | uvu: 0.5.6 2170 | dev: true 2171 | 2172 | /micromark-extension-gfm/2.0.1: 2173 | resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} 2174 | dependencies: 2175 | micromark-extension-gfm-autolink-literal: 1.0.3 2176 | micromark-extension-gfm-footnote: 1.0.4 2177 | micromark-extension-gfm-strikethrough: 1.0.4 2178 | micromark-extension-gfm-table: 1.0.5 2179 | micromark-extension-gfm-tagfilter: 1.0.1 2180 | micromark-extension-gfm-task-list-item: 1.0.3 2181 | micromark-util-combine-extensions: 1.0.0 2182 | micromark-util-types: 1.0.2 2183 | dev: true 2184 | 2185 | /micromark-extension-mdx-expression/1.0.3: 2186 | resolution: {integrity: sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==} 2187 | dependencies: 2188 | micromark-factory-mdx-expression: 1.0.6 2189 | micromark-factory-space: 1.0.0 2190 | micromark-util-character: 1.1.0 2191 | micromark-util-events-to-acorn: 1.2.0 2192 | micromark-util-symbol: 1.0.1 2193 | micromark-util-types: 1.0.2 2194 | uvu: 0.5.6 2195 | dev: true 2196 | 2197 | /micromark-extension-mdx-md/1.0.0: 2198 | resolution: {integrity: sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==} 2199 | dependencies: 2200 | micromark-util-types: 1.0.2 2201 | dev: true 2202 | 2203 | /micromark-factory-destination/1.0.0: 2204 | resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} 2205 | dependencies: 2206 | micromark-util-character: 1.1.0 2207 | micromark-util-symbol: 1.0.1 2208 | micromark-util-types: 1.0.2 2209 | dev: true 2210 | 2211 | /micromark-factory-label/1.0.2: 2212 | resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} 2213 | dependencies: 2214 | micromark-util-character: 1.1.0 2215 | micromark-util-symbol: 1.0.1 2216 | micromark-util-types: 1.0.2 2217 | uvu: 0.5.6 2218 | dev: true 2219 | 2220 | /micromark-factory-mdx-expression/1.0.6: 2221 | resolution: {integrity: sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==} 2222 | dependencies: 2223 | micromark-factory-space: 1.0.0 2224 | micromark-util-character: 1.1.0 2225 | micromark-util-events-to-acorn: 1.2.0 2226 | micromark-util-symbol: 1.0.1 2227 | micromark-util-types: 1.0.2 2228 | unist-util-position-from-estree: 1.1.1 2229 | uvu: 0.5.6 2230 | vfile-message: 3.1.3 2231 | dev: true 2232 | 2233 | /micromark-factory-space/1.0.0: 2234 | resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} 2235 | dependencies: 2236 | micromark-util-character: 1.1.0 2237 | micromark-util-types: 1.0.2 2238 | dev: true 2239 | 2240 | /micromark-factory-title/1.0.2: 2241 | resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} 2242 | dependencies: 2243 | micromark-factory-space: 1.0.0 2244 | micromark-util-character: 1.1.0 2245 | micromark-util-symbol: 1.0.1 2246 | micromark-util-types: 1.0.2 2247 | uvu: 0.5.6 2248 | dev: true 2249 | 2250 | /micromark-factory-whitespace/1.0.0: 2251 | resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} 2252 | dependencies: 2253 | micromark-factory-space: 1.0.0 2254 | micromark-util-character: 1.1.0 2255 | micromark-util-symbol: 1.0.1 2256 | micromark-util-types: 1.0.2 2257 | dev: true 2258 | 2259 | /micromark-util-character/1.1.0: 2260 | resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} 2261 | dependencies: 2262 | micromark-util-symbol: 1.0.1 2263 | micromark-util-types: 1.0.2 2264 | dev: true 2265 | 2266 | /micromark-util-chunked/1.0.0: 2267 | resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} 2268 | dependencies: 2269 | micromark-util-symbol: 1.0.1 2270 | dev: true 2271 | 2272 | /micromark-util-classify-character/1.0.0: 2273 | resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} 2274 | dependencies: 2275 | micromark-util-character: 1.1.0 2276 | micromark-util-symbol: 1.0.1 2277 | micromark-util-types: 1.0.2 2278 | dev: true 2279 | 2280 | /micromark-util-combine-extensions/1.0.0: 2281 | resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} 2282 | dependencies: 2283 | micromark-util-chunked: 1.0.0 2284 | micromark-util-types: 1.0.2 2285 | dev: true 2286 | 2287 | /micromark-util-decode-numeric-character-reference/1.0.0: 2288 | resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} 2289 | dependencies: 2290 | micromark-util-symbol: 1.0.1 2291 | dev: true 2292 | 2293 | /micromark-util-decode-string/1.0.2: 2294 | resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} 2295 | dependencies: 2296 | decode-named-character-reference: 1.0.2 2297 | micromark-util-character: 1.1.0 2298 | micromark-util-decode-numeric-character-reference: 1.0.0 2299 | micromark-util-symbol: 1.0.1 2300 | dev: true 2301 | 2302 | /micromark-util-encode/1.0.1: 2303 | resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} 2304 | dev: true 2305 | 2306 | /micromark-util-events-to-acorn/1.2.0: 2307 | resolution: {integrity: sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==} 2308 | dependencies: 2309 | '@types/acorn': 4.0.6 2310 | '@types/estree': 1.0.0 2311 | estree-util-visit: 1.2.0 2312 | micromark-util-types: 1.0.2 2313 | uvu: 0.5.6 2314 | vfile-location: 4.0.1 2315 | vfile-message: 3.1.3 2316 | dev: true 2317 | 2318 | /micromark-util-html-tag-name/1.1.0: 2319 | resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} 2320 | dev: true 2321 | 2322 | /micromark-util-normalize-identifier/1.0.0: 2323 | resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} 2324 | dependencies: 2325 | micromark-util-symbol: 1.0.1 2326 | dev: true 2327 | 2328 | /micromark-util-resolve-all/1.0.0: 2329 | resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} 2330 | dependencies: 2331 | micromark-util-types: 1.0.2 2332 | dev: true 2333 | 2334 | /micromark-util-sanitize-uri/1.1.0: 2335 | resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} 2336 | dependencies: 2337 | micromark-util-character: 1.1.0 2338 | micromark-util-encode: 1.0.1 2339 | micromark-util-symbol: 1.0.1 2340 | dev: true 2341 | 2342 | /micromark-util-subtokenize/1.0.2: 2343 | resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} 2344 | dependencies: 2345 | micromark-util-chunked: 1.0.0 2346 | micromark-util-symbol: 1.0.1 2347 | micromark-util-types: 1.0.2 2348 | uvu: 0.5.6 2349 | dev: true 2350 | 2351 | /micromark-util-symbol/1.0.1: 2352 | resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} 2353 | dev: true 2354 | 2355 | /micromark-util-types/1.0.2: 2356 | resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} 2357 | dev: true 2358 | 2359 | /micromark/3.1.0: 2360 | resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} 2361 | dependencies: 2362 | '@types/debug': 4.1.7 2363 | debug: 4.3.4 2364 | decode-named-character-reference: 1.0.2 2365 | micromark-core-commonmark: 1.0.6 2366 | micromark-factory-space: 1.0.0 2367 | micromark-util-character: 1.1.0 2368 | micromark-util-chunked: 1.0.0 2369 | micromark-util-combine-extensions: 1.0.0 2370 | micromark-util-decode-numeric-character-reference: 1.0.0 2371 | micromark-util-encode: 1.0.1 2372 | micromark-util-normalize-identifier: 1.0.0 2373 | micromark-util-resolve-all: 1.0.0 2374 | micromark-util-sanitize-uri: 1.1.0 2375 | micromark-util-subtokenize: 1.0.2 2376 | micromark-util-symbol: 1.0.1 2377 | micromark-util-types: 1.0.2 2378 | uvu: 0.5.6 2379 | transitivePeerDependencies: 2380 | - supports-color 2381 | dev: true 2382 | 2383 | /micromatch/4.0.5: 2384 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2385 | engines: {node: '>=8.6'} 2386 | dependencies: 2387 | braces: 3.0.2 2388 | picomatch: 2.3.1 2389 | dev: true 2390 | 2391 | /mime/3.0.0: 2392 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 2393 | engines: {node: '>=10.0.0'} 2394 | hasBin: true 2395 | dev: true 2396 | 2397 | /mimic-fn/2.1.0: 2398 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2399 | engines: {node: '>=6'} 2400 | dev: true 2401 | 2402 | /mimic-fn/4.0.0: 2403 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 2404 | engines: {node: '>=12'} 2405 | dev: true 2406 | 2407 | /minimatch/3.1.2: 2408 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2409 | dependencies: 2410 | brace-expansion: 1.1.11 2411 | dev: true 2412 | 2413 | /minimist/1.2.7: 2414 | resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} 2415 | dev: true 2416 | 2417 | /mri/1.2.0: 2418 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 2419 | engines: {node: '>=4'} 2420 | dev: true 2421 | 2422 | /mrmime/1.0.1: 2423 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} 2424 | engines: {node: '>=10'} 2425 | dev: true 2426 | 2427 | /ms/2.1.2: 2428 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2429 | dev: true 2430 | 2431 | /nanoid/3.3.4: 2432 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 2433 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2434 | hasBin: true 2435 | dev: true 2436 | 2437 | /nlcst-to-string/3.1.0: 2438 | resolution: {integrity: sha512-Y8HQWKw/zrHTCnu2zcFBN1dV6vN0NUG7s5fkEj380G8tF3R+vA2KG+tDl2QoHVQCTHGHVXwoni2RQkDSFQb1PA==} 2439 | dependencies: 2440 | '@types/nlcst': 1.0.0 2441 | dev: true 2442 | 2443 | /node-domexception/1.0.0: 2444 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 2445 | engines: {node: '>=10.5.0'} 2446 | dev: true 2447 | 2448 | /node-fetch/3.3.0: 2449 | resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} 2450 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2451 | dependencies: 2452 | data-uri-to-buffer: 4.0.1 2453 | fetch-blob: 3.2.0 2454 | formdata-polyfill: 4.0.10 2455 | dev: true 2456 | 2457 | /node-releases/2.0.8: 2458 | resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} 2459 | dev: true 2460 | 2461 | /npm-run-path/5.1.0: 2462 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} 2463 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2464 | dependencies: 2465 | path-key: 4.0.0 2466 | dev: true 2467 | 2468 | /object-keys/1.1.1: 2469 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2470 | engines: {node: '>= 0.4'} 2471 | dev: true 2472 | 2473 | /once/1.4.0: 2474 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2475 | dependencies: 2476 | wrappy: 1.0.2 2477 | dev: true 2478 | 2479 | /onetime/5.1.2: 2480 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2481 | engines: {node: '>=6'} 2482 | dependencies: 2483 | mimic-fn: 2.1.0 2484 | dev: true 2485 | 2486 | /onetime/6.0.0: 2487 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 2488 | engines: {node: '>=12'} 2489 | dependencies: 2490 | mimic-fn: 4.0.0 2491 | dev: true 2492 | 2493 | /open/8.4.0: 2494 | resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} 2495 | engines: {node: '>=12'} 2496 | dependencies: 2497 | define-lazy-prop: 2.0.0 2498 | is-docker: 2.2.1 2499 | is-wsl: 2.2.0 2500 | dev: true 2501 | 2502 | /ora/6.1.2: 2503 | resolution: {integrity: sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==} 2504 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2505 | dependencies: 2506 | bl: 5.1.0 2507 | chalk: 5.2.0 2508 | cli-cursor: 4.0.0 2509 | cli-spinners: 2.7.0 2510 | is-interactive: 2.0.0 2511 | is-unicode-supported: 1.3.0 2512 | log-symbols: 5.1.0 2513 | strip-ansi: 7.0.1 2514 | wcwidth: 1.0.1 2515 | dev: true 2516 | 2517 | /p-limit/2.3.0: 2518 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2519 | engines: {node: '>=6'} 2520 | dependencies: 2521 | p-try: 2.2.0 2522 | dev: true 2523 | 2524 | /p-limit/3.1.0: 2525 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2526 | engines: {node: '>=10'} 2527 | dependencies: 2528 | yocto-queue: 0.1.0 2529 | dev: true 2530 | 2531 | /p-locate/4.1.0: 2532 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2533 | engines: {node: '>=8'} 2534 | dependencies: 2535 | p-limit: 2.3.0 2536 | dev: true 2537 | 2538 | /p-locate/5.0.0: 2539 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2540 | engines: {node: '>=10'} 2541 | dependencies: 2542 | p-limit: 3.1.0 2543 | dev: true 2544 | 2545 | /p-try/2.2.0: 2546 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2547 | engines: {node: '>=6'} 2548 | dev: true 2549 | 2550 | /parse-entities/4.0.0: 2551 | resolution: {integrity: sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==} 2552 | dependencies: 2553 | '@types/unist': 2.0.6 2554 | character-entities: 2.0.2 2555 | character-entities-legacy: 3.0.0 2556 | character-reference-invalid: 2.0.1 2557 | decode-named-character-reference: 1.0.2 2558 | is-alphanumerical: 2.0.1 2559 | is-decimal: 2.0.1 2560 | is-hexadecimal: 2.0.1 2561 | dev: true 2562 | 2563 | /parse-latin/5.0.1: 2564 | resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} 2565 | dependencies: 2566 | nlcst-to-string: 3.1.0 2567 | unist-util-modify-children: 3.1.0 2568 | unist-util-visit-children: 2.0.1 2569 | dev: true 2570 | 2571 | /parse5/6.0.1: 2572 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 2573 | dev: true 2574 | 2575 | /path-browserify/1.0.1: 2576 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 2577 | dev: true 2578 | 2579 | /path-exists/4.0.0: 2580 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2581 | engines: {node: '>=8'} 2582 | dev: true 2583 | 2584 | /path-is-absolute/1.0.1: 2585 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2586 | engines: {node: '>=0.10.0'} 2587 | dev: true 2588 | 2589 | /path-key/3.1.1: 2590 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2591 | engines: {node: '>=8'} 2592 | dev: true 2593 | 2594 | /path-key/4.0.0: 2595 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 2596 | engines: {node: '>=12'} 2597 | dev: true 2598 | 2599 | /path-parse/1.0.7: 2600 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2601 | dev: true 2602 | 2603 | /path-to-regexp/6.2.1: 2604 | resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} 2605 | dev: true 2606 | 2607 | /picocolors/1.0.0: 2608 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2609 | dev: true 2610 | 2611 | /picomatch/2.3.1: 2612 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2613 | engines: {node: '>=8.6'} 2614 | dev: true 2615 | 2616 | /pify/4.0.1: 2617 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 2618 | engines: {node: '>=6'} 2619 | dev: true 2620 | 2621 | /pkg-dir/4.2.0: 2622 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2623 | engines: {node: '>=8'} 2624 | dependencies: 2625 | find-up: 4.1.0 2626 | dev: true 2627 | 2628 | /postcss-load-config/3.1.4_aesdjsunmf4wiehhujt67my7tu: 2629 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 2630 | engines: {node: '>= 10'} 2631 | peerDependencies: 2632 | postcss: '>=8.0.9' 2633 | ts-node: '>=9.0.0' 2634 | peerDependenciesMeta: 2635 | postcss: 2636 | optional: true 2637 | ts-node: 2638 | optional: true 2639 | dependencies: 2640 | lilconfig: 2.0.6 2641 | postcss: 8.4.21 2642 | ts-node: 10.9.1_awa2wsr5thmg3i7jqycphctjfq 2643 | yaml: 1.10.2 2644 | dev: true 2645 | 2646 | /postcss/8.4.21: 2647 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} 2648 | engines: {node: ^10 || ^12 || >=14} 2649 | dependencies: 2650 | nanoid: 3.3.4 2651 | picocolors: 1.0.0 2652 | source-map-js: 1.0.2 2653 | dev: true 2654 | 2655 | /preferred-pm/3.0.3: 2656 | resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} 2657 | engines: {node: '>=10'} 2658 | dependencies: 2659 | find-up: 5.0.0 2660 | find-yarn-workspace-root2: 1.2.16 2661 | path-exists: 4.0.0 2662 | which-pm: 2.0.0 2663 | dev: true 2664 | 2665 | /prettier-plugin-astro/0.7.2: 2666 | resolution: {integrity: sha512-mmifnkG160BtC727gqoimoxnZT/dwr8ASxpoGGl6EHevhfblSOeu+pwH1LAm5Qu1MynizktztFujHHaijLCkww==} 2667 | engines: {node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0'} 2668 | dependencies: 2669 | '@astrojs/compiler': 0.31.4 2670 | prettier: 2.8.3 2671 | sass-formatter: 0.7.5 2672 | synckit: 0.8.4 2673 | dev: true 2674 | 2675 | /prettier/2.8.3: 2676 | resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} 2677 | engines: {node: '>=10.13.0'} 2678 | hasBin: true 2679 | dev: true 2680 | 2681 | /prismjs/1.29.0: 2682 | resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} 2683 | engines: {node: '>=6'} 2684 | dev: true 2685 | 2686 | /prompts/2.4.2: 2687 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 2688 | engines: {node: '>= 6'} 2689 | dependencies: 2690 | kleur: 3.0.3 2691 | sisteransi: 1.0.5 2692 | dev: true 2693 | 2694 | /property-information/6.2.0: 2695 | resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} 2696 | dev: true 2697 | 2698 | /queue-microtask/1.2.3: 2699 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2700 | dev: true 2701 | 2702 | /readable-stream/3.6.0: 2703 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 2704 | engines: {node: '>= 6'} 2705 | dependencies: 2706 | inherits: 2.0.4 2707 | string_decoder: 1.3.0 2708 | util-deprecate: 1.0.2 2709 | dev: true 2710 | 2711 | /recast/0.20.5: 2712 | resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==} 2713 | engines: {node: '>= 4'} 2714 | dependencies: 2715 | ast-types: 0.14.2 2716 | esprima: 4.0.1 2717 | source-map: 0.6.1 2718 | tslib: 2.4.1 2719 | dev: true 2720 | 2721 | /rechoir/0.6.2: 2722 | resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} 2723 | engines: {node: '>= 0.10'} 2724 | dependencies: 2725 | resolve: 1.22.1 2726 | dev: true 2727 | 2728 | /rehype-parse/8.0.4: 2729 | resolution: {integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==} 2730 | dependencies: 2731 | '@types/hast': 2.3.4 2732 | hast-util-from-parse5: 7.1.1 2733 | parse5: 6.0.1 2734 | unified: 10.1.2 2735 | dev: true 2736 | 2737 | /rehype-raw/6.1.1: 2738 | resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} 2739 | dependencies: 2740 | '@types/hast': 2.3.4 2741 | hast-util-raw: 7.2.3 2742 | unified: 10.1.2 2743 | dev: true 2744 | 2745 | /rehype-stringify/9.0.3: 2746 | resolution: {integrity: sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==} 2747 | dependencies: 2748 | '@types/hast': 2.3.4 2749 | hast-util-to-html: 8.0.4 2750 | unified: 10.1.2 2751 | dev: true 2752 | 2753 | /rehype/12.0.1: 2754 | resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==} 2755 | dependencies: 2756 | '@types/hast': 2.3.4 2757 | rehype-parse: 8.0.4 2758 | rehype-stringify: 9.0.3 2759 | unified: 10.1.2 2760 | dev: true 2761 | 2762 | /remark-gfm/3.0.1: 2763 | resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} 2764 | dependencies: 2765 | '@types/mdast': 3.0.10 2766 | mdast-util-gfm: 2.0.1 2767 | micromark-extension-gfm: 2.0.1 2768 | unified: 10.1.2 2769 | transitivePeerDependencies: 2770 | - supports-color 2771 | dev: true 2772 | 2773 | /remark-parse/10.0.1: 2774 | resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} 2775 | dependencies: 2776 | '@types/mdast': 3.0.10 2777 | mdast-util-from-markdown: 1.2.0 2778 | unified: 10.1.2 2779 | transitivePeerDependencies: 2780 | - supports-color 2781 | dev: true 2782 | 2783 | /remark-rehype/10.1.0: 2784 | resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} 2785 | dependencies: 2786 | '@types/hast': 2.3.4 2787 | '@types/mdast': 3.0.10 2788 | mdast-util-to-hast: 12.2.5 2789 | unified: 10.1.2 2790 | dev: true 2791 | 2792 | /remark-smartypants/2.0.0: 2793 | resolution: {integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==} 2794 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2795 | dependencies: 2796 | retext: 8.1.0 2797 | retext-smartypants: 5.2.0 2798 | unist-util-visit: 4.1.1 2799 | dev: true 2800 | 2801 | /resolve/1.22.1: 2802 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 2803 | hasBin: true 2804 | dependencies: 2805 | is-core-module: 2.11.0 2806 | path-parse: 1.0.7 2807 | supports-preserve-symlinks-flag: 1.0.0 2808 | dev: true 2809 | 2810 | /restore-cursor/4.0.0: 2811 | resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} 2812 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2813 | dependencies: 2814 | onetime: 5.1.2 2815 | signal-exit: 3.0.7 2816 | dev: true 2817 | 2818 | /retext-latin/3.1.0: 2819 | resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} 2820 | dependencies: 2821 | '@types/nlcst': 1.0.0 2822 | parse-latin: 5.0.1 2823 | unherit: 3.0.1 2824 | unified: 10.1.2 2825 | dev: true 2826 | 2827 | /retext-smartypants/5.2.0: 2828 | resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==} 2829 | dependencies: 2830 | '@types/nlcst': 1.0.0 2831 | nlcst-to-string: 3.1.0 2832 | unified: 10.1.2 2833 | unist-util-visit: 4.1.1 2834 | dev: true 2835 | 2836 | /retext-stringify/3.1.0: 2837 | resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==} 2838 | dependencies: 2839 | '@types/nlcst': 1.0.0 2840 | nlcst-to-string: 3.1.0 2841 | unified: 10.1.2 2842 | dev: true 2843 | 2844 | /retext/8.1.0: 2845 | resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==} 2846 | dependencies: 2847 | '@types/nlcst': 1.0.0 2848 | retext-latin: 3.1.0 2849 | retext-stringify: 3.1.0 2850 | unified: 10.1.2 2851 | dev: true 2852 | 2853 | /reusify/1.0.4: 2854 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2855 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2856 | dev: true 2857 | 2858 | /roarr/2.15.4: 2859 | resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} 2860 | engines: {node: '>=8.0'} 2861 | dependencies: 2862 | boolean: 3.2.0 2863 | detect-node: 2.1.0 2864 | globalthis: 1.0.3 2865 | json-stringify-safe: 5.0.1 2866 | semver-compare: 1.0.0 2867 | sprintf-js: 1.1.2 2868 | dev: true 2869 | 2870 | /rollup/2.79.1: 2871 | resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} 2872 | engines: {node: '>=10.0.0'} 2873 | hasBin: true 2874 | optionalDependencies: 2875 | fsevents: 2.3.2 2876 | dev: true 2877 | 2878 | /run-parallel/1.2.0: 2879 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2880 | dependencies: 2881 | queue-microtask: 1.2.3 2882 | dev: true 2883 | 2884 | /s.color/0.0.15: 2885 | resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} 2886 | dev: true 2887 | 2888 | /sade/1.8.1: 2889 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 2890 | engines: {node: '>=6'} 2891 | dependencies: 2892 | mri: 1.2.0 2893 | dev: true 2894 | 2895 | /safe-buffer/5.2.1: 2896 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2897 | dev: true 2898 | 2899 | /sass-formatter/0.7.5: 2900 | resolution: {integrity: sha512-NKFP8ddjhUYi6A/iD1cEtzkEs91U61kzqe3lY9SVNuvX7LGc88xnEN0mmsWL7Ol//YTi2GL/ol7b9XZ2+hgXuA==} 2901 | dependencies: 2902 | suf-log: 2.5.3 2903 | dev: true 2904 | 2905 | /section-matter/1.0.0: 2906 | resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} 2907 | engines: {node: '>=4'} 2908 | dependencies: 2909 | extend-shallow: 2.0.1 2910 | kind-of: 6.0.3 2911 | dev: true 2912 | 2913 | /semver-compare/1.0.0: 2914 | resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} 2915 | dev: true 2916 | 2917 | /semver/6.3.0: 2918 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2919 | hasBin: true 2920 | dev: true 2921 | 2922 | /semver/7.3.8: 2923 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 2924 | engines: {node: '>=10'} 2925 | hasBin: true 2926 | dependencies: 2927 | lru-cache: 6.0.0 2928 | dev: true 2929 | 2930 | /serialize-error/7.0.1: 2931 | resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} 2932 | engines: {node: '>=10'} 2933 | dependencies: 2934 | type-fest: 0.13.1 2935 | dev: true 2936 | 2937 | /shebang-command/2.0.0: 2938 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2939 | engines: {node: '>=8'} 2940 | dependencies: 2941 | shebang-regex: 3.0.0 2942 | dev: true 2943 | 2944 | /shebang-regex/3.0.0: 2945 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2946 | engines: {node: '>=8'} 2947 | dev: true 2948 | 2949 | /shelljs/0.8.5: 2950 | resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} 2951 | engines: {node: '>=4'} 2952 | hasBin: true 2953 | dependencies: 2954 | glob: 7.2.3 2955 | interpret: 1.4.0 2956 | rechoir: 0.6.2 2957 | dev: true 2958 | 2959 | /shiki/0.11.1: 2960 | resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} 2961 | dependencies: 2962 | jsonc-parser: 3.2.0 2963 | vscode-oniguruma: 1.7.0 2964 | vscode-textmate: 6.0.0 2965 | dev: true 2966 | 2967 | /shx/0.3.4: 2968 | resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} 2969 | engines: {node: '>=6'} 2970 | hasBin: true 2971 | dependencies: 2972 | minimist: 1.2.7 2973 | shelljs: 0.8.5 2974 | dev: true 2975 | 2976 | /signal-exit/3.0.7: 2977 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2978 | dev: true 2979 | 2980 | /sirv/2.0.2: 2981 | resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} 2982 | engines: {node: '>= 10'} 2983 | dependencies: 2984 | '@polka/url': 1.0.0-next.21 2985 | mrmime: 1.0.1 2986 | totalist: 3.0.0 2987 | dev: true 2988 | 2989 | /sisteransi/1.0.5: 2990 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 2991 | dev: true 2992 | 2993 | /slash/4.0.0: 2994 | resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} 2995 | engines: {node: '>=12'} 2996 | dev: true 2997 | 2998 | /source-map-js/1.0.2: 2999 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 3000 | engines: {node: '>=0.10.0'} 3001 | dev: true 3002 | 3003 | /source-map/0.6.1: 3004 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3005 | engines: {node: '>=0.10.0'} 3006 | dev: true 3007 | 3008 | /source-map/0.7.4: 3009 | resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} 3010 | engines: {node: '>= 8'} 3011 | dev: true 3012 | 3013 | /space-separated-tokens/2.0.2: 3014 | resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 3015 | dev: true 3016 | 3017 | /sprintf-js/1.0.3: 3018 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 3019 | dev: true 3020 | 3021 | /sprintf-js/1.1.2: 3022 | resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} 3023 | dev: true 3024 | 3025 | /string-width/4.2.3: 3026 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3027 | engines: {node: '>=8'} 3028 | dependencies: 3029 | emoji-regex: 8.0.0 3030 | is-fullwidth-code-point: 3.0.0 3031 | strip-ansi: 6.0.1 3032 | dev: true 3033 | 3034 | /string-width/5.1.2: 3035 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 3036 | engines: {node: '>=12'} 3037 | dependencies: 3038 | eastasianwidth: 0.2.0 3039 | emoji-regex: 9.2.2 3040 | strip-ansi: 7.0.1 3041 | dev: true 3042 | 3043 | /string_decoder/1.3.0: 3044 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 3045 | dependencies: 3046 | safe-buffer: 5.2.1 3047 | dev: true 3048 | 3049 | /stringify-entities/4.0.3: 3050 | resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} 3051 | dependencies: 3052 | character-entities-html4: 2.1.0 3053 | character-entities-legacy: 3.0.0 3054 | dev: true 3055 | 3056 | /strip-ansi/6.0.1: 3057 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3058 | engines: {node: '>=8'} 3059 | dependencies: 3060 | ansi-regex: 5.0.1 3061 | dev: true 3062 | 3063 | /strip-ansi/7.0.1: 3064 | resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} 3065 | engines: {node: '>=12'} 3066 | dependencies: 3067 | ansi-regex: 6.0.1 3068 | dev: true 3069 | 3070 | /strip-bom-string/1.0.0: 3071 | resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} 3072 | engines: {node: '>=0.10.0'} 3073 | dev: true 3074 | 3075 | /strip-bom/3.0.0: 3076 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 3077 | engines: {node: '>=4'} 3078 | dev: true 3079 | 3080 | /strip-bom/4.0.0: 3081 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 3082 | engines: {node: '>=8'} 3083 | dev: true 3084 | 3085 | /strip-final-newline/3.0.0: 3086 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 3087 | engines: {node: '>=12'} 3088 | dev: true 3089 | 3090 | /suf-log/2.5.3: 3091 | resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} 3092 | dependencies: 3093 | s.color: 0.0.15 3094 | dev: true 3095 | 3096 | /supports-color/5.5.0: 3097 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3098 | engines: {node: '>=4'} 3099 | dependencies: 3100 | has-flag: 3.0.0 3101 | dev: true 3102 | 3103 | /supports-color/7.2.0: 3104 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3105 | engines: {node: '>=8'} 3106 | dependencies: 3107 | has-flag: 4.0.0 3108 | dev: true 3109 | 3110 | /supports-esm/1.0.0: 3111 | resolution: {integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==} 3112 | dependencies: 3113 | has-package-exports: 1.3.0 3114 | dev: true 3115 | 3116 | /supports-preserve-symlinks-flag/1.0.0: 3117 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3118 | engines: {node: '>= 0.4'} 3119 | dev: true 3120 | 3121 | /synckit/0.8.4: 3122 | resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} 3123 | engines: {node: ^14.18.0 || >=16.0.0} 3124 | dependencies: 3125 | '@pkgr/utils': 2.3.1 3126 | tslib: 2.4.1 3127 | dev: true 3128 | 3129 | /tiny-glob/0.2.9: 3130 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 3131 | dependencies: 3132 | globalyzer: 0.1.0 3133 | globrex: 0.1.2 3134 | dev: true 3135 | 3136 | /to-fast-properties/2.0.0: 3137 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 3138 | engines: {node: '>=4'} 3139 | dev: true 3140 | 3141 | /to-regex-range/5.0.1: 3142 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3143 | engines: {node: '>=8.0'} 3144 | dependencies: 3145 | is-number: 7.0.0 3146 | dev: true 3147 | 3148 | /totalist/3.0.0: 3149 | resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} 3150 | engines: {node: '>=6'} 3151 | dev: true 3152 | 3153 | /trim-lines/3.0.1: 3154 | resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} 3155 | dev: true 3156 | 3157 | /trough/2.1.0: 3158 | resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} 3159 | dev: true 3160 | 3161 | /ts-node/10.9.1_awa2wsr5thmg3i7jqycphctjfq: 3162 | resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} 3163 | hasBin: true 3164 | peerDependencies: 3165 | '@swc/core': '>=1.2.50' 3166 | '@swc/wasm': '>=1.2.50' 3167 | '@types/node': '*' 3168 | typescript: '>=2.7' 3169 | peerDependenciesMeta: 3170 | '@swc/core': 3171 | optional: true 3172 | '@swc/wasm': 3173 | optional: true 3174 | dependencies: 3175 | '@cspotcode/source-map-support': 0.8.1 3176 | '@tsconfig/node10': 1.0.9 3177 | '@tsconfig/node12': 1.0.11 3178 | '@tsconfig/node14': 1.0.3 3179 | '@tsconfig/node16': 1.0.3 3180 | '@types/node': 18.11.18 3181 | acorn: 8.8.1 3182 | acorn-walk: 8.2.0 3183 | arg: 4.1.3 3184 | create-require: 1.1.1 3185 | diff: 4.0.2 3186 | make-error: 1.3.6 3187 | typescript: 4.9.4 3188 | v8-compile-cache-lib: 3.0.1 3189 | yn: 3.1.1 3190 | dev: true 3191 | 3192 | /tsconfig-resolver/3.0.1: 3193 | resolution: {integrity: sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==} 3194 | dependencies: 3195 | '@types/json5': 0.0.30 3196 | '@types/resolve': 1.20.2 3197 | json5: 2.2.3 3198 | resolve: 1.22.1 3199 | strip-bom: 4.0.0 3200 | type-fest: 0.13.1 3201 | dev: true 3202 | 3203 | /tslib/2.4.1: 3204 | resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} 3205 | dev: true 3206 | 3207 | /tsm/2.3.0: 3208 | resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==} 3209 | engines: {node: '>=12'} 3210 | hasBin: true 3211 | dependencies: 3212 | esbuild: 0.15.18 3213 | dev: true 3214 | 3215 | /type-fest/0.13.1: 3216 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 3217 | engines: {node: '>=10'} 3218 | dev: true 3219 | 3220 | /type-fest/2.19.0: 3221 | resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} 3222 | engines: {node: '>=12.20'} 3223 | dev: true 3224 | 3225 | /typescript/4.9.4: 3226 | resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} 3227 | engines: {node: '>=4.2.0'} 3228 | hasBin: true 3229 | dev: true 3230 | 3231 | /unherit/3.0.1: 3232 | resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} 3233 | dev: true 3234 | 3235 | /unified/10.1.2: 3236 | resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} 3237 | dependencies: 3238 | '@types/unist': 2.0.6 3239 | bail: 2.0.2 3240 | extend: 3.0.2 3241 | is-buffer: 2.0.5 3242 | is-plain-obj: 4.1.0 3243 | trough: 2.1.0 3244 | vfile: 5.3.6 3245 | dev: true 3246 | 3247 | /unist-builder/3.0.0: 3248 | resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} 3249 | dependencies: 3250 | '@types/unist': 2.0.6 3251 | dev: true 3252 | 3253 | /unist-util-generated/2.0.0: 3254 | resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} 3255 | dev: true 3256 | 3257 | /unist-util-is/5.1.1: 3258 | resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} 3259 | dev: true 3260 | 3261 | /unist-util-map/3.1.2: 3262 | resolution: {integrity: sha512-WLA2R6x/UaopedG2poaWLShf5LCi+BNa6mMkACdjft23PHou4v85PvZItjbO2XgXvukMP365PlL/DrbuMgr3eg==} 3263 | dependencies: 3264 | '@types/unist': 2.0.6 3265 | dev: true 3266 | 3267 | /unist-util-modify-children/3.1.0: 3268 | resolution: {integrity: sha512-L0UizdncPZ1NIwpmkwFdLo2NaK2Eb5LU/vaQ7lZGkAaOBZfsHp+8T/gVWPVmmMO1hj6gc+XeMoytut8jr7fdyA==} 3269 | dependencies: 3270 | '@types/unist': 2.0.6 3271 | array-iterate: 2.0.1 3272 | dev: true 3273 | 3274 | /unist-util-position-from-estree/1.1.1: 3275 | resolution: {integrity: sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==} 3276 | dependencies: 3277 | '@types/unist': 2.0.6 3278 | dev: true 3279 | 3280 | /unist-util-position/4.0.3: 3281 | resolution: {integrity: sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==} 3282 | dependencies: 3283 | '@types/unist': 2.0.6 3284 | dev: true 3285 | 3286 | /unist-util-remove-position/4.0.1: 3287 | resolution: {integrity: sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==} 3288 | dependencies: 3289 | '@types/unist': 2.0.6 3290 | unist-util-visit: 4.1.1 3291 | dev: true 3292 | 3293 | /unist-util-stringify-position/3.0.2: 3294 | resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} 3295 | dependencies: 3296 | '@types/unist': 2.0.6 3297 | dev: true 3298 | 3299 | /unist-util-visit-children/2.0.1: 3300 | resolution: {integrity: sha512-2cEU3dhV1hMfO9ajwb8rJsDedMfsahsm6fCfR8LxDR/w7KcB5lzHQ9dBTQIXsWGNWBFH5MPmaFP3Xh0dWLqClQ==} 3301 | dependencies: 3302 | '@types/unist': 2.0.6 3303 | dev: true 3304 | 3305 | /unist-util-visit-parents/5.1.1: 3306 | resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} 3307 | dependencies: 3308 | '@types/unist': 2.0.6 3309 | unist-util-is: 5.1.1 3310 | dev: true 3311 | 3312 | /unist-util-visit/4.1.1: 3313 | resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} 3314 | dependencies: 3315 | '@types/unist': 2.0.6 3316 | unist-util-is: 5.1.1 3317 | unist-util-visit-parents: 5.1.1 3318 | dev: true 3319 | 3320 | /update-browserslist-db/1.0.10_browserslist@4.21.4: 3321 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} 3322 | hasBin: true 3323 | peerDependencies: 3324 | browserslist: '>= 4.21.0' 3325 | dependencies: 3326 | browserslist: 4.21.4 3327 | escalade: 3.1.1 3328 | picocolors: 1.0.0 3329 | dev: true 3330 | 3331 | /util-deprecate/1.0.2: 3332 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3333 | dev: true 3334 | 3335 | /uvu/0.5.6: 3336 | resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} 3337 | engines: {node: '>=8'} 3338 | hasBin: true 3339 | dependencies: 3340 | dequal: 2.0.3 3341 | diff: 5.1.0 3342 | kleur: 4.1.5 3343 | sade: 1.8.1 3344 | dev: true 3345 | 3346 | /v8-compile-cache-lib/3.0.1: 3347 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 3348 | dev: true 3349 | 3350 | /vfile-location/4.0.1: 3351 | resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} 3352 | dependencies: 3353 | '@types/unist': 2.0.6 3354 | vfile: 5.3.6 3355 | dev: true 3356 | 3357 | /vfile-message/3.1.3: 3358 | resolution: {integrity: sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==} 3359 | dependencies: 3360 | '@types/unist': 2.0.6 3361 | unist-util-stringify-position: 3.0.2 3362 | dev: true 3363 | 3364 | /vfile/5.3.6: 3365 | resolution: {integrity: sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA==} 3366 | dependencies: 3367 | '@types/unist': 2.0.6 3368 | is-buffer: 2.0.5 3369 | unist-util-stringify-position: 3.0.2 3370 | vfile-message: 3.1.3 3371 | dev: true 3372 | 3373 | /vite/3.2.5_@types+node@18.11.18: 3374 | resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} 3375 | engines: {node: ^14.18.0 || >=16.0.0} 3376 | hasBin: true 3377 | peerDependencies: 3378 | '@types/node': '>= 14' 3379 | less: '*' 3380 | sass: '*' 3381 | stylus: '*' 3382 | sugarss: '*' 3383 | terser: ^5.4.0 3384 | peerDependenciesMeta: 3385 | '@types/node': 3386 | optional: true 3387 | less: 3388 | optional: true 3389 | sass: 3390 | optional: true 3391 | stylus: 3392 | optional: true 3393 | sugarss: 3394 | optional: true 3395 | terser: 3396 | optional: true 3397 | dependencies: 3398 | '@types/node': 18.11.18 3399 | esbuild: 0.15.18 3400 | postcss: 8.4.21 3401 | resolve: 1.22.1 3402 | rollup: 2.79.1 3403 | optionalDependencies: 3404 | fsevents: 2.3.2 3405 | dev: true 3406 | 3407 | /vitefu/0.2.4_vite@3.2.5: 3408 | resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} 3409 | peerDependencies: 3410 | vite: ^3.0.0 || ^4.0.0 3411 | peerDependenciesMeta: 3412 | vite: 3413 | optional: true 3414 | dependencies: 3415 | vite: 3.2.5_@types+node@18.11.18 3416 | dev: true 3417 | 3418 | /vscode-css-languageservice/6.2.1: 3419 | resolution: {integrity: sha512-FMaMjB2LQdkHjTCP2CWh2S94xuGsxSc8xr0H9nAACVd/iUDyZLoKFjwoB+mA3v0rpCH2U5vVCVwxyULy61CgqA==} 3420 | dependencies: 3421 | '@vscode/l10n': 0.0.10 3422 | vscode-languageserver-textdocument: 1.0.8 3423 | vscode-languageserver-types: 3.17.2 3424 | vscode-uri: 3.0.7 3425 | dev: true 3426 | 3427 | /vscode-html-languageservice/5.0.3: 3428 | resolution: {integrity: sha512-6rfrtcHhXDMXmC5pR2WXrx02HiNCzQDynOBMn+53zLxr2hvZrDzoc0QgC0FaFGfcglf7GeOsfhkWvJBFC/a70g==} 3429 | dependencies: 3430 | '@vscode/l10n': 0.0.10 3431 | vscode-languageserver-textdocument: 1.0.8 3432 | vscode-languageserver-types: 3.17.2 3433 | vscode-uri: 3.0.7 3434 | dev: true 3435 | 3436 | /vscode-jsonrpc/8.0.2: 3437 | resolution: {integrity: sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==} 3438 | engines: {node: '>=14.0.0'} 3439 | dev: true 3440 | 3441 | /vscode-languageserver-protocol/3.17.2: 3442 | resolution: {integrity: sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==} 3443 | dependencies: 3444 | vscode-jsonrpc: 8.0.2 3445 | vscode-languageserver-types: 3.17.2 3446 | dev: true 3447 | 3448 | /vscode-languageserver-textdocument/1.0.8: 3449 | resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} 3450 | dev: true 3451 | 3452 | /vscode-languageserver-types/3.17.2: 3453 | resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} 3454 | dev: true 3455 | 3456 | /vscode-languageserver/8.0.2: 3457 | resolution: {integrity: sha512-bpEt2ggPxKzsAOZlXmCJ50bV7VrxwCS5BI4+egUmure/oI/t4OlFzi/YNtVvY24A2UDOZAgwFGgnZPwqSJubkA==} 3458 | hasBin: true 3459 | dependencies: 3460 | vscode-languageserver-protocol: 3.17.2 3461 | dev: true 3462 | 3463 | /vscode-oniguruma/1.7.0: 3464 | resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} 3465 | dev: true 3466 | 3467 | /vscode-textmate/6.0.0: 3468 | resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} 3469 | dev: true 3470 | 3471 | /vscode-uri/2.1.2: 3472 | resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} 3473 | dev: true 3474 | 3475 | /vscode-uri/3.0.7: 3476 | resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} 3477 | dev: true 3478 | 3479 | /wcwidth/1.0.1: 3480 | resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} 3481 | dependencies: 3482 | defaults: 1.0.4 3483 | dev: true 3484 | 3485 | /web-namespaces/2.0.1: 3486 | resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} 3487 | dev: true 3488 | 3489 | /web-streams-polyfill/3.2.1: 3490 | resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} 3491 | engines: {node: '>= 8'} 3492 | dev: true 3493 | 3494 | /which-pm-runs/1.1.0: 3495 | resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} 3496 | engines: {node: '>=4'} 3497 | dev: true 3498 | 3499 | /which-pm/2.0.0: 3500 | resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} 3501 | engines: {node: '>=8.15'} 3502 | dependencies: 3503 | load-yaml-file: 0.2.0 3504 | path-exists: 4.0.0 3505 | dev: true 3506 | 3507 | /which/2.0.2: 3508 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3509 | engines: {node: '>= 8'} 3510 | hasBin: true 3511 | dependencies: 3512 | isexe: 2.0.0 3513 | dev: true 3514 | 3515 | /widest-line/4.0.1: 3516 | resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} 3517 | engines: {node: '>=12'} 3518 | dependencies: 3519 | string-width: 5.1.2 3520 | dev: true 3521 | 3522 | /wrap-ansi/8.0.1: 3523 | resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} 3524 | engines: {node: '>=12'} 3525 | dependencies: 3526 | ansi-styles: 6.2.1 3527 | string-width: 5.1.2 3528 | strip-ansi: 7.0.1 3529 | dev: true 3530 | 3531 | /wrappy/1.0.2: 3532 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3533 | dev: true 3534 | 3535 | /yallist/3.1.1: 3536 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 3537 | dev: true 3538 | 3539 | /yallist/4.0.0: 3540 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3541 | dev: true 3542 | 3543 | /yaml/1.10.2: 3544 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 3545 | engines: {node: '>= 6'} 3546 | dev: true 3547 | 3548 | /yargs-parser/21.1.1: 3549 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 3550 | engines: {node: '>=12'} 3551 | dev: true 3552 | 3553 | /yn/3.1.1: 3554 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 3555 | engines: {node: '>=6'} 3556 | dev: true 3557 | 3558 | /yocto-queue/0.1.0: 3559 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3560 | engines: {node: '>=10'} 3561 | dev: true 3562 | 3563 | /zod/3.20.2: 3564 | resolution: {integrity: sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ==} 3565 | dev: true 3566 | 3567 | /zwitch/2.0.4: 3568 | resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} 3569 | dev: true 3570 | -------------------------------------------------------------------------------- /src/client/index.ts: -------------------------------------------------------------------------------- 1 | import type { 2 | RedirectResult, 3 | RejectedResult, 4 | ResolvedResult 5 | } from "../result.js"; 6 | 7 | export const submitForm = async < 8 | Body extends {} = {}, 9 | ErrorData extends {} = {} 10 | >( 11 | element: HTMLFormElement, 12 | handleRedirect: (location: string) => void = (location) => 13 | (window.location.href = location) 14 | ) => { 15 | type ClientResult = 16 | | ResolvedResult 17 | | RejectedResult 18 | | RedirectResult; 19 | const formData = new FormData(element); 20 | const response = await fetch(element.action, { 21 | method: element.method, 22 | body: formData, 23 | headers: { 24 | accept: "application/json" 25 | } 26 | }); 27 | const result = (await response.json()) as ClientResult; 28 | if (result.type === "redirect") { 29 | handleRedirect(result.redirectLocation); 30 | } 31 | return result; 32 | }; 33 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { reject, resolve, redirect } from "./server/response.js"; 2 | export { action } from "./server/index.js"; 3 | -------------------------------------------------------------------------------- /src/result.ts: -------------------------------------------------------------------------------- 1 | export type Result = { 2 | type: "resolved" | "rejected" | "redirect"; 3 | body: null | Record; 4 | error: null | Record; 5 | redirectLocation: null | string; 6 | }; 7 | 8 | export class ResolvedResult implements Result { 9 | public readonly type = "resolved"; 10 | public readonly body: Body; 11 | public readonly error = null; 12 | public readonly redirectLocation = null; 13 | constructor(body: Body) { 14 | this.body = body; 15 | } 16 | } 17 | 18 | export class RejectedResult implements Result { 19 | public readonly type = "rejected"; 20 | public readonly body = null; 21 | public readonly error: ErrorData; 22 | public readonly redirectLocation = null; 23 | constructor(error: ErrorData) { 24 | this.error = error; 25 | } 26 | } 27 | 28 | export class RedirectResult implements Result { 29 | public readonly type = "redirect"; 30 | public readonly body = null; 31 | public readonly error = null; 32 | public readonly redirectLocation: string; 33 | constructor(redirectLocation: string) { 34 | this.redirectLocation = redirectLocation; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/server/index.ts: -------------------------------------------------------------------------------- 1 | import type { AstroGlobal } from "astro"; 2 | import { parse } from "./multipart-form"; 3 | import { 4 | ExtractResolveResponse, 5 | ExtractRedirectResponse, 6 | ExtractRejectResponse, 7 | RedirectResponse, 8 | RejectResponse, 9 | ResolveResponse 10 | } from "./response.js"; 11 | import type { ConditionalUnion } from "../utils"; 12 | 13 | import { 14 | ServerIgnoreResult, 15 | ServerRedirectResult, 16 | ServerRejectedResult, 17 | ServerResolvedResult 18 | } from "./result"; 19 | import { RedirectResult, RejectedResult, ResolvedResult } from "../result"; 20 | 21 | type HandleFunction = ( 22 | formData: FormData 23 | ) => Promise< 24 | | InstanceType 25 | | InstanceType 26 | | InstanceType 27 | >; 28 | 29 | type ActionResult = 30 | | ConditionalUnion< 31 | [ 32 | [ 33 | ExtractResolveResponse, 34 | ServerResolvedResult["body"]> 35 | ], 36 | [ 37 | ExtractRejectResponse, 38 | ServerRejectedResult["data"]> 39 | ], 40 | [ExtractRedirectResponse, ServerRedirectResult] 41 | ] 42 | > 43 | | ServerIgnoreResult; 44 | 45 | export const action = async ( 46 | { 47 | request, 48 | response: astroResponse 49 | }: { 50 | request: Request; 51 | response: AstroGlobal["response"]; 52 | }, 53 | handle: Handle, 54 | enableCSRFProtection = true 55 | ): Promise> => { 56 | const clonedRequest = request.clone(); 57 | const contentType = clonedRequest.headers.get("content-type") ?? ""; 58 | const isMultipartForm = contentType.includes("multipart/form-data"); 59 | const checkCsrf = async () => { 60 | const requestOrigin = clonedRequest.headers.get("origin"); 61 | const url = new URL(clonedRequest.url); 62 | return enableCSRFProtection ? requestOrigin === url.origin : true; 63 | }; 64 | const isValidRequestOrigin = checkCsrf(); 65 | if (clonedRequest.method !== "POST" || !isValidRequestOrigin) { 66 | return new ServerIgnoreResult({ inputValues: {} }); 67 | } 68 | const formData = new FormData(); 69 | const acceptHeader = clonedRequest.headers.get("accept"); 70 | if (isMultipartForm) { 71 | const boundary = contentType.replace("multipart/form-data; boundary=", ""); 72 | const bodyArrayBuffer = await clonedRequest.arrayBuffer(); 73 | const parts = parse(new Uint8Array(bodyArrayBuffer), boundary); 74 | parts.forEach((value) => { 75 | const isFile = "type" in value; 76 | if (isFile) { 77 | formData.append(value.name!, new Blob([value.data]), value.filename!); 78 | } else { 79 | const textDecoder = new TextDecoder(); 80 | formData.append(value.name!, textDecoder.decode(value.data)); 81 | } 82 | }); 83 | } else { 84 | const requestBodyFormData = await clonedRequest.formData(); 85 | requestBodyFormData.forEach((value, key) => { 86 | formData.append(key, value); 87 | }); 88 | } 89 | const inputValues = Object.fromEntries( 90 | [...formData.entries()].filter( 91 | (val): val is [string, string] => typeof val[1] === "string" 92 | ) 93 | ); 94 | const result = (await handle(formData)) as Awaited>; 95 | const isJsonRequest = acceptHeader === "application/json"; 96 | if (result instanceof ResolveResponse) { 97 | const body = result.body; 98 | const response = isJsonRequest 99 | ? new Response(JSON.stringify(new ResolvedResult(body))) 100 | : null; 101 | return new ServerResolvedResult( 102 | { 103 | body, 104 | inputValues 105 | }, 106 | response 107 | ) as any; 108 | } 109 | if (result instanceof RejectResponse) { 110 | const errorData = result.data; 111 | const status = result.status; 112 | const response = isJsonRequest 113 | ? new Response(JSON.stringify(new RejectedResult(errorData)), { 114 | status 115 | }) 116 | : null; 117 | astroResponse.status = status; 118 | return new ServerRejectedResult( 119 | { 120 | errorData, 121 | inputValues 122 | }, 123 | response 124 | ) as any; 125 | } 126 | if (result instanceof RedirectResponse) { 127 | const redirectLocation = result.location; 128 | const status = result.status; 129 | const response = isJsonRequest 130 | ? new Response(JSON.stringify(new RedirectResult(redirectLocation)), { 131 | status 132 | }) 133 | : new Response(null, { 134 | status, 135 | headers: { 136 | location: redirectLocation 137 | } 138 | }); 139 | return new ServerRedirectResult( 140 | { 141 | inputValues, 142 | redirectLocation 143 | }, 144 | response 145 | ) as any; 146 | } 147 | throw new Error("Invalid result"); 148 | }; 149 | -------------------------------------------------------------------------------- /src/server/multipart-form.ts: -------------------------------------------------------------------------------- 1 | type Part = { 2 | contentDispositionHeader: string; 3 | contentTypeHeader: string; 4 | part: number[]; 5 | }; 6 | 7 | type Input = 8 | | { 9 | name: string; 10 | data: Uint8Array; 11 | } 12 | | { 13 | type: string; 14 | filename: string; 15 | name: string; 16 | data: Uint8Array; 17 | }; 18 | 19 | enum ParsingState { 20 | INIT, 21 | READING_HEADERS, 22 | READING_DATA, 23 | READING_PART_SEPARATOR 24 | } 25 | 26 | export const parse = ( 27 | multipartBodyBuffer: Uint8Array, 28 | boundary: string 29 | ): Input[] => { 30 | let lastline = ""; 31 | let contentDispositionHeader = ""; 32 | let contentTypeHeader = ""; 33 | let state: ParsingState = ParsingState.INIT; 34 | let buffer: number[] = []; 35 | const allParts: Input[] = []; 36 | 37 | let currentPartHeaders: string[] = []; 38 | 39 | for (let i = 0; i < multipartBodyBuffer.length; i++) { 40 | const oneByte: number = multipartBodyBuffer[i]; 41 | const prevByte: number | null = i > 0 ? multipartBodyBuffer[i - 1] : null; 42 | // 0x0a => \n 43 | // 0x0d => \r 44 | const newLineDetected: boolean = oneByte === 0x0a && prevByte === 0x0d; 45 | const newLineChar: boolean = oneByte === 0x0a || oneByte === 0x0d; 46 | 47 | if (!newLineChar) lastline += String.fromCharCode(oneByte); 48 | if (ParsingState.INIT === state && newLineDetected) { 49 | // searching for boundary 50 | if ("--" + boundary === lastline) { 51 | state = ParsingState.READING_HEADERS; // found boundary. start reading headers 52 | } 53 | lastline = ""; 54 | } else if (ParsingState.READING_HEADERS === state && newLineDetected) { 55 | // parsing headers. Headers are separated by an empty line from the content. Stop reading headers when the line is empty 56 | if (lastline.length) { 57 | currentPartHeaders.push(lastline); 58 | } else { 59 | // found empty line. search for the headers we want and set the values 60 | for (const h of currentPartHeaders) { 61 | if (h.toLowerCase().startsWith("content-disposition:")) { 62 | contentDispositionHeader = h; 63 | } else if (h.toLowerCase().startsWith("content-type:")) { 64 | contentTypeHeader = h; 65 | } 66 | } 67 | state = ParsingState.READING_DATA; 68 | buffer = []; 69 | } 70 | lastline = ""; 71 | } else if (ParsingState.READING_DATA === state) { 72 | // parsing data 73 | if (lastline.length > boundary.length + 4) { 74 | lastline = ""; // mem save 75 | } 76 | if ("--" + boundary === lastline) { 77 | const j = buffer.length - lastline.length; 78 | const part = buffer.slice(0, j - 1); 79 | 80 | allParts.push( 81 | process({ contentDispositionHeader, contentTypeHeader, part }) 82 | ); 83 | buffer = []; 84 | currentPartHeaders = []; 85 | lastline = ""; 86 | state = ParsingState.READING_PART_SEPARATOR; 87 | contentDispositionHeader = ""; 88 | contentTypeHeader = ""; 89 | } else { 90 | buffer.push(oneByte); 91 | } 92 | if (newLineDetected) { 93 | lastline = ""; 94 | } 95 | } else if (ParsingState.READING_PART_SEPARATOR === state) { 96 | if (newLineDetected) { 97 | state = ParsingState.READING_HEADERS; 98 | } 99 | } 100 | } 101 | return allParts; 102 | }; 103 | 104 | const process = (part: Part): Input => { 105 | // will transform this object: 106 | // { header: 'Content-Disposition: form-data; name="uploads[]"; filename="A.txt"', 107 | // info: 'Content-Type: text/plain', 108 | // part: 'AAAABBBB' } 109 | // into this one: 110 | // { filename: 'A.txt', type: 'text/plain', data: } 111 | const header = part.contentDispositionHeader.split(";"); 112 | const filenameData = header[2]; 113 | if (filenameData) { 114 | const getFileName = () => { 115 | return JSON.parse(filenameData.split("=")[1].trim()) as string; 116 | }; 117 | const contentType = part.contentTypeHeader.split(":")[1].trim(); 118 | return { 119 | type: contentType, 120 | name: header[1].split("=")[1].replace(/"/g, ""), 121 | data: new Uint8Array(part.part), 122 | filename: getFileName() 123 | }; 124 | } 125 | return { 126 | name: header[1].split("=")[1].replace(/"/g, ""), 127 | data: new Uint8Array(part.part) 128 | }; 129 | }; -------------------------------------------------------------------------------- /src/server/request.ts: -------------------------------------------------------------------------------- 1 | import { parse } from "./multipart-form"; 2 | 3 | export const parseRequestBody = async (request: Request) => { 4 | const clonedRequest = request.clone(); 5 | const contentType = request.headers.get("content-type") ?? ""; 6 | const isMultipartForm = contentType.includes("multipart/form-data"); 7 | const formData = new FormData(); 8 | if (isMultipartForm) { 9 | const boundary = contentType.replace("multipart/form-data; boundary=", ""); 10 | const bodyArrayBuffer = await clonedRequest.arrayBuffer(); 11 | const parts = parse(new Uint8Array(bodyArrayBuffer), boundary); 12 | parts.forEach((value) => { 13 | const isFile = "type" in value; 14 | if (isFile) { 15 | formData.append(value.name!, new Blob([value.data]), value.filename!); 16 | } else { 17 | const textDecoder = new TextDecoder(); 18 | formData.append(value.name!, textDecoder.decode(value.data)); 19 | } 20 | }); 21 | } else { 22 | const requestBodyFormData = await clonedRequest.formData(); 23 | requestBodyFormData.forEach((value, key) => { 24 | formData.append(key, value); 25 | }); 26 | } 27 | }; 28 | -------------------------------------------------------------------------------- /src/server/response.ts: -------------------------------------------------------------------------------- 1 | export class RejectResponse { 2 | public readonly type = "rejected"; 3 | public status: number; 4 | public data: ErrorData; 5 | constructor(status: number, data: ErrorData) { 6 | this.status = status; 7 | this.data = data; 8 | } 9 | } 10 | 11 | export class RedirectResponse { 12 | public readonly type = "redirect"; 13 | public status: number; 14 | public location: string; 15 | constructor(status: number, location: string) { 16 | this.status = status; 17 | this.location = location; 18 | } 19 | } 20 | 21 | export class ResolveResponse { 22 | public readonly type = "resolved"; 23 | public body: Body; 24 | constructor(body: Body) { 25 | this.body = body; 26 | } 27 | } 28 | 29 | export type ExtractResolveResponse any> = Extract< 30 | Awaited>, 31 | InstanceType 32 | >; 33 | 34 | export type ExtractRejectResponse any> = Extract< 35 | Awaited>, 36 | InstanceType 37 | >; 38 | 39 | export type ExtractRedirectResponse any> = Extract< 40 | Awaited>, 41 | InstanceType 42 | >; 43 | 44 | 45 | export const reject = ( 46 | status: number, 47 | data?: Data 48 | ) => { 49 | return new RejectResponse( 50 | status, 51 | (data ?? {}) as Data extends undefined ? {} : Data 52 | ); 53 | }; 54 | 55 | export const redirect = (status: number, location: string) => { 56 | return new RedirectResponse(status, location); 57 | }; 58 | 59 | export const resolve = (body?: Body) => { 60 | return new ResolveResponse( 61 | (body ?? {}) as Body extends undefined ? {} : Body 62 | ); 63 | }; 64 | 65 | -------------------------------------------------------------------------------- /src/server/result.ts: -------------------------------------------------------------------------------- 1 | import { 2 | RedirectResult, 3 | RejectedResult, 4 | ResolvedResult, 5 | Result 6 | } from "../result"; 7 | 8 | type InputValues = Record; 9 | 10 | type ServerResult = Omit & { 11 | type: Result["type"] | "ignore"; 12 | response: null | Response; 13 | inputValues: InputValues; 14 | }; 15 | 16 | export class ServerIgnoreResult implements ServerResult { 17 | public readonly type = "ignore"; 18 | public readonly body = null; 19 | public readonly error = null; 20 | public readonly redirectLocation = null; 21 | public readonly response = null; 22 | public readonly inputValues; 23 | constructor({ inputValues }: { inputValues: InputValues }) { 24 | this.inputValues = inputValues; 25 | } 26 | } 27 | 28 | export class ServerResolvedResult 29 | extends ResolvedResult 30 | implements ServerResult 31 | { 32 | public readonly response; 33 | public readonly inputValues; 34 | constructor( 35 | { 36 | body, 37 | inputValues 38 | }: { 39 | body: Body; 40 | inputValues: InputValues; 41 | }, 42 | response: Response | null 43 | ) { 44 | super(body); 45 | this.inputValues = inputValues; 46 | this.response = response; 47 | } 48 | } 49 | 50 | export class ServerRejectedResult 51 | extends RejectedResult 52 | implements ServerResult 53 | { 54 | public readonly response; 55 | public readonly inputValues; 56 | constructor( 57 | { 58 | errorData, 59 | inputValues 60 | }: { 61 | errorData: ErrorData; 62 | inputValues: InputValues; 63 | }, 64 | response: Response | null 65 | ) { 66 | super(errorData); 67 | this.inputValues = inputValues; 68 | this.response = response; 69 | } 70 | } 71 | 72 | export class ServerRedirectResult 73 | extends RedirectResult 74 | implements ServerResult 75 | { 76 | public readonly response; 77 | public readonly inputValues; 78 | constructor( 79 | { 80 | redirectLocation, 81 | inputValues 82 | }: { 83 | redirectLocation: string; 84 | inputValues: InputValues; 85 | }, 86 | response: Response 87 | ) { 88 | super(redirectLocation); 89 | this.inputValues = inputValues; 90 | this.response = response; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | // for each T as [typeA, typeB] 2 | // return typeB if typeA is not never 3 | export type ConditionalUnion = Exclude< 4 | { 5 | [K in keyof T]: T[K][0] extends never ? never : T[K][1]; 6 | }[number], 7 | never 8 | >; 9 | -------------------------------------------------------------------------------- /test/index.ts: -------------------------------------------------------------------------------- 1 | // Maybe write some tests 2 | 3 | const main = async () => { 4 | console.log("success"); 5 | }; 6 | 7 | main(); 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "checkJs": true, 5 | "noImplicitAny": true, 6 | "module": "es2022", 7 | "moduleResolution": "node", 8 | "target": "es2022", 9 | "allowSyntheticDefaultImports": true, 10 | "declaration": true, 11 | "outDir": "./dist", 12 | "strict": true, 13 | "importsNotUsedAsValues": "error" 14 | }, 15 | "include": ["src"], 16 | "exclude": ["node_modules/", "**/__tests__/*"] 17 | } 18 | --------------------------------------------------------------------------------