diff --git a/.env.example b/.env.example index 5dd2ba524..1311777c3 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,21 @@ -PUBLIC_SUPABASE_URL = "" -PUBLIC_SUPABASE_PUBLIC_KEY = "" -PRIVATE_SUPABASE_PRIVATE_KEY = "" \ No newline at end of file +# Resend (transactional emails) +PRIVATE_RESEND_KEY= + +PUBLIC_VITE_DEV=true + +# Cloudflare (site hosting) +PRIVATE_CLOUDFLARE_ZONE_ID= +PRIVATE_CLOUDFLARE_ACCOUNT_ID= +PRIVATE_R2_TOKEN= +PRIVATE_R2_ACCESS_KEY_ID= +PRIVATE_R2_SECRET_ACCESS_KEY= +PRIVATE_CLOUDFLARE_WORKER_NAME= +PRIVATE_CLOUDFLARE_WORKERS_API_TOKEN= +PRIVATE_CLOUDFLARE_HOSTNAMES_TOKEN= +PRIVATE_CLOUDFLARE_ZONE_TOKEN= +PRIVATE_CLOUDFLARE_SITES_BUCKET= + +# Supabase (database & auth) +PUBLIC_SUPABASE_URL= +PUBLIC_SUPABASE_PUBLIC_KEY= +PRIVATE_SUPABASE_PRIVATE_KEY= diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml deleted file mode 100644 index b1467fff5..000000000 --- a/.github/workflows/playwright.yml +++ /dev/null @@ -1,28 +0,0 @@ -# Failing because of some ci dependency issue, running locally for now -# name: Playwright Tests -# on: -# push: -# branches: [ main, master ] -# pull_request: -# branches: [ main, master ] -# jobs: -# test: -# timeout-minutes: 60 -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v2 -# - uses: actions/setup-node@v2 -# with: -# node-version: '14.x' -# - name: Install dependencies -# run: npm ci -# - name: Install Playwright Browsers -# run: npx playwright install --with-deps -# - name: Run Playwright tests -# run: npx playwright test -# - uses: actions/upload-artifact@v2 -# if: always() -# with: -# name: playwright-report -# path: playwright-report/ -# retention-days: 30 diff --git a/.gitignore b/.gitignore index 3ec9dd8a2..bb3d75952 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ .env .DS_Store +.vercel/output +.vscode .vercel_build_output .svelte-kit node_modules diff --git a/.prettierrc b/.prettierrc index 27ee5b3f3..279332d3a 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,23 @@ { "tabWidth": 2, - "singleQuote": true, "semi": false, - "htmlWhitespaceSensitivity": "ignore" + "htmlWhitespaceSensitivity": "ignore", + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 200, + "plugins": [ + "prettier-plugin-svelte" + ], + "pluginSearchDirs": [ + "." + ], + "overrides": [ + { + "files": "*.svelte", + "options": { + "parser": "svelte" + } + } + ] } \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7c4db0bdf..478527e05 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,31 +1,3 @@ # Contributing -Contributions to Primo are very welcome. You can start by submitting a PR to address any of the [open issues](https://github.com/primocms/primo/issues), but for the sake of keeping the codebase simple and aligned towards the project's mission, we ask that you first start a discussion before attempting to contribute any new features. You can do this by starting a discussion in the [Forum](https://forum.primo.so), [Github Discussions](https://github.com/primocms/primo/discussions), or the [Discord](https://discord.gg/vzSFTS9). Or, if you'd like to contribute to the project but don't know where to start, feel free to fill out the [contributor form](https://primocms.org/contributions). - -## Running locally - -1. Clone the main Primo repo -``` -git clone https://github.com/primocms/primo.git -``` -2. Clone the builder repo -``` -git clone https://github.com/primocms/builder -``` -3. Link the builder to Primo -``` -cd builder -npm link -npm install -npm run package-watch -``` -4. Run Primo -``` -cd ../primo -npm install -npm link @primocms/builder -npm run dev -``` -5. Open your browser to http://localhost:5173 - -If you have any issues setting this up, it's probably *not* just you, so feel free to pop into any of the discussion spaces linked above for some help. +Contributions to Primo are very welcome. You can start by submitting a PR to address any of the [open issues](https://github.com/primocms/primo/issues), but for the sake of keeping the codebase simple and aligned towards the project's mission, we ask that you first start a discussion before attempting to contribute any new features. You can do this by starting a discussion in the [Forum](https://forum.primo.so), [Github Discussions](https://github.com/primocms/primo/discussions), or the [Discord](https://discord.gg/vzSFTS9). \ No newline at end of file diff --git a/README.md b/README.md index f8bcda9d9..79845cce6 100644 --- a/README.md +++ b/README.md @@ -7,80 +7,89 @@

-

The modern monolithic CMS

-

Primo makes it a blast to build pages, update content, and edit code - one block at a time.

+# Primo V3 Alpha -

- Primocms.org • - Discord • - Docs • - Newsletter • - YouTube -

- -![screenshot](https://github.com/primocms/primo/raw/master/screenshot-v2.png) - -## ⭐ Why Primo? - -Traditional monolithic CMSs like WordPress, Drupal, and Joomla enable quick setup and easy content editing, but rely on antiquated and heavy development practices (often relying on plugins and third-party services to customize the site and add new components). Headless CMSs have popped up to modernize the view layer with modern development practices and frameworks, but have a poorer content editing experience due to their decoupling from the content layer. - -Primo is a modern approach to the monolithic CMS that builds on the traditional monolith's benefits of a quick setup and easy content editing alongside the benefits of modern development (i.e. Svelte). These combine into a web publishing tool that is significantly easier and more fun to use for both technical and non-technical users and enables you to build faster, more secure, and more unique websites. - -## ✨ Features - -- Visual, on-page content editing -- Drag-and-drop page building with blocks -- Integrated development environment for blocks and pages -- Static site generation -- Real-time page collaboration -- Internationalization -- Multisite (1 server = infinity sites) -- Deploys to Github (i.e. any web host) - -[Read more in the Docs](https://docs.primocms.org) - -# How to self-host Primo -Primo depends on several [freemium] third-party services for easy hosting, authentication, database and storage, etc. Running your own Primo server is as easy as forking the [**Primo repo**]() and deploying it on a static host like Vercel or Netlify, which should only take a few minutes. - -Third-party services (all can be signed into with Github): +## ✨ V3 Features & Improvements -- A modern web host like [**Vercel**]() or [**Netlify**]() to host the Primo application & published sites (note that Cloudflare Pages is currently [unsupported](https://github.com/primocms/primo/issues/365) for hosting Primo, but you can still use it for your sites). +- Custom Page Types (i.e. Content Types) +- Dynamic content fields (i.e. 'Site Field', 'Page Field', 'Page' to update entity page content referenced on other pages) +- Design system editor +- 10x faster build times bc every page gets generated on update, instead of all at once. +- Conditional fields (to show/hide fields based on preceding field values) +- CSS-library compatibility (bootstrap, tailwind, bulma, etc. all work reliably using a standard cdn link). +- UI/UX improvements + - Drag pages to reorder them in the page list + - Drag repeater items to reorder them + - Drag-and-drop functionality improved for adding blocks to page & now works on mobile. + - Block editor organized into code & content (i.e. fields & entries), UI improved. + - On-page editing significantly improved. -- A [**Supabase**]() account to manage your server's authentication, database, and file storage. +![](https://cdn.primo.page/557834e8-7996-46f6-9328-0b84887d3bf7/staging/Accessible_Wardrobe_That_Women.png) -- A [**Github**]() account to deploy your sites to (unless you plan on manually downloading/uploading your site files to a host). +![](https://cdn.primo.page/557834e8-7996-46f6-9328-0b84887d3bf7/staging/Open_Sans.png) +![](https://cdn.primo.page/557834e8-7996-46f6-9328-0b84887d3bf7/staging/Pasted_Graphic_2.png) - +![](https://cdn.primo.page/557834e8-7996-46f6-9328-0b84887d3bf7/staging/Stitch_Group_for.png) -## Installation +# Running Primo locally +Primo isn't *really* self-hostable, yet, since it depends on a handful of [freemium] services, but the goal is that in the future it'll be fully self-hosted by default (probably a Docker image). You run it by cloning it, setting environment variables to connect it to the various services, then hosting the application (i.e. pushing it to a repo and connecting the repo to a host). You can also strip out the service-dependent bits yourself. -1. Ensure you have an account with all the services listed above. +Ensure you have accounts for all these services: +* Supabase +* Resend +* Cloudflare +* Vercel, Netlify, Cloudflare, or another modern host. -2. Create a new Supabase project, go to the SQL editor, add a new query and provision your project by copying the [**schema**]() and pasting it into the editor. +Note: you'll need to set up your Supabase account first. Run the schema found in `primo_schema.sql` to set up your tables before continuing. -3. Fork the [**Primo repository**](). -4. Go to your web host and create a new project from your new repository, inputting your Supabase details (go to the API settings) as environment variables. +```bash +git clone -b v3 https://github.com/primocms/primo.git +cd primo +npm install - - PUBLIC\_SUPABASE\_URL +# Rename the example environment file and add your credentials for Supabase, Cloudflare, and Resend +mv .env.example .env - - PUBLIC\_SUPABASE\_PUBLIC\_KEY +npm run build +npm run preview +``` - - PRIVATE\_SUPABASE\_PRIVATE\_KEY +### To host Primo +If you want to run a hosted version of Primo, all you need to do is deploy your repo and set your environment variables. You can deploy it on any webhost for zero dollars. -![Environment Variables](https://dbfnrqvkgwkjkzqgnfrd.supabase.co/storage/v1/object/public/images/Screenshot%202023-05-06%20at%206.45.43%20PM.png) +1. Create a new Supabase project, go to the SQL editor, add a new query and provision your project by copying the [**schema**]() and pasting it into the editor. +1. Go to your web host and create a new project from your new repository, inputting your Supabase details (go to the API settings) as environment variables. -5. Publish the project and navigate to the Primo authentication screen. +```bash +# Resend (transactional emails) +PRIVATE_RESEND_KEY= -6. The user account you create will be the server owner. You can manage all your server's data from the Supabase project dashboard. +# Cloudflare (site hosting) +PRIVATE_CLOUDFLARE_ZONE_ID= +PRIVATE_CLOUDFLARE_ACCOUNT_ID= +PRIVATE_R2_TOKEN= +PRIVATE_R2_ACCESS_KEY_ID= +PRIVATE_R2_SECRET_ACCESS_KEY= +PRIVATE_CLOUDFLARE_WORKER_NAME= +PRIVATE_CLOUDFLARE_WORKERS_API_TOKEN= +PRIVATE_CLOUDFLARE_HOSTNAMES_TOKEN= +PRIVATE_CLOUDFLARE_ZONE_TOKEN= +PRIVATE_CLOUDFLARE_SITES_BUCKET= -7. Finally, go back to your Supabase project & set the Site URL to the URL of your Primo site (under Authentication > URL Configuration > Site URL). -Screenshot 2023-07-11 at 12 44 26 PM +# Supabase (database & auth) +PUBLIC_SUPABASE_URL= +PUBLIC_SUPABASE_PUBLIC_KEY= +PRIVATE_SUPABASE_PRIVATE_KEY= +``` -For more details see this step-by-step installation [video guide]() +## Things you can change/extend +- Design system +- Field types +- Hosting destination +- Authentication methods +- Extensions (soon) -## Updating -You can merge upstream updates by clicking 'Sync fork' on your forked repository. Your updates will automatically deploy to your web host. diff --git a/class-mangler/index.ts b/class-mangler/index.ts deleted file mode 100644 index 440b86f51..000000000 --- a/class-mangler/index.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { Plugin } from 'vite'; -import transformStyles from './modules/styles'; -import transformTemplates from './modules/templates'; -import { endsWith } from './utils'; - -const defaultSuffixes = ['.svelte', '.html', '.vue', '.jsx', '.tsx']; - -export default function ClassMangler(config: PluginConfig = {}): Plugin[] { - config.suffixes = config.suffixes || defaultSuffixes; - - const classMapping = new Map(); - - const plugins: Plugin[] = [ - { - name: 'class-mangler-templates', - apply: config.dev ? 'serve' : 'build', - enforce: 'pre', - transform(code, id) { - if (endsWith(id, config.suffixes)) { - return transformTemplates(id, code, classMapping, config); - } - } - }, - { - name: 'class-mangler-styles', - apply: config.dev ? 'serve' : 'build', - transform(code, id) { - if (endsWith(id, ['.css'])) { - return transformStyles(code, classMapping); - } - }, - generateBundle() { - const classMappingObject = {}; - - classMapping.forEach((value, key) => { - classMappingObject[key] = value; - }); - - this.emitFile({ - type: 'asset', - name: 'class-mapping.json', - source: JSON.stringify(classMappingObject) - }); - } - } - ]; - - if (config.dev) { - plugins.forEach((plugin) => { - delete plugin.apply; - }); - } - - return plugins; -} diff --git a/class-mangler/modules/styles.ts b/class-mangler/modules/styles.ts deleted file mode 100644 index c5deeb9f5..000000000 --- a/class-mangler/modules/styles.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { cssPseudoRegex, escapeClassName } from '../utils'; - -export default function transformStyles(code, classMapping: Map) { - let classesToReplace = []; - - classMapping.forEach((randomClassName, className) => { - classesToReplace = [ - ...classesToReplace, - { - raw: className, - random: randomClassName, - escaped: escapeClassName(className) - } - ]; - }); - - classesToReplace.forEach((classToReplace) => { - const regex = new RegExp( - `\\.(?:${classToReplace.escaped})(?=[\\w\\d .:{]+)((?::(?:${cssPseudoRegex}))*(?:[(\\w\\d )]*))`, - 'gm' - ); - code = code.replace(regex, '.' + classToReplace.random + '$1'); - }); - - return { - code, - map: null - }; -} diff --git a/class-mangler/modules/templates.ts b/class-mangler/modules/templates.ts deleted file mode 100644 index 603594764..000000000 --- a/class-mangler/modules/templates.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { escapeClassName, getRandomClassName, getRegexps } from '../utils'; - -export default function transformTemplates( - id: string, - code: string, - classMapping: Map, - config: GeneratorConfig -) { - const rawClasses = getRawClasses(id, code); - - const unqiueClasses = new Set( - rawClasses - .map((c) => c.split(' ')) - .flat() - .filter((c) => c.length > 0) - .sort((a, b) => b.length - a.length) - ); - - unqiueClasses.forEach((className) => { - if (!classMapping.has(className)) { - let random = getRandomClassName(config); - const classMappingList = Array.from(classMapping.values()); - - while (classMappingList.includes(random)) { - random = getRandomClassName(config); - } - - classMapping.set(className, random); - } - }); - - const rawClassesMap = new Map(); - - rawClasses.forEach((classNames) => { - const randomClassNames = classNames - .split(' ') - .map((className) => { - if (classMapping.has(className)) { - return classMapping.get(className); - } - }) - .join(' '); - - rawClassesMap.set(classNames, randomClassNames); - }); - - rawClasses - .sort((a, b) => b.length - a.length) - .forEach((classNames) => { - let match: RegExpExecArray; - const regex = new RegExp(`(?<="class",.*?)${escapeClassName(classNames)}(?=[\\s"')])`, 'g'); - while ((match = regex.exec(code)) !== null) { - if (match.index > 0 && code[match.index - 2] === ',') { - code = code.replace(match[0], `"${rawClassesMap.get(classNames)}"`); - } else { - code = code.replace(match[0], `${rawClassesMap.get(classNames)}`); - } - } - }); - - return { - code, - map: null - }; -} - -const getRawClasses = (id: string, code: string) => { - const rawClasses: string[] = []; - const regexps = getRegexps(id); - - regexps.forEach((regex) => { - let match: RegExpExecArray | null; - while ((match = regex.exec(code)) !== null) { - rawClasses.push(match[0]); - } - }); - - return rawClasses; -}; diff --git a/class-mangler/todo.md b/class-mangler/todo.md deleted file mode 100644 index 3ac3e9459..000000000 --- a/class-mangler/todo.md +++ /dev/null @@ -1,5 +0,0 @@ -Todo: - -- Allowlist (e.g. 'primo-toolbar') -- Set prefix (e.g. `__` or `__mangled__`) -- Handle IDs \ No newline at end of file diff --git a/class-mangler/types.d.ts b/class-mangler/types.d.ts deleted file mode 100644 index 3d2e24afd..000000000 --- a/class-mangler/types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -interface PluginConfig extends GeneratorConfig { - dev?: boolean; - suffixes?: string[]; -} - -interface GeneratorConfig { - length?: number; - min?: number; - max?: number; -} diff --git a/class-mangler/utils.ts b/class-mangler/utils.ts deleted file mode 100644 index d243eab64..000000000 --- a/class-mangler/utils.ts +++ /dev/null @@ -1,84 +0,0 @@ -import random from 'randomstring'; -import Crypto from 'crypto'; - -export const cssPseudo = [ - 'active', - 'checked', - 'disabled', - 'empty', - 'enabled', - 'first-child', - 'first-of-type', - 'focus', - 'hover', - 'in-range', - 'invalid', - 'lang', - 'last-child', - 'last-of-type', - 'link', - 'not', - 'nth-child', - 'nth-last-child', - 'nth-last-of-type', - 'nth-of-type', - 'only-of-type', - 'only-child', - 'optional', - 'out-of-range', - 'read-only', - 'read-write', - 'required', - 'root', - 'target', - 'valid', - 'visited' -]; - -export const cssPseudoRegex = cssPseudo.join('|'); - -export const escapeClassName = (className: string) => { - return className.replace(/[/\\^$*+?.()|[\]{}:]/g, '\\\\$&'); -}; - -export const removeCssPsuedoSelector = (code: string) => { - return code.replace(new RegExp(`:(${cssPseudoRegex})[(\\w\\d)]*`, 'g'), ''); -}; - -export const getRandomClassName = (config: { length?: number; min?: number; max?: number }) => { - let length = 5; - - config.length - ? (length = config.length) - : config.min && config.max && (length = getRandomInt(config.min, config.max)); - - return random.generate({ - length, - charset: 'alphabetic' - }); -}; - -const getRandomInt = (min: number, max: number) => { - return (Crypto.randomBytes(1)[0] % (max - min + 1)) + min; -}; - -export const endsWith = (id: string, suffixes: string[]) => { - return suffixes.some((suffix) => { - return id.endsWith(suffix); - }); -}; - -export const getFiletype = (id: string) => { - const res = id.match(new RegExp('[^\\.]+$')); - return res ? res[0] : ''; -}; - -export const getRegexps = (id: string) => { - const arr: RegExp[] = []; - switch (getFiletype(id)) { - case 'svelte': - arr.push(new RegExp('(?<=class["\'],\\s*["\']).*?(?=["\'])', 'gm')); - break; - } - return arr; -}; diff --git a/components.json b/components.json new file mode 100644 index 000000000..c7988bf44 --- /dev/null +++ b/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://next.shadcn-svelte.com/schema.json", + "style": "new-york", + "tailwind": { + "config": "tailwind.config.js", + "css": "src/app.css", + "baseColor": "neutral" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils", + "ui": "$lib/components/ui", + "hooks": "$lib/hooks" + }, + "typescript": true, + "registry": "https://next.shadcn-svelte.com/registry" +} diff --git a/package-lock.json b/package-lock.json index 82428c63d..e9012dac6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,10899 +1,10603 @@ { - "name": "primo-server", - "version": "2.0.0--beta.41", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "primo-server", - "version": "2.0.0--beta.41", - "dependencies": { - "@fontsource/fira-code": "^5.0.5", - "@iconify/svelte": "^2.2.1", - "@primocms/builder": "^0.1.66", - "@rollup/browser": "^3.28.0", - "@supabase/auth-helpers-sveltekit": "^0.10.2", - "@supabase/supabase-js": "^2.31.0", - "axios": "^0.26.0", - "estree-walker": "^3.0.3", - "lodash-es": "^4.17.21", - "memfs": "^4.7.7", - "nanoid": "^3.1.23", - "promise-worker": "^2.0.1", - "resolve.exports": "^2.0.2", - "timeago.js": "^4.0.2" - }, - "devDependencies": { - "@playwright/test": "^1.33.0", - "@sveltejs/adapter-auto": "2.1.1", - "@sveltejs/kit": "^1.22.4", - "@typescript-eslint/eslint-plugin": "^5.45.0", - "@typescript-eslint/parser": "^5.45.0", - "autoprefixer": "^10.3.6", - "eslint": "^8.28.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-svelte": "^2.32.4", - "file-saver": "^2.0.5", - "js-beautify": "^1.14.9", - "jszip": "^3.10.1", - "mousetrap": "^1.6.5", - "postcss-nested": "^5.0.6", - "randomstring": "^1.2.3", - "showdown-highlight": "^3.1.0", - "svelte": "^3.59.2", - "svelte-check": "^2.9.2", - "svelte-json-tree": "^1.0.0", - "svelte-preprocess": "^5.0.4", - "tailwindcss": "^2.2.16", - "tslib": "^2.4.1", - "typescript": "^4.9.3", - "vite": "^4.4.8", - "vitest": "^0.25.8" - }, - "engines": { - "node": "18.x" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@codemirror/autocomplete": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.15.0.tgz", - "integrity": "sha512-G2Zm0mXznxz97JhaaOdoEG2cVupn4JjPaS4AcNvZzhOsnnG9YVN68VzfoUw6dYTsIxT6a/cmoFEN47KAWhXaOg==", - "peer": true, - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0" - }, - "peerDependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@codemirror/commands": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", - "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", - "peer": true, - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.1.0" - } - }, - "node_modules/@codemirror/lang-css": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz", - "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==", - "peer": true, - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.2", - "@lezer/css": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-html": { - "version": "6.4.8", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.8.tgz", - "integrity": "sha512-tE2YK7wDlb9ZpAH6mpTPiYm6rhfdQKVDa5r9IwIFlwwgvVaKsCfuKKZoJGWsmMZIf3FQAuJ5CHMPLymOtg1hXw==", - "peer": true, - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/language": "^6.4.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0", - "@lezer/css": "^1.1.0", - "@lezer/html": "^1.3.0" - } - }, - "node_modules/@codemirror/lang-javascript": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz", - "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==", - "peer": true, - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.6.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0", - "@lezer/javascript": "^1.0.0" - } - }, - "node_modules/@codemirror/language": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", - "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", - "peer": true, - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.23.0", - "@lezer/common": "^1.1.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0", - "style-mod": "^4.0.0" - } - }, - "node_modules/@codemirror/lint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz", - "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==", - "peer": true, - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "node_modules/@codemirror/search": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", - "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", - "peer": true, - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "node_modules/@codemirror/state": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", - "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==", - "peer": true - }, - "node_modules/@codemirror/view": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.26.1.tgz", - "integrity": "sha512-wLw0t3R9AwOSQThdZ5Onw8QQtem5asE7+bPlnzc57eubPqiuJKIzwjMZ+C42vQett+iva+J8VgFV4RYWDBh5FA==", - "peer": true, - "dependencies": { - "@codemirror/state": "^6.4.0", - "style-mod": "^4.1.0", - "w3c-keyname": "^2.2.4" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", - "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", - "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", - "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", - "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", - "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", - "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", - "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", - "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", - "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", - "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", - "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", - "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", - "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", - "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", - "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", - "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", - "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", - "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", - "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", - "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", - "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", - "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@fontsource/fira-code": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@fontsource/fira-code/-/fira-code-5.0.5.tgz", - "integrity": "sha512-mb6eBaD0nheCaPZYllnBVsfUUuZufFtxZrF57CjmzkW2tM/G6Yag2UGjCX6vWVblHiIssmj986IDJo+R7SvnMw==" - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@iconify/svelte": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-2.2.1.tgz", - "integrity": "sha512-eWZq8CRrr3WfnKAj8SWknfE3S/d+j/AzEcypeJaHurS1s4zTdFnkjATcFa8lerGtcX0PAtXiVL94tbIEd69N+w==", - "funding": { - "url": "http://github.com/sponsors/cyberalien" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@lezer/common": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", - "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", - "peer": true - }, - "node_modules/@lezer/css": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.8.tgz", - "integrity": "sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==", - "peer": true, - "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/highlight": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", - "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", - "peer": true, - "dependencies": { - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@lezer/html": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.9.tgz", - "integrity": "sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA==", - "peer": true, - "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/javascript": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.14.tgz", - "integrity": "sha512-GEdUyspTRgc5dwIGebUk+f3BekvqEWVIYsIuAC3pA8e8wcikGwBZRWRa450L0s8noGWuULwnmi4yjxTnYz9PpA==", - "peer": true, - "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.1.3", - "@lezer/lr": "^1.3.0" - } - }, - "node_modules/@lezer/lr": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", - "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", - "peer": true, - "dependencies": { - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@one-ini/wasm": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", - "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", - "dev": true - }, - "node_modules/@playwright/test": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.33.0.tgz", - "integrity": "sha512-YunBa2mE7Hq4CfPkGzQRK916a4tuZoVx/EpLjeWlTVOnD4S2+fdaQZE0LJkbfhN5FTSKNLdcl7MoT5XB37bTkg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "playwright-core": "1.33.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=14" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" - }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@primocms/builder": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@primocms/builder/-/builder-0.1.66.tgz", - "integrity": "sha512-tlfk1ENrcF2x3llcwq6YBbkAYDQkz0qFU0X8ez+VKc9fb4YR9Qngva5ZeXXfoFzBXHrmOvYigsY9m8alzPEewg==", - "peerDependencies": { - "@codemirror/autocomplete": "^6.1.0", - "@codemirror/commands": "^6.0.1", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-html": "^6.1.0", - "@codemirror/lang-javascript": "^6.0.2", - "@codemirror/language": "^6.2.1", - "@codemirror/state": "^6.1.0", - "@codemirror/view": "^6.1.2", - "@fontsource/fira-code": "^5.0.5", - "@iconify/svelte": "^2.2.1", - "@lezer/highlight": "^1.0.0", - "@replit/codemirror-lang-svelte": "^6.0.0", - "@tiptap/core": "^2.0.0-beta.174", - "@tiptap/extension-bubble-menu": "^2.0.0-beta.55", - "@tiptap/extension-bullet-list": "^2.0.0-beta.26", - "@tiptap/extension-floating-menu": "^2.0.0-beta.50", - "@tiptap/extension-highlight": "^2.0.0-beta.33", - "@tiptap/extension-link": "^2.0.0-beta.199", - "@tiptap/starter-kit": "^2.0.0-beta.183", - "autosize": "^5.0.1", - "axios": "^0.26.0", - "codemirror": "^6.0.1", - "file-saver": "^2.0.5", - "idb-keyval": "^6.1.0", - "jszip": "^3.7.1", - "lodash-es": "^4.17.21", - "mousetrap": "^1.6.5", - "nanoid": "^3.1.23", - "pluralize": "^8.0.0", - "prettier": "^2.4.1", - "promise-worker": "^2.0.1", - "showdown": "^2.1.0", - "showdown-highlight": "^3.1.0", - "svelte": "^3.59.2", - "svelte-dnd-action": "^0.9.24", - "svelte-toggle": "^3.1.0", - "timeago.js": "^4.0.2", - "uuid": "^9.0.0" - } - }, - "node_modules/@remirror/core-constants": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", - "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==", - "peer": true - }, - "node_modules/@replit/codemirror-lang-svelte": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-svelte/-/codemirror-lang-svelte-6.0.0.tgz", - "integrity": "sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==", - "peer": true, - "peerDependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.1", - "@codemirror/lang-html": "^6.2.0", - "@codemirror/lang-javascript": "^6.1.1", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/javascript": "^1.2.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@rollup/browser": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/@rollup/browser/-/browser-3.28.0.tgz", - "integrity": "sha512-7U9WFjEArYZF0GVz/durys8tzBePwu4HkI5yxDmaRFn0B0qH1yabvworYZiGZYhevlZ+jDFAU4gKgF0gNsANDg==" - }, - "node_modules/@supabase/auth-helpers-shared": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.4.1.tgz", - "integrity": "sha512-IEDX9JzWkIjQiLUaP4Qy5YDiG0jFQatWfS+jw8cCQs6QfbNdEPd2Y3qonwGHnM90CZom9SvjuylBv2pFVAL7Lw==", - "dependencies": { - "jose": "^4.14.3" - }, - "peerDependencies": { - "@supabase/supabase-js": "^2.19.0" - } - }, - "node_modules/@supabase/auth-helpers-sveltekit": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-sveltekit/-/auth-helpers-sveltekit-0.10.2.tgz", - "integrity": "sha512-azQqh4ofgB+ewHBGQPp77R9552jD0DXZMd0QQQQvsgLUdGVghRrydW11491473DvcONoy2KMWUShVxccjzo6Gw==", - "dependencies": { - "@supabase/auth-helpers-shared": "0.4.1" - }, - "peerDependencies": { - "@supabase/supabase-js": "^2.19.0", - "@sveltejs/kit": "^1.15.4" - } - }, - "node_modules/@supabase/functions-js": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz", - "integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@supabase/gotrue-js": { - "version": "2.46.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.46.1.tgz", - "integrity": "sha512-tebFX3XvPqEJKHOVgkXTN20g9iUhLx6tebIYQvTggYTrqOT2af8oTpSBdgYzbwJ291G6P6CSpR6KY0cT9ade5A==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@supabase/postgrest-js": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.2.tgz", - "integrity": "sha512-GK80JpRq8l6Qll85erICypAfQCied8tdlXfsDN14W844HqXCSOisk8AaE01DAwGJanieaoN5fuqhzA2yKxDvEQ==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@supabase/realtime-js": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz", - "integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==", - "dependencies": { - "@types/phoenix": "^1.5.4", - "@types/websocket": "^1.0.3", - "websocket": "^1.0.34" - } - }, - "node_modules/@supabase/storage-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz", - "integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==", - "dependencies": { - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@supabase/supabase-js": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.31.0.tgz", - "integrity": "sha512-W9/4s+KnSUX67wJKBn/3yLq+ieycnMzVjK3nNTLX5Wko3ypNT/081l2iFYrf+nsLQ1CiT4mA92I3dxCy6CmxTg==", - "dependencies": { - "@supabase/functions-js": "^2.1.0", - "@supabase/gotrue-js": "^2.46.1", - "@supabase/postgrest-js": "^1.7.0", - "@supabase/realtime-js": "^2.7.3", - "@supabase/storage-js": "^2.5.1", - "cross-fetch": "^3.1.5" - } - }, - "node_modules/@sveltejs/adapter-auto": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.1.tgz", - "integrity": "sha512-nzi6x/7/3Axh5VKQ8Eed3pYxastxoa06Y/bFhWb7h3Nu+nGRVxKAy3+hBJgmPCwWScy8n0TsstZjSVKfyrIHkg==", - "dev": true, - "dependencies": { - "import-meta-resolve": "^4.0.0" - }, - "peerDependencies": { - "@sveltejs/kit": "^1.0.0" - } - }, - "node_modules/@sveltejs/kit": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.22.4.tgz", - "integrity": "sha512-Opkqw1QXk4Cc25b/heJP2D7mX+OUBFAq4MXKfET58svTTxdeiHFKzmnuRsSF3nmxESqrLjqPAgHpib+knNGzRw==", - "hasInstallScript": true, - "dependencies": { - "@sveltejs/vite-plugin-svelte": "^2.4.1", - "@types/cookie": "^0.5.1", - "cookie": "^0.5.0", - "devalue": "^4.3.1", - "esm-env": "^1.0.0", - "kleur": "^4.1.5", - "magic-string": "^0.30.0", - "mime": "^3.0.0", - "sade": "^1.8.1", - "set-cookie-parser": "^2.6.0", - "sirv": "^2.0.2", - "undici": "~5.22.0" - }, - "bin": { - "svelte-kit": "svelte-kit.js" - }, - "engines": { - "node": "^16.14 || >=18" - }, - "peerDependencies": { - "svelte": "^3.54.0 || ^4.0.0-next.0", - "vite": "^4.0.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.3.tgz", - "integrity": "sha512-NY2h+B54KHZO3kDURTdARqthn6D4YSIebtfW75NvZ/fwyk4G+AJw3V/i0OBjyN4406Ht9yZcnNWMuRUFnDNNiA==", - "dependencies": { - "@sveltejs/vite-plugin-svelte-inspector": "^1.0.3", - "debug": "^4.3.4", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.1", - "svelte-hmr": "^0.15.2", - "vitefu": "^0.2.4" - }, - "engines": { - "node": "^14.18.0 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.54.0 || ^4.0.0", - "vite": "^4.0.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte-inspector": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.3.tgz", - "integrity": "sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": "^14.18.0 || >= 16" - }, - "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^2.2.0", - "svelte": "^3.54.0 || ^4.0.0", - "vite": "^4.0.0" - } - }, - "node_modules/@tiptap/core": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.4.tgz", - "integrity": "sha512-cRrI8IlLIhCE1hacBQzXIC8dsRvGq6a4lYWQK/BaHuZg21CG7szp3Vd8Ix+ra1f5v0xPOT+Hy+QFNQooRMKMCw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-blockquote": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.2.4.tgz", - "integrity": "sha512-FrfPnn0VgVrUwWLwja1afX99JGLp6PE9ThVcmri+tLwUZQvTTVcCvHoCdOakav3/nge1+aV4iE3tQdyq1tWI9Q==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-bold": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.4.tgz", - "integrity": "sha512-v3tTLc8YESFZPOGj5ByFr8VbmQ/PTo49T1vsK50VubxIN/5r9cXlKH8kb3dZlZxCxJa3FrXNO/M8rdGBSWQvSg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-bubble-menu": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.4.tgz", - "integrity": "sha512-Nx1fS9jcFlhxaTDYlnayz2UulhK6CMaePc36+7PQIVI+u20RhgTCRNr25zKNemvsiM0RPZZVUjlHkxC0l5as1Q==", - "peer": true, - "dependencies": { - "tippy.js": "^6.3.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-bullet-list": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.2.4.tgz", - "integrity": "sha512-z/MPmW8bhRougMuorl6MAQBXeK4rhlP+jBWlNwT+CT8h5IkXqPnDbM1sZeagp2nYfVV6Yc4RWpzimqHHtGnYTA==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-code": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.2.4.tgz", - "integrity": "sha512-JB4SJ2mUU/9qXFUf+K5K9szvovnN9AIcCb0f0UlcVBuddKHSqCl3wO3QJgYt44BfQTLMNuyzr+zVqfFd6BNt/g==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-code-block": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.2.4.tgz", - "integrity": "sha512-h6WV9TmaBEZmvqe1ezMR83DhCPUap6P2mSR5pwVk0WVq6rvZjfgU0iF3EetBJOeDgPlz7cNe2NMDfVb1nGTM/g==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-document": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.2.4.tgz", - "integrity": "sha512-z+05xGK0OFoXV1GL+/8bzcZuWMdMA3+EKwk5c+iziG60VZcvGTF7jBRsZidlu9Oaj0cDwWHCeeo6L9SgSh6i2A==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-dropcursor": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.4.tgz", - "integrity": "sha512-IHwkEKmqpqXyJi16h7871NrcIqeyN7I6XRE2qdqi+MhGigVWI8nWHoYbjRKa7K/1uhs5zeRYyDlq5EuZyL6mgA==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-floating-menu": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.4.tgz", - "integrity": "sha512-U25l7PEzOmlAPugNRl8t8lqyhQZS6W/+3f92+FdwW9qXju3i62iX/3OGCC3Gv+vybmQ4fbZmMjvl+VDfenNi3A==", - "peer": true, - "dependencies": { - "tippy.js": "^6.3.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-gapcursor": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.4.tgz", - "integrity": "sha512-Y6htT/RDSqkQ1UwG2Ia+rNVRvxrKPOs3RbqKHPaWr3vbFWwhHyKhMCvi/FqfI3d5pViVHOZQ7jhb5hT/a0BmNw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-hard-break": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.2.4.tgz", - "integrity": "sha512-FPvS57GcqHIeLbPKGJa3gnH30Xw+YB1PXXnAWG2MpnMtc2Vtj1l5xaYYBZB+ADdXLAlU0YMbKhFLQO4+pg1Isg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-heading": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.2.4.tgz", - "integrity": "sha512-gkq7Ns2FcrOCRq7Q+VRYt5saMt2R9g4REAtWy/jEevJ5UV5vA2AiGnYDmxwAkHutoYU0sAUkjqx37wE0wpamNw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-highlight": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.2.4.tgz", - "integrity": "sha512-GGl6ehKQ0Q0gGgUQhkWg2XYPfhVU5c0JD3NHzV4OrBP6JAtFeMYeSLdfYzFcmoYnGafvSZaJ3NukUvnDHZGzRg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-history": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.4.tgz", - "integrity": "sha512-FDM32XYF5NU4mzh+fJ8w2CyUqv0l2Nl15sd6fOhQkVxSj8t57z+DUXc9ZR3zkH+1RAagYJo/2Gu3e99KpMr0tg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-horizontal-rule": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.2.4.tgz", - "integrity": "sha512-iCRHjFQQHApWg3R4fkKkJQhWEOdu1Fdc4YEAukdOXPSg3fg36IwjvsMXjt9SYBtVZ+iio3rORCZGXyMvgCH9uw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-italic": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.4.tgz", - "integrity": "sha512-qIhGNvWnsQswSgEMRA8jQQjxfkOGNAuNWKEVQX9DPoqAUgknT41hQcAMP8L2+OdACpb2jbVMOO5Cy5Dof2L8/w==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-link": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.4.tgz", - "integrity": "sha512-Qsx0cFZm4dxbkToXs5TcXbSoUdicv8db1gV1DYIZdETqjBm4wFjlzCUP7hPHFlvNfeSy1BzAMRt+RpeuiwvxWQ==", - "peer": true, - "dependencies": { - "linkifyjs": "^4.1.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-list-item": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.2.4.tgz", - "integrity": "sha512-lPLKGKsHpM9ClUa8n7GEUn8pG6HCYU0vFruIy3l2t6jZdHkrgBnYtVGMZ13K8UDnj/hlAlccxku0D0P4mA1Vrg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-ordered-list": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.2.4.tgz", - "integrity": "sha512-TpFy140O9Af1JciXt+xwqYUXxcJ6YG8zi/B5UDJujp+FH5sCmlYYBBnWxiFMhVaj6yEmA2eafu1qUkic/1X5Aw==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-paragraph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.4.tgz", - "integrity": "sha512-m1KwyvTNJxsq7StbspbcOhxO4Wk4YpElDbqOouWi+H4c8azdpI5Pn96ZqhFeE9bSyjByg6OcB/wqoJsLbeFWdQ==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-strike": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.4.tgz", - "integrity": "sha512-/a2EwQgA+PpG17V2tVRspcrIY0SN3blwcgM7lxdW4aucGkqSKnf7+91dkhQEwCZ//o8kv9mBCyRoCUcGy6S5Xg==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/extension-text": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.4.tgz", - "integrity": "sha512-NlKHMPnRJXB+0AGtDlU0P2Pg+SdesA2lMMd7JzDUgJgL7pX2jOb8eUqSeOjFKuSzFSqYfH6C3o6mQiNhuQMv+g==", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } - }, - "node_modules/@tiptap/pm": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.2.4.tgz", - "integrity": "sha512-Po0klR165zgtinhVp1nwMubjyKx6gAY9kH3IzcniYLCkqhPgiqnAcCr61TBpp4hfK8YURBS4ihvCB1dyfCyY8A==", - "peer": true, - "dependencies": { - "prosemirror-changeset": "^2.2.1", - "prosemirror-collab": "^1.3.1", - "prosemirror-commands": "^1.5.2", - "prosemirror-dropcursor": "^1.8.1", - "prosemirror-gapcursor": "^1.3.2", - "prosemirror-history": "^1.3.2", - "prosemirror-inputrules": "^1.3.0", - "prosemirror-keymap": "^1.2.2", - "prosemirror-markdown": "^1.12.0", - "prosemirror-menu": "^1.2.4", - "prosemirror-model": "^1.19.4", - "prosemirror-schema-basic": "^1.2.2", - "prosemirror-schema-list": "^1.3.0", - "prosemirror-state": "^1.4.3", - "prosemirror-tables": "^1.3.5", - "prosemirror-trailing-node": "^2.0.7", - "prosemirror-transform": "^1.8.0", - "prosemirror-view": "^1.32.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } - }, - "node_modules/@tiptap/starter-kit": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.2.4.tgz", - "integrity": "sha512-Kbk7qUfIZg3+bNa3e/wBeDQt4jJB46uQgM+xy5NSY6H8NZP6gdmmap3aIrn9S/W/hGpxJl4RcXAeaT0CQji9XA==", - "peer": true, - "dependencies": { - "@tiptap/core": "^2.2.4", - "@tiptap/extension-blockquote": "^2.2.4", - "@tiptap/extension-bold": "^2.2.4", - "@tiptap/extension-bullet-list": "^2.2.4", - "@tiptap/extension-code": "^2.2.4", - "@tiptap/extension-code-block": "^2.2.4", - "@tiptap/extension-document": "^2.2.4", - "@tiptap/extension-dropcursor": "^2.2.4", - "@tiptap/extension-gapcursor": "^2.2.4", - "@tiptap/extension-hard-break": "^2.2.4", - "@tiptap/extension-heading": "^2.2.4", - "@tiptap/extension-history": "^2.2.4", - "@tiptap/extension-horizontal-rule": "^2.2.4", - "@tiptap/extension-italic": "^2.2.4", - "@tiptap/extension-list-item": "^2.2.4", - "@tiptap/extension-ordered-list": "^2.2.4", - "@tiptap/extension-paragraph": "^2.2.4", - "@tiptap/extension-strike": "^2.2.4", - "@tiptap/extension-text": "^2.2.4" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } - }, - "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/cookie": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", - "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==" - }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.11.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.19.tgz", - "integrity": "sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/phoenix": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz", - "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==" - }, - "node_modules/@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", - "dev": true - }, - "node_modules/@types/sass": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.45.0.tgz", - "integrity": "sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==", - "deprecated": "This is a stub types definition. sass provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "sass": "*" - } - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/websocket": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", - "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", - "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/type-utils": "5.50.0", - "@typescript-eslint/utils": "5.50.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", - "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", - "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", - "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.50.0", - "@typescript-eslint/utils": "5.50.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", - "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", - "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", - "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", - "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.50.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-node/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "devOptional": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", - "integrity": "sha512-GVYjmpL05al4dNlKJm53mKE4w9OOLiuVHWorsIA3YVz+Hu0hcn6PtE3Ydl0EqU7v+7ABC4mjjWsnLUxbpno+CA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/autosize": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/autosize/-/autosize-5.0.2.tgz", - "integrity": "sha512-FPVt5ynkqUAA9gcMZnJHka1XfQgr1WNd/yRfIjmj5WGmjua+u5Hl9hn8M2nU5CNy2bEIcj1ZUwXq7IOHsfZG9w==", - "peer": true - }, - "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "devOptional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001517", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", - "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "devOptional": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/codemirror": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", - "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", - "peer": true, - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/commands": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/search": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/crelt": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", - "peer": true - }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/css-unit-converter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", - "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", - "dev": true - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/devalue": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", - "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==" - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/editorconfig": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", - "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", - "dev": true, - "dependencies": { - "@one-ini/wasm": "0.1.1", - "commander": "^10.0.0", - "minimatch": "9.0.1", - "semver": "^7.5.3" - }, - "bin": { - "editorconfig": "bin/editorconfig" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/editorconfig/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/editorconfig/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.473", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.473.tgz", - "integrity": "sha512-aVfC8+440vGfl06l8HKKn8/PD5jRfSnLkTTD65EFvU46igbpQRri1gxSzW9/+TeUlwYzrXk1sw867T96zlyECA==", - "dev": true - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", - "dev": true - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/esbuild": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", - "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.17", - "@esbuild/android-arm64": "0.18.17", - "@esbuild/android-x64": "0.18.17", - "@esbuild/darwin-arm64": "0.18.17", - "@esbuild/darwin-x64": "0.18.17", - "@esbuild/freebsd-arm64": "0.18.17", - "@esbuild/freebsd-x64": "0.18.17", - "@esbuild/linux-arm": "0.18.17", - "@esbuild/linux-arm64": "0.18.17", - "@esbuild/linux-ia32": "0.18.17", - "@esbuild/linux-loong64": "0.18.17", - "@esbuild/linux-mips64el": "0.18.17", - "@esbuild/linux-ppc64": "0.18.17", - "@esbuild/linux-riscv64": "0.18.17", - "@esbuild/linux-s390x": "0.18.17", - "@esbuild/linux-x64": "0.18.17", - "@esbuild/netbsd-x64": "0.18.17", - "@esbuild/openbsd-x64": "0.18.17", - "@esbuild/sunos-x64": "0.18.17", - "@esbuild/win32-arm64": "0.18.17", - "@esbuild/win32-ia32": "0.18.17", - "@esbuild/win32-x64": "0.18.17" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", - "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", - "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-svelte": { - "version": "2.32.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.32.4.tgz", - "integrity": "sha512-VJ12i2Iogug1jvhwxSlognnfGj76P5gks/V4pUD4SCSVQOp14u47MNP0zAG8AQR3LT0Fi1iUvIFnY4l9z5Rwbg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@jridgewell/sourcemap-codec": "^1.4.14", - "debug": "^4.3.1", - "esutils": "^2.0.3", - "known-css-properties": "^0.28.0", - "postcss": "^8.4.5", - "postcss-load-config": "^3.1.4", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "semver": "^7.5.3", - "svelte-eslint-parser": "^0.32.2" - }, - "engines": { - "node": "^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0-0", - "svelte": "^3.37.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "svelte": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esm-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", - "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==" - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-saver": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", - "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "devOptional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "node_modules/highlight.js": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", - "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", - "dev": true - }, - "node_modules/hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", - "dev": true - }, - "node_modules/html-encoder-decoder": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/html-encoder-decoder/-/html-encoder-decoder-1.3.9.tgz", - "integrity": "sha512-dHv7bdOTEE69EIxXsM8Vslt+NW7QfEB5EGOC29BR14c7RQ9iHUgK76k3/aS23xNIwDg/xlZLWCSZ8lxol9bYlQ==", - "dependencies": { - "he": "^1.1.0", - "iterate-object": "^1.3.2", - "regex-escape": "^3.4.2" - } - }, - "node_modules/html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/idb-keyval": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", - "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==", - "peer": true - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "node_modules/immutable": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz", - "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==", - "devOptional": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", - "dev": true, - "dependencies": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/iterate-object": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz", - "integrity": "sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==" - }, - "node_modules/jose": { - "version": "4.14.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", - "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/js-beautify": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.9.tgz", - "integrity": "sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==", - "dev": true, - "dependencies": { - "config-chain": "^1.1.13", - "editorconfig": "^1.0.3", - "glob": "^8.1.0", - "nopt": "^6.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/js-beautify/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/js-beautify/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/js-beautify/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/known-css-properties": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz", - "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==", - "dev": true - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "peer": true, - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/linkifyjs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz", - "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==", - "peer": true - }, - "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.topath": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", - "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==", - "dev": true - }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/magic-string/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "peer": true, - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "peer": true - }, - "node_modules/memfs": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.7.7.tgz", - "integrity": "sha512-x9qc6k88J/VVwnfTkJV8pRRswJ2156Rc4w5rciRqKceFDZ0y1MqsNL9pkg5sE0GOcDzZYbonreALhaHzg1siFw==", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">= 4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/modern-normalize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", - "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mousetrap": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", - "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/orderedmap": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", - "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", - "peer": true - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/playwright-core": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", - "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", - "dev": true, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss": { - "version": "8.4.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", - "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", - "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1", - "postcss": "^8.1.6" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.6" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-scss": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz", - "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-scss" - } - ], - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.4.19" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "peer": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/promise-worker": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-worker/-/promise-worker-2.0.1.tgz", - "integrity": "sha512-jR7vHqMEwWJ15i9vA3qyCKwRHihyLJp1sAa3RyY5F35m3u5s2lQUfq0nzVjbA8Xc7+3mL3Y9+9MHBO9UFRpFxA==" - }, - "node_modules/prosemirror-changeset": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", - "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", - "peer": true, - "dependencies": { - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-collab": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", - "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0" - } - }, - "node_modules/prosemirror-commands": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", - "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-dropcursor": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", - "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0", - "prosemirror-view": "^1.1.0" - } - }, - "node_modules/prosemirror-gapcursor": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", - "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", - "peer": true, - "dependencies": { - "prosemirror-keymap": "^1.0.0", - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-view": "^1.0.0" - } - }, - "node_modules/prosemirror-history": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.0.tgz", - "integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==", - "peer": true, - "dependencies": { - "prosemirror-state": "^1.2.2", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.31.0", - "rope-sequence": "^1.3.0" - } - }, - "node_modules/prosemirror-inputrules": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", - "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-keymap": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", - "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", - "peer": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "w3c-keyname": "^2.2.0" - } - }, - "node_modules/prosemirror-markdown": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.12.0.tgz", - "integrity": "sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==", - "peer": true, - "dependencies": { - "markdown-it": "^14.0.0", - "prosemirror-model": "^1.0.0" - } - }, - "node_modules/prosemirror-menu": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", - "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", - "peer": true, - "dependencies": { - "crelt": "^1.0.0", - "prosemirror-commands": "^1.0.0", - "prosemirror-history": "^1.0.0", - "prosemirror-state": "^1.0.0" - } - }, - "node_modules/prosemirror-model": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.4.tgz", - "integrity": "sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==", - "peer": true, - "dependencies": { - "orderedmap": "^2.0.0" - } - }, - "node_modules/prosemirror-schema-basic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz", - "integrity": "sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.19.0" - } - }, - "node_modules/prosemirror-schema-list": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz", - "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.7.3" - } - }, - "node_modules/prosemirror-state": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", - "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.27.0" - } - }, - "node_modules/prosemirror-tables": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.7.tgz", - "integrity": "sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==", - "peer": true, - "dependencies": { - "prosemirror-keymap": "^1.1.2", - "prosemirror-model": "^1.8.1", - "prosemirror-state": "^1.3.1", - "prosemirror-transform": "^1.2.1", - "prosemirror-view": "^1.13.3" - } - }, - "node_modules/prosemirror-trailing-node": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.8.tgz", - "integrity": "sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==", - "peer": true, - "dependencies": { - "@remirror/core-constants": "^2.0.2", - "escape-string-regexp": "^4.0.0" - }, - "peerDependencies": { - "prosemirror-model": "^1.19.0", - "prosemirror-state": "^1.4.2", - "prosemirror-view": "^1.31.2" - } - }, - "node_modules/prosemirror-transform": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz", - "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.0.0" - } - }, - "node_modules/prosemirror-view": { - "version": "1.33.3", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.3.tgz", - "integrity": "sha512-P4Ao/bc4OrU/2yLIf8dL4lJaEtjLR3QjIvQHgJYp2jUS7kYM4bSR6okbBjkqzOs/FwUon6UGjTLdKMnPL1MZqw==", - "peer": true, - "dependencies": { - "prosemirror-model": "^1.16.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/purgecss": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.1.3.tgz", - "integrity": "sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==", - "dev": true, - "dependencies": { - "commander": "^8.0.0", - "glob": "^7.1.7", - "postcss": "^8.3.5", - "postcss-selector-parser": "^6.0.6" - }, - "bin": { - "purgecss": "bin/purgecss.js" - } - }, - "node_modules/purgecss/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", - "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", - "dev": true - }, - "node_modules/randomstring": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.3.tgz", - "integrity": "sha512-3dEFySepTzp2CvH6W/ASYGguPPveBuz5MpZ7MuoUkoVehmyNl9+F9c9GFVrz2QPbM9NXTIHGcmJDY/3j4677kQ==", - "dev": true, - "dependencies": { - "array-uniq": "1.0.2", - "randombytes": "2.0.3" - }, - "bin": { - "randomstring": "bin/randomstring" - }, - "engines": { - "node": "*" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reduce-css-calc": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", - "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", - "dev": true, - "dependencies": { - "css-unit-converter": "^1.1.1", - "postcss-value-parser": "^3.3.0" - } - }, - "node_modules/reduce-css-calc/node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "node_modules/regex-escape": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/regex-escape/-/regex-escape-3.4.10.tgz", - "integrity": "sha512-qEqf7uzW+iYcKNLMDFnMkghhQBnGdivT6KqVQyKsyjSWnoFyooXVnxrw9dtv3AFLnD6VBGXxtZGAQNFGFTnCqA==" - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", - "dev": true - }, - "node_modules/rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.27.2.tgz", - "integrity": "sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rope-sequence": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", - "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", - "peer": true - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", - "dev": true, - "dependencies": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" - } - }, - "node_modules/sander/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/sass": { - "version": "1.64.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", - "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", - "devOptional": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/set-cookie-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", - "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/showdown": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz", - "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", - "dependencies": { - "commander": "^9.0.0" - }, - "bin": { - "showdown": "bin/showdown.js" - }, - "funding": { - "type": "individual", - "url": "https://www.paypal.me/tiviesantos" - } - }, - "node_modules/showdown-highlight": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/showdown-highlight/-/showdown-highlight-3.1.0.tgz", - "integrity": "sha512-wrTxtE63L/bpW5A2Uy/AO1gblXnNHK/cDL6LszECOoCdMJKWTj0/4n4I/pmqub+3H3KCPVDDvtXpCArnT/heFA==", - "dependencies": { - "highlight.js": "^11.5.0", - "html-encoder-decoder": "^1.3.9", - "showdown": "^2.0.3" - } - }, - "node_modules/showdown/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - }, - "node_modules/sirv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", - "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", - "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" - }, - "bin": { - "sorcery": "bin/index.js" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", - "dev": true, - "dependencies": { - "acorn": "^8.8.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/style-mod": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", - "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", - "peer": true - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svelte": { - "version": "3.59.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz", - "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/svelte-check": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.10.3.tgz", - "integrity": "sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.9", - "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", - "picocolors": "^1.0.0", - "sade": "^1.7.4", - "svelte-preprocess": "^4.0.0", - "typescript": "*" - }, - "bin": { - "svelte-check": "bin/svelte-check" - }, - "peerDependencies": { - "svelte": "^3.24.0" - } - }, - "node_modules/svelte-check/node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/svelte-check/node_modules/svelte-preprocess": { - "version": "4.10.7", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", - "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@types/pug": "^2.0.4", - "@types/sass": "^1.16.0", - "detect-indent": "^6.0.0", - "magic-string": "^0.25.7", - "sorcery": "^0.10.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">= 9.11.2" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": "^0.55.0", - "sugarss": "^2.0.0", - "svelte": "^3.23.0", - "typescript": "^3.9.5 || ^4.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/svelte-dnd-action": { - "version": "0.9.42", - "resolved": "https://registry.npmjs.org/svelte-dnd-action/-/svelte-dnd-action-0.9.42.tgz", - "integrity": "sha512-hrlMnAtUrQP8V4vH9+dKHzX3z5u9BAo6F/BUUqKftiF6/Wh+yC560kgzTzB2fSZxumd2e6A4RalwlH0NYIllSw==", - "peer": true, - "peerDependencies": { - "svelte": ">=3.23.0" - } - }, - "node_modules/svelte-eslint-parser": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.32.2.tgz", - "integrity": "sha512-Ok9D3A4b23iLQsONrjqtXtYDu5ZZ/826Blaw2LeFZVTg1pwofKDG4mz3/GYTax8fQ0plRGHI6j+d9VQYy5Lo/A==", - "dev": true, - "dependencies": { - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "postcss": "^8.4.25", - "postcss-scss": "^4.0.6" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "svelte": "^3.37.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "svelte": { - "optional": true - } - } - }, - "node_modules/svelte-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/svelte-eslint-parser/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/svelte-hmr": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz", - "integrity": "sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==", - "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.19.0 || ^4.0.0-next.0" - } - }, - "node_modules/svelte-json-tree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svelte-json-tree/-/svelte-json-tree-1.0.0.tgz", - "integrity": "sha512-scs1OdkC8uFpTN4MX0yKkOzZ1/EG3eP1ARC+xcFthXp2IfcwBaXgab0FqA4Am0vQwffNNB+1Gd1LFkJBlynWTA==", - "dev": true - }, - "node_modules/svelte-preprocess": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz", - "integrity": "sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@types/pug": "^2.0.6", - "detect-indent": "^6.1.0", - "magic-string": "^0.27.0", - "sorcery": "^0.11.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">= 14.10.0" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": "^0.55.0", - "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0", - "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/svelte-preprocess/node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-preprocess/node_modules/sorcery": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", - "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.14", - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0" - }, - "bin": { - "sorcery": "bin/sorcery" - } - }, - "node_modules/svelte-toggle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/svelte-toggle/-/svelte-toggle-3.1.0.tgz", - "integrity": "sha512-2gzDDMDhM+ImDaLEZVlnlHVY1340Y368tT4Qk5IwLnCeRJ4zV3cVwliVGacoHy7iCDukcGXzKwDzG/hTTcaljg==", - "peer": true - }, - "node_modules/tailwindcss": { - "version": "2.2.19", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.2.19.tgz", - "integrity": "sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==", - "dev": true, - "dependencies": { - "arg": "^5.0.1", - "bytes": "^3.0.0", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "color": "^4.0.1", - "cosmiconfig": "^7.0.1", - "detective": "^5.2.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.7", - "fs-extra": "^10.0.0", - "glob-parent": "^6.0.1", - "html-tags": "^3.1.0", - "is-color-stop": "^1.1.0", - "is-glob": "^4.0.1", - "lodash": "^4.17.21", - "lodash.topath": "^4.5.2", - "modern-normalize": "^1.1.0", - "node-emoji": "^1.11.0", - "normalize-path": "^3.0.0", - "object-hash": "^2.2.0", - "postcss-js": "^3.0.3", - "postcss-load-config": "^3.1.0", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.6", - "postcss-value-parser": "^4.1.0", - "pretty-hrtime": "^1.0.3", - "purgecss": "^4.0.3", - "quick-lru": "^5.1.1", - "reduce-css-calc": "^2.1.8", - "resolve": "^1.20.0", - "tmp": "^0.2.1" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "autoprefixer": "^10.0.2", - "postcss": "^8.0.9" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/timeago.js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz", - "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==" - }, - "node_modules/tinybench": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", - "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", - "dev": true - }, - "node_modules/tinypool": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", - "integrity": "sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", - "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tippy.js": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", - "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", - "peer": true, - "dependencies": { - "@popperjs/core": "^2.9.0" - } - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/totalist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", - "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "peer": true - }, - "node_modules/undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vite": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.8.tgz", - "integrity": "sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==", - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.26", - "rollup": "^3.25.2" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vitefu": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", - "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vitest": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.8.tgz", - "integrity": "sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==", - "dev": true, - "dependencies": { - "@types/chai": "^4.3.4", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "source-map": "^0.6.1", - "strip-literal": "^1.0.0", - "tinybench": "^2.3.1", - "tinypool": "^0.3.0", - "tinyspy": "^1.0.2", - "vite": "^3.0.0 || ^4.0.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/w3c-keyname": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", - "peer": true - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", - "engines": { - "node": ">=0.10.32" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.5" - } - }, - "@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@babel/core": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", - "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "dev": true, - "optional": true, - "peer": true - }, - "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" - } - }, - "@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "optional": true, - "peer": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, - "optional": true, - "peer": true - }, - "@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" - } - }, - "@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", - "dev": true, - "optional": true, - "peer": true - }, - "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "optional": true, - "peer": true - } - } - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - }, - "@codemirror/autocomplete": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.15.0.tgz", - "integrity": "sha512-G2Zm0mXznxz97JhaaOdoEG2cVupn4JjPaS4AcNvZzhOsnnG9YVN68VzfoUw6dYTsIxT6a/cmoFEN47KAWhXaOg==", - "peer": true, - "requires": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0" - } - }, - "@codemirror/commands": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", - "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", - "peer": true, - "requires": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.1.0" - } - }, - "@codemirror/lang-css": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz", - "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==", - "peer": true, - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.2", - "@lezer/css": "^1.0.0" - } - }, - "@codemirror/lang-html": { - "version": "6.4.8", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.8.tgz", - "integrity": "sha512-tE2YK7wDlb9ZpAH6mpTPiYm6rhfdQKVDa5r9IwIFlwwgvVaKsCfuKKZoJGWsmMZIf3FQAuJ5CHMPLymOtg1hXw==", - "peer": true, - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/language": "^6.4.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0", - "@lezer/css": "^1.1.0", - "@lezer/html": "^1.3.0" - } - }, - "@codemirror/lang-javascript": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz", - "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==", - "peer": true, - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.6.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.17.0", - "@lezer/common": "^1.0.0", - "@lezer/javascript": "^1.0.0" - } - }, - "@codemirror/language": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", - "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", - "peer": true, - "requires": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.23.0", - "@lezer/common": "^1.1.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0", - "style-mod": "^4.0.0" - } - }, - "@codemirror/lint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz", - "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==", - "peer": true, - "requires": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "@codemirror/search": { - "version": "6.5.6", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", - "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", - "peer": true, - "requires": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "crelt": "^1.0.5" - } - }, - "@codemirror/state": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", - "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==", - "peer": true - }, - "@codemirror/view": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.26.1.tgz", - "integrity": "sha512-wLw0t3R9AwOSQThdZ5Onw8QQtem5asE7+bPlnzc57eubPqiuJKIzwjMZ+C42vQett+iva+J8VgFV4RYWDBh5FA==", - "peer": true, - "requires": { - "@codemirror/state": "^6.4.0", - "style-mod": "^4.1.0", - "w3c-keyname": "^2.2.4" - } - }, - "@esbuild/android-arm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", - "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", - "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", - "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", - "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", - "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", - "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", - "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", - "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", - "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", - "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", - "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", - "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", - "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", - "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", - "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", - "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", - "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", - "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", - "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", - "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", - "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", - "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@fontsource/fira-code": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@fontsource/fira-code/-/fira-code-5.0.5.tgz", - "integrity": "sha512-mb6eBaD0nheCaPZYllnBVsfUUuZufFtxZrF57CjmzkW2tM/G6Yag2UGjCX6vWVblHiIssmj986IDJo+R7SvnMw==" - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@iconify/svelte": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-2.2.1.tgz", - "integrity": "sha512-eWZq8CRrr3WfnKAj8SWknfE3S/d+j/AzEcypeJaHurS1s4zTdFnkjATcFa8lerGtcX0PAtXiVL94tbIEd69N+w==" - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "optional": true, - "peer": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@lezer/common": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", - "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==", - "peer": true - }, - "@lezer/css": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.8.tgz", - "integrity": "sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==", - "peer": true, - "requires": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/highlight": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", - "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", - "peer": true, - "requires": { - "@lezer/common": "^1.0.0" - } - }, - "@lezer/html": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.9.tgz", - "integrity": "sha512-MXxeCMPyrcemSLGaTQEZx0dBUH0i+RPl8RN5GwMAzo53nTsd/Unc/t5ZxACeQoyPUM5/GkPLRUs2WliOImzkRA==", - "peer": true, - "requires": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/javascript": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.14.tgz", - "integrity": "sha512-GEdUyspTRgc5dwIGebUk+f3BekvqEWVIYsIuAC3pA8e8wcikGwBZRWRa450L0s8noGWuULwnmi4yjxTnYz9PpA==", - "peer": true, - "requires": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.1.3", - "@lezer/lr": "^1.3.0" - } - }, - "@lezer/lr": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", - "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", - "peer": true, - "requires": { - "@lezer/common": "^1.0.0" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@one-ini/wasm": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", - "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", - "dev": true - }, - "@playwright/test": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.33.0.tgz", - "integrity": "sha512-YunBa2mE7Hq4CfPkGzQRK916a4tuZoVx/EpLjeWlTVOnD4S2+fdaQZE0LJkbfhN5FTSKNLdcl7MoT5XB37bTkg==", - "dev": true, - "requires": { - "@types/node": "*", - "fsevents": "2.3.2", - "playwright-core": "1.33.0" - } - }, - "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" - }, - "@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true - }, - "@primocms/builder": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@primocms/builder/-/builder-0.1.66.tgz", - "integrity": "sha512-tlfk1ENrcF2x3llcwq6YBbkAYDQkz0qFU0X8ez+VKc9fb4YR9Qngva5ZeXXfoFzBXHrmOvYigsY9m8alzPEewg==", - "requires": {} - }, - "@remirror/core-constants": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", - "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==", - "peer": true - }, - "@replit/codemirror-lang-svelte": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-svelte/-/codemirror-lang-svelte-6.0.0.tgz", - "integrity": "sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==", - "peer": true, - "requires": {} - }, - "@rollup/browser": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/@rollup/browser/-/browser-3.28.0.tgz", - "integrity": "sha512-7U9WFjEArYZF0GVz/durys8tzBePwu4HkI5yxDmaRFn0B0qH1yabvworYZiGZYhevlZ+jDFAU4gKgF0gNsANDg==" - }, - "@supabase/auth-helpers-shared": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.4.1.tgz", - "integrity": "sha512-IEDX9JzWkIjQiLUaP4Qy5YDiG0jFQatWfS+jw8cCQs6QfbNdEPd2Y3qonwGHnM90CZom9SvjuylBv2pFVAL7Lw==", - "requires": { - "jose": "^4.14.3" - } - }, - "@supabase/auth-helpers-sveltekit": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-sveltekit/-/auth-helpers-sveltekit-0.10.2.tgz", - "integrity": "sha512-azQqh4ofgB+ewHBGQPp77R9552jD0DXZMd0QQQQvsgLUdGVghRrydW11491473DvcONoy2KMWUShVxccjzo6Gw==", - "requires": { - "@supabase/auth-helpers-shared": "0.4.1" - } - }, - "@supabase/functions-js": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz", - "integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/gotrue-js": { - "version": "2.46.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.46.1.tgz", - "integrity": "sha512-tebFX3XvPqEJKHOVgkXTN20g9iUhLx6tebIYQvTggYTrqOT2af8oTpSBdgYzbwJ291G6P6CSpR6KY0cT9ade5A==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/postgrest-js": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.2.tgz", - "integrity": "sha512-GK80JpRq8l6Qll85erICypAfQCied8tdlXfsDN14W844HqXCSOisk8AaE01DAwGJanieaoN5fuqhzA2yKxDvEQ==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/realtime-js": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz", - "integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==", - "requires": { - "@types/phoenix": "^1.5.4", - "@types/websocket": "^1.0.3", - "websocket": "^1.0.34" - } - }, - "@supabase/storage-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz", - "integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==", - "requires": { - "cross-fetch": "^3.1.5" - } - }, - "@supabase/supabase-js": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.31.0.tgz", - "integrity": "sha512-W9/4s+KnSUX67wJKBn/3yLq+ieycnMzVjK3nNTLX5Wko3ypNT/081l2iFYrf+nsLQ1CiT4mA92I3dxCy6CmxTg==", - "requires": { - "@supabase/functions-js": "^2.1.0", - "@supabase/gotrue-js": "^2.46.1", - "@supabase/postgrest-js": "^1.7.0", - "@supabase/realtime-js": "^2.7.3", - "@supabase/storage-js": "^2.5.1", - "cross-fetch": "^3.1.5" - } - }, - "@sveltejs/adapter-auto": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.1.tgz", - "integrity": "sha512-nzi6x/7/3Axh5VKQ8Eed3pYxastxoa06Y/bFhWb7h3Nu+nGRVxKAy3+hBJgmPCwWScy8n0TsstZjSVKfyrIHkg==", - "dev": true, - "requires": { - "import-meta-resolve": "^4.0.0" - } - }, - "@sveltejs/kit": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.22.4.tgz", - "integrity": "sha512-Opkqw1QXk4Cc25b/heJP2D7mX+OUBFAq4MXKfET58svTTxdeiHFKzmnuRsSF3nmxESqrLjqPAgHpib+knNGzRw==", - "requires": { - "@sveltejs/vite-plugin-svelte": "^2.4.1", - "@types/cookie": "^0.5.1", - "cookie": "^0.5.0", - "devalue": "^4.3.1", - "esm-env": "^1.0.0", - "kleur": "^4.1.5", - "magic-string": "^0.30.0", - "mime": "^3.0.0", - "sade": "^1.8.1", - "set-cookie-parser": "^2.6.0", - "sirv": "^2.0.2", - "undici": "~5.22.0" - } - }, - "@sveltejs/vite-plugin-svelte": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.3.tgz", - "integrity": "sha512-NY2h+B54KHZO3kDURTdARqthn6D4YSIebtfW75NvZ/fwyk4G+AJw3V/i0OBjyN4406Ht9yZcnNWMuRUFnDNNiA==", - "requires": { - "@sveltejs/vite-plugin-svelte-inspector": "^1.0.3", - "debug": "^4.3.4", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.1", - "svelte-hmr": "^0.15.2", - "vitefu": "^0.2.4" - } - }, - "@sveltejs/vite-plugin-svelte-inspector": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.3.tgz", - "integrity": "sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==", - "requires": { - "debug": "^4.3.4" - } - }, - "@tiptap/core": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.2.4.tgz", - "integrity": "sha512-cRrI8IlLIhCE1hacBQzXIC8dsRvGq6a4lYWQK/BaHuZg21CG7szp3Vd8Ix+ra1f5v0xPOT+Hy+QFNQooRMKMCw==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-blockquote": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.2.4.tgz", - "integrity": "sha512-FrfPnn0VgVrUwWLwja1afX99JGLp6PE9ThVcmri+tLwUZQvTTVcCvHoCdOakav3/nge1+aV4iE3tQdyq1tWI9Q==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-bold": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.2.4.tgz", - "integrity": "sha512-v3tTLc8YESFZPOGj5ByFr8VbmQ/PTo49T1vsK50VubxIN/5r9cXlKH8kb3dZlZxCxJa3FrXNO/M8rdGBSWQvSg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-bubble-menu": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.4.tgz", - "integrity": "sha512-Nx1fS9jcFlhxaTDYlnayz2UulhK6CMaePc36+7PQIVI+u20RhgTCRNr25zKNemvsiM0RPZZVUjlHkxC0l5as1Q==", - "peer": true, - "requires": { - "tippy.js": "^6.3.7" - } - }, - "@tiptap/extension-bullet-list": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.2.4.tgz", - "integrity": "sha512-z/MPmW8bhRougMuorl6MAQBXeK4rhlP+jBWlNwT+CT8h5IkXqPnDbM1sZeagp2nYfVV6Yc4RWpzimqHHtGnYTA==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-code": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.2.4.tgz", - "integrity": "sha512-JB4SJ2mUU/9qXFUf+K5K9szvovnN9AIcCb0f0UlcVBuddKHSqCl3wO3QJgYt44BfQTLMNuyzr+zVqfFd6BNt/g==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-code-block": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.2.4.tgz", - "integrity": "sha512-h6WV9TmaBEZmvqe1ezMR83DhCPUap6P2mSR5pwVk0WVq6rvZjfgU0iF3EetBJOeDgPlz7cNe2NMDfVb1nGTM/g==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-document": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.2.4.tgz", - "integrity": "sha512-z+05xGK0OFoXV1GL+/8bzcZuWMdMA3+EKwk5c+iziG60VZcvGTF7jBRsZidlu9Oaj0cDwWHCeeo6L9SgSh6i2A==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-dropcursor": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.4.tgz", - "integrity": "sha512-IHwkEKmqpqXyJi16h7871NrcIqeyN7I6XRE2qdqi+MhGigVWI8nWHoYbjRKa7K/1uhs5zeRYyDlq5EuZyL6mgA==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-floating-menu": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.4.tgz", - "integrity": "sha512-U25l7PEzOmlAPugNRl8t8lqyhQZS6W/+3f92+FdwW9qXju3i62iX/3OGCC3Gv+vybmQ4fbZmMjvl+VDfenNi3A==", - "peer": true, - "requires": { - "tippy.js": "^6.3.7" - } - }, - "@tiptap/extension-gapcursor": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.4.tgz", - "integrity": "sha512-Y6htT/RDSqkQ1UwG2Ia+rNVRvxrKPOs3RbqKHPaWr3vbFWwhHyKhMCvi/FqfI3d5pViVHOZQ7jhb5hT/a0BmNw==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-hard-break": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.2.4.tgz", - "integrity": "sha512-FPvS57GcqHIeLbPKGJa3gnH30Xw+YB1PXXnAWG2MpnMtc2Vtj1l5xaYYBZB+ADdXLAlU0YMbKhFLQO4+pg1Isg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-heading": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.2.4.tgz", - "integrity": "sha512-gkq7Ns2FcrOCRq7Q+VRYt5saMt2R9g4REAtWy/jEevJ5UV5vA2AiGnYDmxwAkHutoYU0sAUkjqx37wE0wpamNw==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-highlight": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.2.4.tgz", - "integrity": "sha512-GGl6ehKQ0Q0gGgUQhkWg2XYPfhVU5c0JD3NHzV4OrBP6JAtFeMYeSLdfYzFcmoYnGafvSZaJ3NukUvnDHZGzRg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-history": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.2.4.tgz", - "integrity": "sha512-FDM32XYF5NU4mzh+fJ8w2CyUqv0l2Nl15sd6fOhQkVxSj8t57z+DUXc9ZR3zkH+1RAagYJo/2Gu3e99KpMr0tg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-horizontal-rule": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.2.4.tgz", - "integrity": "sha512-iCRHjFQQHApWg3R4fkKkJQhWEOdu1Fdc4YEAukdOXPSg3fg36IwjvsMXjt9SYBtVZ+iio3rORCZGXyMvgCH9uw==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-italic": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.2.4.tgz", - "integrity": "sha512-qIhGNvWnsQswSgEMRA8jQQjxfkOGNAuNWKEVQX9DPoqAUgknT41hQcAMP8L2+OdACpb2jbVMOO5Cy5Dof2L8/w==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-link": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.2.4.tgz", - "integrity": "sha512-Qsx0cFZm4dxbkToXs5TcXbSoUdicv8db1gV1DYIZdETqjBm4wFjlzCUP7hPHFlvNfeSy1BzAMRt+RpeuiwvxWQ==", - "peer": true, - "requires": { - "linkifyjs": "^4.1.0" - } - }, - "@tiptap/extension-list-item": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.2.4.tgz", - "integrity": "sha512-lPLKGKsHpM9ClUa8n7GEUn8pG6HCYU0vFruIy3l2t6jZdHkrgBnYtVGMZ13K8UDnj/hlAlccxku0D0P4mA1Vrg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-ordered-list": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.2.4.tgz", - "integrity": "sha512-TpFy140O9Af1JciXt+xwqYUXxcJ6YG8zi/B5UDJujp+FH5sCmlYYBBnWxiFMhVaj6yEmA2eafu1qUkic/1X5Aw==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-paragraph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.2.4.tgz", - "integrity": "sha512-m1KwyvTNJxsq7StbspbcOhxO4Wk4YpElDbqOouWi+H4c8azdpI5Pn96ZqhFeE9bSyjByg6OcB/wqoJsLbeFWdQ==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-strike": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.2.4.tgz", - "integrity": "sha512-/a2EwQgA+PpG17V2tVRspcrIY0SN3blwcgM7lxdW4aucGkqSKnf7+91dkhQEwCZ//o8kv9mBCyRoCUcGy6S5Xg==", - "peer": true, - "requires": {} - }, - "@tiptap/extension-text": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.2.4.tgz", - "integrity": "sha512-NlKHMPnRJXB+0AGtDlU0P2Pg+SdesA2lMMd7JzDUgJgL7pX2jOb8eUqSeOjFKuSzFSqYfH6C3o6mQiNhuQMv+g==", - "peer": true, - "requires": {} - }, - "@tiptap/pm": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.2.4.tgz", - "integrity": "sha512-Po0klR165zgtinhVp1nwMubjyKx6gAY9kH3IzcniYLCkqhPgiqnAcCr61TBpp4hfK8YURBS4ihvCB1dyfCyY8A==", - "peer": true, - "requires": { - "prosemirror-changeset": "^2.2.1", - "prosemirror-collab": "^1.3.1", - "prosemirror-commands": "^1.5.2", - "prosemirror-dropcursor": "^1.8.1", - "prosemirror-gapcursor": "^1.3.2", - "prosemirror-history": "^1.3.2", - "prosemirror-inputrules": "^1.3.0", - "prosemirror-keymap": "^1.2.2", - "prosemirror-markdown": "^1.12.0", - "prosemirror-menu": "^1.2.4", - "prosemirror-model": "^1.19.4", - "prosemirror-schema-basic": "^1.2.2", - "prosemirror-schema-list": "^1.3.0", - "prosemirror-state": "^1.4.3", - "prosemirror-tables": "^1.3.5", - "prosemirror-trailing-node": "^2.0.7", - "prosemirror-transform": "^1.8.0", - "prosemirror-view": "^1.32.7" - } - }, - "@tiptap/starter-kit": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.2.4.tgz", - "integrity": "sha512-Kbk7qUfIZg3+bNa3e/wBeDQt4jJB46uQgM+xy5NSY6H8NZP6gdmmap3aIrn9S/W/hGpxJl4RcXAeaT0CQji9XA==", - "peer": true, - "requires": { - "@tiptap/core": "^2.2.4", - "@tiptap/extension-blockquote": "^2.2.4", - "@tiptap/extension-bold": "^2.2.4", - "@tiptap/extension-bullet-list": "^2.2.4", - "@tiptap/extension-code": "^2.2.4", - "@tiptap/extension-code-block": "^2.2.4", - "@tiptap/extension-document": "^2.2.4", - "@tiptap/extension-dropcursor": "^2.2.4", - "@tiptap/extension-gapcursor": "^2.2.4", - "@tiptap/extension-hard-break": "^2.2.4", - "@tiptap/extension-heading": "^2.2.4", - "@tiptap/extension-history": "^2.2.4", - "@tiptap/extension-horizontal-rule": "^2.2.4", - "@tiptap/extension-italic": "^2.2.4", - "@tiptap/extension-list-item": "^2.2.4", - "@tiptap/extension-ordered-list": "^2.2.4", - "@tiptap/extension-paragraph": "^2.2.4", - "@tiptap/extension-strike": "^2.2.4", - "@tiptap/extension-text": "^2.2.4" - } - }, - "@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, - "@types/cookie": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", - "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==" - }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/node": { - "version": "18.11.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.19.tgz", - "integrity": "sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/phoenix": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz", - "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==" - }, - "@types/pug": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", - "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", - "dev": true - }, - "@types/sass": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.45.0.tgz", - "integrity": "sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==", - "dev": true, - "requires": { - "sass": "*" - } - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@types/websocket": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", - "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", - "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/type-utils": "5.50.0", - "@typescript-eslint/utils": "5.50.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", - "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", - "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", - "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.50.0", - "@typescript-eslint/utils": "5.50.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", - "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", - "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/visitor-keys": "5.50.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", - "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.50.0", - "@typescript-eslint/types": "5.50.0", - "@typescript-eslint/typescript-estree": "5.50.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", - "semver": "^7.3.7" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", - "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.50.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "devOptional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array-uniq": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", - "integrity": "sha512-GVYjmpL05al4dNlKJm53mKE4w9OOLiuVHWorsIA3YVz+Hu0hcn6PtE3Ydl0EqU7v+7ABC4mjjWsnLUxbpno+CA==", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.13", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", - "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "autosize": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/autosize/-/autosize-5.0.2.tgz", - "integrity": "sha512-FPVt5ynkqUAA9gcMZnJHka1XfQgr1WNd/yRfIjmj5WGmjua+u5Hl9hn8M2nU5CNy2bEIcj1ZUwXq7IOHsfZG9w==", - "peer": true - }, - "axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "requires": { - "follow-redirects": "^1.14.8" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "devOptional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "bufferutil": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", - "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "requires": { - "streamsearch": "^1.1.0" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001517", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", - "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", - "dev": true - }, - "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "devOptional": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "codemirror": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", - "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", - "peer": true, - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/commands": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/search": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0" - } - }, - "color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dev": true, - "requires": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "optional": true, - "peer": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "crelt": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", - "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", - "peer": true - }, - "cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "requires": { - "node-fetch": "^2.6.12" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", - "dev": true - }, - "css-unit-converter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", - "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" - }, - "defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true - }, - "detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true - }, - "detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "requires": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - } - }, - "devalue": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", - "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==" - }, - "didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "editorconfig": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", - "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", - "dev": true, - "requires": { - "@one-ini/wasm": "0.1.1", - "commander": "^10.0.0", - "minimatch": "9.0.1", - "semver": "^7.5.3" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "electron-to-chromium": { - "version": "1.4.473", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.473.tgz", - "integrity": "sha512-aVfC8+440vGfl06l8HKKn8/PD5jRfSnLkTTD65EFvU46igbpQRri1gxSzW9/+TeUlwYzrXk1sw867T96zlyECA==", - "dev": true - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "peer": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", - "dev": true - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "esbuild": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", - "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", - "requires": { - "@esbuild/android-arm": "0.18.17", - "@esbuild/android-arm64": "0.18.17", - "@esbuild/android-x64": "0.18.17", - "@esbuild/darwin-arm64": "0.18.17", - "@esbuild/darwin-x64": "0.18.17", - "@esbuild/freebsd-arm64": "0.18.17", - "@esbuild/freebsd-x64": "0.18.17", - "@esbuild/linux-arm": "0.18.17", - "@esbuild/linux-arm64": "0.18.17", - "@esbuild/linux-ia32": "0.18.17", - "@esbuild/linux-loong64": "0.18.17", - "@esbuild/linux-mips64el": "0.18.17", - "@esbuild/linux-ppc64": "0.18.17", - "@esbuild/linux-riscv64": "0.18.17", - "@esbuild/linux-s390x": "0.18.17", - "@esbuild/linux-x64": "0.18.17", - "@esbuild/netbsd-x64": "0.18.17", - "@esbuild/openbsd-x64": "0.18.17", - "@esbuild/sunos-x64": "0.18.17", - "@esbuild/win32-arm64": "0.18.17", - "@esbuild/win32-ia32": "0.18.17", - "@esbuild/win32-x64": "0.18.17" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", - "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz", - "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==", - "dev": true, - "requires": {} - }, - "eslint-plugin-svelte": { - "version": "2.32.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.32.4.tgz", - "integrity": "sha512-VJ12i2Iogug1jvhwxSlognnfGj76P5gks/V4pUD4SCSVQOp14u47MNP0zAG8AQR3LT0Fi1iUvIFnY4l9z5Rwbg==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@jridgewell/sourcemap-codec": "^1.4.14", - "debug": "^4.3.1", - "esutils": "^2.0.3", - "known-css-properties": "^0.28.0", - "postcss": "^8.4.5", - "postcss-load-config": "^3.1.4", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "semver": "^7.5.3", - "svelte-eslint-parser": "^0.32.2" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "esm-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", - "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==" - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "requires": { - "@types/estree": "^1.0.0" - } - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "requires": { - "type": "^2.7.2" - }, - "dependencies": { - "type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "file-saver": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", - "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "devOptional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "optional": true, - "peer": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "highlight.js": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", - "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==" - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", - "dev": true - }, - "html-encoder-decoder": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/html-encoder-decoder/-/html-encoder-decoder-1.3.9.tgz", - "integrity": "sha512-dHv7bdOTEE69EIxXsM8Vslt+NW7QfEB5EGOC29BR14c7RQ9iHUgK76k3/aS23xNIwDg/xlZLWCSZ8lxol9bYlQ==", - "requires": { - "he": "^1.1.0", - "iterate-object": "^1.3.2", - "regex-escape": "^3.4.2" - } - }, - "html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true - }, - "idb-keyval": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", - "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==", - "peer": true - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, - "immutable": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz", - "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==", - "devOptional": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "devOptional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "devOptional": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "iterate-object": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz", - "integrity": "sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==" - }, - "jose": { - "version": "4.14.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", - "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==" - }, - "js-beautify": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.9.tgz", - "integrity": "sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==", - "dev": true, - "requires": { - "config-chain": "^1.1.13", - "editorconfig": "^1.0.3", - "glob": "^8.1.0", - "nopt": "^6.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "optional": true, - "peer": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "optional": true, - "peer": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" - }, - "known-css-properties": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz", - "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "requires": { - "immediate": "~3.0.5" - } - }, - "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "peer": true, - "requires": { - "uc.micro": "^2.0.0" - } - }, - "linkifyjs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz", - "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==", - "peer": true - }, - "local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.topath": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", - "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==", - "dev": true - }, - "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "magic-string": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "dependencies": { - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - } - } - }, - "markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "peer": true, - "requires": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - } - }, - "mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "peer": true - }, - "memfs": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.7.7.tgz", - "integrity": "sha512-x9qc6k88J/VVwnfTkJV8pRRswJ2156Rc4w5rciRqKceFDZ0y1MqsNL9pkg5sE0GOcDzZYbonreALhaHzg1siFw==", - "requires": { - "tslib": "^2.0.0" - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "modern-normalize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", - "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", - "dev": true - }, - "mousetrap": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", - "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" - }, - "mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "requires": { - "lodash": "^4.17.21" - } - }, - "node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==" - }, - "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "requires": { - "abbrev": "^1.0.0" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "devOptional": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true - }, - "object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "orderedmap": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", - "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", - "peer": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true - }, - "playwright-core": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", - "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", - "dev": true - }, - "pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "peer": true - }, - "postcss": { - "version": "8.4.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", - "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-3.0.3.tgz", - "integrity": "sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1", - "postcss": "^8.1.6" - } - }, - "postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - } - }, - "postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.6" - } - }, - "postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "requires": {} - }, - "postcss-scss": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.6.tgz", - "integrity": "sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==", - "dev": true, - "requires": {} - }, - "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "peer": true - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise-worker": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-worker/-/promise-worker-2.0.1.tgz", - "integrity": "sha512-jR7vHqMEwWJ15i9vA3qyCKwRHihyLJp1sAa3RyY5F35m3u5s2lQUfq0nzVjbA8Xc7+3mL3Y9+9MHBO9UFRpFxA==" - }, - "prosemirror-changeset": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", - "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", - "peer": true, - "requires": { - "prosemirror-transform": "^1.0.0" - } - }, - "prosemirror-collab": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", - "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", - "peer": true, - "requires": { - "prosemirror-state": "^1.0.0" - } - }, - "prosemirror-commands": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", - "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", - "peer": true, - "requires": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "prosemirror-dropcursor": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", - "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", - "peer": true, - "requires": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0", - "prosemirror-view": "^1.1.0" - } - }, - "prosemirror-gapcursor": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", - "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", - "peer": true, - "requires": { - "prosemirror-keymap": "^1.0.0", - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-view": "^1.0.0" - } - }, - "prosemirror-history": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.0.tgz", - "integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==", - "peer": true, - "requires": { - "prosemirror-state": "^1.2.2", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.31.0", - "rope-sequence": "^1.3.0" - } - }, - "prosemirror-inputrules": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", - "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", - "peer": true, - "requires": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "prosemirror-keymap": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", - "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", - "peer": true, - "requires": { - "prosemirror-state": "^1.0.0", - "w3c-keyname": "^2.2.0" - } - }, - "prosemirror-markdown": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.12.0.tgz", - "integrity": "sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==", - "peer": true, - "requires": { - "markdown-it": "^14.0.0", - "prosemirror-model": "^1.0.0" - } - }, - "prosemirror-menu": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", - "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", - "peer": true, - "requires": { - "crelt": "^1.0.0", - "prosemirror-commands": "^1.0.0", - "prosemirror-history": "^1.0.0", - "prosemirror-state": "^1.0.0" - } - }, - "prosemirror-model": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.19.4.tgz", - "integrity": "sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==", - "peer": true, - "requires": { - "orderedmap": "^2.0.0" - } - }, - "prosemirror-schema-basic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz", - "integrity": "sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==", - "peer": true, - "requires": { - "prosemirror-model": "^1.19.0" - } - }, - "prosemirror-schema-list": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz", - "integrity": "sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==", - "peer": true, - "requires": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.7.3" - } - }, - "prosemirror-state": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", - "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", - "peer": true, - "requires": { - "prosemirror-model": "^1.0.0", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.27.0" - } - }, - "prosemirror-tables": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.3.7.tgz", - "integrity": "sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==", - "peer": true, - "requires": { - "prosemirror-keymap": "^1.1.2", - "prosemirror-model": "^1.8.1", - "prosemirror-state": "^1.3.1", - "prosemirror-transform": "^1.2.1", - "prosemirror-view": "^1.13.3" - } - }, - "prosemirror-trailing-node": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.8.tgz", - "integrity": "sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==", - "peer": true, - "requires": { - "@remirror/core-constants": "^2.0.2", - "escape-string-regexp": "^4.0.0" - } - }, - "prosemirror-transform": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz", - "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==", - "peer": true, - "requires": { - "prosemirror-model": "^1.0.0" - } - }, - "prosemirror-view": { - "version": "1.33.3", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.3.tgz", - "integrity": "sha512-P4Ao/bc4OrU/2yLIf8dL4lJaEtjLR3QjIvQHgJYp2jUS7kYM4bSR6okbBjkqzOs/FwUon6UGjTLdKMnPL1MZqw==", - "peer": true, - "requires": { - "prosemirror-model": "^1.16.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0" - } - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "peer": true - }, - "purgecss": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-4.1.3.tgz", - "integrity": "sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==", - "dev": true, - "requires": { - "commander": "^8.0.0", - "glob": "^7.1.7", - "postcss": "^8.3.5", - "postcss-selector-parser": "^6.0.6" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - } - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, - "randombytes": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", - "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", - "dev": true - }, - "randomstring": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.2.3.tgz", - "integrity": "sha512-3dEFySepTzp2CvH6W/ASYGguPPveBuz5MpZ7MuoUkoVehmyNl9+F9c9GFVrz2QPbM9NXTIHGcmJDY/3j4677kQ==", - "dev": true, - "requires": { - "array-uniq": "1.0.2", - "randombytes": "2.0.3" - } - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "devOptional": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reduce-css-calc": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", - "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", - "dev": true, - "requires": { - "css-unit-converter": "^1.1.1", - "postcss-value-parser": "^3.3.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "regex-escape": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/regex-escape/-/regex-escape-3.4.10.tgz", - "integrity": "sha512-qEqf7uzW+iYcKNLMDFnMkghhQBnGdivT6KqVQyKsyjSWnoFyooXVnxrw9dtv3AFLnD6VBGXxtZGAQNFGFTnCqA==" - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.27.2.tgz", - "integrity": "sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==", - "requires": { - "fsevents": "~2.3.2" - } - }, - "rope-sequence": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", - "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", - "peer": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "requires": { - "mri": "^1.1.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", - "dev": true, - "requires": { - "es6-promise": "^3.1.2", - "graceful-fs": "^4.1.3", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "sass": { - "version": "1.64.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", - "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", - "devOptional": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "set-cookie-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", - "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "showdown": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz", - "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", - "requires": { - "commander": "^9.0.0" - }, - "dependencies": { - "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" - } - } - }, - "showdown-highlight": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/showdown-highlight/-/showdown-highlight-3.1.0.tgz", - "integrity": "sha512-wrTxtE63L/bpW5A2Uy/AO1gblXnNHK/cDL6LszECOoCdMJKWTj0/4n4I/pmqub+3H3KCPVDDvtXpCArnT/heFA==", - "requires": { - "highlight.js": "^11.5.0", - "html-encoder-decoder": "^1.3.9", - "showdown": "^2.0.3" - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "sirv": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", - "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", - "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^3.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0", - "sourcemap-codec": "^1.3.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", - "dev": true, - "requires": { - "acorn": "^8.8.2" - } - }, - "style-mod": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", - "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svelte": { - "version": "3.59.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz", - "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==" - }, - "svelte-check": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.10.3.tgz", - "integrity": "sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.9", - "chokidar": "^3.4.1", - "fast-glob": "^3.2.7", - "import-fresh": "^3.2.1", - "picocolors": "^1.0.0", - "sade": "^1.7.4", - "svelte-preprocess": "^4.0.0", - "typescript": "*" - }, - "dependencies": { - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "svelte-preprocess": { - "version": "4.10.7", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-4.10.7.tgz", - "integrity": "sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==", - "dev": true, - "requires": { - "@types/pug": "^2.0.4", - "@types/sass": "^1.16.0", - "detect-indent": "^6.0.0", - "magic-string": "^0.25.7", - "sorcery": "^0.10.0", - "strip-indent": "^3.0.0" - } - } - } - }, - "svelte-dnd-action": { - "version": "0.9.42", - "resolved": "https://registry.npmjs.org/svelte-dnd-action/-/svelte-dnd-action-0.9.42.tgz", - "integrity": "sha512-hrlMnAtUrQP8V4vH9+dKHzX3z5u9BAo6F/BUUqKftiF6/Wh+yC560kgzTzB2fSZxumd2e6A4RalwlH0NYIllSw==", - "peer": true, - "requires": {} - }, - "svelte-eslint-parser": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.32.2.tgz", - "integrity": "sha512-Ok9D3A4b23iLQsONrjqtXtYDu5ZZ/826Blaw2LeFZVTg1pwofKDG4mz3/GYTax8fQ0plRGHI6j+d9VQYy5Lo/A==", - "dev": true, - "requires": { - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "postcss": "^8.4.25", - "postcss-scss": "^4.0.6" - }, - "dependencies": { - "eslint-scope": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", - "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "svelte-hmr": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz", - "integrity": "sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==", - "requires": {} - }, - "svelte-json-tree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svelte-json-tree/-/svelte-json-tree-1.0.0.tgz", - "integrity": "sha512-scs1OdkC8uFpTN4MX0yKkOzZ1/EG3eP1ARC+xcFthXp2IfcwBaXgab0FqA4Am0vQwffNNB+1Gd1LFkJBlynWTA==", - "dev": true - }, - "svelte-preprocess": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz", - "integrity": "sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==", - "dev": true, - "requires": { - "@types/pug": "^2.0.6", - "detect-indent": "^6.1.0", - "magic-string": "^0.27.0", - "sorcery": "^0.11.0", - "strip-indent": "^3.0.0" - }, - "dependencies": { - "magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" - } - }, - "sorcery": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", - "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.14", - "buffer-crc32": "^0.2.5", - "minimist": "^1.2.0", - "sander": "^0.5.0" - } - } - } - }, - "svelte-toggle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/svelte-toggle/-/svelte-toggle-3.1.0.tgz", - "integrity": "sha512-2gzDDMDhM+ImDaLEZVlnlHVY1340Y368tT4Qk5IwLnCeRJ4zV3cVwliVGacoHy7iCDukcGXzKwDzG/hTTcaljg==", - "peer": true - }, - "tailwindcss": { - "version": "2.2.19", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-2.2.19.tgz", - "integrity": "sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==", - "dev": true, - "requires": { - "arg": "^5.0.1", - "bytes": "^3.0.0", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "color": "^4.0.1", - "cosmiconfig": "^7.0.1", - "detective": "^5.2.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.7", - "fs-extra": "^10.0.0", - "glob-parent": "^6.0.1", - "html-tags": "^3.1.0", - "is-color-stop": "^1.1.0", - "is-glob": "^4.0.1", - "lodash": "^4.17.21", - "lodash.topath": "^4.5.2", - "modern-normalize": "^1.1.0", - "node-emoji": "^1.11.0", - "normalize-path": "^3.0.0", - "object-hash": "^2.2.0", - "postcss-js": "^3.0.3", - "postcss-load-config": "^3.1.0", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.6", - "postcss-value-parser": "^4.1.0", - "pretty-hrtime": "^1.0.3", - "purgecss": "^4.0.3", - "quick-lru": "^5.1.1", - "reduce-css-calc": "^2.1.8", - "resolve": "^1.20.0", - "tmp": "^0.2.1" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "timeago.js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz", - "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==" - }, - "tinybench": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", - "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", - "dev": true - }, - "tinypool": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", - "integrity": "sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==", - "dev": true - }, - "tinyspy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", - "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", - "dev": true - }, - "tippy.js": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", - "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", - "peer": true, - "requires": { - "@popperjs/core": "^2.9.0" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "optional": true, - "peer": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "totalist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", - "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - }, - "uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "peer": true - }, - "undici": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", - "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", - "requires": { - "busboy": "^1.6.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "peer": true - }, - "vite": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.8.tgz", - "integrity": "sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==", - "requires": { - "esbuild": "^0.18.10", - "fsevents": "~2.3.2", - "postcss": "^8.4.26", - "rollup": "^3.25.2" - } - }, - "vitefu": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", - "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", - "requires": {} - }, - "vitest": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.8.tgz", - "integrity": "sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==", - "dev": true, - "requires": { - "@types/chai": "^4.3.4", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "source-map": "^0.6.1", - "strip-literal": "^1.0.0", - "tinybench": "^2.3.1", - "tinypool": "^0.3.0", - "tinyspy": "^1.0.2", - "vite": "^3.0.0 || ^4.0.0" - }, - "dependencies": { - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - } - } - }, - "w3c-keyname": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", - "peer": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "optional": true, - "peer": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } + "name": "primo", + "version": "3.0.0--beta.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "primo", + "version": "3.0.0--beta.1", + "dependencies": { + "@anthropic-ai/sdk": "^0.31.0", + "@atlaskit/pragmatic-drag-and-drop": "^1.4.0", + "@aws-sdk/client-s3": "^3.454.0", + "@aws-sdk/lib-storage": "^3.454.0", + "@aws-sdk/s3-request-presigner": "^3.525.0", + "@babel/runtime": "^7.25.6", + "@codemirror/autocomplete": "^6.11.1", + "@codemirror/lang-css": "^6.2.1", + "@codemirror/lang-html": "^6.4.7", + "@iconify/svelte": "^2.2.1", + "@replit/codemirror-lang-svelte": "^6.0.0", + "@supabase/auth-helpers-sveltekit": "^0.13.0", + "@supabase/supabase-js": "^2.32.0", + "@tiptap/core": "^2.2.6", + "@tiptap/extension-bubble-menu": "^2.2.6", + "@tiptap/extension-code-block-lowlight": "^2.2.6", + "@tiptap/extension-floating-menu": "^2.2.6", + "@tiptap/extension-highlight": "^2.2.6", + "@tiptap/extension-image": "^2.2.6", + "@tiptap/extension-link": "^2.2.6", + "@tiptap/extension-typography": "^2.2.6", + "@tiptap/extension-youtube": "^2.2.6", + "@tiptap/pm": "^2.2.6", + "@tiptap/starter-kit": "^2.2.6", + "axios": "^0.26.0", + "bind-event-listener": "^3.0.0", + "browser-image-compression": "^1.0.17", + "cloudflare": "^4.0.0", + "codemirror": "^6.0.1", + "fetch-blob": "^4.0.0", + "file-saver": "^2.0.5", + "fuse.js": "^7.0.0", + "idb-keyval": "^6.1.0", + "js-beautify": "^1.14.0", + "jszip": "^3.10.1", + "lodash-es": "^4.17.21", + "lorem-ipsum": "^2.0.8", + "lowlight": "^3.1.0", + "memfs": "^4.7.7", + "mousetrap": "^1.6.5", + "nanoid": "^3.1.23", + "paneforge": "^0.0.5", + "pluralize": "^8.0.0", + "promise-worker": "^2.0.1", + "prosemirror-schema-basic": "^1.1.2", + "raf-schd": "^4.0.3", + "resend": "^1.0.0", + "resolve.exports": "^2.0.2", + "showdown-highlight": "^3.1.0", + "stripe": "^13.11.0", + "svelte-awesome-color-picker": "^3.1.4", + "svelte-inspect-value": "^0.1.3", + "timeago.js": "^4.0.2", + "uuid": "^9.0.0" + }, + "devDependencies": { + "@playwright/test": "^1.47.2", + "@sveltejs/adapter-vercel": "^5.4.1", + "@sveltejs/kit": "^2.5.27", + "@types/lodash-es": "^4.17.12", + "@types/uuid": "^9.0.8", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "autoprefixer": "^10.3.6", + "autosize": "^5.0.1", + "bits-ui": "^1.0.0-next.87", + "clsx": "^2.1.1", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "lucide-svelte": "^0.469.0", + "mode-watcher": "^0.5.0", + "postcss-nested": "^5.0.6", + "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.6", + "randomstring": "^1.2.3", + "svelte": "^5.20.2", + "svelte-check": "^4.0.0", + "svelte-dnd-action": "^0.9.25", + "svelte-popperjs": "^1.3.2", + "svelte-preprocess": "^6.0.0", + "svelte-sonner": "^0.3.28", + "svelte-toggle": "^3.1.0", + "tailwind-merge": "^2.6.0", + "tailwind-variants": "^0.3.0", + "tailwindcss": "^3.4.17", + "tailwindcss-animate": "^1.0.7", + "tslib": "^2.4.1", + "typescript": "^5.5.0", + "vite": "^5.4.4", + "vite-plugin-node-polyfills": "^0.21.0", + "vitest": "^0.25.8" + }, + "engines": { + "node": ">=16.0.0 <=18.20.4" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@anthropic-ai/sdk": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.31.0.tgz", + "integrity": "sha512-9EX90YMUtj0d1aHPsnjgurUWAUoNQA/kMaN+UUN7eL3jhl1cijBIGKHQPrR4/ctvD9A065QnzzJDy5Oxb/Bk8A==", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + } + }, + "node_modules/@anthropic-ai/sdk/node_modules/@types/node": { + "version": "18.19.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.63.tgz", + "integrity": "sha512-hcUB7THvrGmaEcPcvUZCZtQ2Z3C+UR/aOcraBLCvTsFMh916Gc1kCCYcfcMuB76HM2pSerxl1PoP3KnmHzd9Lw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@anthropic-ai/sdk/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/@atlaskit/pragmatic-drag-and-drop": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@atlaskit/pragmatic-drag-and-drop/-/pragmatic-drag-and-drop-1.4.0.tgz", + "integrity": "sha512-qRY3PTJIcxfl/QB8Gwswz+BRvlmgAC5pB+J2hL6dkIxgqAgVwOhAamMUKsrOcFU/axG2Q7RbNs1xfoLKDuhoPg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "bind-event-listener": "^3.0.0", + "raf-schd": "^4.0.3" + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.622.0.tgz", + "integrity": "sha512-2lpvuQn/qymQPfwR2SxLyRy/Wi/RrEYpbQyoc9SYfhartw9TBY8c34yZkd8zNU7Y/KG3h+PLrCmNpncocuB3YA==", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.622.0", + "@aws-sdk/client-sts": "3.622.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/middleware-bucket-endpoint": "3.620.0", + "@aws-sdk/middleware-expect-continue": "3.620.0", + "@aws-sdk/middleware-flexible-checksums": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-location-constraint": "3.609.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-sdk-s3": "3.622.0", + "@aws-sdk/middleware-signing": "3.620.0", + "@aws-sdk/middleware-ssec": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/signature-v4-multi-region": "3.622.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@aws-sdk/xml-builder": "3.609.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/eventstream-serde-browser": "^3.0.5", + "@smithy/eventstream-serde-config-resolver": "^3.0.3", + "@smithy/eventstream-serde-node": "^3.0.4", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-blob-browser": "^3.1.2", + "@smithy/hash-node": "^3.0.3", + "@smithy/hash-stream-node": "^3.1.2", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/md5-js": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-stream": "^3.1.3", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.622.0.tgz", + "integrity": "sha512-DJwUqVR/O2lImbktUHOpaQ8XElNBx3JmWzTT2USg6jh3ErgG1CS6LIV+VUlgtxGl+tFN/G6AcAV8SdnnGydB8Q==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.622.0.tgz", + "integrity": "sha512-dwWDfN+S98npeY77Ugyv8VIHKRHN+n/70PWE4EgolcjaMrTINjvUh9a/SypFEs5JmBOAeCQt8S2QpM3Wvzp+pQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.622.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.622.0.tgz", + "integrity": "sha512-Yqtdf/wn3lcFVS42tR+zbz4HLyWxSmztjVW9L/yeMlvS7uza5nSkWqP/7ca+RxZnXLyrnA4jJtSHqykcErlhyg==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.622.0", + "@aws-sdk/core": "3.622.0", + "@aws-sdk/credential-provider-node": "3.622.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.622.0.tgz", + "integrity": "sha512-q1Ct2AjPxGtQBKtDpqm1umu3f4cuWMnEHTuDa6zjjaj+Aq/C6yxLgZJo9SlcU0tMl8rUCN7oFonszfTtp4Y0MA==", + "dependencies": { + "@smithy/core": "^2.3.2", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", + "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz", + "integrity": "sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.622.0.tgz", + "integrity": "sha512-cD/6O9jOfzQyo8oyAbTKnyRO89BIMSTzwaN4NxGySC6pYVTqxNSWdRwaqg/vKbwJpjbPGGYYXpXEW11kop7dlg==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.622.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.622.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.622.0.tgz", + "integrity": "sha512-keldwz4Q/6TYc37JH6m43HumN7Vi+R0AuGuHn5tBV40Vi7IiqEzjpiE+yvsHIN+duUheFLL3j/o0H32jb+14DQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-ini": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.622.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", + "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.622.0.tgz", + "integrity": "sha512-zrSoBVM2JlwvkBtrcUd4J/9CrG+T+hUy9r6jwo5gonFIN3QkneR/pqpbUn/n32Zy3zlzCo2VfB31g7MjG7kJmg==", + "dependencies": { + "@aws-sdk/client-sso": "3.622.0", + "@aws-sdk/token-providers": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", + "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.621.0" + } + }, + "node_modules/@aws-sdk/lib-storage": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.622.0.tgz", + "integrity": "sha512-4Ns3jk7B9XIeLIOCJlyEW0/Qr5tQJWOHG81t9c8Yov4KOgAuPiO1KS/2yZM089B1/3/4/SjZ49E1qaZ5W1TsZA==", + "dependencies": { + "@smithy/abort-controller": "^3.1.1", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/smithy-client": "^3.1.12", + "buffer": "5.6.0", + "events": "3.3.0", + "stream-browserify": "3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-s3": "^3.622.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz", + "integrity": "sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz", + "integrity": "sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz", + "integrity": "sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA==", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-sdk/types": "3.609.0", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", + "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz", + "integrity": "sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", + "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", + "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.622.0.tgz", + "integrity": "sha512-tX9wZ2ALx5Ez4bkY+SvSj6DpNZ6TmY4zlsVsdgV95LZFLjNwqnZkKkS+uKnsIyLBiBp6g92JVQwnUEIp7ov2Zw==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-stream": "^3.1.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.620.0.tgz", + "integrity": "sha512-gxI7rubiaanUXaLfJ4NybERa9MGPNg2Ycl/OqANsozrBnR3Pw8vqy3EuVImQOyn2pJ2IFvl8ZPoSMHf4pX56FQ==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz", + "integrity": "sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz", + "integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", + "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/s3-request-presigner": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.622.0.tgz", + "integrity": "sha512-4ULolqkxIRRmpfrEloOtLC8iL4osk+FstbIJmyMLUbO1YObRkyRZ+tKUPbOTrWz3nzmLK8igkB579JKB9T6wRg==", + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "3.622.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-format-url": "3.609.0", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.622.0.tgz", + "integrity": "sha512-K7ddofVNzwTFRjmLZLfs/v+hiE9m5LguajHk8WULxXQgkcDI3nPgOfmMMGuslYohaQhRwW+ic+dzYlateLUudQ==", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.622.0", + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", + "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.614.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", + "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz", + "integrity": "sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz", + "integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "@smithy/util-endpoints": "^2.0.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.609.0.tgz", + "integrity": "sha512-fuk29BI/oLQlJ7pfm6iJ4gkEpHdavffAALZwXh9eaY1vQ0ip0aKfRTiNudPoJjyyahnz5yJ1HkmlcDitlzsOrQ==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", + "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", + "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", + "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz", + "integrity": "sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.17.0.tgz", + "integrity": "sha512-fdfj6e6ZxZf8yrkMHUSJJir7OJkHkZKaOZGzLWIYp2PZ3jd+d+UjG8zVPqJF6d3bKxkhvXTPan/UZ1t7Bqm0gA==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + }, + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.6.0.tgz", + "integrity": "sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-css": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz", + "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-html": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.9.tgz", + "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.0" + } + }, + "node_modules/@codemirror/lang-javascript": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz", + "integrity": "sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.2.tgz", + "integrity": "sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.1.tgz", + "integrity": "sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", + "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", + "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==" + }, + "node_modules/@codemirror/view": { + "version": "6.29.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.29.1.tgz", + "integrity": "sha512-7r+DlO/QFwPqKp73uq5mmrS4TuLPUVotbNOKYzN3OLP5ScrOVXcm4g13/48b6ZXGhdmzMinzFYqH0vo+qihIkQ==", + "dependencies": { + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "dev": true, + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@iconify/svelte": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-2.2.1.tgz", + "integrity": "sha512-eWZq8CRrr3WfnKAj8SWknfE3S/d+j/AzEcypeJaHurS1s4zTdFnkjATcFa8lerGtcX0PAtXiVL94tbIEd69N+w==", + "funding": { + "url": "http://github.com/sponsors/cyberalien" + } + }, + "node_modules/@internationalized/date": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.6.0.tgz", + "integrity": "sha512-+z6ti+CcJnRlLHok/emGEsWQhe7kfSmEW+/6qCzvKY67YPh7YOBfvc7+/+NXq+zJlbArg30tYpqLjNgcAYv2YQ==", + "dev": true, + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", + "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.3.0.tgz", + "integrity": "sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@lezer/common": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==" + }, + "node_modules/@lezer/css": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.8.tgz", + "integrity": "sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/highlight": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", + "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/html": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.10.tgz", + "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/javascript": { + "version": "1.4.17", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.17.tgz", + "integrity": "sha512-bYW4ctpyGK+JMumDApeUzuIezX01H76R1foD6LcRX224FWfyYit/HYxiPGDjXXe/wQWASjCvVGoukTH68+0HIA==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@playwright/test": { + "version": "1.47.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.47.2.tgz", + "integrity": "sha512-jTXRsoSPONAs8Za9QEQdyjFn+0ZQFjCiIztAIF6bi1HqhBzG9Ma7g1WotyiGqFSBRZjIEqMdT8RUlbk1QVhzCQ==", + "dev": true, + "dependencies": { + "playwright": "1.47.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==" + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-email/render": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@react-email/render/-/render-0.0.7.tgz", + "integrity": "sha512-hMMhxk6TpOcDC5qnKzXPVJoVGEwfm+U5bGOPH+MyTTlx0F02RLQygcATBKsbP7aI/mvkmBAZoFbgPIHop7ovug==", + "dependencies": { + "html-to-text": "9.0.3", + "pretty": "2.0.0", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@remirror/core-constants": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz", + "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==" + }, + "node_modules/@replit/codemirror-lang-svelte": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-svelte/-/codemirror-lang-svelte-6.0.0.tgz", + "integrity": "sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==", + "peerDependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.1", + "@codemirror/lang-html": "^6.2.0", + "@codemirror/lang-javascript": "^6.1.1", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/javascript": "^1.2.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@rollup/plugin-inject": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-inject/node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.3.tgz", + "integrity": "sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.3.tgz", + "integrity": "sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.3.tgz", + "integrity": "sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.3.tgz", + "integrity": "sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.3.tgz", + "integrity": "sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.3.tgz", + "integrity": "sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.3.tgz", + "integrity": "sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.3.tgz", + "integrity": "sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.3.tgz", + "integrity": "sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.3.tgz", + "integrity": "sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.3.tgz", + "integrity": "sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.3.tgz", + "integrity": "sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.3.tgz", + "integrity": "sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.3.tgz", + "integrity": "sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.3.tgz", + "integrity": "sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.3.tgz", + "integrity": "sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.3.tgz", + "integrity": "sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.3.tgz", + "integrity": "sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@selderee/plugin-htmlparser2": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.10.0.tgz", + "integrity": "sha512-gW69MEamZ4wk1OsOq1nG1jcyhXIQcnrsX5JwixVw/9xaiav8TCyjESAruu1Rz9yyInhgBXxkNwMeygKnN2uxNA==", + "dependencies": { + "domhandler": "^5.0.3", + "selderee": "^0.10.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", + "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz", + "integrity": "sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz", + "integrity": "sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==", + "dependencies": { + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", + "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.3.2.tgz", + "integrity": "sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", + "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz", + "integrity": "sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz", + "integrity": "sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ==", + "dependencies": { + "@smithy/eventstream-serde-universal": "^3.0.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz", + "integrity": "sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz", + "integrity": "sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==", + "dependencies": { + "@smithy/eventstream-serde-universal": "^3.0.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz", + "integrity": "sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==", + "dependencies": { + "@smithy/eventstream-codec": "^3.1.2", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", + "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", + "dependencies": { + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz", + "integrity": "sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==", + "dependencies": { + "@smithy/chunked-blob-reader": "^3.0.0", + "@smithy/chunked-blob-reader-native": "^3.0.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/hash-node": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", + "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", + "dependencies": { + "@smithy/types": "^3.3.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz", + "integrity": "sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==", + "dependencies": { + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", + "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.3.tgz", + "integrity": "sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==", + "dependencies": { + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", + "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", + "dependencies": { + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", + "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", + "dependencies": { + "@smithy/middleware-serde": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.14.tgz", + "integrity": "sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", + "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", + "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", + "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", + "dependencies": { + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", + "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", + "dependencies": { + "@smithy/abort-controller": "^3.1.1", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", + "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", + "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", + "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", + "dependencies": { + "@smithy/types": "^3.3.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", + "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", + "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", + "dependencies": { + "@smithy/types": "^3.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", + "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.12.tgz", + "integrity": "sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", + "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", + "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", + "dependencies": { + "@smithy/querystring-parser": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.14.tgz", + "integrity": "sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w==", + "dependencies": { + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.14.tgz", + "integrity": "sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ==", + "dependencies": { + "@smithy/config-resolver": "^3.0.5", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", + "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", + "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", + "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", + "dependencies": { + "@smithy/service-error-classification": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", + "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", + "dependencies": { + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.2.tgz", + "integrity": "sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==", + "dependencies": { + "@smithy/abort-controller": "^3.1.1", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@supabase/auth-helpers-shared": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.7.0.tgz", + "integrity": "sha512-FBFf2ei2R7QC+B/5wWkthMha8Ca2bWHAndN+syfuEUUfufv4mLcAgBCcgNg5nJR8L0gZfyuaxgubtOc9aW3Cpg==", + "dependencies": { + "jose": "^4.14.4" + }, + "peerDependencies": { + "@supabase/supabase-js": "^2.39.8" + } + }, + "node_modules/@supabase/auth-helpers-sveltekit": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-sveltekit/-/auth-helpers-sveltekit-0.13.0.tgz", + "integrity": "sha512-nNZUJv49e0RpEaRBWAEqzPQkeTfWiN6XhVxBJJWGkS9BIk47H+dDRJvvDd1lCT+u6xKXkgnp2VHosT5UK2UOcg==", + "dependencies": { + "@supabase/auth-helpers-shared": "0.7.0" + }, + "peerDependencies": { + "@supabase/supabase-js": "^2.39.8", + "@sveltejs/kit": "^1.30.3 || ^2.0.0" + } + }, + "node_modules/@supabase/auth-js": { + "version": "2.64.4", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.64.4.tgz", + "integrity": "sha512-9ITagy4WP4FLl+mke1rchapOH0RQpf++DI+WSG2sO1OFOZ0rW3cwAM0nCrMOxu+Zw4vJ4zObc08uvQrXx590Tg==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.1.tgz", + "integrity": "sha512-8sZ2ibwHlf+WkHDUZJUXqqmPvWQ3UHN0W30behOJngVh/qHHekhJLCFbh0AjkE9/FqqXtf9eoVvmYgfCLk5tNA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/node-fetch": { + "version": "2.6.15", + "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", + "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.8.tgz", + "integrity": "sha512-YunjXpoQjQ0a0/7vGAvGZA2dlMABXFdVI/8TuVKtlePxyT71sl6ERl6ay1fmIeZcqxiuFQuZw/LXUuStUG9bbg==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.10.2.tgz", + "integrity": "sha512-qyCQaNg90HmJstsvr2aJNxK2zgoKh9ZZA8oqb7UT2LCh3mj9zpa3Iwu167AuyNxsxrUE8eEJ2yH6wLCij4EApA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14", + "@types/phoenix": "^1.5.4", + "@types/ws": "^8.5.10", + "ws": "^8.14.2" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.6.0.tgz", + "integrity": "sha512-REAxr7myf+3utMkI2oOmZ6sdplMZZ71/2NEIEMBZHL9Fkmm3/JnaOZVSRqvG4LStYj2v5WhCruCzuMn6oD/Drw==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.45.0", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.45.0.tgz", + "integrity": "sha512-j66Mfs8RhzCQCKxKogAFQYH9oNhRmgIdKk6pexguI2Oc7hi+nL9UNJug5aL1tKnBdaBM3h65riPLQSdL6sWa3Q==", + "dependencies": { + "@supabase/auth-js": "2.64.4", + "@supabase/functions-js": "2.4.1", + "@supabase/node-fetch": "2.6.15", + "@supabase/postgrest-js": "1.15.8", + "@supabase/realtime-js": "2.10.2", + "@supabase/storage-js": "2.6.0" + } + }, + "node_modules/@sveltejs/adapter-vercel": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-5.4.1.tgz", + "integrity": "sha512-JLcD1OgMnu9lQ8EssxVGxv7w0waWuyVzItTT1eqIH98Krufd9qfr1uC9zgo82z3dJ9v1AfPEbvIX5tonceg7XQ==", + "dev": true, + "dependencies": { + "@vercel/nft": "^0.27.1", + "esbuild": "^0.21.5" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.4.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.7.3.tgz", + "integrity": "sha512-Vx7nq5MJ86I8qXYsVidC5PX6xm+uxt8DydvOdmJoyOK7LvGP18OFEG359yY+aa51t6pENvqZAMqAREQQx1OI2Q==", + "hasInstallScript": true, + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^0.6.0", + "devalue": "^5.1.0", + "esm-env": "^1.0.0", + "import-meta-resolve": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^3.0.0", + "tiny-glob": "^0.2.9" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.1.tgz", + "integrity": "sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==", + "peer": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", + "svelte-hmr": "^0.16.0", + "vitefu": "^0.2.5" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", + "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", + "peer": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte/node_modules/svelte-hmr": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", + "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", + "peer": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "dev": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tiptap/core": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.5.8.tgz", + "integrity": "sha512-lkWCKyoAoMTxM137MoEsorG7tZ5MZU6O3wMRuZ0P9fcTRY5vd1NWncWuPzuGSJIpL20gwBQOsS6PaQSfR3xjlA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-blockquote": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.5.8.tgz", + "integrity": "sha512-P8vDiagtRrUfIewfCKrJe0ddDSjPgOTKzqoM1UXKS+MenT8C/wT4bjiwopAoWP6zMoV0TfHWXah9emllmCfXFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-bold": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.5.8.tgz", + "integrity": "sha512-4vEn+U7Y8B4e8izcL7QuEKYJ9thCSdo+UF1K3TOqQWuJTzTrJLPMwTZ4vYOHzvuq5uIXyPLnWzLgnRLgy5mJRg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-bubble-menu": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.5.8.tgz", + "integrity": "sha512-COmd1Azudu7i281emZFIESECe7FnvWiRoBoQBVjjWSyq5PVzwJaA3PAlnU7GyNZKtVXMZ4xbrckdyNQfDeVQDA==", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-bullet-list": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.5.8.tgz", + "integrity": "sha512-Wvf0HWBI0ulssoCsCOguxJB1Ntmj9PtE8b/ieFwFvrNptP+sf25XiWgjMs7H1KQrtmpngBu/Bhh5jJRgAmAgeQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-code": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.5.8.tgz", + "integrity": "sha512-56lb4NnaYAbIkqBTCIg4ZoITrw86Dj8C2HSi6DrU7f5q9cfvGuH+2057I5n8eEEfASu1AeDN6tSnCz3NR+yiHw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-code-block": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.5.8.tgz", + "integrity": "sha512-atMtT1Ddc4hv9+OiH/UCLfQ6Ooo45xpPaaOhqs1Ab509YyqxoyEbfNSOth/yx9DFb8VOenRWE1WV3Z3C0ial0Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-code-block-lowlight": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.5.8.tgz", + "integrity": "sha512-ga5iYzVeX7pQ6P44ZkW+Sf+sTcAjD8gjkz6szQ4qKZbJNKWhUPbWyhp41mlhwBq+QzvqcGNWiGcOe6ZwPR01sA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/extension-code-block": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-document": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.5.8.tgz", + "integrity": "sha512-r3rP4ihCJAdp3VRIeqd80etHx7jttzZaKNFX8hkQShHK6eTHwrR92VL0jDE4K+NOE3bxjMsOlYizJYWV042BtA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-dropcursor": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.5.8.tgz", + "integrity": "sha512-xPmIfTYqurFF8RukCPlHd8mT8I7hDinWrgq7CQTRROxcJ3DNw8PooWrKWaBYs9HXHe1pbiQ5EK0uOsNvQ1bcDg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-floating-menu": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.5.8.tgz", + "integrity": "sha512-qsM6tCyRlXnI/gADrkO/2p0Tldu5aY96CnsXpZMaflMgsO577qhcXD0ReGg17uLXBzJa5xmV8qOik0Ptq3WEWg==", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-gapcursor": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.5.8.tgz", + "integrity": "sha512-nR7AUOE4xWdp0sDbLbe4uwAhQ/xq+MTLVafvffMLT81U/Hl9R+w0Ap2XF0+c6/JTQwVjZiOalAmg4dobx7rJUQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-hard-break": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.5.8.tgz", + "integrity": "sha512-samZEL0EXzHSmMQ7KyLnfSxdDv3qSjia0JzelfCnFZS6LLcbwjrIjV8ZPxEhJ7UlZqroQdFxPegllkLHZj/MdQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-heading": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.5.8.tgz", + "integrity": "sha512-fDQoUkTLN+U8MNQ8PI+syKyshS9qFHlKihxzMLf/+tRisJvP47gzHDur99nffTSbXFDnASDqhavhKjI/2xTWlQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-highlight": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.5.8.tgz", + "integrity": "sha512-Auli6YBdUjF8mo0beEYw6Eh1hySukoQVjq+Yz6RKpaRzrrvXjoZUciQ6RoGXS4BHT7sfp8fMw9OIVo9Ifx8d8w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-history": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.5.8.tgz", + "integrity": "sha512-5IrZZfp2Rg9Tov/08aYTKhwoiqdun8v3j3vleuqyW5RB7LU/NKLR19EtSSMh9mVkFZVbhab2zDOFmn5ilsEOhw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-horizontal-rule": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.5.8.tgz", + "integrity": "sha512-L8Is73WGaP6VNdKrIry+lCIM9W1KaL/Tw2Z6DGMVMU5mr1lLx0xq7nWEStqD7e4zh+n4+3PV15cZSA2F34DZrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-image": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.5.8.tgz", + "integrity": "sha512-xlF3dqzXSN/6vWdmGOaIz0YVUO/B69mPw9vUITg7bQdc4X2pc52tvTGhpAzAc/kbwSVrW33icxAsXx8XH9Bkkg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.5.8.tgz", + "integrity": "sha512-Kh35a7slBai+Qr/tiF9XFXmuWMgUQz4Nt51hmzqVGVuG+QsdWzQE8IZBGypKm8aAzxTGSY0d0QA0rys+YRNq1Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-link": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.5.8.tgz", + "integrity": "sha512-qfeWR7sG2V7bn8z0f3HMyoR68pFlxYJmLs9cbW30diE9/zKClYEd3zTMPCgJ9yMSagCj4PWkqksIuktAhyRqOQ==", + "dependencies": { + "linkifyjs": "^4.1.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/pm": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-list-item": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.5.8.tgz", + "integrity": "sha512-RFIIzHxxXdPmdf7BL0zhE4VPHoR6BTWtfi3JCTftmNqKoH7o+mLKT0RHMGvF1CGNn2HewHzXAF0iXfKCwmEgHQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-ordered-list": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.5.8.tgz", + "integrity": "sha512-84gWdWhc8rUCCssn8+6Z1rFKdG7/yIe+gwYkU6WqAtDrcluJdt5jRHrcMOLxb2dbY8ww9pa72EYV/bwOisZlFQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.5.8.tgz", + "integrity": "sha512-AMfD3lfGSiomfkSE2tUourUjVahLtIfWUQew13NTPuWoxAXaSyoCGO0ULkiou/lO3JVUUUmF9+KJrAHWGIARdA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-strike": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.5.8.tgz", + "integrity": "sha512-uiHhBIEqawX9Up2ofklotVQ5XpGIjwRL6wprZF38s1le3XpsgyhVV7oDnqDkC7ujCsGkOJJfXZtv3LsO3R2nzQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.5.8.tgz", + "integrity": "sha512-CNkD51jRMdcYCqFVOkrnebqBQ6pCD3ZD5z9kO5bOC5UPZKZBkLsWdlrHGAVwosxcGxdJACbqJ0Nj+fMgIw4tNA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-typography": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-typography/-/extension-typography-2.5.8.tgz", + "integrity": "sha512-dv3RmRoUlyMpc3fPoDmPX3/zZPe4F62vaA6DfZurz0SkHCCk3HAA89spjPeoINfGOkbN06TZZj05TlpaR+KItw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/extension-youtube": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/extension-youtube/-/extension-youtube-2.5.8.tgz", + "integrity": "sha512-TEZ/mZgAIgc4thTO0pbmuNpWhMcCKk4IPgG3ko5HJ6w4lm13aVBroGoTXxHmK50kDzr+yD0g9JaJJTIvJ2cvGA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.5.8" + } + }, + "node_modules/@tiptap/pm": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.5.8.tgz", + "integrity": "sha512-CVhHaTG4QNHSkvuh6HHsUR4hE+nbUnk7z+VMUedaqPU8tNqkTwWGCMbiyTc+PCsz0T9Mni7vvBR+EXgEQ3+w4g==", + "dependencies": { + "prosemirror-changeset": "^2.2.1", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.5.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.0", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.22.2", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.4.1", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.4.0", + "prosemirror-trailing-node": "^2.0.9", + "prosemirror-transform": "^1.9.0", + "prosemirror-view": "^1.33.9" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/starter-kit": { + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.5.8.tgz", + "integrity": "sha512-Beb6Q3cFmJ1pE22WlFrG3wj8XAGXqaGkbqtsGAJDnoyWL4uoSs4vLt5I/UJshK/nQlNqTWFdpd9SxRFsxBYpqg==", + "dependencies": { + "@tiptap/core": "^2.5.8", + "@tiptap/extension-blockquote": "^2.5.8", + "@tiptap/extension-bold": "^2.5.8", + "@tiptap/extension-bullet-list": "^2.5.8", + "@tiptap/extension-code": "^2.5.8", + "@tiptap/extension-code-block": "^2.5.8", + "@tiptap/extension-document": "^2.5.8", + "@tiptap/extension-dropcursor": "^2.5.8", + "@tiptap/extension-gapcursor": "^2.5.8", + "@tiptap/extension-hard-break": "^2.5.8", + "@tiptap/extension-heading": "^2.5.8", + "@tiptap/extension-history": "^2.5.8", + "@tiptap/extension-horizontal-rule": "^2.5.8", + "@tiptap/extension-italic": "^2.5.8", + "@tiptap/extension-list-item": "^2.5.8", + "@tiptap/extension-ordered-list": "^2.5.8", + "@tiptap/extension-paragraph": "^2.5.8", + "@tiptap/extension-strike": "^2.5.8", + "@tiptap/extension-text": "^2.5.8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@types/chai": { + "version": "4.3.17", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.17.tgz", + "integrity": "sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz", + "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "dev": true + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dev": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "22.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.2.tgz", + "integrity": "sha512-yPL6DyFwY5PiMVEwymNeqUTKsDczQBJ/5T7W/46RwLU/VH+AA8aT5TZkvBviLKLbbm0hlfftEkGrNzfRk/fofQ==", + "dependencies": { + "undici-types": "~6.11.1" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/phoenix": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.5.tgz", + "integrity": "sha512-xegpDuR+z0UqG9fwHqNoy3rI7JDlvaPh2TY47Fl80oq6g+hXT+c/LEuE43X48clZ6lOfANl5WrPur9fYO1RJ/w==" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vercel/nft": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.27.3.tgz", + "integrity": "sha512-oySTdDSzUAFDXpsSLk9Q943o+/Yu/+TCFxnehpFQEf/3khi2stMpTHPVNwFdvZq/Z4Ky93lE+MGHpXCRpMkSCA==", + "dev": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.5", + "@rollup/pluginutils": "^4.0.0", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.2", + "node-gyp-build": "^4.2.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-typescript": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", + "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", + "peerDependencies": { + "acorn": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/async-sema": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/autosize": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/autosize/-/autosize-5.0.2.tgz", + "integrity": "sha512-FPVt5ynkqUAA9gcMZnJHka1XfQgr1WNd/yRfIjmj5WGmjua+u5Hl9hn8M2nU5CNy2bEIcj1ZUwXq7IOHsfZG9w==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bind-event-listener": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bind-event-listener/-/bind-event-listener-3.0.0.tgz", + "integrity": "sha512-PJvH288AWQhKs2v9zyfYdPzlPqf5bXbGMmhmUIY9x4dAUGIWgomO771oBQNwJnMQSnUIXhKu6sgzpBRXTlvb8Q==" + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bits-ui": { + "version": "1.0.0-next.87", + "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-1.0.0-next.87.tgz", + "integrity": "sha512-3NCcz/7Fwp9zEqA4sCz6oGWrL3haDkIe15EwY6GnoInbFPtH0x3ftJ00dP45BqQ/RukYHcoW1pzRlUerdcIvxA==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.6.4", + "@floating-ui/dom": "^1.6.7", + "@internationalized/date": "^3.5.6", + "esm-env": "^1.1.2", + "runed": "^0.23.2", + "svelte-toolbelt": "^0.7.1" + }, + "engines": { + "node": ">=18", + "pnpm": ">=8.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/huntabyte" + }, + "peerDependencies": { + "svelte": "^5.11.0" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-image-compression": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/browser-image-compression/-/browser-image-compression-1.0.17.tgz", + "integrity": "sha512-TMDh3gyNlVA5Vvn0D0AdWr33s2ftIeokHK406z8cYlLJ4ANAq1x6eMaSzqedDoZwUGyTVB+0rhNVaSFgM3YAZg==", + "dependencies": { + "core-js": "^3.16.1", + "uzip": "0.20201231.0" + } + }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "dependencies": { + "resolve": "^1.17.0" + } + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001646", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz", + "integrity": "sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cloudflare": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cloudflare/-/cloudflare-4.0.0.tgz", + "integrity": "sha512-0o3rUVLTZoHKcM+83UbkeeFdWdsaEaF2e8QA7e8hNwTku8EwO14JoYyeBF+DJZnRdnoJGPbAjA9lDKQ7f6ylUg==", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + } + }, + "node_modules/cloudflare/node_modules/@types/node": { + "version": "18.19.70", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.70.tgz", + "integrity": "sha512-RE+K0+KZoEpDUbGGctnGdkrLFwi1eYKTlIHNl2Um98mUkGsm1u2Ff6Ltd0e8DktTtC98uy7rSj+hO8t/QuLoVQ==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/cloudflare/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-js": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz", + "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domain-browser": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", + "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz", + "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.6.tgz", + "integrity": "sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrap": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.5.tgz", + "integrity": "sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-4.0.0.tgz", + "integrity": "sha512-nPmnhRmpNMjYWnp9EBMGs6z5lq9RXed5W1vuZcECrsDVQInM8AMQSooVb3X183Aole60adzjWbH9qlRFWzDDTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0" + }, + "engines": { + "node": ">=16.7" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuse.js": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz", + "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==", + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/html-encoder-decoder": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/html-encoder-decoder/-/html-encoder-decoder-1.3.10.tgz", + "integrity": "sha512-18SjgzQZ9U1mxb96rjcWgWMnTlEzNj2lU2wAU7OeUobdIWXTS6lOGc6419eLhMlX24sNQYDyQfgkSXWjyq/Ilg==", + "dependencies": { + "he": "^1.1.0", + "iterate-object": "^1.3.2", + "regex-escape": "^3.4.2" + } + }, + "node_modules/html-to-text": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.3.tgz", + "integrity": "sha512-hxDF1kVCF2uw4VUJ3vr2doc91pXf2D5ngKcNviSitNkhP9OMOaJkDrFIFL6RMvko7NisWTEiqGpQ9LAxcVok1w==", + "dependencies": { + "@selderee/plugin-htmlparser2": "^0.10.0", + "deepmerge": "^4.2.2", + "dom-serializer": "^2.0.0", + "htmlparser2": "^8.0.1", + "selderee": "^0.10.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/idb-keyval": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", + "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "dev": true + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/iterate-object": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz", + "integrity": "sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-beautify": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-beautify/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/js-beautify/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/leac": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz", + "integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==", + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/linkifyjs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz", + "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==" + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lorem-ipsum": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/lorem-ipsum/-/lorem-ipsum-2.0.8.tgz", + "integrity": "sha512-5RIwHuCb979RASgCJH0VKERn9cQo/+NcAi2BMe9ddj+gp7hujl6BI+qdOG4nVsLDpwWEJwTVYXNKP6BGgbcoGA==", + "dependencies": { + "commander": "^9.3.0" + }, + "bin": { + "lorem-ipsum": "dist/bin/lorem-ipsum.bin.js" + }, + "engines": { + "node": ">= 8.x", + "npm": ">= 5.x" + } + }, + "node_modules/lorem-ipsum/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lowlight": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-3.1.0.tgz", + "integrity": "sha512-CEbNVoSikAxwDMDPjXlqlFYiZLkDJHwyGu/MfOsJnF3d7f3tds5J3z8s/l9TMXhzfsJCCJEAsD78842mwmg0PQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.0.0", + "highlight.js": "~11.9.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/lucide-svelte": { + "version": "0.469.0", + "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.469.0.tgz", + "integrity": "sha512-PMIJ8jrFqVUsXJz4d1yfAQplaGhNOahwwkzbunha8DhpiD73xqX24n8dE1dPpUk3vcrdWVsHc1y/liHHotOnGQ==", + "dev": true, + "peerDependencies": { + "svelte": "^3 || ^4 || ^5.0.0-next.42" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + }, + "node_modules/memfs": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.11.1.tgz", + "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==", + "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mode-watcher": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mode-watcher/-/mode-watcher-0.5.0.tgz", + "integrity": "sha512-5E6fh/aXhAVv+U+DbeM0hCmskQE9u7WSmvnCRijJB/MJu7HtB73sjiCaZ9n1M8QHmzLrBFo8XBAUcWXkDm8Z9A==", + "dev": true, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.1" + } + }, + "node_modules/mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/node-stdlib-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz", + "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==", + "dev": true, + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.11.0", + "domain-browser": "^4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-stdlib-browser/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/node-stdlib-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/node-stdlib-browser/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==" + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/paneforge": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/paneforge/-/paneforge-0.0.5.tgz", + "integrity": "sha512-98QHobaN/KeQhqqglbvjUmNCTRC4h4iqDxpSV8jCGhRLttgGlRXZNzWNr4Firni5rwasAZjOza0k/JdwppB/AQ==", + "dependencies": { + "nanoid": "^5.0.4" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.1" + } + }, + "node_modules/paneforge/node_modules/nanoid": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", + "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "dev": true, + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-asn1/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/parseley": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/parseley/-/parseley-0.11.0.tgz", + "integrity": "sha512-VfcwXlBWgTF+unPcr7yu3HSSA6QUdDaDnrHcytVfj5Z8azAyKBDrYnSIfeSxlrEayndNcLmrXzg+Vxbo6DWRXQ==", + "dependencies": { + "leac": "^0.6.0", + "peberminta": "^0.8.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/peberminta": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.8.0.tgz", + "integrity": "sha512-YYEs+eauIjDH5nUEGi18EohWE0nV2QbGTqmxQcqgZ/0g+laPCQmuIqq7EBLVi9uim9zMgfJv0QBZEnQ3uHw/Tw==", + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/playwright": { + "version": "1.47.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.47.2.tgz", + "integrity": "sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==", + "dev": true, + "dependencies": { + "playwright-core": "1.47.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.47.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.2.tgz", + "integrity": "sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.6" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.7.tgz", + "integrity": "sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==", + "dev": true, + "peerDependencies": { + "prettier": "^3.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + } + }, + "node_modules/pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==", + "dependencies": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise-worker": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-worker/-/promise-worker-2.0.1.tgz", + "integrity": "sha512-jR7vHqMEwWJ15i9vA3qyCKwRHihyLJp1sAa3RyY5F35m3u5s2lQUfq0nzVjbA8Xc7+3mL3Y9+9MHBO9UFRpFxA==" + }, + "node_modules/prosemirror-changeset": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", + "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", + "dependencies": { + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-collab": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", + "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.6.0.tgz", + "integrity": "sha512-xn1U/g36OqXn2tn5nGmvnnimAj/g1pUx2ypJJIe8WkVX83WyJVC5LTARaxZa2AtQRwntu9Jc5zXs9gL9svp/mg==", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", + "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "node_modules/prosemirror-gapcursor": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", + "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", + "dependencies": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz", + "integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", + "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", + "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.0.tgz", + "integrity": "sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g==", + "dependencies": { + "markdown-it": "^14.0.0", + "prosemirror-model": "^1.20.0" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", + "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", + "dependencies": { + "crelt": "^1.0.0", + "prosemirror-commands": "^1.0.0", + "prosemirror-history": "^1.0.0", + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.22.2.tgz", + "integrity": "sha512-I4lS7HHIW47D0Xv/gWmi4iUWcQIDYaJKd8Hk4+lcSps+553FlQrhmxtItpEvTr75iAruhzVShVp6WUwsT6Boww==", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.3.tgz", + "integrity": "sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==", + "dependencies": { + "prosemirror-model": "^1.19.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.1.tgz", + "integrity": "sha512-jbDyaP/6AFfDfu70VzySsD75Om2t3sXTOdl5+31Wlxlg62td1haUpty/ybajSfJ1pkGadlOfwQq9kgW5IMo1Rg==", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.7.3" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", + "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.4.0.tgz", + "integrity": "sha512-fxryZZkQG12fSCNuZDrYx6Xvo2rLYZTbKLRd8rglOPgNJGMKIS8uvTt6gGC38m7UCu/ENnXIP9pEz5uDaPc+cA==", + "dependencies": { + "prosemirror-keymap": "^1.1.2", + "prosemirror-model": "^1.8.1", + "prosemirror-state": "^1.3.1", + "prosemirror-transform": "^1.2.1", + "prosemirror-view": "^1.13.3" + } + }, + "node_modules/prosemirror-trailing-node": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.9.tgz", + "integrity": "sha512-YvyIn3/UaLFlFKrlJB6cObvUhmwFNZVhy1Q8OpW/avoTbD/Y7H5EcjK4AZFKhmuS6/N6WkGgt7gWtBWDnmFvHg==", + "dependencies": { + "@remirror/core-constants": "^2.0.2", + "escape-string-regexp": "^4.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.22.1", + "prosemirror-state": "^1.4.2", + "prosemirror-view": "^1.33.8" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.9.0.tgz", + "integrity": "sha512-5UXkr1LIRx3jmpXXNKDhv8OyAOeLTGuXNwdVfg8x27uASna/wQkr9p6fD3eupGOi4PLJfbezxTyi/7fSJypXHg==", + "dependencies": { + "prosemirror-model": "^1.21.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.33.9", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.9.tgz", + "integrity": "sha512-xV1A0Vz9cIcEnwmMhKKFAOkfIp8XmJRnaZoPqNXrPS7EK5n11Ov8V76KhR0RsfQd/SIzmWY+bg+M44A2Lx/Nnw==", + "dependencies": { + "prosemirror-model": "^1.20.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raf-schd": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" + }, + "node_modules/randombytes": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", + "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", + "dev": true + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill/node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomstring": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.3.0.tgz", + "integrity": "sha512-gY7aQ4i1BgwZ8I1Op4YseITAyiDiajeZOPQUbIq9TPGPhUm5FX59izIaOpmKbME1nmnEiABf28d9K2VSii6BBg==", + "dev": true, + "dependencies": { + "randombytes": "2.0.3" + }, + "bin": { + "randomstring": "bin/randomstring" + }, + "engines": { + "node": "*" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regex-escape": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/regex-escape/-/regex-escape-3.4.10.tgz", + "integrity": "sha512-qEqf7uzW+iYcKNLMDFnMkghhQBnGdivT6KqVQyKsyjSWnoFyooXVnxrw9dtv3AFLnD6VBGXxtZGAQNFGFTnCqA==" + }, + "node_modules/resend": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resend/-/resend-1.1.0.tgz", + "integrity": "sha512-it8TIDVT+/gAiJsUlv2tdHuvzwCCv4Zwu+udDqIm/dIuByQwe68TtFDcPccxqpSVVrNCBxxXLzsdT1tsV+P3GA==", + "dependencies": { + "@react-email/render": "0.0.7", + "type-fest": "3.13.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/resend/node_modules/type-fest": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.0.tgz", + "integrity": "sha512-Gur3yQGM9qiLNs0KPP7LPgeRbio2QTt4xXouobMCarR0/wyW3F+F/+OWwshg3NG0Adon7uQfSZBpB46NfhoF1A==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rollup": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.3.tgz", + "integrity": "sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.24.3", + "@rollup/rollup-android-arm64": "4.24.3", + "@rollup/rollup-darwin-arm64": "4.24.3", + "@rollup/rollup-darwin-x64": "4.24.3", + "@rollup/rollup-freebsd-arm64": "4.24.3", + "@rollup/rollup-freebsd-x64": "4.24.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.3", + "@rollup/rollup-linux-arm-musleabihf": "4.24.3", + "@rollup/rollup-linux-arm64-gnu": "4.24.3", + "@rollup/rollup-linux-arm64-musl": "4.24.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.3", + "@rollup/rollup-linux-riscv64-gnu": "4.24.3", + "@rollup/rollup-linux-s390x-gnu": "4.24.3", + "@rollup/rollup-linux-x64-gnu": "4.24.3", + "@rollup/rollup-linux-x64-musl": "4.24.3", + "@rollup/rollup-win32-arm64-msvc": "4.24.3", + "@rollup/rollup-win32-ia32-msvc": "4.24.3", + "@rollup/rollup-win32-x64-msvc": "4.24.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/runed": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.23.2.tgz", + "integrity": "sha512-AhHCb5/B+YQW6ar1pzhGQOQy+byfjCH63ofuhrexSWwQKhC0EbQ60Z/wMYwETLo3ZubhwlNryxBt0seOMOrVFQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/selderee": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.10.0.tgz", + "integrity": "sha512-DEL/RW/f4qLw/NrVg97xKaEBC8IpzIG2fvxnzCp3Z4yk4jQ3MXom+Imav9wApjxX2dfS3eW7x0DXafJr85i39A==", + "dependencies": { + "parseley": "^0.11.0" + }, + "funding": { + "url": "https://ko-fi.com/killymxi" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-cookie-parser": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz", + "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/showdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz", + "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", + "dependencies": { + "commander": "^9.0.0" + }, + "bin": { + "showdown": "bin/showdown.js" + }, + "funding": { + "type": "individual", + "url": "https://www.paypal.me/tiviesantos" + } + }, + "node_modules/showdown-highlight": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/showdown-highlight/-/showdown-highlight-3.1.0.tgz", + "integrity": "sha512-wrTxtE63L/bpW5A2Uy/AO1gblXnNHK/cDL6LszECOoCdMJKWTj0/4n4I/pmqub+3H3KCPVDDvtXpCArnT/heFA==", + "dependencies": { + "highlight.js": "^11.5.0", + "html-encoder-decoder": "^1.3.9", + "showdown": "^2.0.3" + } + }, + "node_modules/showdown/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sirv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/stripe": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-13.11.0.tgz", + "integrity": "sha512-yPxVJxUzP1QHhHeFnYjJl48QwDS1+5befcL7ju7+t+i88D5r0rbsL+GkCCS6zgcU+TiV5bF9eMGcKyJfLf8BZQ==", + "dependencies": { + "@types/node": ">=8.1.0", + "qs": "^6.11.0" + }, + "engines": { + "node": ">=12.*" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==" + }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "dev": true, + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "5.20.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.20.2.tgz", + "integrity": "sha512-aYXJreNUiyTob0QOzRZeBXZMGeFZDch6SrSRV8QTncZb6zj0O3BEdUzPpojuHQ1pTvk+KX7I6rZCXPUf8pTPxA==", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "acorn-typescript": "^1.4.13", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "esm-env": "^1.2.1", + "esrap": "^1.4.3", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/svelte-awesome-color-picker": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/svelte-awesome-color-picker/-/svelte-awesome-color-picker-3.1.4.tgz", + "integrity": "sha512-tiFakxvSpCwodOSFW6CflnLVSldSlDY77rDipHfW7hvB+4gTP3y6uO+Dm9O9e7P5N7K+CNyNjjdjbZOHYkMyNQ==", + "dependencies": { + "colord": "^2.9.3", + "svelte-awesome-slider": "^1.1.2" + }, + "peerDependencies": { + "svelte": "^3.55.1 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/svelte-awesome-slider": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/svelte-awesome-slider/-/svelte-awesome-slider-1.1.2.tgz", + "integrity": "sha512-HFIWwq6rtX6aXyc6ns2R0P6pDLYIr6nRjTPyAddAiTAgZqsohAoEfOEwKKqMmZ6Q+CH48zzcFdyo6lFkBJvyQw==", + "peerDependencies": { + "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/svelte-check": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.0.5.tgz", + "integrity": "sha512-icBTBZ3ibBaywbXUat3cK6hB5Du+Kq9Z8CRuyLmm64XIe2/r+lQcbuBx/IQgsbrC+kT2jQ0weVpZSSRIPwB6jQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "chokidar": "^4.0.1", + "fdir": "^6.2.0", + "picocolors": "^1.0.0", + "sade": "^1.7.4" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": ">=5.0.0" + } + }, + "node_modules/svelte-check/node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/svelte-check/node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/svelte-check/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/svelte-check/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/svelte-dnd-action": { + "version": "0.9.49", + "resolved": "https://registry.npmjs.org/svelte-dnd-action/-/svelte-dnd-action-0.9.49.tgz", + "integrity": "sha512-kAIDTSMoTZcJCqUpT8COLAkF0/NRBoJ/pIbPUra9UVRnyJljLy6dLgRuL2OojSqyNs3nToBvn5XOGaFMREwjfQ==", + "dev": true, + "peerDependencies": { + "svelte": ">=3.23.0 || ^5.0.0-next.0" + } + }, + "node_modules/svelte-inspect-value": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svelte-inspect-value/-/svelte-inspect-value-0.1.3.tgz", + "integrity": "sha512-ERYGgLyv1TUBTsM5b4N4hmIi0A31eSOSlgyWfawSNgS3EcDn9I5wUblMIbTwFQ5FijS8dJOny4KNffDiBDzBpg==", + "dependencies": { + "esm-env": "^1.2.2", + "fast-deep-equal": "^3.1.3", + "highlight.js": "^11.10.0" + }, + "peerDependencies": { + "svelte": "^5.19.0" + } + }, + "node_modules/svelte-inspect-value/node_modules/highlight.js": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/svelte-popperjs": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svelte-popperjs/-/svelte-popperjs-1.3.2.tgz", + "integrity": "sha512-fwrErlkvngL876WXRnL3OLlfk/n9YkZwwLxuKRpZOYCJLt1zrwhoKTXS+/sRgDveD/zd6GQ35hV89EOip+NBGA==", + "dev": true, + "peerDependencies": { + "@popperjs/core": ">=2", + "svelte": ">=3" + } + }, + "node_modules/svelte-preprocess": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", + "integrity": "sha512-PLG2k05qHdhmRG7zR/dyo5qKvakhm8IJ+hD2eFRQmMLHp7X3eJnjeupUtvuRpbNiF31RjVw45W+abDwHEmP5OA==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": ">=3", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": ">=0.55", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte-sonner": { + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/svelte-sonner/-/svelte-sonner-0.3.28.tgz", + "integrity": "sha512-K3AmlySeFifF/cKgsYNv5uXqMVNln0NBAacOYgmkQStLa/UoU0LhfAACU6Gr+YYC8bOCHdVmFNoKuDbMEsppJg==", + "dev": true, + "peerDependencies": { + "svelte": "^3.0.0 || ^4.0.0 || ^5.0.0-next.1" + } + }, + "node_modules/svelte-toggle": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/svelte-toggle/-/svelte-toggle-3.1.0.tgz", + "integrity": "sha512-2gzDDMDhM+ImDaLEZVlnlHVY1340Y368tT4Qk5IwLnCeRJ4zV3cVwliVGacoHy7iCDukcGXzKwDzG/hTTcaljg==", + "dev": true + }, + "node_modules/svelte-toolbelt": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.7.1.tgz", + "integrity": "sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte" + ], + "dependencies": { + "clsx": "^2.1.1", + "runed": "^0.23.2", + "style-to-object": "^1.0.8" + }, + "engines": { + "node": ">=18", + "pnpm": ">=8.7.0" + }, + "peerDependencies": { + "svelte": "^5.0.0" + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwind-variants": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-0.3.0.tgz", + "integrity": "sha512-ho2k5kn+LB1fT5XdNS3Clb96zieWxbStE9wNLK7D0AV64kdZMaYzAKo0fWl6fXLPY99ffF9oBJnIj5escEl/8A==", + "dev": true, + "dependencies": { + "tailwind-merge": "^2.5.4" + }, + "engines": { + "node": ">=16.x", + "pnpm": ">=7.x" + }, + "peerDependencies": { + "tailwindcss": "*" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "dev": true, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/tailwindcss/node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/timeago.js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz", + "integrity": "sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==" + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tinybench": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz", + "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", + "integrity": "sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz", + "integrity": "sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tippy.js": { + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", + "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "dependencies": { + "@popperjs/core": "^2.9.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + }, + "node_modules/undici-types": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", + "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==" + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uzip": { + "version": "0.20201231.0", + "resolved": "https://registry.npmjs.org/uzip/-/uzip-0.20201231.0.tgz", + "integrity": "sha512-OZeJfZP+R0z9D6TmBgLq2LHzSSptGMGDGigGiEe0pr8UBe/7fdflgHlHBNDASTXB5jnFuxHpNaJywSg8YFeGng==" + }, + "node_modules/vite": { + "version": "5.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", + "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-node-polyfills": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz", + "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==", + "dev": true, + "dependencies": { + "@rollup/plugin-inject": "^5.0.5", + "node-stdlib-browser": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/davidmyersdev" + }, + "peerDependencies": { + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "peer": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.25.8.tgz", + "integrity": "sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.4", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "acorn": "^8.8.1", + "acorn-walk": "^8.2.0", + "chai": "^4.3.7", + "debug": "^4.3.4", + "local-pkg": "^0.4.2", + "source-map": "^0.6.1", + "strip-literal": "^1.0.0", + "tinybench": "^2.3.1", + "tinypool": "^0.3.0", + "tinyspy": "^1.0.2", + "vite": "^3.0.0 || ^4.0.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/vitest/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/vitest/node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vitest/node_modules/vite": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zimmerframe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==" + } + } } diff --git a/package.json b/package.json index 927f83004..2032649f1 100644 --- a/package.json +++ b/package.json @@ -1,62 +1,112 @@ { - "name": "primo-server", - "version": "2.0.0--beta.48", - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "test": "playwright test", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "test:unit": "vitest", - "lint": "prettier --plugin-search-dir . --check . && eslint .", - "format": "prettier --plugin-search-dir . --write ." - }, - "dependencies": { - "@fontsource/fira-code": "^5.0.5", - "@iconify/svelte": "^2.2.1", - "@primocms/builder": "^0.1.66", - "@rollup/browser": "^3.28.0", - "@supabase/auth-helpers-sveltekit": "^0.10.2", - "@supabase/supabase-js": "^2.31.0", - "axios": "^0.26.0", - "estree-walker": "^3.0.3", - "lodash-es": "^4.17.21", - "memfs": "^4.7.7", - "nanoid": "^3.1.23", - "promise-worker": "^2.0.1", - "resolve.exports": "^2.0.2", - "timeago.js": "^4.0.2" - }, - "devDependencies": { - "@playwright/test": "^1.33.0", - "@sveltejs/adapter-auto": "2.1.1", - "@sveltejs/kit": "^1.22.4", - "@typescript-eslint/eslint-plugin": "^5.45.0", - "@typescript-eslint/parser": "^5.45.0", - "autoprefixer": "^10.3.6", - "eslint": "^8.28.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-svelte": "^2.32.4", - "file-saver": "^2.0.5", - "js-beautify": "^1.14.9", - "jszip": "^3.10.1", - "mousetrap": "^1.6.5", - "postcss-nested": "^5.0.6", - "randomstring": "^1.2.3", - "showdown-highlight": "^3.1.0", - "svelte": "^3.59.2", - "svelte-check": "^2.9.2", - "svelte-json-tree": "^1.0.0", - "svelte-preprocess": "^5.0.4", - "tailwindcss": "^2.2.16", - "tslib": "^2.4.1", - "typescript": "^4.9.3", - "vite": "^4.4.8", - "vitest": "^0.25.8" - }, - "type": "module", - "engines": { - "node": "18.x" - } -} \ No newline at end of file + "name": "primo", + "version": "3.0.0--beta.1", + "private": true, + "scripts": { + "dev": "vite dev", + "test": "playwright test", + "build": "NODE_OPTIONS=--max_old_space_size=16384 vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch", + "lint": "prettier --plugin-search-dir . --check .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@playwright/test": "^1.47.2", + "@sveltejs/adapter-vercel": "^5.4.1", + "@sveltejs/kit": "^2.5.27", + "@types/lodash-es": "^4.17.12", + "@types/uuid": "^9.0.8", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "autoprefixer": "^10.3.6", + "autosize": "^5.0.1", + "bits-ui": "^1.0.0-next.87", + "clsx": "^2.1.1", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "lucide-svelte": "^0.469.0", + "mode-watcher": "^0.5.0", + "postcss-nested": "^5.0.6", + "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.6", + "randomstring": "^1.2.3", + "svelte": "^5.20.2", + "svelte-check": "^4.0.0", + "svelte-dnd-action": "^0.9.25", + "svelte-popperjs": "^1.3.2", + "svelte-preprocess": "^6.0.0", + "svelte-sonner": "^0.3.28", + "svelte-toggle": "^3.1.0", + "tailwind-merge": "^2.6.0", + "tailwind-variants": "^0.3.0", + "tailwindcss": "^3.4.17", + "tailwindcss-animate": "^1.0.7", + "tslib": "^2.4.1", + "typescript": "^5.5.0", + "vite": "^5.4.4", + "vite-plugin-node-polyfills": "^0.21.0", + "vitest": "^0.25.8" + }, + "type": "module", + "dependencies": { + "@anthropic-ai/sdk": "^0.31.0", + "@atlaskit/pragmatic-drag-and-drop": "^1.4.0", + "@aws-sdk/client-s3": "^3.454.0", + "@aws-sdk/lib-storage": "^3.454.0", + "@aws-sdk/s3-request-presigner": "^3.525.0", + "@babel/runtime": "^7.25.6", + "@codemirror/autocomplete": "^6.11.1", + "@codemirror/lang-css": "^6.2.1", + "@codemirror/lang-html": "^6.4.7", + "@iconify/svelte": "^2.2.1", + "@replit/codemirror-lang-svelte": "^6.0.0", + "@supabase/auth-helpers-sveltekit": "^0.13.0", + "@supabase/supabase-js": "^2.32.0", + "@tiptap/core": "^2.2.6", + "@tiptap/extension-bubble-menu": "^2.2.6", + "@tiptap/extension-code-block-lowlight": "^2.2.6", + "@tiptap/extension-floating-menu": "^2.2.6", + "@tiptap/extension-highlight": "^2.2.6", + "@tiptap/extension-image": "^2.2.6", + "@tiptap/extension-link": "^2.2.6", + "@tiptap/extension-typography": "^2.2.6", + "@tiptap/extension-youtube": "^2.2.6", + "@tiptap/pm": "^2.2.6", + "@tiptap/starter-kit": "^2.2.6", + "axios": "^0.26.0", + "bind-event-listener": "^3.0.0", + "browser-image-compression": "^1.0.17", + "cloudflare": "^4.0.0", + "codemirror": "^6.0.1", + "fetch-blob": "^4.0.0", + "file-saver": "^2.0.5", + "fuse.js": "^7.0.0", + "idb-keyval": "^6.1.0", + "js-beautify": "^1.14.0", + "jszip": "^3.10.1", + "lodash-es": "^4.17.21", + "lorem-ipsum": "^2.0.8", + "lowlight": "^3.1.0", + "memfs": "^4.7.7", + "mousetrap": "^1.6.5", + "nanoid": "^3.1.23", + "paneforge": "^0.0.5", + "pluralize": "^8.0.0", + "promise-worker": "^2.0.1", + "prosemirror-schema-basic": "^1.1.2", + "raf-schd": "^4.0.3", + "resend": "^1.0.0", + "resolve.exports": "^2.0.2", + "showdown-highlight": "^3.1.0", + "stripe": "^13.11.0", + "svelte-awesome-color-picker": "^3.1.4", + "svelte-inspect-value": "^0.1.3", + "timeago.js": "^4.0.2", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=16.0.0 <=18.20.4" + } +} diff --git a/playwright.config.ts b/playwright.config.ts index 80731beee..09d24367e 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,11 +1,16 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; +import { PlaywrightTestConfig } from '@playwright/test' const config: PlaywrightTestConfig = { - webServer: { - command: 'npm run build && npm run preview', - port: 4173 + use: { + launchOptions: { + headless: false + }, + storageState: './playwright/.auth/user.json', + baseURL: 'http://localhost:5173' // Adjust this to your app's URL }, - testDir: 'tests' -}; + testDir: './tests/e2e', + timeout: 30000, + globalSetup: './playwright/global-setup.js' +} -export default config; +export default config diff --git a/playwright/.auth/user.json b/playwright/.auth/user.json new file mode 100644 index 000000000..e779f4414 --- /dev/null +++ b/playwright/.auth/user.json @@ -0,0 +1,49 @@ +{ + "cookies": [ + { + "name": "sb-gzymqmiorpcnahvfcdkt-auth-token", + "value": "%5B%22eyJhbGciOiJIUzI1NiIsImtpZCI6IjgvcTBzekliZlYzc3NKc1oiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2d6eW1xbWlvcnBjbmFodmZjZGt0LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIxMTU1ODk3Mi0zYWVjLTQwYTItYTUxZi0wMjM3MjczYTk2MDIiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzI3OTE5MjkxLCJpYXQiOjE3Mjc5MTU2OTEsImVtYWlsIjoibWF0ZW9AcHJpbW8uc28iLCJwaG9uZSI6IiIsImFwcF9tZXRhZGF0YSI6eyJwcm92aWRlciI6ImVtYWlsIiwicHJvdmlkZXJzIjpbImVtYWlsIl19LCJ1c2VyX21ldGFkYXRhIjp7ImVtYWlsIjoibWF0ZW9AcHJpbW8uc28iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiMTE1NTg5NzItM2FlYy00MGEyLWE1MWYtMDIzNzI3M2E5NjAyIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3Mjc5MTU2OTF9XSwic2Vzc2lvbl9pZCI6IjA0NGJmNWYwLWFkMzAtNGU0OC1hODY5LWIyMGEyMmM2ZDk2NiIsImlzX2Fub255bW91cyI6ZmFsc2V9.eooXMcKmO89tbfaXbOxJIFcuVOVLSv_TuWHgnfMrHP8%22%2C%22Vw9xhDoa1imX4wssuSGBcQ%22%2Cnull%2Cnull%2Cnull%5D", + "domain": "localhost", + "path": "/", + "expires": 1762475691.785728, + "httpOnly": false, + "secure": false, + "sameSite": "Lax" + } + ], + "origins": [ + { + "origin": "http://localhost:5173", + "localStorage": [ + { + "name": "iconify2", + "value": "{\"cached\":479976,\"provider\":\"\",\"data\":{\"prefix\":\"ic\",\"lastModified\":1722794017,\"aliases\":{},\"width\":24,\"height\":24,\"icons\":{\"round-chevron-right\":{\"body\":\"\"},\"round-plus\":{\"body\":\"\"}}}}" + }, + { + "name": "iconify3", + "value": "{\"cached\":479976,\"provider\":\"\",\"data\":{\"prefix\":\"material-symbols\",\"lastModified\":1727761867,\"aliases\":{},\"width\":24,\"height\":24,\"icons\":{\"edit-square-outline-rounded\":{\"body\":\"\"}}}}" + }, + { + "name": "iconify1", + "value": "{\"cached\":479976,\"provider\":\"\",\"data\":{\"prefix\":\"mdi\",\"lastModified\":1718880438,\"aliases\":{},\"width\":24,\"height\":24,\"icons\":{\"chevron-down\":{\"body\":\"\"}}}}" + }, + { + "name": "iconify0", + "value": "{\"cached\":479976,\"provider\":\"\",\"data\":{\"prefix\":\"gg\",\"lastModified\":1722793900,\"aliases\":{},\"width\":24,\"height\":24,\"icons\":{\"spinner\":{\"body\":\"\"}}}}" + }, + { + "name": "iconify-count", + "value": "4" + }, + { + "name": "iconify-version", + "value": "iconify2" + }, + { + "name": "sb-gzymqmiorpcnahvfcdkt-auth-token", + "value": "{\"access_token\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6IjgvcTBzekliZlYzc3NKc1oiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2d6eW1xbWlvcnBjbmFodmZjZGt0LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIxMTU1ODk3Mi0zYWVjLTQwYTItYTUxZi0wMjM3MjczYTk2MDIiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzI3OTE5MjkxLCJpYXQiOjE3Mjc5MTU2OTEsImVtYWlsIjoibWF0ZW9AcHJpbW8uc28iLCJwaG9uZSI6IiIsImFwcF9tZXRhZGF0YSI6eyJwcm92aWRlciI6ImVtYWlsIiwicHJvdmlkZXJzIjpbImVtYWlsIl19LCJ1c2VyX21ldGFkYXRhIjp7ImVtYWlsIjoibWF0ZW9AcHJpbW8uc28iLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiMTE1NTg5NzItM2FlYy00MGEyLWE1MWYtMDIzNzI3M2E5NjAyIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3Mjc5MTU2OTF9XSwic2Vzc2lvbl9pZCI6IjA0NGJmNWYwLWFkMzAtNGU0OC1hODY5LWIyMGEyMmM2ZDk2NiIsImlzX2Fub255bW91cyI6ZmFsc2V9.eooXMcKmO89tbfaXbOxJIFcuVOVLSv_TuWHgnfMrHP8\",\"refresh_token\":\"Vw9xhDoa1imX4wssuSGBcQ\",\"user\":{\"id\":\"11558972-3aec-40a2-a51f-0237273a9602\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"mateo@primo.so\",\"email_confirmed_at\":\"2024-09-28T21:04:50.675118Z\",\"phone\":\"\",\"confirmed_at\":\"2024-09-28T21:04:50.675118Z\",\"last_sign_in_at\":\"2024-10-03T00:34:51.780464Z\",\"app_metadata\":{\"provider\":\"email\",\"providers\":[\"email\"]},\"user_metadata\":{\"email\":\"mateo@primo.so\",\"email_verified\":false,\"phone_verified\":false,\"sub\":\"11558972-3aec-40a2-a51f-0237273a9602\"},\"identities\":[{\"identity_id\":\"d88ea76f-9c84-46a4-9b09-7b86e01f9503\",\"id\":\"11558972-3aec-40a2-a51f-0237273a9602\",\"user_id\":\"11558972-3aec-40a2-a51f-0237273a9602\",\"identity_data\":{\"email\":\"mateo@primo.so\",\"email_verified\":false,\"phone_verified\":false,\"sub\":\"11558972-3aec-40a2-a51f-0237273a9602\"},\"provider\":\"email\",\"last_sign_in_at\":\"2024-09-28T21:04:50.659362Z\",\"created_at\":\"2024-09-28T21:04:50.659417Z\",\"updated_at\":\"2024-09-28T21:04:50.659417Z\",\"email\":\"mateo@primo.so\"}],\"created_at\":\"2024-09-28T21:04:50.64029Z\",\"updated_at\":\"2024-10-03T00:34:51.784759Z\",\"is_anonymous\":false},\"token_type\":\"bearer\",\"expires_in\":3598.654000043869,\"expires_at\":1727919291}" + } + ] + } + ] +} \ No newline at end of file diff --git a/playwright/global-setup.js b/playwright/global-setup.js new file mode 100644 index 000000000..2d8d17c8d --- /dev/null +++ b/playwright/global-setup.js @@ -0,0 +1,58 @@ +import { chromium } from '@playwright/test' +import fs from 'fs' +import { expect } from '@playwright/test' + +async function global_setup() { + const auth_file = 'playwright/.auth/user.json' + + let needAuth = true + + if (fs.existsSync(auth_file)) { + // Try to use existing auth data + const browser = await chromium.launch({ headless: false }) + const context = await browser.newContext({ storageState: auth_file }) + const page = await context.newPage() + + try { + // Navigate to a protected page + await page.goto('http://localhost:5173/1') + await page.waitForTimeout(10000) // Wait for 2 seconds + + // Check if we're still on the dashboard (i.e., not redirected to login) + if (page.url().includes('/1')) { + console.log('Existing auth is valid, skipping authentication') + needAuth = false + } else { + console.log('Existing auth is invalid or expired') + } + } catch (error) { + console.log('Error checking auth status:', error) + } + + await browser.close() + } + + if (needAuth) { + console.log('Performing authentication...') + const browser = await chromium.launch({ headless: false }) + const page = await browser.newPage() + await page.goto('http://localhost:5173/auth') + + // Perform authentication + await page.fill('[data-test-id="email"]', import.meta.env.PLAWRIGHT_AUTH_EMAIL) + await page.fill('[data-test-id="password"]', import.meta.env.PLAYWRIGHT_AUTH_PASSWORD) + await page.click('[data-test-id="submit"]') + + // Wait for authentication to complete + await expect(page.locator('.sites-container')).toBeVisible() + await page.waitForTimeout(2000) // Wait for 2 seconds + + // Save authentication state + await page.context().storageState({ path: 'playwright/.auth/user.json' }) + + await browser.close() + console.log('Authentication completed and state saved') + } +} + +export default global_setup diff --git a/postcss.config.cjs b/postcss.config.cjs index b0d528e4f..33ad091d2 100644 --- a/postcss.config.cjs +++ b/postcss.config.cjs @@ -1,7 +1,6 @@ module.exports = { - plugins: [ - require('tailwindcss'), - require("autoprefixer"), - require("postcss-nested") - ], -}; \ No newline at end of file + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/primo_schema.sql b/primo_schema.sql deleted file mode 100644 index dff77bf51..000000000 --- a/primo_schema.sql +++ /dev/null @@ -1,487 +0,0 @@ --- --- Name: collaborators; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."collaborators" ( - "id" bigint NOT NULL, - "created_at" timestamp with time zone DEFAULT "now"(), - "site" "uuid", - "user" "uuid" NOT NULL, - "role" "text" NOT NULL -); - -ALTER TABLE - "public"."collaborators" OWNER TO "postgres"; - --- --- Name: collaborators_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres --- -ALTER TABLE - "public"."collaborators" -ALTER COLUMN - "id" -ADD - GENERATED BY DEFAULT AS IDENTITY ( - SEQUENCE NAME "public"."collaborators_id_seq" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1 - ); - --- --- Name: config; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."config" ( - "id" "text" NOT NULL, - "value" "text", - "options" "jsonb", - "created_at" timestamp with time zone DEFAULT "now"() -); - -ALTER TABLE - "public"."config" OWNER TO "postgres"; - --- --- Name: invitations; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."invitations" ( - "created_at" timestamp with time zone DEFAULT "now"(), - "email" "text", - "site" "uuid", - "inviter_email" "text", - "id" "uuid" DEFAULT "extensions"."uuid_generate_v4"() NOT NULL, - "role" "text" NOT NULL, - "server_invitation" boolean -); - -ALTER TABLE - "public"."invitations" OWNER TO "postgres"; - -INSERT INTO - public.config (id, value, options, created_at) -VALUES - ('github_token', null, null, now()); - --- --- Name: pages; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."pages" ( - "code" "jsonb" DEFAULT '{"js": "", "css": "", "html": {"head": "", "below": ""}}' :: "jsonb", - "name" "text", - "fields" "jsonb" DEFAULT '[]' :: "jsonb", - "created_at" timestamp with time zone DEFAULT "now"(), - "url" "text", - "content" "jsonb" DEFAULT '{}' :: "jsonb" NOT NULL, - "id" "uuid" DEFAULT "extensions"."uuid_generate_v4"() NOT NULL, - "site" "uuid" NOT NULL, - "parent" "uuid" -); - -ALTER TABLE - "public"."pages" OWNER TO "postgres"; - --- --- Name: sections; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."sections" ( - "content" "jsonb" DEFAULT '{"en": {}}' :: "jsonb" NOT NULL, - "created_at" timestamp with time zone DEFAULT "now"(), - "index" smallint DEFAULT '1' :: smallint NOT NULL, - "id" "uuid" DEFAULT "extensions"."uuid_generate_v4"() NOT NULL, - "page" "uuid" NOT NULL, - "symbol" "uuid" NOT NULL -); - -ALTER TABLE - "public"."sections" OWNER TO "postgres"; - --- Enable realtime for 'sections' table -alter publication supabase_realtime -add - table sections; - --- --- Name: server_members; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."server_members" ( - "id" bigint NOT NULL, - "user" "uuid", - "role" "text" DEFAULT 'DEV' :: "text", - "created_at" timestamp with time zone DEFAULT "now"(), - "admin" boolean DEFAULT false -); - -ALTER TABLE - "public"."server_members" OWNER TO "postgres"; - --- --- Name: server_members_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres --- -ALTER TABLE - "public"."server_members" -ALTER COLUMN - "id" -ADD - GENERATED BY DEFAULT AS IDENTITY ( - SEQUENCE NAME "public"."server_members_id_seq" START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1 - ); - --- --- Name: sites; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."sites" ( - "id" "uuid" NOT NULL, - "name" "text", - "active_deployment" "jsonb", - "created_at" timestamp with time zone DEFAULT "now"(), - "code" "jsonb" DEFAULT '{"js": "", "css": "", "html": {"head": "", "below": ""}}' :: "jsonb" NOT NULL, - "fields" "jsonb" DEFAULT '[]' :: "jsonb" NOT NULL, - "content" "jsonb" DEFAULT '{}' :: "jsonb" NOT NULL, - "url" "text" NOT NULL -); - -ALTER TABLE - "public"."sites" OWNER TO "postgres"; - --- --- Name: symbols; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."symbols" ( - "name" "text", - "code" "jsonb" DEFAULT '{"js": "", "css": "", "html": ""}' :: "jsonb" NOT NULL, - "fields" "jsonb" DEFAULT '[]' :: "jsonb" NOT NULL, - "content" "jsonb" DEFAULT '{}' :: "jsonb", - "created_at" timestamp with time zone DEFAULT "now"(), - "id" "uuid" DEFAULT "extensions"."uuid_generate_v4"() NOT NULL, - "site" "uuid" NOT NULL, - "index" smallint DEFAULT '1' :: smallint NOT NULL -); - -ALTER TABLE - "public"."symbols" OWNER TO "postgres"; - --- --- Name: users; Type: TABLE; Schema: public; Owner: postgres --- -CREATE TABLE "public"."users" ( - "email" "text", - "created_at" timestamp with time zone DEFAULT "now"(), - "id" "uuid" NOT NULL -); - -ALTER TABLE - "public"."users" OWNER TO "postgres"; - --- --- Name: collaborators collaborators_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."collaborators" -ADD - CONSTRAINT "collaborators_pkey" PRIMARY KEY ("id"); - --- --- Name: config config_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."config" -ADD - CONSTRAINT "config_pkey" PRIMARY KEY ("id"); - --- --- Name: invitations invitations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."invitations" -ADD - CONSTRAINT "invitations_pkey" PRIMARY KEY ("id"); - --- --- Name: pages pages_id_key; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."pages" -ADD - CONSTRAINT "pages_id_key" UNIQUE ("id"); - --- --- Name: pages pages_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."pages" -ADD - CONSTRAINT "pages_pkey" PRIMARY KEY ("id"); - --- --- Name: sections sections_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."sections" -ADD - CONSTRAINT "sections_pkey" PRIMARY KEY ("id"); - --- --- Name: server_members server_members_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."server_members" -ADD - CONSTRAINT "server_members_pkey" PRIMARY KEY ("id"); - --- --- Name: sites sites_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."sites" -ADD - CONSTRAINT "sites_pkey" PRIMARY KEY ("id"); - --- --- Name: sites sites_url_key; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."sites" -ADD - CONSTRAINT "sites_url_key" UNIQUE ("url"); - --- --- Name: symbols symbols_id_key; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."symbols" -ADD - CONSTRAINT "symbols_id_key" UNIQUE ("id"); - --- --- Name: symbols symbols_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."symbols" -ADD - CONSTRAINT "symbols_pkey" PRIMARY KEY ("id"); - --- --- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."users" -ADD - CONSTRAINT "users_pkey" PRIMARY KEY ("id"); - --- --- Name: collaborators collaborators_site_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."collaborators" -ADD - CONSTRAINT "collaborators_site_fkey" FOREIGN KEY ("site") REFERENCES "public"."sites"("id"); - --- --- Name: collaborators collaborators_user_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."collaborators" -ADD - CONSTRAINT "collaborators_user_fkey" FOREIGN KEY ("user") REFERENCES "public"."users"("id"); - --- --- Name: invitations invitations_site_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."invitations" -ADD - CONSTRAINT "invitations_site_fkey" FOREIGN KEY ("site") REFERENCES "public"."sites"("id"); - --- --- Name: pages pages_parent_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."pages" -ADD - CONSTRAINT "pages_parent_fkey" FOREIGN KEY ("parent") REFERENCES "public"."pages"("id"); - --- --- Name: pages pages_site_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."pages" -ADD - CONSTRAINT "pages_site_fkey" FOREIGN KEY ("site") REFERENCES "public"."sites"("id"); - --- --- Name: sections sections_page_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."sections" -ADD - CONSTRAINT "sections_page_fkey" FOREIGN KEY ("page") REFERENCES "public"."pages"("id"); - --- --- Name: sections sections_symbol_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."sections" -ADD - CONSTRAINT "sections_symbol_fkey" FOREIGN KEY ("symbol") REFERENCES "public"."symbols"("id"); - --- --- Name: server_members server_members_user_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."server_members" -ADD - CONSTRAINT "server_members_user_fkey" FOREIGN KEY ("user") REFERENCES "public"."users"("id") ON DELETE CASCADE; - --- --- Name: symbols symbols_site_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres --- -ALTER TABLE - ONLY "public"."symbols" -ADD - CONSTRAINT "symbols_site_fkey" FOREIGN KEY ("site") REFERENCES "public"."sites"("id"); - --- Set Row Level Security -ALTER TABLE - public.collaborators ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.config ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.invitations ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.pages ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.sections ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.server_members ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.sites ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.symbols ENABLE ROW LEVEL SECURITY; - -ALTER TABLE - public.users ENABLE ROW LEVEL SECURITY; - --- Set RLS Policy -CREATE POLICY "Enable ALL for authenticated users" ON "public"."collaborators" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."config" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."invitations" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."pages" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."sections" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."server_members" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."sites" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."symbols" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - -CREATE POLICY "Enable ALL for authenticated users" ON "public"."users" AS PERMISSIVE FOR ALL TO authenticated USING (true) WITH CHECK (true); - --- Create storage buckets for site files and images -INSERT INTO - storage.buckets (id, name, public) -VALUES - ('sites', 'sites', TRUE), - ('images', 'images', TRUE); - --- Set storage security -CREATE POLICY "Public access to view sites" ON storage.objects FOR -SELECT - USING (((bucket_id = 'sites' :: text))); - -CREATE POLICY "Give Authenticated users access to upload new sites" ON storage.objects FOR -INSERT - WITH CHECK ( - ( - (bucket_id = 'sites' :: text) - AND (auth.role() = 'authenticated' :: text) - ) - ); - -CREATE POLICY "Give Authenticated users access to update sites" ON storage.objects FOR -UPDATE - USING ( - ( - (bucket_id = 'sites' :: text) - AND (auth.role() = 'authenticated' :: text) - ) - ); - -CREATE POLICY "Give Authenticated users access to delete sites" ON storage.objects FOR DELETE USING ( - ( - (bucket_id = 'sites' :: text) - AND (auth.role() = 'authenticated' :: text) - ) -); - --- Set storage security -CREATE POLICY "Public access to view images" ON storage.objects FOR -SELECT - USING (((bucket_id = 'images' :: text))); - -CREATE POLICY "Give Authenticated users access to upload new images" ON storage.objects FOR -INSERT - WITH CHECK ( - ( - (bucket_id = 'images' :: text) - AND (auth.role() = 'authenticated' :: text) - ) - ); - -CREATE POLICY "Give Authenticated users access to update images" ON storage.objects FOR -UPDATE - USING ( - ( - (bucket_id = 'images' :: text) - AND (auth.role() = 'authenticated' :: text) - ) - ); - -CREATE POLICY "Give Authenticated users access to delete images" ON storage.objects FOR DELETE USING ( - ( - (bucket_id = 'images' :: text) - AND (auth.role() = 'authenticated' :: text) - ) -); - --- helper functions -CREATE OR REPLACE FUNCTION page_search(search_terms text, site_url text) -RETURNS TABLE(id uuid, name text, url text, created_at timestamp with time zone) AS $$ -BEGIN - RETURN QUERY - WITH RECURSIVE parent_urls AS ( - SELECT - p.id, - ARRAY[p.url] AS urls - FROM pages p - INNER JOIN sites s ON p.site = s.id - WHERE p.parent IS NULL AND s.url = site_url - - UNION ALL - - SELECT - p.id, - pu.urls || p.url - FROM pages p - INNER JOIN sites s ON p.site = s.id - INNER JOIN parent_urls pu ON p.parent = pu.id - WHERE s.url = site_url - ) - SELECT DISTINCT - p.id, - p.name, - ARRAY_TO_STRING(parent_urls.urls, '/', '/') AS url, - p.created_at - FROM pages p - INNER JOIN sites s ON p.site = s.id - INNER JOIN sections se ON p.id = se.page - INNER JOIN parent_urls ON p.id = parent_urls.id - WHERE s.url = site_url AND to_tsvector(se.content) @@ to_tsquery(search_terms); -END; -$$ LANGUAGE plpgsql; diff --git a/screenshot-v2.png b/screenshot-v2.png deleted file mode 100644 index b3e874fb9..000000000 Binary files a/screenshot-v2.png and /dev/null differ diff --git a/src/app.css b/src/app.css new file mode 100644 index 000000000..df3e430e6 --- /dev/null +++ b/src/app.css @@ -0,0 +1,76 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 0 0% 98%; + --ring: 0 0% 3.9%; + --radius: 0.25rem; + --sidebar-background: 0 0% 98%; + --sidebar-foreground: 240 5.3% 26.1%; + --sidebar-primary: 240 5.9% 10%; + --sidebar-primary-foreground: 0 0% 98%; + --sidebar-accent: 240 4.8% 95.9%; + --sidebar-accent-foreground: 240 5.9% 10%; + --sidebar-border: 220 13% 91%; + --sidebar-ring: 217.2 91.2% 59.8%; + } + + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --ring: 0 0% 83.1%; + --sidebar-background: 240 5.9% 10%; + --sidebar-foreground: 240 4.8% 95.9%; + --sidebar-primary: 224.3 76.3% 48%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 240 3.7% 15.9%; + --sidebar-accent-foreground: 240 4.8% 95.9%; + --sidebar-border: 240 3.7% 15.9%; + --sidebar-ring: 217.2 91.2% 59.8%; + } +} + +@layer base { + * { + @apply border-border; + } + + body { + @apply bg-background text-foreground; + } +} \ No newline at end of file diff --git a/src/app.html b/src/app.html index d4c77f597..0436d19ef 100644 --- a/src/app.html +++ b/src/app.html @@ -1,18 +1,19 @@ - + - - - - %sveltekit.head% + + + + %sveltekit.head% - - %sveltekit.body% - - - + +
+ %sveltekit.body% +
+ + \ No newline at end of file diff --git a/src/compiler/cloud-workers/server-compiler.js b/src/compiler/cloud-workers/server-compiler.js index c80141dbb..36726748d 100644 --- a/src/compiler/cloud-workers/server-compiler.js +++ b/src/compiler/cloud-workers/server-compiler.js @@ -2,6 +2,10 @@ import vm from 'vm' import { Volume } from 'memfs' import _ from 'lodash-es' import rollup from './server-rollup' +import { Blob } from 'fetch-blob' +// import { render } from '../lib/svelte-5/server/index.js' + +globalThis.Blob = Blob // use Node.js Blob instead of Jsdom's Blob const COMPILED_COMPONENTS_CACHE = new Map() @@ -12,113 +16,111 @@ const COMPILED_COMPONENTS_CACHE = new Map() * @param {Object|Object[]} options.component - The component(s) to be rendered. Can be a single component or an array of components for a page. * @param {boolean} [options.buildStatic=true] - Indicates whether to build the component statically or not. * @param {string} [options.format='esm'] - The module format to use, such as 'esm' for ES Modules. + * @param {boolean} [options.dev_mode=false] - Whether Svelte should be compiled in dev mode (i.e. attaches LOC for inspecting) or not * @returns {Promise} Returns a payload containing the rendered HTML, CSS, JS, and other relevant data. * @throws {Error} Throws an error if the compilation or rendering fails. */ -export async function html_server({ component, buildStatic = true, format = 'esm' }) { - let cache_key - if (!buildStatic) { - cache_key = JSON.stringify({ - component, - format, - }) - if (COMPILED_COMPONENTS_CACHE.has(cache_key)) { - return COMPILED_COMPONENTS_CACHE.get(cache_key) - } - } +export async function html_server({ component, buildStatic = true, format = 'esm', dev_mode }) { + let cache_key + if (!buildStatic) { + cache_key = JSON.stringify({ + component, + format + }) + if (COMPILED_COMPONENTS_CACHE.has(cache_key)) { + return COMPILED_COMPONENTS_CACHE.get(cache_key) + } + } - const compile_page = Array.isArray(component) + const compile_page = Array.isArray(component) - let res - try { - const has_js = compile_page ? component.some((s) => s.js) : !!component.js - res = await rollup({ - component, - hydrated: buildStatic && has_js, - buildStatic, - format, - }) - // console.log({ component, res }) - } catch (e) { - console.log('error', e) - res = { - error: e.toString(), - } - } + let res + try { + const has_js = compile_page ? component.some((s) => s.js) : !!component.js + res = await rollup({ + component, + hydrated: buildStatic && has_js, + buildStatic, + format, + dev_mode + }) + // console.log({ component, res }) + } catch (e) { + console.log('error', e) + res = { + error: e.toString() + } + } - let payload + let payload - if (!res) { - payload = { - html: '

could not render

', - } - res = {} - } else if (res.error) { - // console.error(res.error) - payload = { - html: '

could not render

', - error: escapeHtml(res.error), - } - function escapeHtml(unsafe) { - return unsafe - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') - } - } else if (buildStatic && res.ssr) { - let component_data - if (compile_page) { - // get the component data for the page - component_data = component.reduce((accumulator, item, i) => { - if (!_.isEmpty(item.data)) { - accumulator[`component_${i}_props`] = item.data - } - return accumulator - }, {}) - } else { - component_data = component.data - } + if (!res) { + payload = { + html: '

could not render

' + } + res = {} + } else if (res.error) { + // console.error(res.error) + payload = { + html: '

could not render

', + error: escapeHtml(res.error) + } + function escapeHtml(unsafe) { + return unsafe.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''') + } + } else if (buildStatic && res.ssr) { + let component_data + if (compile_page) { + // get the component data for the page + component_data = component.reduce((accumulator, item, i) => { + if (!_.isEmpty(item.data)) { + accumulator[`component_${i}_props`] = item.data + } + return accumulator + }, {}) + } else { + component_data = component.data + } - // Create a new in-memory volume - const code_path = `/${component.id}.js` - const vol = Volume.fromJSON({ - [code_path]: res.ssr.replace('export { Component as default }', 'module.exports = Component'), - }) + // Create a new in-memory volume + const code_path = `/${component.id}.js` + const vol = Volume.fromJSON({ + [code_path]: res.ssr.replace('export { Component as default }', 'module.exports = Component') + }) - // Initialize a common sandbox structure - const sandbox = { - console, - module: {}, - exports: {}, - } + // Initialize a common sandbox structure + const sandbox = { + console, + module: {}, + exports: {} + } - // Execute the script - executeInVm(vol.readFileSync(code_path, 'utf8'), sandbox) - const App = sandbox.module.exports // Access the exported content + // Execute the script + executeInVm(vol.readFileSync(code_path, 'utf8'), sandbox) + const App = sandbox.module.exports // Access the exported content - // Render using the exported component - const rendered = App.render(component_data) + // Render using the exported component + const rendered = App.render(component_data) + // const rendered = render(App, { props: component_data }) - payload = { - head: rendered.head, - html: rendered.html, - css: rendered.css.code, - js: res.dom, - } - } else { - payload = { - js: res.dom, - } - } + payload = { + head: rendered.head, + html: rendered.html, + css: rendered.css.code, + js: res.dom + } + } else { + payload = { + js: res.dom + } + } - return payload + return payload } // Utility function for executing scripts in a VM context function executeInVm(scriptContent, sandbox) { - const script = new vm.Script(scriptContent) - vm.createContext(sandbox) // Setup the context for the sandbox - script.runInContext(sandbox) + const script = new vm.Script(scriptContent) + vm.createContext(sandbox) // Setup the context for the sandbox + script.runInContext(sandbox) } diff --git a/src/compiler/cloud-workers/server-rollup.js b/src/compiler/cloud-workers/server-rollup.js index d46d571eb..ba505baf4 100644 --- a/src/compiler/cloud-workers/server-rollup.js +++ b/src/compiler/cloud-workers/server-rollup.js @@ -1,4 +1,4 @@ -import { rollup } from 'rollup' +import { rollup } from '../lib/rollup-browser.min.js' import svelte from './server-svelte' import * as resolve from 'resolve.exports' import commonjs from '../workers/plugins/commonjs' @@ -10,7 +10,7 @@ globalThis.Blob = Blob // use Node.js Blob instead of Jsdom's Blob const CDN_URL = 'https://cdn.jsdelivr.net/npm' // or 'https://unpkg.com' -export default async function rollup_worker({ component, hydrated, buildStatic = true, format = 'esm' }) { +export default async function rollup_worker({ component, hydrated, buildStatic = true, format = 'esm', dev_mode = false }) { const final = { ssr: '', dom: '', @@ -88,7 +88,7 @@ export default async function rollup_worker({ component, hydrated, buildStatic = const output = (await bundle.generate({ format })).output[0].code final.ssr = output } else { - const bundle = await compile() + const bundle = await compile({ dev: dev_mode }) const output = (await bundle.generate({ format })).output[0].code final.dom = output } diff --git a/src/compiler/cloud-workers/server-svelte.js b/src/compiler/cloud-workers/server-svelte.js index 96f7e3f4c..474c99b13 100644 --- a/src/compiler/cloud-workers/server-svelte.js +++ b/src/compiler/cloud-workers/server-svelte.js @@ -1,9 +1,10 @@ -import { compile as svelte_compile } from 'svelte/compiler' +import { compile as svelte_compile } from '../lib/svelte-compiler.min.js' +// import { compile as svelte_compile } from '../lib/svelte-5/compiler/index.js' export default async function svelte({ code, svelteOptions }) { - const res = svelte_compile(code, svelteOptions) - return { - code: res?.js?.code, - warnings: res.warnings.map((w) => ({ message: w.message, code: w.code })), - } + const res = svelte_compile(code, svelteOptions) + return { + code: res?.js?.code, + warnings: res.warnings.map((w) => ({ message: w.message, code: w.code })) + } } diff --git a/src/compiler/lib/rollup-browser.min.js b/src/compiler/lib/rollup-browser.min.js new file mode 100644 index 000000000..5abe08365 --- /dev/null +++ b/src/compiler/lib/rollup-browser.min.js @@ -0,0 +1,14597 @@ +/* + @license + Rollup.js v3.29.4 + Thu, 28 Sep 2023 04:54:30 GMT - commit 4e92d60fa90cead39481e3703d26e5d812f43bd1 + + https://github.com/rollup/rollup + + Released under the MIT License. +*/ +var e = '3.29.4' +'undefined' != typeof globalThis ? globalThis : 'undefined' != typeof window ? window : 'undefined' != typeof global ? global : 'undefined' != typeof self && self +function t(e) { + return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, 'default') ? e.default : e +} +var s = { exports: {} } +!(function (e) { + const t = ','.charCodeAt(0), + s = ';'.charCodeAt(0), + i = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + n = new Uint8Array(64), + r = new Uint8Array(128) + for (let e = 0; e < i.length; e++) { + const t = i.charCodeAt(e) + ;(n[e] = t), (r[t] = e) + } + const o = + 'undefined' != typeof TextDecoder + ? new TextDecoder() + : 'undefined' != typeof Buffer + ? { decode: (e) => Buffer.from(e.buffer, e.byteOffset, e.byteLength).toString() } + : { + decode(e) { + let t = '' + for (let s = 0; s < e.length; s++) t += String.fromCharCode(e[s]) + return t + } + } + function a(e) { + const t = new Int32Array(5), + s = [] + let i = 0 + do { + const n = l(e, i), + r = [] + let o = !0, + a = 0 + t[0] = 0 + for (let s = i; s < n; s++) { + let i + s = c(e, s, t, 0) + const l = t[0] + l < a && (o = !1), + (a = l), + h(e, s, n) ? ((s = c(e, s, t, 1)), (s = c(e, s, t, 2)), (s = c(e, s, t, 3)), h(e, s, n) ? ((s = c(e, s, t, 4)), (i = [l, t[1], t[2], t[3], t[4]])) : (i = [l, t[1], t[2], t[3]])) : (i = [l]), + r.push(i) + } + o || u(r), s.push(r), (i = n + 1) + } while (i <= e.length) + return s + } + function l(e, t) { + const s = e.indexOf(';', t) + return -1 === s ? e.length : s + } + function c(e, t, s, i) { + let n = 0, + o = 0, + a = 0 + do { + const s = e.charCodeAt(t++) + ;(a = r[s]), (n |= (31 & a) << o), (o += 5) + } while (32 & a) + const l = 1 & n + return (n >>>= 1), l && (n = -2147483648 | -n), (s[i] += n), t + } + function h(e, s, i) { + return !(s >= i) && e.charCodeAt(s) !== t + } + function u(e) { + e.sort(d) + } + function d(e, t) { + return e[0] - t[0] + } + function p(e) { + const i = new Int32Array(5), + n = 16384, + r = n - 36, + a = new Uint8Array(n), + l = a.subarray(0, r) + let c = 0, + h = '' + for (let u = 0; u < e.length; u++) { + const d = e[u] + if ((u > 0 && (c === n && ((h += o.decode(a)), (c = 0)), (a[c++] = s)), 0 !== d.length)) { + i[0] = 0 + for (let e = 0; e < d.length; e++) { + const s = d[e] + c > r && ((h += o.decode(l)), a.copyWithin(0, r, c), (c -= r)), + e > 0 && (a[c++] = t), + (c = f(a, c, i, s, 0)), + 1 !== s.length && ((c = f(a, c, i, s, 1)), (c = f(a, c, i, s, 2)), (c = f(a, c, i, s, 3)), 4 !== s.length && (c = f(a, c, i, s, 4))) + } + } + } + return h + o.decode(a.subarray(0, c)) + } + function f(e, t, s, i, r) { + const o = i[r] + let a = o - s[r] + ;(s[r] = o), (a = a < 0 ? (-a << 1) | 1 : a << 1) + do { + let s = 31 & a + ;(a >>>= 5), a > 0 && (s |= 32), (e[t++] = n[s]) + } while (a > 0) + return t + } + ;(e.decode = a), (e.encode = p), Object.defineProperty(e, '__esModule', { value: !0 }) +})(s.exports) +var i = s.exports +class n { + constructor(e) { + this.bits = e instanceof n ? e.bits.slice() : [] + } + add(e) { + this.bits[e >> 5] |= 1 << (31 & e) + } + has(e) { + return !!(this.bits[e >> 5] & (1 << (31 & e))) + } +} +let r = class e { + constructor(e, t, s) { + ;(this.start = e), + (this.end = t), + (this.original = s), + (this.intro = ''), + (this.outro = ''), + (this.content = s), + (this.storeName = !1), + (this.edited = !1), + (this.previous = null), + (this.next = null) + } + appendLeft(e) { + this.outro += e + } + appendRight(e) { + this.intro = this.intro + e + } + clone() { + const t = new e(this.start, this.end, this.original) + return (t.intro = this.intro), (t.outro = this.outro), (t.content = this.content), (t.storeName = this.storeName), (t.edited = this.edited), t + } + contains(e) { + return this.start < e && e < this.end + } + eachNext(e) { + let t = this + for (; t; ) e(t), (t = t.next) + } + eachPrevious(e) { + let t = this + for (; t; ) e(t), (t = t.previous) + } + edit(e, t, s) { + return (this.content = e), s || ((this.intro = ''), (this.outro = '')), (this.storeName = t), (this.edited = !0), this + } + prependLeft(e) { + this.outro = e + this.outro + } + prependRight(e) { + this.intro = e + this.intro + } + split(t) { + const s = t - this.start, + i = this.original.slice(0, s), + n = this.original.slice(s) + this.original = i + const r = new e(t, this.end, n) + return ( + (r.outro = this.outro), + (this.outro = ''), + (this.end = t), + this.edited ? (r.edit('', !1), (this.content = '')) : (this.content = i), + (r.next = this.next), + r.next && (r.next.previous = r), + (r.previous = this), + (this.next = r), + r + ) + } + toString() { + return this.intro + this.content + this.outro + } + trimEnd(e) { + if (((this.outro = this.outro.replace(e, '')), this.outro.length)) return !0 + const t = this.content.replace(e, '') + return t.length + ? (t !== this.content && (this.split(this.start + t.length).edit('', void 0, !0), this.edited && this.edit(t, this.storeName, !0)), !0) + : (this.edit('', void 0, !0), (this.intro = this.intro.replace(e, '')), !!this.intro.length || void 0) + } + trimStart(e) { + if (((this.intro = this.intro.replace(e, '')), this.intro.length)) return !0 + const t = this.content.replace(e, '') + if (t.length) { + if (t !== this.content) { + const e = this.split(this.end - t.length) + this.edited && e.edit(t, this.storeName, !0), this.edit('', void 0, !0) + } + return !0 + } + return this.edit('', void 0, !0), (this.outro = this.outro.replace(e, '')), !!this.outro.length || void 0 + } +} +function o() { + return 'undefined' != typeof window && 'function' == typeof window.btoa + ? (e) => window.btoa(unescape(encodeURIComponent(e))) + : 'function' == typeof Buffer + ? (e) => Buffer.from(e, 'utf-8').toString('base64') + : () => { + throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.') + } +} +const a = o() +class l { + constructor(e) { + ;(this.version = 3), + (this.file = e.file), + (this.sources = e.sources), + (this.sourcesContent = e.sourcesContent), + (this.names = e.names), + (this.mappings = i.encode(e.mappings)), + void 0 !== e.x_google_ignoreList && (this.x_google_ignoreList = e.x_google_ignoreList) + } + toString() { + return JSON.stringify(this) + } + toUrl() { + return 'data:application/json;charset=utf-8;base64,' + a(this.toString()) + } +} +function c(e, t) { + const s = e.split(/[/\\]/), + i = t.split(/[/\\]/) + for (s.pop(); s[0] === i[0]; ) s.shift(), i.shift() + if (s.length) { + let e = s.length + for (; e--; ) s[e] = '..' + } + return s.concat(i).join('/') +} +const h = Object.prototype.toString +function u(e) { + return '[object Object]' === h.call(e) +} +function d(e) { + const t = e.split('\n'), + s = [] + for (let e = 0, i = 0; e < t.length; e++) s.push(i), (i += t[e].length + 1) + return function (e) { + let t = 0, + i = s.length + for (; t < i; ) { + const n = (t + i) >> 1 + e < s[n] ? (i = n) : (t = n + 1) + } + const n = t - 1 + return { line: n, column: e - s[n] } + } +} +const p = /\w/ +class f { + constructor(e) { + ;(this.hires = e), (this.generatedCodeLine = 0), (this.generatedCodeColumn = 0), (this.raw = []), (this.rawSegments = this.raw[this.generatedCodeLine] = []), (this.pending = null) + } + addEdit(e, t, s, i) { + if (t.length) { + const t = [this.generatedCodeColumn, e, s.line, s.column] + i >= 0 && t.push(i), this.rawSegments.push(t) + } else this.pending && this.rawSegments.push(this.pending) + this.advance(t), (this.pending = null) + } + addUneditedChunk(e, t, s, i, n) { + let r = t.start, + o = !0, + a = !1 + for (; r < t.end; ) { + if (this.hires || o || n.has(r)) { + const t = [this.generatedCodeColumn, e, i.line, i.column] + 'boundary' === this.hires ? (p.test(s[r]) ? a || (this.rawSegments.push(t), (a = !0)) : (this.rawSegments.push(t), (a = !1))) : this.rawSegments.push(t) + } + '\n' === s[r] + ? ((i.line += 1), (i.column = 0), (this.generatedCodeLine += 1), (this.raw[this.generatedCodeLine] = this.rawSegments = []), (this.generatedCodeColumn = 0), (o = !0)) + : ((i.column += 1), (this.generatedCodeColumn += 1), (o = !1)), + (r += 1) + } + this.pending = null + } + advance(e) { + if (!e) return + const t = e.split('\n') + if (t.length > 1) { + for (let e = 0; e < t.length - 1; e++) this.generatedCodeLine++, (this.raw[this.generatedCodeLine] = this.rawSegments = []) + this.generatedCodeColumn = 0 + } + this.generatedCodeColumn += t[t.length - 1].length + } +} +const m = '\n', + g = { insertLeft: !1, insertRight: !1, storeName: !1 } +class y { + constructor(e, t = {}) { + const s = new r(0, e.length, e) + Object.defineProperties(this, { + original: { writable: !0, value: e }, + outro: { writable: !0, value: '' }, + intro: { writable: !0, value: '' }, + firstChunk: { writable: !0, value: s }, + lastChunk: { writable: !0, value: s }, + lastSearchedChunk: { writable: !0, value: s }, + byStart: { writable: !0, value: {} }, + byEnd: { writable: !0, value: {} }, + filename: { writable: !0, value: t.filename }, + indentExclusionRanges: { writable: !0, value: t.indentExclusionRanges }, + sourcemapLocations: { writable: !0, value: new n() }, + storedNames: { writable: !0, value: {} }, + indentStr: { writable: !0, value: void 0 }, + ignoreList: { writable: !0, value: t.ignoreList } + }), + (this.byStart[0] = s), + (this.byEnd[e.length] = s) + } + addSourcemapLocation(e) { + this.sourcemapLocations.add(e) + } + append(e) { + if ('string' != typeof e) throw new TypeError('outro content must be a string') + return (this.outro += e), this + } + appendLeft(e, t) { + if ('string' != typeof t) throw new TypeError('inserted content must be a string') + this._split(e) + const s = this.byEnd[e] + return s ? s.appendLeft(t) : (this.intro += t), this + } + appendRight(e, t) { + if ('string' != typeof t) throw new TypeError('inserted content must be a string') + this._split(e) + const s = this.byStart[e] + return s ? s.appendRight(t) : (this.outro += t), this + } + clone() { + const e = new y(this.original, { filename: this.filename }) + let t = this.firstChunk, + s = (e.firstChunk = e.lastSearchedChunk = t.clone()) + for (; t; ) { + ;(e.byStart[s.start] = s), (e.byEnd[s.end] = s) + const i = t.next, + n = i && i.clone() + n && ((s.next = n), (n.previous = s), (s = n)), (t = i) + } + return ( + (e.lastChunk = s), + this.indentExclusionRanges && (e.indentExclusionRanges = this.indentExclusionRanges.slice()), + (e.sourcemapLocations = new n(this.sourcemapLocations)), + (e.intro = this.intro), + (e.outro = this.outro), + e + ) + } + generateDecodedMap(e) { + e = e || {} + const t = Object.keys(this.storedNames), + s = new f(e.hires), + i = d(this.original) + return ( + this.intro && s.advance(this.intro), + this.firstChunk.eachNext((e) => { + const n = i(e.start) + e.intro.length && s.advance(e.intro), + e.edited ? s.addEdit(0, e.content, n, e.storeName ? t.indexOf(e.original) : -1) : s.addUneditedChunk(0, e, this.original, n, this.sourcemapLocations), + e.outro.length && s.advance(e.outro) + }), + { + file: e.file ? e.file.split(/[/\\]/).pop() : void 0, + sources: [e.source ? c(e.file || '', e.source) : e.file || ''], + sourcesContent: e.includeContent ? [this.original] : void 0, + names: t, + mappings: s.raw, + x_google_ignoreList: this.ignoreList ? [0] : void 0 + } + ) + } + generateMap(e) { + return new l(this.generateDecodedMap(e)) + } + _ensureindentStr() { + void 0 === this.indentStr && + (this.indentStr = (function (e) { + const t = e.split('\n'), + s = t.filter((e) => /^\t+/.test(e)), + i = t.filter((e) => /^ {2,}/.test(e)) + if (0 === s.length && 0 === i.length) return null + if (s.length >= i.length) return '\t' + const n = i.reduce((e, t) => { + const s = /^ +/.exec(t)[0].length + return Math.min(s, e) + }, 1 / 0) + return new Array(n + 1).join(' ') + })(this.original)) + } + _getRawIndentString() { + return this._ensureindentStr(), this.indentStr + } + getIndentString() { + return this._ensureindentStr(), null === this.indentStr ? '\t' : this.indentStr + } + indent(e, t) { + const s = /^[^\r\n]/gm + if ((u(e) && ((t = e), (e = void 0)), void 0 === e && (this._ensureindentStr(), (e = this.indentStr || '\t')), '' === e)) return this + const i = {} + if ((t = t || {}).exclude) { + ;('number' == typeof t.exclude[0] ? [t.exclude] : t.exclude).forEach((e) => { + for (let t = e[0]; t < e[1]; t += 1) i[t] = !0 + }) + } + let n = !1 !== t.indentStart + const r = (t) => (n ? `${e}${t}` : ((n = !0), t)) + this.intro = this.intro.replace(s, r) + let o = 0, + a = this.firstChunk + for (; a; ) { + const t = a.end + if (a.edited) i[o] || ((a.content = a.content.replace(s, r)), a.content.length && (n = '\n' === a.content[a.content.length - 1])) + else + for (o = a.start; o < t; ) { + if (!i[o]) { + const t = this.original[o] + '\n' === t ? (n = !0) : '\r' !== t && n && ((n = !1), o === a.start || (this._splitChunk(a, o), (a = a.next)), a.prependRight(e)) + } + o += 1 + } + ;(o = a.end), (a = a.next) + } + return (this.outro = this.outro.replace(s, r)), this + } + insert() { + throw new Error('magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)') + } + insertLeft(e, t) { + return g.insertLeft || (console.warn('magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead'), (g.insertLeft = !0)), this.appendLeft(e, t) + } + insertRight(e, t) { + return g.insertRight || (console.warn('magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead'), (g.insertRight = !0)), this.prependRight(e, t) + } + move(e, t, s) { + if (s >= e && s <= t) throw new Error('Cannot move a selection inside itself') + this._split(e), this._split(t), this._split(s) + const i = this.byStart[e], + n = this.byEnd[t], + r = i.previous, + o = n.next, + a = this.byStart[s] + if (!a && n === this.lastChunk) return this + const l = a ? a.previous : this.lastChunk + return ( + r && (r.next = o), + o && (o.previous = r), + l && (l.next = i), + a && (a.previous = n), + i.previous || (this.firstChunk = n.next), + n.next || ((this.lastChunk = i.previous), (this.lastChunk.next = null)), + (i.previous = l), + (n.next = a || null), + l || (this.firstChunk = i), + a || (this.lastChunk = n), + this + ) + } + overwrite(e, t, s, i) { + return (i = i || {}), this.update(e, t, s, { ...i, overwrite: !i.contentOnly }) + } + update(e, t, s, i) { + if ('string' != typeof s) throw new TypeError('replacement content must be a string') + for (; e < 0; ) e += this.original.length + for (; t < 0; ) t += this.original.length + if (t > this.original.length) throw new Error('end is out of bounds') + if (e === t) throw new Error('Cannot overwrite a zero-length range – use appendLeft or prependRight instead') + this._split(e), + this._split(t), + !0 === i && + (g.storeName || (console.warn('The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string'), (g.storeName = !0)), + (i = { storeName: !0 })) + const n = void 0 !== i && i.storeName, + o = void 0 !== i && i.overwrite + if (n) { + const s = this.original.slice(e, t) + Object.defineProperty(this.storedNames, s, { writable: !0, value: !0, enumerable: !0 }) + } + const a = this.byStart[e], + l = this.byEnd[t] + if (a) { + let e = a + for (; e !== l; ) { + if (e.next !== this.byStart[e.end]) throw new Error('Cannot overwrite across a split point') + ;(e = e.next), e.edit('', !1) + } + a.edit(s, n, !o) + } else { + const i = new r(e, t, '').edit(s, n) + ;(l.next = i), (i.previous = l) + } + return this + } + prepend(e) { + if ('string' != typeof e) throw new TypeError('outro content must be a string') + return (this.intro = e + this.intro), this + } + prependLeft(e, t) { + if ('string' != typeof t) throw new TypeError('inserted content must be a string') + this._split(e) + const s = this.byEnd[e] + return s ? s.prependLeft(t) : (this.intro = t + this.intro), this + } + prependRight(e, t) { + if ('string' != typeof t) throw new TypeError('inserted content must be a string') + this._split(e) + const s = this.byStart[e] + return s ? s.prependRight(t) : (this.outro = t + this.outro), this + } + remove(e, t) { + for (; e < 0; ) e += this.original.length + for (; t < 0; ) t += this.original.length + if (e === t) return this + if (e < 0 || t > this.original.length) throw new Error('Character is out of bounds') + if (e > t) throw new Error('end must be greater than start') + this._split(e), this._split(t) + let s = this.byStart[e] + for (; s; ) (s.intro = ''), (s.outro = ''), s.edit(''), (s = t > s.end ? this.byStart[s.end] : null) + return this + } + lastChar() { + if (this.outro.length) return this.outro[this.outro.length - 1] + let e = this.lastChunk + do { + if (e.outro.length) return e.outro[e.outro.length - 1] + if (e.content.length) return e.content[e.content.length - 1] + if (e.intro.length) return e.intro[e.intro.length - 1] + } while ((e = e.previous)) + return this.intro.length ? this.intro[this.intro.length - 1] : '' + } + lastLine() { + let e = this.outro.lastIndexOf(m) + if (-1 !== e) return this.outro.substr(e + 1) + let t = this.outro, + s = this.lastChunk + do { + if (s.outro.length > 0) { + if (((e = s.outro.lastIndexOf(m)), -1 !== e)) return s.outro.substr(e + 1) + t + t = s.outro + t + } + if (s.content.length > 0) { + if (((e = s.content.lastIndexOf(m)), -1 !== e)) return s.content.substr(e + 1) + t + t = s.content + t + } + if (s.intro.length > 0) { + if (((e = s.intro.lastIndexOf(m)), -1 !== e)) return s.intro.substr(e + 1) + t + t = s.intro + t + } + } while ((s = s.previous)) + return (e = this.intro.lastIndexOf(m)), -1 !== e ? this.intro.substr(e + 1) + t : this.intro + t + } + slice(e = 0, t = this.original.length) { + for (; e < 0; ) e += this.original.length + for (; t < 0; ) t += this.original.length + let s = '', + i = this.firstChunk + for (; i && (i.start > e || i.end <= e); ) { + if (i.start < t && i.end >= t) return s + i = i.next + } + if (i && i.edited && i.start !== e) throw new Error(`Cannot use replaced character ${e} as slice start anchor.`) + const n = i + for (; i; ) { + !i.intro || (n === i && i.start !== e) || (s += i.intro) + const r = i.start < t && i.end >= t + if (r && i.edited && i.end !== t) throw new Error(`Cannot use replaced character ${t} as slice end anchor.`) + const o = n === i ? e - i.start : 0, + a = r ? i.content.length + t - i.end : i.content.length + if (((s += i.content.slice(o, a)), !i.outro || (r && i.end !== t) || (s += i.outro), r)) break + i = i.next + } + return s + } + snip(e, t) { + const s = this.clone() + return s.remove(0, e), s.remove(t, s.original.length), s + } + _split(e) { + if (this.byStart[e] || this.byEnd[e]) return + let t = this.lastSearchedChunk + const s = e > t.end + for (; t; ) { + if (t.contains(e)) return this._splitChunk(t, e) + t = s ? this.byStart[t.end] : this.byEnd[t.start] + } + } + _splitChunk(e, t) { + if (e.edited && e.content.length) { + const s = d(this.original)(t) + throw new Error(`Cannot split a chunk that has already been edited (${s.line}:${s.column} – "${e.original}")`) + } + const s = e.split(t) + return (this.byEnd[t] = e), (this.byStart[t] = s), (this.byEnd[s.end] = s), e === this.lastChunk && (this.lastChunk = s), (this.lastSearchedChunk = e), !0 + } + toString() { + let e = this.intro, + t = this.firstChunk + for (; t; ) (e += t.toString()), (t = t.next) + return e + this.outro + } + isEmpty() { + let e = this.firstChunk + do { + if ((e.intro.length && e.intro.trim()) || (e.content.length && e.content.trim()) || (e.outro.length && e.outro.trim())) return !1 + } while ((e = e.next)) + return !0 + } + length() { + let e = this.firstChunk, + t = 0 + do { + t += e.intro.length + e.content.length + e.outro.length + } while ((e = e.next)) + return t + } + trimLines() { + return this.trim('[\\r\\n]') + } + trim(e) { + return this.trimStart(e).trimEnd(e) + } + trimEndAborted(e) { + const t = new RegExp((e || '\\s') + '+$') + if (((this.outro = this.outro.replace(t, '')), this.outro.length)) return !0 + let s = this.lastChunk + do { + const e = s.end, + i = s.trimEnd(t) + if ((s.end !== e && (this.lastChunk === s && (this.lastChunk = s.next), (this.byEnd[s.end] = s), (this.byStart[s.next.start] = s.next), (this.byEnd[s.next.end] = s.next)), i)) return !0 + s = s.previous + } while (s) + return !1 + } + trimEnd(e) { + return this.trimEndAborted(e), this + } + trimStartAborted(e) { + const t = new RegExp('^' + (e || '\\s') + '+') + if (((this.intro = this.intro.replace(t, '')), this.intro.length)) return !0 + let s = this.firstChunk + do { + const e = s.end, + i = s.trimStart(t) + if ((s.end !== e && (s === this.lastChunk && (this.lastChunk = s.next), (this.byEnd[s.end] = s), (this.byStart[s.next.start] = s.next), (this.byEnd[s.next.end] = s.next)), i)) return !0 + s = s.next + } while (s) + return !1 + } + trimStart(e) { + return this.trimStartAborted(e), this + } + hasChanged() { + return this.original !== this.toString() + } + _replaceRegexp(e, t) { + function s(e, s) { + return 'string' == typeof t + ? t.replace(/\$(\$|&|\d+)/g, (t, s) => { + if ('$' === s) return '$' + if ('&' === s) return e[0] + return +s < e.length ? e[+s] : `$${s}` + }) + : t(...e, e.index, s, e.groups) + } + if (e.global) { + ;(function (e, t) { + let s + const i = [] + for (; (s = e.exec(t)); ) i.push(s) + return i + })(e, this.original).forEach((e) => { + null != e.index && this.overwrite(e.index, e.index + e[0].length, s(e, this.original)) + }) + } else { + const t = this.original.match(e) + t && null != t.index && this.overwrite(t.index, t.index + t[0].length, s(t, this.original)) + } + return this + } + _replaceString(e, t) { + const { original: s } = this, + i = s.indexOf(e) + return -1 !== i && this.overwrite(i, i + e.length, t), this + } + replace(e, t) { + return 'string' == typeof e ? this._replaceString(e, t) : this._replaceRegexp(e, t) + } + _replaceAllString(e, t) { + const { original: s } = this, + i = e.length + for (let n = s.indexOf(e); -1 !== n; n = s.indexOf(e, n + i)) this.overwrite(n, n + i, t) + return this + } + replaceAll(e, t) { + if ('string' == typeof e) return this._replaceAllString(e, t) + if (!e.global) throw new TypeError('MagicString.prototype.replaceAll called with a non-global RegExp argument') + return this._replaceRegexp(e, t) + } +} +const x = Object.prototype.hasOwnProperty +let E = class e { + constructor(e = {}) { + ;(this.intro = e.intro || ''), (this.separator = void 0 !== e.separator ? e.separator : '\n'), (this.sources = []), (this.uniqueSources = []), (this.uniqueSourceIndexByFilename = {}) + } + addSource(e) { + if (e instanceof y) return this.addSource({ content: e, filename: e.filename, separator: this.separator }) + if (!u(e) || !e.content) throw new Error('bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`') + if ( + (['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((t) => { + x.call(e, t) || (e[t] = e.content[t]) + }), + void 0 === e.separator && (e.separator = this.separator), + e.filename) + ) + if (x.call(this.uniqueSourceIndexByFilename, e.filename)) { + const t = this.uniqueSources[this.uniqueSourceIndexByFilename[e.filename]] + if (e.content.original !== t.content) throw new Error(`Illegal source: same filename (${e.filename}), different contents`) + } else (this.uniqueSourceIndexByFilename[e.filename] = this.uniqueSources.length), this.uniqueSources.push({ filename: e.filename, content: e.content.original }) + return this.sources.push(e), this + } + append(e, t) { + return this.addSource({ content: new y(e), separator: (t && t.separator) || '' }), this + } + clone() { + const t = new e({ intro: this.intro, separator: this.separator }) + return ( + this.sources.forEach((e) => { + t.addSource({ filename: e.filename, content: e.content.clone(), separator: e.separator }) + }), + t + ) + } + generateDecodedMap(e = {}) { + const t = [] + let s + this.sources.forEach((e) => { + Object.keys(e.content.storedNames).forEach((e) => { + ~t.indexOf(e) || t.push(e) + }) + }) + const i = new f(e.hires) + return ( + this.intro && i.advance(this.intro), + this.sources.forEach((e, n) => { + n > 0 && i.advance(this.separator) + const r = e.filename ? this.uniqueSourceIndexByFilename[e.filename] : -1, + o = e.content, + a = d(o.original) + o.intro && i.advance(o.intro), + o.firstChunk.eachNext((s) => { + const n = a(s.start) + s.intro.length && i.advance(s.intro), + e.filename ? (s.edited ? i.addEdit(r, s.content, n, s.storeName ? t.indexOf(s.original) : -1) : i.addUneditedChunk(r, s, o.original, n, o.sourcemapLocations)) : i.advance(s.content), + s.outro.length && i.advance(s.outro) + }), + o.outro && i.advance(o.outro), + e.ignoreList && -1 !== r && (void 0 === s && (s = []), s.push(r)) + }), + { + file: e.file ? e.file.split(/[/\\]/).pop() : void 0, + sources: this.uniqueSources.map((t) => (e.file ? c(e.file, t.filename) : t.filename)), + sourcesContent: this.uniqueSources.map((t) => (e.includeContent ? t.content : null)), + names: t, + mappings: i.raw, + x_google_ignoreList: s + } + ) + } + generateMap(e) { + return new l(this.generateDecodedMap(e)) + } + getIndentString() { + const e = {} + return ( + this.sources.forEach((t) => { + const s = t.content._getRawIndentString() + null !== s && (e[s] || (e[s] = 0), (e[s] += 1)) + }), + Object.keys(e).sort((t, s) => e[t] - e[s])[0] || '\t' + ) + } + indent(e) { + if ((arguments.length || (e = this.getIndentString()), '' === e)) return this + let t = !this.intro || '\n' === this.intro.slice(-1) + return ( + this.sources.forEach((s, i) => { + const n = void 0 !== s.separator ? s.separator : this.separator, + r = t || (i > 0 && /\r?\n$/.test(n)) + s.content.indent(e, { exclude: s.indentExclusionRanges, indentStart: r }), (t = '\n' === s.content.lastChar()) + }), + this.intro && (this.intro = e + this.intro.replace(/^[^\n]/gm, (t, s) => (s > 0 ? e + t : t))), + this + ) + } + prepend(e) { + return (this.intro = e + this.intro), this + } + toString() { + const e = this.sources + .map((e, t) => { + const s = void 0 !== e.separator ? e.separator : this.separator + return (t > 0 ? s : '') + e.content.toString() + }) + .join('') + return this.intro + e + } + isEmpty() { + return (!this.intro.length || !this.intro.trim()) && !this.sources.some((e) => !e.content.isEmpty()) + } + length() { + return this.sources.reduce((e, t) => e + t.content.length(), this.intro.length) + } + trimLines() { + return this.trim('[\\r\\n]') + } + trim(e) { + return this.trimStart(e).trimEnd(e) + } + trimStart(e) { + const t = new RegExp('^' + (e || '\\s') + '+') + if (((this.intro = this.intro.replace(t, '')), !this.intro)) { + let t, + s = 0 + do { + if (((t = this.sources[s++]), !t)) break + } while (!t.content.trimStartAborted(e)) + } + return this + } + trimEnd(e) { + const t = new RegExp((e || '\\s') + '+$') + let s, + i = this.sources.length - 1 + do { + if (((s = this.sources[i--]), !s)) { + this.intro = this.intro.replace(t, '') + break + } + } while (!s.content.trimEndAborted(e)) + return this + } +} +const b = /^(?:\/|(?:[A-Za-z]:)?[/\\|])/, + v = /^\.?\.\//, + S = /\\/g, + A = /[/\\]/, + k = /\.[^.]+$/ +function I(e) { + return b.test(e) +} +function w(e) { + return v.test(e) +} +function P(e) { + return e.replace(S, '/') +} +function C(e) { + return e.split(A).pop() || '' +} +function $(e) { + const t = /[/\\][^/\\]*$/.exec(e) + if (!t) return '.' + return e.slice(0, -t[0].length) || '/' +} +function N(e) { + const t = k.exec(C(e)) + return t ? t[0] : '' +} +function _(e, t) { + const s = e.split(A).filter(Boolean), + i = t.split(A).filter(Boolean) + for ('.' === s[0] && s.shift(), '.' === i[0] && i.shift(); s[0] && i[0] && s[0] === i[0]; ) s.shift(), i.shift() + for (; '..' === i[0] && s.length > 0; ) i.shift(), s.pop() + for (; s.pop(); ) i.unshift('..') + return i.join('/') +} +function R(...e) { + const t = e.shift() + if (!t) return '/' + let s = t.split(A) + for (const t of e) + if (I(t)) s = t.split(A) + else { + const e = t.split(A) + for (; '.' === e[0] || '..' === e[0]; ) { + '..' === e.shift() && s.pop() + } + s.push(...e) + } + return s.join('/') +} +const M = /[\n\r'\\\u2028\u2029]/, + O = /([\n\r'\u2028\u2029])/g, + D = /\\/g +function L(e) { + return M.test(e) ? e.replace(D, '\\\\').replace(O, '\\$1') : e +} +function T(e) { + const t = C(e) + return t.slice(0, Math.max(0, t.length - N(e).length)) +} +function V(e) { + return I(e) ? _(R(), e) : e +} +function B(e) { + return '/' === e[0] || ('.' === e[0] && ('/' === e[1] || '.' === e[1])) || I(e) +} +const z = /^(\.\.\/)*\.\.$/ +function F(e, t, s, i) { + for (; t.startsWith('../'); ) (t = t.slice(3)), (e = '_/' + e) + let n = P(_($(e), t)) + if ((s && n.endsWith('.js') && (n = n.slice(0, -3)), i)) { + if ('' === n) return '../' + C(t) + if (z.test(n)) return [...n.split('/'), '..', C(t)].join('/') + } + return n ? (n.startsWith('..') ? n : './' + n) : '.' +} +class j { + constructor(e, t, s) { + ;(this.options = t), + (this.inputBase = s), + (this.defaultVariableName = ''), + (this.namespaceVariableName = ''), + (this.variableName = ''), + (this.fileName = null), + (this.importAssertions = null), + (this.id = e.id), + (this.moduleInfo = e.info), + (this.renormalizeRenderPath = e.renormalizeRenderPath), + (this.suggestedVariableName = e.suggestedVariableName) + } + getFileName() { + if (this.fileName) return this.fileName + const { paths: e } = this.options + return (this.fileName = ('function' == typeof e ? e(this.id) : e[this.id]) || (this.renormalizeRenderPath ? P(_(this.inputBase, this.id)) : this.id)) + } + getImportAssertions(e) { + return ( + this.importAssertions || + (this.importAssertions = (function (e, { getObject: t }) { + if (!e) return null + const s = Object.entries(e).map(([e, t]) => [e, `'${t}'`]) + if (s.length > 0) return t(s, { lineBreakIndent: null }) + return null + })('es' === this.options.format && this.options.externalImportAssertions && this.moduleInfo.assertions, e)) + ) + } + getImportPath(e) { + return L(this.renormalizeRenderPath ? F(e, this.getFileName(), 'amd' === this.options.format, !1) : this.getFileName()) + } +} +function U(e, t, s) { + const i = e.get(t) + if (void 0 !== i) return i + const n = s() + return e.set(t, n), n +} +function G() { + return new Set() +} +function W() { + return [] +} +const q = Symbol('Unknown Key'), + H = Symbol('Unknown Non-Accessor Key'), + K = Symbol('Unknown Integer'), + Y = Symbol('Symbol.toStringTag'), + X = [], + Q = [q], + Z = [H], + J = [K], + ee = Symbol('Entities') +class te { + constructor() { + this.entityPaths = Object.create(null, { [ee]: { value: new Set() } }) + } + trackEntityAtPathAndGetIfTracked(e, t) { + const s = this.getEntities(e) + return !!s.has(t) || (s.add(t), !1) + } + withTrackedEntityAtPath(e, t, s, i) { + const n = this.getEntities(e) + if (n.has(t)) return i + n.add(t) + const r = s() + return n.delete(t), r + } + getEntities(e) { + let t = this.entityPaths + for (const s of e) t = t[s] = t[s] || Object.create(null, { [ee]: { value: new Set() } }) + return t[ee] + } +} +const se = new te() +class ie { + constructor() { + this.entityPaths = Object.create(null, { [ee]: { value: new Map() } }) + } + trackEntityAtPathAndGetIfTracked(e, t, s) { + let i = this.entityPaths + for (const t of e) i = i[t] = i[t] || Object.create(null, { [ee]: { value: new Map() } }) + const n = U(i[ee], t, G) + return !!n.has(s) || (n.add(s), !1) + } +} +const ne = Symbol('Unknown Value'), + re = Symbol('Unknown Truthy Value') +class oe { + constructor() { + this.included = !1 + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + ce(e) + } + deoptimizePath(e) {} + getLiteralValueAtPath(e, t, s) { + return ne + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return le + } + hasEffectsOnInteractionAtPath(e, t, s) { + return !0 + } + include(e, t, s) { + this.included = !0 + } + includeCallArguments(e, t) { + for (const s of t) s.include(e, !1) + } + shouldBeIncluded(e) { + return !0 + } +} +const ae = new (class extends oe {})(), + le = [ae, !1], + ce = (e) => { + for (const t of e.args) t?.deoptimizePath(Q) + }, + he = { args: [null], type: 0 }, + ue = { args: [null, ae], type: 1 }, + de = { args: [null], type: 2, withNew: !1 } +class pe extends oe { + constructor(e) { + super(), + (this.name = e), + (this.alwaysRendered = !1), + (this.forbiddenNames = null), + (this.initReached = !1), + (this.isId = !1), + (this.isReassigned = !1), + (this.kind = null), + (this.renderBaseName = null), + (this.renderName = null) + } + addReference(e) {} + forbidName(e) { + ;(this.forbiddenNames || (this.forbiddenNames = new Set())).add(e) + } + getBaseVariableName() { + return this.renderBaseName || this.renderName || this.name + } + getName(e, t) { + if (t?.(this)) return this.name + const s = this.renderName || this.name + return this.renderBaseName ? `${this.renderBaseName}${e(s)}` : s + } + hasEffectsOnInteractionAtPath(e, { type: t }, s) { + return 0 !== t || e.length > 0 + } + include() { + this.included = !0 + } + markCalledFromTryStatement() {} + setRenderNames(e, t) { + ;(this.renderBaseName = e), (this.renderName = t) + } +} +class fe extends pe { + constructor(e, t) { + super(t), (this.referenced = !1), (this.module = e), (this.isNamespace = '*' === t) + } + addReference(e) { + ;(this.referenced = !0), ('default' !== this.name && '*' !== this.name) || this.module.suggestName(e.name) + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return 0 !== t || e.length > (this.isNamespace ? 1 : 0) + } + include() { + this.included || ((this.included = !0), (this.module.used = !0)) + } +} +const me = Object.freeze(Object.create(null)), + ge = Object.freeze({}), + ye = Object.freeze([]), + xe = Object.freeze( + new (class extends Set { + add() { + throw new Error('Cannot add to empty set') + } + })() + ) +var Ee = new Set([ + 'await', + 'break', + 'case', + 'catch', + 'class', + 'const', + 'continue', + 'debugger', + 'default', + 'delete', + 'do', + 'else', + 'enum', + 'eval', + 'export', + 'extends', + 'false', + 'finally', + 'for', + 'function', + 'if', + 'implements', + 'import', + 'in', + 'instanceof', + 'interface', + 'let', + 'NaN', + 'new', + 'null', + 'package', + 'private', + 'protected', + 'public', + 'return', + 'static', + 'super', + 'switch', + 'this', + 'throw', + 'true', + 'try', + 'typeof', + 'undefined', + 'var', + 'void', + 'while', + 'with', + 'yield' +]) +const be = /[^\w$]/g, + ve = (e) => ((e) => /\d/.test(e[0]))(e) || Ee.has(e) || 'arguments' === e +function Se(e) { + return (e = e.replace(/-(\w)/g, (e, t) => t.toUpperCase()).replace(be, '_')), ve(e) && (e = `_${e}`), e || '_' +} +const Ae = 'warn', + ke = 'info', + Ie = 'debug', + we = { [Ie]: 0, [ke]: 1, silent: 3, [Ae]: 2 } +function Pe(e, t) { + return e.start <= t && t < e.end +} +function Ce(e, t, s) { + return (function (e, t = {}) { + const { offsetLine: s = 0, offsetColumn: i = 0 } = t + let n = 0 + const r = e.split('\n').map((e, t) => { + const s = n + e.length + 1, + i = { start: n, end: s, line: t } + return (n = s), i + }) + let o = 0 + return function (t, n) { + if (('string' == typeof t && (t = e.indexOf(t, n ?? 0)), -1 === t)) return + let a = r[o] + const l = t >= a.end ? 1 : -1 + for (; a; ) { + if (Pe(a, t)) return { line: s + a.line, column: i + t - a.start, character: t } + ;(o += l), (a = r[o]) + } + } + })(e, s)(t, s && s.startIndex) +} +function $e(e) { + return e.replace(/^\t+/, (e) => e.split('\t').join(' ')) +} +const Ne = 120, + _e = 10, + Re = '...' +function Me(e, t, s) { + let i = e.split('\n') + if (t > i.length) return '' + const n = Math.max($e(i[t - 1].slice(0, s)).length + _e + Re.length, Ne), + r = Math.max(0, t - 3) + let o = Math.min(t + 2, i.length) + for (i = i.slice(r, o); !/\S/.test(i[i.length - 1]); ) i.pop(), (o -= 1) + const a = String(o).length + return i + .map((e, i) => { + const o = r + i + 1 === t + let l = String(i + r + 1) + for (; l.length < a; ) l = ` ${l}` + let c = $e(e) + if ((c.length > n && (c = `${c.slice(0, n - Re.length)}${Re}`), o)) { + const t = + (function (e) { + let t = '' + for (; e--; ) t += ' ' + return t + })(a + 2 + $e(e.slice(0, s)).length) + '^' + return `${l}: ${c}\n${t}` + } + return `${l}: ${c}` + }) + .join('\n') +} +function Oe(e, t) { + const s = e.length <= 1, + i = e.map((e) => `"${e}"`) + let n = s ? i[0] : `${i.slice(0, -1).join(', ')} and ${i.slice(-1)[0]}` + return t && (n += ` ${s ? t[0] : t[1]}`), n +} +function De(e) { + return `https://rollupjs.org/${e}` +} +const Le = 'troubleshooting/#error-name-is-not-exported-by-module', + Te = 'troubleshooting/#warning-sourcemap-is-likely-to-be-incorrect', + Ve = 'configuration-options/#output-amd-id', + Be = 'configuration-options/#output-dir', + ze = 'configuration-options/#output-exports', + Fe = 'configuration-options/#output-extend', + je = 'configuration-options/#output-format', + Ue = 'configuration-options/#output-experimentaldeepdynamicchunkoptimization', + Ge = 'configuration-options/#output-globals', + We = 'configuration-options/#output-inlinedynamicimports', + qe = 'configuration-options/#output-interop', + He = 'configuration-options/#output-manualchunks', + Ke = 'configuration-options/#output-name', + Ye = 'configuration-options/#output-sourcemapfile', + Xe = 'plugin-development/#this-getmoduleinfo' +function Qe(e) { + throw (e instanceof Error || ((e = Object.assign(new Error(e.message), e)), Object.defineProperty(e, 'name', { value: 'RollupError' })), e) +} +function Ze(e, t, s, i) { + if ('object' == typeof t) { + const { line: s, column: n } = t + e.loc = { column: n, file: i, line: s } + } else { + e.pos = t + const { line: n, column: r } = Ce(s, t, { offsetLine: 1 }) + e.loc = { column: r, file: i, line: n } + } + if (void 0 === e.frame) { + const { line: t, column: i } = e.loc + e.frame = Me(s, t, i) + } +} +const Je = 'ADDON_ERROR', + et = 'ALREADY_CLOSED', + tt = 'ANONYMOUS_PLUGIN_CACHE', + st = 'ASSET_NOT_FINALISED', + it = 'CANNOT_EMIT_FROM_OPTIONS_HOOK', + nt = 'CHUNK_NOT_GENERATED', + rt = 'CIRCULAR_REEXPORT', + ot = 'DEPRECATED_FEATURE', + at = 'DUPLICATE_PLUGIN_NAME', + lt = 'FILE_NAME_CONFLICT', + ct = 'ILLEGAL_IDENTIFIER_AS_NAME', + ht = 'INVALID_CHUNK', + ut = 'INVALID_EXPORT_OPTION', + dt = 'INVALID_LOG_POSITION', + pt = 'INVALID_OPTION', + ft = 'INVALID_PLUGIN_HOOK', + mt = 'INVALID_ROLLUP_PHASE', + gt = 'INVALID_SETASSETSOURCE', + yt = 'MISSING_EXPORT', + xt = 'MISSING_GLOBAL_NAME', + Et = 'MISSING_IMPLICIT_DEPENDANT', + bt = 'MISSING_NAME_OPTION_FOR_IIFE_EXPORT', + vt = 'MISSING_NODE_BUILTINS', + St = 'MISSING_OPTION', + At = 'MIXED_EXPORTS', + kt = 'NO_TRANSFORM_MAP_OR_AST_WITHOUT_CODE', + It = 'OPTIMIZE_CHUNK_STATUS', + wt = 'PLUGIN_ERROR', + Pt = 'SOURCEMAP_BROKEN', + Ct = 'UNEXPECTED_NAMED_IMPORT', + $t = 'UNKNOWN_OPTION', + Nt = 'UNRESOLVED_ENTRY', + _t = 'UNRESOLVED_IMPORT', + Rt = 'VALIDATION_ERROR' +function Mt() { + return { code: et, message: 'Bundle is already closed, no more calls to "generate" or "write" are allowed.' } +} +function Ot(e) { + return { code: 'CANNOT_CALL_NAMESPACE', message: `Cannot call a namespace ("${e}").` } +} +function Dt({ fileName: e, code: t }, s) { + const i = { code: 'CHUNK_INVALID', message: `Chunk "${e}" is not valid JavaScript: ${s.message}.` } + return Ze(i, s.loc, t, e), i +} +function Lt(e) { + return { code: 'CIRCULAR_DEPENDENCY', ids: e, message: `Circular dependency: ${e.map(V).join(' -> ')}` } +} +function Tt(e, t, { line: s, column: i }) { + return { code: 'FIRST_SIDE_EFFECT', message: `First side effect in ${V(t)} is at (${s}:${i})\n${Me(e, s, i)}` } +} +function Vt(e, t) { + return { code: 'ILLEGAL_REASSIGNMENT', message: `Illegal reassignment of import "${e}" in "${V(t)}".` } +} +function Bt(e, t, s, i) { + return { + code: 'INCONSISTENT_IMPORT_ASSERTIONS', + message: `Module "${V(i)}" tried to import "${V(s)}" with ${zt(t)} assertions, but it was already imported elsewhere with ${zt( + e + )} assertions. Please ensure that import assertions for the same module are always consistent.` + } +} +const zt = (e) => { + const t = Object.entries(e) + return 0 === t.length ? 'no' : t.map(([e, t]) => `"${e}": "${t}"`).join(', ') +} +function Ft(e, t, s) { + return { code: ut, message: `"${e}" was specified for "output.exports", but entry module "${V(s)}" has the following exports: ${Oe(t)}`, url: De(ze) } +} +function jt(e, t, s, i) { + return { code: pt, message: `Invalid value ${void 0 === i ? '' : `${JSON.stringify(i)} `}for option "${e}" - ${s}.`, url: De(t) } +} +function Ut(e, t, s) { + const i = '.json' === N(s) + return { + binding: e, + code: yt, + exporter: s, + id: t, + message: `"${e}" is not exported by "${V(s)}", imported by "${V(t)}".${i ? ' (Note that you need @rollup/plugin-json to import JSON files)' : ''}`, + url: De(Le) + } +} +function Gt(e) { + const t = [...e.implicitlyLoadedBefore].map((e) => V(e.id)).sort() + return { + code: Et, + message: `Module "${V(e.id)}" that should be implicitly loaded before ${Oe( + t + )} is not included in the module graph. Either it was not imported by an included module or only via a tree-shaken dynamic import, or no imported bindings were used and it had otherwise no side-effects.` + } +} +function Wt(e, t, s) { + return { code: It, message: `${s}, there are\n${e} chunks, of which\n${t} are below minChunkSize.` } +} +function qt(e, t, { hook: s, id: i } = {}) { + const n = e.code + return ( + e.pluginCode || null == n || ('string' == typeof n && ('string' != typeof n || n.startsWith('PLUGIN_'))) || (e.pluginCode = n), (e.code = wt), (e.plugin = t), s && (e.hook = s), i && (e.id = i), e + ) +} +function Ht(e) { + return { code: Pt, message: `Multiple conflicting contents for sourcemap source ${e}` } +} +function Kt(e, t, s) { + const i = s ? 'reexport' : 'import' + return { + code: Ct, + exporter: e, + message: `The named export "${t}" was ${i}ed from the external module "${V( + e + )}" even though its interop type is "defaultOnly". Either remove or change this ${i} or change the value of the "output.interop" option.`, + url: De(qe) + } +} +function Yt(e) { + return { + code: Ct, + exporter: e, + message: `There was a namespace "*" reexport from the external module "${V( + e + )}" even though its interop type is "defaultOnly". This will be ignored as namespace reexports only reexport named exports. If this is not intended, either remove or change this reexport or change the value of the "output.interop" option.`, + url: De(qe) + } +} +function Xt(e) { + return { code: Rt, message: e } +} +function Qt(e, t, s, i, n) { + Zt(e, t, s, i.onLog, i.strictDeprecations, n) +} +function Zt(e, t, s, i, n, r) { + if (s || n) { + const s = (function (e, t, s) { + return { code: ot, message: e, url: De(t), ...(s ? { plugin: s } : {}) } + })(e, t, r) + if (n) return Qe(s) + i(Ae, s) + } +} +class Jt { + constructor(e, t, s, i, n, r) { + ;(this.options = e), + (this.id = t), + (this.renormalizeRenderPath = n), + (this.dynamicImporters = []), + (this.execIndex = 1 / 0), + (this.exportedVariables = new Map()), + (this.importers = []), + (this.reexported = !1), + (this.used = !1), + (this.declarations = new Map()), + (this.mostCommonSuggestion = 0), + (this.nameSuggestions = new Map()), + (this.suggestedVariableName = Se(t.split(/[/\\]/).pop())) + const { importers: o, dynamicImporters: a } = this, + l = (this.info = { + assertions: r, + ast: null, + code: null, + dynamicallyImportedIdResolutions: ye, + dynamicallyImportedIds: ye, + get dynamicImporters() { + return a.sort() + }, + exportedBindings: null, + exports: null, + hasDefaultExport: null, + get hasModuleSideEffects() { + return Qt('Accessing ModuleInfo.hasModuleSideEffects from plugins is deprecated. Please use ModuleInfo.moduleSideEffects instead.', Xe, !0, e), l.moduleSideEffects + }, + id: t, + implicitlyLoadedAfterOneOf: ye, + implicitlyLoadedBefore: ye, + importedIdResolutions: ye, + importedIds: ye, + get importers() { + return o.sort() + }, + isEntry: !1, + isExternal: !0, + isIncluded: null, + meta: i, + moduleSideEffects: s, + syntheticNamedExports: !1 + }) + Object.defineProperty(this.info, 'hasModuleSideEffects', { enumerable: !1 }) + } + getVariableForExportName(e) { + const t = this.declarations.get(e) + if (t) return [t] + const s = new fe(this, e) + return this.declarations.set(e, s), this.exportedVariables.set(s, e), [s] + } + suggestName(e) { + const t = (this.nameSuggestions.get(e) ?? 0) + 1 + this.nameSuggestions.set(e, t), t > this.mostCommonSuggestion && ((this.mostCommonSuggestion = t), (this.suggestedVariableName = e)) + } + warnUnusedImports() { + const e = [...this.declarations].filter(([e, t]) => '*' !== e && !t.included && !this.reexported && !t.referenced).map(([e]) => e) + if (0 === e.length) return + const t = new Set() + for (const s of e) for (const e of this.declarations.get(s).module.importers) t.add(e) + const s = [...t] + var i, n, r + this.options.onLog(Ae, { + code: 'UNUSED_EXTERNAL_IMPORT', + exporter: (i = this.id), + ids: (r = s), + message: `${Oe((n = e), ['is', 'are'])} imported from external module "${i}" but never used in ${Oe(r.map((e) => V(e)))}.`, + names: n + }) + } +} +const es = { + ArrayPattern(e, t) { + for (const s of t.elements) s && es[s.type](e, s) + }, + AssignmentPattern(e, t) { + es[t.left.type](e, t.left) + }, + Identifier(e, t) { + e.push(t.name) + }, + MemberExpression() {}, + ObjectPattern(e, t) { + for (const s of t.properties) 'RestElement' === s.type ? es.RestElement(e, s) : es[s.value.type](e, s.value) + }, + RestElement(e, t) { + es[t.argument.type](e, t.argument) + } + }, + ts = function (e) { + const t = [] + return es[e.type](t, e), t + } +function ss() { + return { brokenFlow: !1, hasBreak: !1, hasContinue: !1, includedCallArguments: new Set(), includedLabels: new Set() } +} +function is() { + return { + accessed: new te(), + assigned: new te(), + brokenFlow: !1, + called: new ie(), + hasBreak: !1, + hasContinue: !1, + ignore: { breaks: !1, continues: !1, labels: new Set(), returnYield: !1, this: !1 }, + includedLabels: new Set(), + instantiated: new ie(), + replacedVariableInits: new Map() + } +} +function ns(e, t = null) { + return Object.create(t, e) +} +new Set( + 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl'.split( + ' ' + ) +).add('') +const rs = new (class extends oe { + getLiteralValueAtPath() {} + })(), + os = { value: { hasEffectsWhenCalled: null, returns: ae } }, + as = new (class extends oe { + getReturnExpressionWhenCalledAtPath(e) { + return 1 === e.length ? bs(ms, e[0]) : le + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 0 === t.type ? e.length > 1 : 2 !== t.type || 1 !== e.length || Es(ms, e[0], t, s) + } + })(), + ls = { value: { hasEffectsWhenCalled: null, returns: as } }, + cs = new (class extends oe { + getReturnExpressionWhenCalledAtPath(e) { + return 1 === e.length ? bs(gs, e[0]) : le + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 0 === t.type ? e.length > 1 : 2 !== t.type || 1 !== e.length || Es(gs, e[0], t, s) + } + })(), + hs = { value: { hasEffectsWhenCalled: null, returns: cs } }, + us = new (class extends oe { + getReturnExpressionWhenCalledAtPath(e) { + return 1 === e.length ? bs(xs, e[0]) : le + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 0 === t.type ? e.length > 1 : 2 !== t.type || 1 !== e.length || Es(xs, e[0], t, s) + } + })(), + ds = { value: { hasEffectsWhenCalled: null, returns: us } }, + ps = { + value: { + hasEffectsWhenCalled({ args: e }, t) { + const s = e[2] + return e.length < 3 || ('symbol' == typeof s.getLiteralValueAtPath(X, se, { deoptimizeCache() {} }) && s.hasEffectsOnInteractionAtPath(X, de, t)) + }, + returns: us + } + }, + fs = ns({ hasOwnProperty: ls, isPrototypeOf: ls, propertyIsEnumerable: ls, toLocaleString: ds, toString: ds, valueOf: os }), + ms = ns({ valueOf: ls }, fs), + gs = ns({ toExponential: ds, toFixed: ds, toLocaleString: ds, toPrecision: ds, valueOf: hs }, fs), + ys = ns({ exec: os, test: ls }, fs), + xs = ns( + { + anchor: ds, + at: os, + big: ds, + blink: ds, + bold: ds, + charAt: ds, + charCodeAt: hs, + codePointAt: os, + concat: ds, + endsWith: ls, + fixed: ds, + fontcolor: ds, + fontsize: ds, + includes: ls, + indexOf: hs, + italics: ds, + lastIndexOf: hs, + link: ds, + localeCompare: hs, + match: os, + matchAll: os, + normalize: ds, + padEnd: ds, + padStart: ds, + repeat: ds, + replace: ps, + replaceAll: ps, + search: hs, + slice: ds, + small: ds, + split: os, + startsWith: ls, + strike: ds, + sub: ds, + substr: ds, + substring: ds, + sup: ds, + toLocaleLowerCase: ds, + toLocaleUpperCase: ds, + toLowerCase: ds, + toString: ds, + toUpperCase: ds, + trim: ds, + trimEnd: ds, + trimLeft: ds, + trimRight: ds, + trimStart: ds, + valueOf: ds + }, + fs + ) +function Es(e, t, s, i) { + return 'string' != typeof t || !e[t] || e[t].hasEffectsWhenCalled?.(s, i) || !1 +} +function bs(e, t) { + return 'string' == typeof t && e[t] ? [e[t].returns, !1] : le +} +function vs(e, t, s) { + s(e, t) +} +function Ss(e, t, s) {} +var As = {} +;(As.Program = + As.BlockStatement = + As.StaticBlock = + function (e, t, s) { + for (var i = 0, n = e.body; i < n.length; i += 1) { + s(n[i], t, 'Statement') + } + }), + (As.Statement = vs), + (As.EmptyStatement = Ss), + (As.ExpressionStatement = + As.ParenthesizedExpression = + As.ChainExpression = + function (e, t, s) { + return s(e.expression, t, 'Expression') + }), + (As.IfStatement = function (e, t, s) { + s(e.test, t, 'Expression'), s(e.consequent, t, 'Statement'), e.alternate && s(e.alternate, t, 'Statement') + }), + (As.LabeledStatement = function (e, t, s) { + return s(e.body, t, 'Statement') + }), + (As.BreakStatement = As.ContinueStatement = Ss), + (As.WithStatement = function (e, t, s) { + s(e.object, t, 'Expression'), s(e.body, t, 'Statement') + }), + (As.SwitchStatement = function (e, t, s) { + s(e.discriminant, t, 'Expression') + for (var i = 0, n = e.cases; i < n.length; i += 1) { + var r = n[i] + r.test && s(r.test, t, 'Expression') + for (var o = 0, a = r.consequent; o < a.length; o += 1) { + s(a[o], t, 'Statement') + } + } + }), + (As.SwitchCase = function (e, t, s) { + e.test && s(e.test, t, 'Expression') + for (var i = 0, n = e.consequent; i < n.length; i += 1) { + s(n[i], t, 'Statement') + } + }), + (As.ReturnStatement = + As.YieldExpression = + As.AwaitExpression = + function (e, t, s) { + e.argument && s(e.argument, t, 'Expression') + }), + (As.ThrowStatement = As.SpreadElement = + function (e, t, s) { + return s(e.argument, t, 'Expression') + }), + (As.TryStatement = function (e, t, s) { + s(e.block, t, 'Statement'), e.handler && s(e.handler, t), e.finalizer && s(e.finalizer, t, 'Statement') + }), + (As.CatchClause = function (e, t, s) { + e.param && s(e.param, t, 'Pattern'), s(e.body, t, 'Statement') + }), + (As.WhileStatement = As.DoWhileStatement = + function (e, t, s) { + s(e.test, t, 'Expression'), s(e.body, t, 'Statement') + }), + (As.ForStatement = function (e, t, s) { + e.init && s(e.init, t, 'ForInit'), e.test && s(e.test, t, 'Expression'), e.update && s(e.update, t, 'Expression'), s(e.body, t, 'Statement') + }), + (As.ForInStatement = As.ForOfStatement = + function (e, t, s) { + s(e.left, t, 'ForInit'), s(e.right, t, 'Expression'), s(e.body, t, 'Statement') + }), + (As.ForInit = function (e, t, s) { + 'VariableDeclaration' === e.type ? s(e, t) : s(e, t, 'Expression') + }), + (As.DebuggerStatement = Ss), + (As.FunctionDeclaration = function (e, t, s) { + return s(e, t, 'Function') + }), + (As.VariableDeclaration = function (e, t, s) { + for (var i = 0, n = e.declarations; i < n.length; i += 1) { + s(n[i], t) + } + }), + (As.VariableDeclarator = function (e, t, s) { + s(e.id, t, 'Pattern'), e.init && s(e.init, t, 'Expression') + }), + (As.Function = function (e, t, s) { + e.id && s(e.id, t, 'Pattern') + for (var i = 0, n = e.params; i < n.length; i += 1) { + s(n[i], t, 'Pattern') + } + s(e.body, t, e.expression ? 'Expression' : 'Statement') + }), + (As.Pattern = function (e, t, s) { + 'Identifier' === e.type ? s(e, t, 'VariablePattern') : 'MemberExpression' === e.type ? s(e, t, 'MemberPattern') : s(e, t) + }), + (As.VariablePattern = Ss), + (As.MemberPattern = vs), + (As.RestElement = function (e, t, s) { + return s(e.argument, t, 'Pattern') + }), + (As.ArrayPattern = function (e, t, s) { + for (var i = 0, n = e.elements; i < n.length; i += 1) { + var r = n[i] + r && s(r, t, 'Pattern') + } + }), + (As.ObjectPattern = function (e, t, s) { + for (var i = 0, n = e.properties; i < n.length; i += 1) { + var r = n[i] + 'Property' === r.type ? (r.computed && s(r.key, t, 'Expression'), s(r.value, t, 'Pattern')) : 'RestElement' === r.type && s(r.argument, t, 'Pattern') + } + }), + (As.Expression = vs), + (As.ThisExpression = As.Super = As.MetaProperty = Ss), + (As.ArrayExpression = function (e, t, s) { + for (var i = 0, n = e.elements; i < n.length; i += 1) { + var r = n[i] + r && s(r, t, 'Expression') + } + }), + (As.ObjectExpression = function (e, t, s) { + for (var i = 0, n = e.properties; i < n.length; i += 1) { + s(n[i], t) + } + }), + (As.FunctionExpression = As.ArrowFunctionExpression = As.FunctionDeclaration), + (As.SequenceExpression = function (e, t, s) { + for (var i = 0, n = e.expressions; i < n.length; i += 1) { + s(n[i], t, 'Expression') + } + }), + (As.TemplateLiteral = function (e, t, s) { + for (var i = 0, n = e.quasis; i < n.length; i += 1) { + s(n[i], t) + } + for (var r = 0, o = e.expressions; r < o.length; r += 1) { + s(o[r], t, 'Expression') + } + }), + (As.TemplateElement = Ss), + (As.UnaryExpression = As.UpdateExpression = + function (e, t, s) { + s(e.argument, t, 'Expression') + }), + (As.BinaryExpression = As.LogicalExpression = + function (e, t, s) { + s(e.left, t, 'Expression'), s(e.right, t, 'Expression') + }), + (As.AssignmentExpression = As.AssignmentPattern = + function (e, t, s) { + s(e.left, t, 'Pattern'), s(e.right, t, 'Expression') + }), + (As.ConditionalExpression = function (e, t, s) { + s(e.test, t, 'Expression'), s(e.consequent, t, 'Expression'), s(e.alternate, t, 'Expression') + }), + (As.NewExpression = As.CallExpression = + function (e, t, s) { + if ((s(e.callee, t, 'Expression'), e.arguments)) + for (var i = 0, n = e.arguments; i < n.length; i += 1) { + s(n[i], t, 'Expression') + } + }), + (As.MemberExpression = function (e, t, s) { + s(e.object, t, 'Expression'), e.computed && s(e.property, t, 'Expression') + }), + (As.ExportNamedDeclaration = As.ExportDefaultDeclaration = + function (e, t, s) { + e.declaration && s(e.declaration, t, 'ExportNamedDeclaration' === e.type || e.declaration.id ? 'Statement' : 'Expression'), e.source && s(e.source, t, 'Expression') + }), + (As.ExportAllDeclaration = function (e, t, s) { + e.exported && s(e.exported, t), s(e.source, t, 'Expression') + }), + (As.ImportDeclaration = function (e, t, s) { + for (var i = 0, n = e.specifiers; i < n.length; i += 1) { + s(n[i], t) + } + s(e.source, t, 'Expression') + }), + (As.ImportExpression = function (e, t, s) { + s(e.source, t, 'Expression') + }), + (As.ImportSpecifier = As.ImportDefaultSpecifier = As.ImportNamespaceSpecifier = As.Identifier = As.PrivateIdentifier = As.Literal = Ss), + (As.TaggedTemplateExpression = function (e, t, s) { + s(e.tag, t, 'Expression'), s(e.quasi, t, 'Expression') + }), + (As.ClassDeclaration = As.ClassExpression = + function (e, t, s) { + return s(e, t, 'Class') + }), + (As.Class = function (e, t, s) { + e.id && s(e.id, t, 'Pattern'), e.superClass && s(e.superClass, t, 'Expression'), s(e.body, t) + }), + (As.ClassBody = function (e, t, s) { + for (var i = 0, n = e.body; i < n.length; i += 1) { + s(n[i], t) + } + }), + (As.MethodDefinition = + As.PropertyDefinition = + As.Property = + function (e, t, s) { + e.computed && s(e.key, t, 'Expression'), e.value && s(e.value, t, 'Expression') + }) +const ks = 'ArrowFunctionExpression', + Is = 'BinaryExpression', + ws = 'BlockStatement', + Ps = 'CallExpression', + Cs = 'ChainExpression', + $s = 'ConditionalExpression', + Ns = 'ExportDefaultDeclaration', + _s = 'ExportNamedDeclaration', + Rs = 'ExpressionStatement', + Ms = 'FunctionDeclaration', + Os = 'Identifier', + Ds = 'LogicalExpression', + Ls = 'NewExpression', + Ts = 'Program', + Vs = 'SequenceExpression', + Bs = 'VariableDeclarator', + zs = 'VariableDeclaration' +let Fs = 'sourceMa' +Fs += 'ppingURL' +const js = new RegExp(`^#[ \\f\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+${Fs}=.+`), + Us = '_rollupAnnotations', + Gs = '_rollupRemoved' +function Ws(e, t, s = e.type) { + const { annotations: i, code: n } = t + let r = i[t.annotationIndex] + for (; r && e.start >= r.end; ) Ks(e, r, n), (r = i[++t.annotationIndex]) + if (r && r.end <= e.end) for (As[s](e, t, Ws); (r = i[t.annotationIndex]) && r.end <= e.end; ) ++t.annotationIndex, Qs(e, r, !1) +} +const qs = /[^\s(]/g, + Hs = /\S/g +function Ks(e, t, s) { + const i = [] + let n + if (Ys(s.slice(t.end, e.start), qs)) { + const t = e.start + for (;;) { + switch ((i.push(e), e.type)) { + case Rs: + case Cs: + e = e.expression + continue + case Vs: + if (Ys(s.slice(t, e.start), Hs)) { + e = e.expressions[0] + continue + } + n = !0 + break + case $s: + if (Ys(s.slice(t, e.start), Hs)) { + e = e.test + continue + } + n = !0 + break + case Ds: + case Is: + if (Ys(s.slice(t, e.start), Hs)) { + e = e.left + continue + } + n = !0 + break + case _s: + case Ns: + e = e.declaration + continue + case zs: { + const t = e + if ('const' === t.kind) { + e = t.declarations[0].init + continue + } + n = !0 + break + } + case Bs: + e = e.init + continue + case Ms: + case ks: + case Ps: + case Ls: + break + default: + n = !0 + } + break + } + } else n = !0 + if (n) Qs(e, t, !1) + else for (const e of i) Qs(e, t, !0) +} +function Ys(e, t) { + let s + for (; null !== (s = t.exec(e)); ) { + if ('/' === s[0]) { + const s = e.charCodeAt(t.lastIndex) + if (42 === s) { + t.lastIndex = e.indexOf('*/', t.lastIndex + 1) + 2 + continue + } + if (47 === s) { + t.lastIndex = e.indexOf('\n', t.lastIndex + 1) + 1 + continue + } + } + return (t.lastIndex = 0), !1 + } + return !0 +} +const Xs = [ + ['pure', /[#@]__PURE__/], + ['noSideEffects', /[#@]__NO_SIDE_EFFECTS__/] +] +function Qs(e, t, s) { + const i = s ? Us : Gs, + n = e[i] + n ? n.push(t) : (e[i] = [t]) +} +const Zs = { ImportExpression: ['arguments'], Literal: [], Program: ['body'] } +const Js = 'variables' +class ei extends oe { + constructor(e, t, s, i = !1) { + super(), + (this.deoptimized = !1), + (this.esTreeNode = i ? e : null), + (this.keys = + Zs[e.type] || + (function (e) { + return (Zs[e.type] = Object.keys(e).filter((t) => 'object' == typeof e[t] && 95 !== t.charCodeAt(0))), Zs[e.type] + })(e)), + (this.parent = t), + (this.context = t.context), + this.createScope(s), + this.parseNode(e), + this.initialise(), + this.context.magicString.addSourcemapLocation(this.start), + this.context.magicString.addSourcemapLocation(this.end) + } + addExportedVariables(e, t) {} + bind() { + for (const e of this.keys) { + const t = this[e] + if (Array.isArray(t)) for (const e of t) e?.bind() + else t && t.bind() + } + } + createScope(e) { + this.scope = e + } + hasEffects(e) { + this.deoptimized || this.applyDeoptimizations() + for (const t of this.keys) { + const s = this[t] + if (null !== s) + if (Array.isArray(s)) { + for (const t of s) if (t?.hasEffects(e)) return !0 + } else if (s.hasEffects(e)) return !0 + } + return !1 + } + hasEffectsAsAssignmentTarget(e, t) { + return this.hasEffects(e) || this.hasEffectsOnInteractionAtPath(X, this.assignmentInteraction, e) + } + include(e, t, s) { + this.deoptimized || this.applyDeoptimizations(), (this.included = !0) + for (const s of this.keys) { + const i = this[s] + if (null !== i) + if (Array.isArray(i)) for (const s of i) s?.include(e, t) + else i.include(e, t) + } + } + includeAsAssignmentTarget(e, t, s) { + this.include(e, t) + } + initialise() {} + insertSemicolon(e) { + ';' !== e.original[this.end - 1] && e.appendLeft(this.end, ';') + } + parseNode(e, t) { + for (const [s, i] of Object.entries(e)) + if (!this.hasOwnProperty(s)) + if (95 === s.charCodeAt(0)) { + if (s === Us) { + const e = i + ;(this.annotations = e), + this.context.options.treeshake.annotations && + ((this.annotationNoSideEffects = e.some((e) => 'noSideEffects' === e.annotationType)), (this.annotationPure = e.some((e) => 'pure' === e.annotationType))) + } else if (s === Gs) for (const { start: e, end: t } of i) this.context.magicString.remove(e, t) + } else if ('object' != typeof i || null === i) this[s] = i + else if (Array.isArray(i)) { + this[s] = [] + for (const e of i) this[s].push(null === e ? null : new (this.context.getNodeConstructor(e.type))(e, this, this.scope, t?.includes(s))) + } else this[s] = new (this.context.getNodeConstructor(i.type))(i, this, this.scope, t?.includes(s)) + } + render(e, t) { + for (const s of this.keys) { + const i = this[s] + if (null !== i) + if (Array.isArray(i)) for (const s of i) s?.render(e, t) + else i.render(e, t) + } + } + setAssignedValue(e) { + this.assignmentInteraction = { args: [null, e], type: 1 } + } + shouldBeIncluded(e) { + return this.included || (!e.brokenFlow && this.hasEffects(is())) + } + applyDeoptimizations() { + this.deoptimized = !0 + for (const e of this.keys) { + const t = this[e] + if (null !== t) + if (Array.isArray(t)) for (const e of t) e?.deoptimizePath(Q) + else t.deoptimizePath(Q) + } + this.context.requestTreeshakingPass() + } +} +class ti extends ei { + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + t.length > 0 && this.argument.deoptimizeArgumentsOnInteractionAtPath(e, [q, ...t], s) + } + hasEffects(e) { + this.deoptimized || this.applyDeoptimizations() + const { propertyReadSideEffects: t } = this.context.options.treeshake + return this.argument.hasEffects(e) || (t && ('always' === t || this.argument.hasEffectsOnInteractionAtPath(Q, he, e))) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.argument.deoptimizePath([q, q]), this.context.requestTreeshakingPass() + } +} +class si extends oe { + constructor(e) { + super(), (this.description = e) + } + deoptimizeArgumentsOnInteractionAtPath({ args: e, type: t }, s) { + 2 === t && 0 === s.length && this.description.mutatesSelfAsArray && e[0]?.deoptimizePath(J) + } + getReturnExpressionWhenCalledAtPath(e, { args: t }) { + return e.length > 0 ? le : [this.description.returnsPrimitive || ('self' === this.description.returns ? t[0] || ae : this.description.returns()), !1] + } + hasEffectsOnInteractionAtPath(e, t, s) { + const { type: i } = t + if (e.length > (0 === i ? 1 : 0)) return !0 + if (2 === i) { + const { args: e } = t + if (!0 === this.description.mutatesSelfAsArray && e[0]?.hasEffectsOnInteractionAtPath(J, ue, s)) return !0 + if (this.description.callsArgs) for (const t of this.description.callsArgs) if (e[t + 1]?.hasEffectsOnInteractionAtPath(X, de, s)) return !0 + } + return !1 + } +} +const ii = [new si({ callsArgs: null, mutatesSelfAsArray: !1, returns: null, returnsPrimitive: as })], + ni = [new si({ callsArgs: null, mutatesSelfAsArray: !1, returns: null, returnsPrimitive: us })], + ri = [new si({ callsArgs: null, mutatesSelfAsArray: !1, returns: null, returnsPrimitive: cs })], + oi = [new si({ callsArgs: null, mutatesSelfAsArray: !1, returns: null, returnsPrimitive: ae })], + ai = /^\d+$/ +class li extends oe { + constructor(e, t, s = !1) { + if ( + (super(), + (this.prototypeExpression = t), + (this.immutable = s), + (this.additionalExpressionsToBeDeoptimized = new Set()), + (this.allProperties = []), + (this.deoptimizedPaths = Object.create(null)), + (this.expressionsToBeDeoptimizedByKey = Object.create(null)), + (this.gettersByKey = Object.create(null)), + (this.hasLostTrack = !1), + (this.hasUnknownDeoptimizedInteger = !1), + (this.hasUnknownDeoptimizedProperty = !1), + (this.propertiesAndGettersByKey = Object.create(null)), + (this.propertiesAndSettersByKey = Object.create(null)), + (this.settersByKey = Object.create(null)), + (this.unknownIntegerProps = []), + (this.unmatchableGetters = []), + (this.unmatchablePropertiesAndGetters = []), + (this.unmatchableSetters = []), + Array.isArray(e)) + ) + this.buildPropertyMaps(e) + else { + this.propertiesAndGettersByKey = this.propertiesAndSettersByKey = e + for (const t of Object.values(e)) this.allProperties.push(...t) + } + } + deoptimizeAllProperties(e) { + const t = this.hasLostTrack || this.hasUnknownDeoptimizedProperty + if ((e ? (this.hasUnknownDeoptimizedProperty = !0) : (this.hasLostTrack = !0), !t)) { + for (const e of [...Object.values(this.propertiesAndGettersByKey), ...Object.values(this.settersByKey)]) for (const t of e) t.deoptimizePath(Q) + this.prototypeExpression?.deoptimizePath([q, q]), this.deoptimizeCachedEntities() + } + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + const [i, ...n] = t, + { args: r, type: o } = e + if (this.hasLostTrack || ((2 === o || t.length > 1) && (this.hasUnknownDeoptimizedProperty || ('string' == typeof i && this.deoptimizedPaths[i])))) return void ce(e) + const [a, l, c] = + 2 === o || t.length > 1 + ? [this.propertiesAndGettersByKey, this.propertiesAndGettersByKey, this.unmatchablePropertiesAndGetters] + : 0 === o + ? [this.propertiesAndGettersByKey, this.gettersByKey, this.unmatchableGetters] + : [this.propertiesAndSettersByKey, this.settersByKey, this.unmatchableSetters] + if ('string' == typeof i) { + if (a[i]) { + const t = l[i] + if (t) for (const i of t) i.deoptimizeArgumentsOnInteractionAtPath(e, n, s) + if (!this.immutable) for (const e of r) e && this.additionalExpressionsToBeDeoptimized.add(e) + return + } + for (const t of c) t.deoptimizeArgumentsOnInteractionAtPath(e, n, s) + if (ai.test(i)) for (const t of this.unknownIntegerProps) t.deoptimizeArgumentsOnInteractionAtPath(e, n, s) + } else { + for (const t of [...Object.values(l), c]) for (const i of t) i.deoptimizeArgumentsOnInteractionAtPath(e, n, s) + for (const t of this.unknownIntegerProps) t.deoptimizeArgumentsOnInteractionAtPath(e, n, s) + } + if (!this.immutable) for (const e of r) e && this.additionalExpressionsToBeDeoptimized.add(e) + this.prototypeExpression?.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeIntegerProperties() { + if (!(this.hasLostTrack || this.hasUnknownDeoptimizedProperty || this.hasUnknownDeoptimizedInteger)) { + this.hasUnknownDeoptimizedInteger = !0 + for (const [e, t] of Object.entries(this.propertiesAndGettersByKey)) if (ai.test(e)) for (const e of t) e.deoptimizePath(Q) + this.deoptimizeCachedIntegerEntities() + } + } + deoptimizePath(e) { + if (this.hasLostTrack || this.immutable) return + const t = e[0] + if (1 === e.length) { + if ('string' != typeof t) return t === K ? this.deoptimizeIntegerProperties() : this.deoptimizeAllProperties(t === H) + if (!this.deoptimizedPaths[t]) { + this.deoptimizedPaths[t] = !0 + const e = this.expressionsToBeDeoptimizedByKey[t] + if (e) for (const t of e) t.deoptimizeCache() + } + } + const s = 1 === e.length ? Q : e.slice(1) + for (const e of 'string' == typeof t ? [...(this.propertiesAndGettersByKey[t] || this.unmatchablePropertiesAndGetters), ...(this.settersByKey[t] || this.unmatchableSetters)] : this.allProperties) + e.deoptimizePath(s) + this.prototypeExpression?.deoptimizePath(1 === e.length ? [...e, q] : e) + } + getLiteralValueAtPath(e, t, s) { + if (0 === e.length) return re + const i = e[0], + n = this.getMemberExpressionAndTrackDeopt(i, s) + return n ? n.getLiteralValueAtPath(e.slice(1), t, s) : this.prototypeExpression ? this.prototypeExpression.getLiteralValueAtPath(e, t, s) : 1 !== e.length ? ne : void 0 + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + if (0 === e.length) return le + const [n, ...r] = e, + o = this.getMemberExpressionAndTrackDeopt(n, i) + return o ? o.getReturnExpressionWhenCalledAtPath(r, t, s, i) : this.prototypeExpression ? this.prototypeExpression.getReturnExpressionWhenCalledAtPath(e, t, s, i) : le + } + hasEffectsOnInteractionAtPath(e, t, s) { + const [i, ...n] = e + if (n.length > 0 || 2 === t.type) { + const r = this.getMemberExpression(i) + return r ? r.hasEffectsOnInteractionAtPath(n, t, s) : !this.prototypeExpression || this.prototypeExpression.hasEffectsOnInteractionAtPath(e, t, s) + } + if (i === H) return !1 + if (this.hasLostTrack) return !0 + const [r, o, a] = 0 === t.type ? [this.propertiesAndGettersByKey, this.gettersByKey, this.unmatchableGetters] : [this.propertiesAndSettersByKey, this.settersByKey, this.unmatchableSetters] + if ('string' == typeof i) { + if (r[i]) { + const e = o[i] + if (e) for (const i of e) if (i.hasEffectsOnInteractionAtPath(n, t, s)) return !0 + return !1 + } + for (const e of a) if (e.hasEffectsOnInteractionAtPath(n, t, s)) return !0 + } else for (const e of [...Object.values(o), a]) for (const i of e) if (i.hasEffectsOnInteractionAtPath(n, t, s)) return !0 + return !!this.prototypeExpression && this.prototypeExpression.hasEffectsOnInteractionAtPath(e, t, s) + } + buildPropertyMaps(e) { + const { + allProperties: t, + propertiesAndGettersByKey: s, + propertiesAndSettersByKey: i, + settersByKey: n, + gettersByKey: r, + unknownIntegerProps: o, + unmatchablePropertiesAndGetters: a, + unmatchableGetters: l, + unmatchableSetters: c + } = this, + h = [] + for (let u = e.length - 1; u >= 0; u--) { + const { key: d, kind: p, property: f } = e[u] + if ((t.push(f), 'string' == typeof d)) + 'set' === p ? i[d] || ((i[d] = [f, ...h]), (n[d] = [f, ...c])) : 'get' === p ? s[d] || ((s[d] = [f, ...a]), (r[d] = [f, ...l])) : (i[d] || (i[d] = [f, ...h]), s[d] || (s[d] = [f, ...a])) + else { + if (d === K) { + o.push(f) + continue + } + 'set' === p && c.push(f), 'get' === p && l.push(f), 'get' !== p && h.push(f), 'set' !== p && a.push(f) + } + } + } + deoptimizeCachedEntities() { + for (const e of Object.values(this.expressionsToBeDeoptimizedByKey)) for (const t of e) t.deoptimizeCache() + for (const e of this.additionalExpressionsToBeDeoptimized) e.deoptimizePath(Q) + } + deoptimizeCachedIntegerEntities() { + for (const [e, t] of Object.entries(this.expressionsToBeDeoptimizedByKey)) if (ai.test(e)) for (const e of t) e.deoptimizeCache() + for (const e of this.additionalExpressionsToBeDeoptimized) e.deoptimizePath(J) + } + getMemberExpression(e) { + if (this.hasLostTrack || this.hasUnknownDeoptimizedProperty || 'string' != typeof e || (this.hasUnknownDeoptimizedInteger && ai.test(e)) || this.deoptimizedPaths[e]) return ae + const t = this.propertiesAndGettersByKey[e] + return 1 === t?.length ? t[0] : t || this.unmatchablePropertiesAndGetters.length > 0 || (this.unknownIntegerProps.length > 0 && ai.test(e)) ? ae : null + } + getMemberExpressionAndTrackDeopt(e, t) { + if ('string' != typeof e) return ae + const s = this.getMemberExpression(e) + if (s !== ae && !this.immutable) { + ;(this.expressionsToBeDeoptimizedByKey[e] = this.expressionsToBeDeoptimizedByKey[e] || []).push(t) + } + return s + } +} +const ci = (e) => 'string' == typeof e && /^\d+$/.test(e), + hi = new (class extends oe { + deoptimizeArgumentsOnInteractionAtPath(e, t) { + 2 !== e.type || 1 !== t.length || ci(t[0]) || ce(e) + } + getLiteralValueAtPath(e) { + return 1 === e.length && ci(e[0]) ? void 0 : ne + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return e.length > 1 || 2 === t + } + })(), + ui = new li({ __proto__: null, hasOwnProperty: ii, isPrototypeOf: ii, propertyIsEnumerable: ii, toLocaleString: ni, toString: ni, valueOf: oi }, hi, !0), + di = [ + { key: K, kind: 'init', property: ae }, + { key: 'length', kind: 'init', property: cs } + ], + pi = [new si({ callsArgs: [0], mutatesSelfAsArray: 'deopt-only', returns: null, returnsPrimitive: as })], + fi = [new si({ callsArgs: [0], mutatesSelfAsArray: 'deopt-only', returns: null, returnsPrimitive: cs })], + mi = [new si({ callsArgs: null, mutatesSelfAsArray: !0, returns: () => new li(di, ki), returnsPrimitive: null })], + gi = [new si({ callsArgs: null, mutatesSelfAsArray: 'deopt-only', returns: () => new li(di, ki), returnsPrimitive: null })], + yi = [new si({ callsArgs: [0], mutatesSelfAsArray: 'deopt-only', returns: () => new li(di, ki), returnsPrimitive: null })], + xi = [new si({ callsArgs: null, mutatesSelfAsArray: !0, returns: null, returnsPrimitive: cs })], + Ei = [new si({ callsArgs: null, mutatesSelfAsArray: !0, returns: null, returnsPrimitive: ae })], + bi = [new si({ callsArgs: null, mutatesSelfAsArray: 'deopt-only', returns: null, returnsPrimitive: ae })], + vi = [new si({ callsArgs: [0], mutatesSelfAsArray: 'deopt-only', returns: null, returnsPrimitive: ae })], + Si = [new si({ callsArgs: null, mutatesSelfAsArray: !0, returns: 'self', returnsPrimitive: null })], + Ai = [new si({ callsArgs: [0], mutatesSelfAsArray: !0, returns: 'self', returnsPrimitive: null })], + ki = new li( + { + __proto__: null, + at: bi, + concat: gi, + copyWithin: Si, + entries: gi, + every: pi, + fill: Si, + filter: yi, + find: vi, + findIndex: fi, + findLast: vi, + findLastIndex: fi, + flat: gi, + flatMap: yi, + forEach: vi, + includes: ii, + indexOf: ri, + join: ni, + keys: oi, + lastIndexOf: ri, + map: yi, + pop: Ei, + push: xi, + reduce: vi, + reduceRight: vi, + reverse: Si, + shift: Ei, + slice: gi, + some: pi, + sort: Ai, + splice: mi, + toLocaleString: ni, + toString: ni, + unshift: xi, + values: bi + }, + ui, + !0 + ) +class Ii extends ei { + constructor() { + super(...arguments), (this.objectEntity = null) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + this.getObjectEntity().deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.getObjectEntity().getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e, t, s, i) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.getObjectEntity().hasEffectsOnInteractionAtPath(e, t, s) + } + applyDeoptimizations() { + this.deoptimized = !0 + let e = !1 + for (let t = 0; t < this.elements.length; t++) { + const s = this.elements[t] + s && (e || s instanceof ti) && ((e = !0), s.deoptimizePath(Q)) + } + this.context.requestTreeshakingPass() + } + getObjectEntity() { + if (null !== this.objectEntity) return this.objectEntity + const e = [{ key: 'length', kind: 'init', property: cs }] + let t = !1 + for (let s = 0; s < this.elements.length; s++) { + const i = this.elements[s] + t || i instanceof ti + ? i && ((t = !0), e.unshift({ key: K, kind: 'init', property: i })) + : i + ? e.push({ key: String(s), kind: 'init', property: i }) + : e.push({ key: String(s), kind: 'init', property: rs }) + } + return (this.objectEntity = new li(e, ki)) + } +} +class wi extends ei { + addExportedVariables(e, t) { + for (const s of this.elements) s?.addExportedVariables(e, t) + } + declare(e) { + const t = [] + for (const s of this.elements) null !== s && t.push(...s.declare(e, ae)) + return t + } + deoptimizePath() { + for (const e of this.elements) e?.deoptimizePath(X) + } + hasEffectsOnInteractionAtPath(e, t, s) { + for (const e of this.elements) if (e?.hasEffectsOnInteractionAtPath(X, t, s)) return !0 + return !1 + } + markDeclarationReached() { + for (const e of this.elements) e?.markDeclarationReached() + } +} +class Pi extends pe { + constructor(e, t, s, i) { + super(e), + (this.init = s), + (this.calledFromTryStatement = !1), + (this.additionalInitializers = null), + (this.expressionsToBeDeoptimized = []), + (this.declarations = t ? [t] : []), + (this.deoptimizationTracker = i.deoptimizationTracker), + (this.module = i.module) + } + addDeclaration(e, t) { + this.declarations.push(e), this.markInitializersForDeoptimization().push(t) + } + consolidateInitializers() { + if (this.additionalInitializers) { + for (const e of this.additionalInitializers) e.deoptimizePath(Q) + this.additionalInitializers = null + } + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.isReassigned ? ce(e) : s.withTrackedEntityAtPath(t, this.init, () => this.init.deoptimizeArgumentsOnInteractionAtPath(e, t, s), void 0) + } + deoptimizePath(e) { + if (!this.isReassigned && !this.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(e, this)) + if (0 === e.length) { + if (!this.isReassigned) { + this.isReassigned = !0 + const e = this.expressionsToBeDeoptimized + this.expressionsToBeDeoptimized = ye + for (const t of e) t.deoptimizeCache() + this.init.deoptimizePath(Q) + } + } else this.init.deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.isReassigned ? ne : t.withTrackedEntityAtPath(e, this.init, () => (this.expressionsToBeDeoptimized.push(s), this.init.getLiteralValueAtPath(e, t, s)), ne) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.isReassigned ? le : s.withTrackedEntityAtPath(e, this.init, () => (this.expressionsToBeDeoptimized.push(i), this.init.getReturnExpressionWhenCalledAtPath(e, t, s, i)), le) + } + hasEffectsOnInteractionAtPath(e, t, s) { + switch (t.type) { + case 0: + return !!this.isReassigned || (!s.accessed.trackEntityAtPathAndGetIfTracked(e, this) && this.init.hasEffectsOnInteractionAtPath(e, t, s)) + case 1: + return !!this.included || (0 !== e.length && (!!this.isReassigned || (!s.assigned.trackEntityAtPathAndGetIfTracked(e, this) && this.init.hasEffectsOnInteractionAtPath(e, t, s)))) + case 2: + return !!this.isReassigned || (!(t.withNew ? s.instantiated : s.called).trackEntityAtPathAndGetIfTracked(e, t.args, this) && this.init.hasEffectsOnInteractionAtPath(e, t, s)) + } + } + include() { + if (!this.included) { + this.included = !0 + for (const e of this.declarations) { + e.included || e.include(ss(), !1) + let t = e.parent + for (; !t.included && ((t.included = !0), t.type !== Ts); ) t = t.parent + } + } + } + includeCallArguments(e, t) { + if (this.isReassigned || e.includedCallArguments.has(this.init)) for (const s of t) s.include(e, !1) + else e.includedCallArguments.add(this.init), this.init.includeCallArguments(e, t), e.includedCallArguments.delete(this.init) + } + markCalledFromTryStatement() { + this.calledFromTryStatement = !0 + } + markInitializersForDeoptimization() { + return null === this.additionalInitializers && ((this.additionalInitializers = [this.init]), (this.init = ae), (this.isReassigned = !0)), this.additionalInitializers + } + mergeDeclarations(e) { + const { declarations: t } = this + for (const s of e.declarations) t.push(s) + const s = this.markInitializersForDeoptimization() + if ((s.push(e.init), e.additionalInitializers)) for (const t of e.additionalInitializers) s.push(t) + } +} +const Ci = ye, + $i = new Set([q]), + Ni = new te(), + _i = new Set([ae]) +class Ri extends Pi { + constructor(e, t, s) { + super(e, t, ae, s), (this.deoptimizationInteractions = []), (this.deoptimizations = new te()), (this.deoptimizedFields = new Set()), (this.entitiesToBeDeoptimized = new Set()) + } + addEntityToBeDeoptimized(e) { + if (e === ae) { + if (!this.entitiesToBeDeoptimized.has(ae)) { + this.entitiesToBeDeoptimized.add(ae) + for (const { interaction: e } of this.deoptimizationInteractions) ce(e) + this.deoptimizationInteractions = Ci + } + } else if (this.deoptimizedFields.has(q)) e.deoptimizePath(Q) + else if (!this.entitiesToBeDeoptimized.has(e)) { + this.entitiesToBeDeoptimized.add(e) + for (const t of this.deoptimizedFields) e.deoptimizePath([t]) + for (const { interaction: t, path: s } of this.deoptimizationInteractions) e.deoptimizeArgumentsOnInteractionAtPath(t, s, se) + } + } + deoptimizeArgumentsOnInteractionAtPath(e, t) { + if ( + t.length >= 2 || + this.entitiesToBeDeoptimized.has(ae) || + this.deoptimizationInteractions.length >= 20 || + (1 === t.length && (this.deoptimizedFields.has(q) || (2 === e.type && this.deoptimizedFields.has(t[0])))) + ) + ce(e) + else if (!this.deoptimizations.trackEntityAtPathAndGetIfTracked(t, e.args)) { + for (const s of this.entitiesToBeDeoptimized) s.deoptimizeArgumentsOnInteractionAtPath(e, t, se) + this.entitiesToBeDeoptimized.has(ae) || this.deoptimizationInteractions.push({ interaction: e, path: t }) + } + } + deoptimizePath(e) { + if (0 === e.length || this.deoptimizedFields.has(q)) return + const t = e[0] + if (!this.deoptimizedFields.has(t)) { + this.deoptimizedFields.add(t) + for (const e of this.entitiesToBeDeoptimized) e.deoptimizePath([t]) + t === q && ((this.deoptimizationInteractions = Ci), (this.deoptimizations = Ni), (this.deoptimizedFields = $i), (this.entitiesToBeDeoptimized = _i)) + } + } + getReturnExpressionWhenCalledAtPath(e) { + return 0 === e.length ? this.deoptimizePath(Q) : this.deoptimizedFields.has(e[0]) || this.deoptimizePath([e[0]]), le + } +} +const Mi = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$', + Oi = 64 +function Di(e) { + let t = '' + do { + const s = e % Oi + ;(e = (e / Oi) | 0), (t = Mi[s] + t) + } while (0 !== e) + return t +} +function Li(e, t, s) { + let i = e, + n = 1 + for (; t.has(i) || Ee.has(i) || s?.has(i); ) i = `${e}$${Di(n++)}` + return t.add(i), i +} +let Ti = class { + constructor() { + ;(this.children = []), (this.variables = new Map()) + } + addDeclaration(e, t, s, i) { + const n = e.name + let r = this.variables.get(n) + return r ? r.addDeclaration(e, s) : ((r = new Pi(e.name, e, s || rs, t)), this.variables.set(n, r)), r + } + contains(e) { + return this.variables.has(e) + } + findVariable(e) { + throw new Error('Internal Error: findVariable needs to be implemented by a subclass') + } +} +class Vi extends Ti { + constructor(e) { + super(), (this.accessedOutsideVariables = new Map()), (this.parent = e), e.children.push(this) + } + addAccessedDynamicImport(e) { + ;(this.accessedDynamicImports || (this.accessedDynamicImports = new Set())).add(e), this.parent instanceof Vi && this.parent.addAccessedDynamicImport(e) + } + addAccessedGlobals(e, t) { + const s = t.get(this) || new Set() + for (const t of e) s.add(t) + t.set(this, s), this.parent instanceof Vi && this.parent.addAccessedGlobals(e, t) + } + addNamespaceMemberAccess(e, t) { + this.accessedOutsideVariables.set(e, t), this.parent.addNamespaceMemberAccess(e, t) + } + addReturnExpression(e) { + this.parent instanceof Vi && this.parent.addReturnExpression(e) + } + addUsedOutsideNames(e, t, s, i) { + for (const i of this.accessedOutsideVariables.values()) i.included && (e.add(i.getBaseVariableName()), 'system' === t && s.has(i) && e.add('exports')) + const n = i.get(this) + if (n) for (const t of n) e.add(t) + } + contains(e) { + return this.variables.has(e) || this.parent.contains(e) + } + deconflict(e, t, s) { + const i = new Set() + if ((this.addUsedOutsideNames(i, e, t, s), this.accessedDynamicImports)) for (const e of this.accessedDynamicImports) e.inlineNamespace && i.add(e.inlineNamespace.getBaseVariableName()) + for (const [e, t] of this.variables) (t.included || t.alwaysRendered) && t.setRenderNames(null, Li(e, i, t.forbiddenNames)) + for (const i of this.children) i.deconflict(e, t, s) + } + findLexicalBoundary() { + return this.parent.findLexicalBoundary() + } + findVariable(e) { + const t = this.variables.get(e) || this.accessedOutsideVariables.get(e) + if (t) return t + const s = this.parent.findVariable(e) + return this.accessedOutsideVariables.set(e, s), s + } +} +class Bi extends Vi { + constructor(e, t) { + super(e), (this.parameters = []), (this.hasRest = !1), (this.context = t), (this.hoistedBodyVarScope = new Vi(this)) + } + addParameterDeclaration(e) { + const { name: t } = e, + s = new Ri(t, e, this.context), + i = this.hoistedBodyVarScope.variables.get(t) + return i && (this.hoistedBodyVarScope.variables.set(t, s), s.mergeDeclarations(i)), this.variables.set(t, s), s + } + addParameterVariables(e, t) { + this.parameters = e + for (const t of e) for (const e of t) e.alwaysRendered = !0 + this.hasRest = t + } + includeCallArguments(e, t) { + let s = !1, + i = !1 + const n = this.hasRest && this.parameters[this.parameters.length - 1] + for (const s of t) + if (s instanceof ti) { + for (const s of t) s.include(e, !1) + break + } + for (let r = t.length - 1; r >= 0; r--) { + const o = this.parameters[r] || n, + a = t[r] + if (o) + if (((s = !1), 0 === o.length)) i = !0 + else for (const e of o) e.included && (i = !0), e.calledFromTryStatement && (s = !0) + !i && a.shouldBeIncluded(e) && (i = !0), i && a.include(e, s) + } + } +} +class zi extends Bi { + constructor() { + super(...arguments), (this.returnExpression = null), (this.returnExpressions = []) + } + addReturnExpression(e) { + this.returnExpressions.push(e) + } + getReturnExpression() { + return null === this.returnExpression && this.updateReturnExpression(), this.returnExpression + } + updateReturnExpression() { + if (1 === this.returnExpressions.length) this.returnExpression = this.returnExpressions[0] + else { + this.returnExpression = ae + for (const e of this.returnExpressions) e.deoptimizePath(Q) + } + } +} +function Fi(e, t) { + if ('MemberExpression' === e.type) return !e.computed && Fi(e.object, e) + if ('Identifier' === e.type) { + if (!t) return !0 + switch (t.type) { + case 'MemberExpression': + return t.computed || e === t.object + case 'MethodDefinition': + return t.computed + case 'PropertyDefinition': + case 'Property': + return t.computed || e === t.value + case 'ExportSpecifier': + case 'ImportSpecifier': + return e === t.local + case 'LabeledStatement': + case 'BreakStatement': + case 'ContinueStatement': + return !1 + default: + return !0 + } + } + return !1 +} +const ji = Symbol('PureFunction'), + Ui = () => {}, + Gi = Symbol('Value Properties'), + Wi = () => re, + qi = () => !1, + Hi = () => !0, + Ki = { deoptimizeArgumentsOnCall: Ui, getLiteralValue: Wi, hasEffectsWhenCalled: qi }, + Yi = { deoptimizeArgumentsOnCall: Ui, getLiteralValue: Wi, hasEffectsWhenCalled: Hi }, + Xi = { __proto__: null, [Gi]: Yi }, + Qi = { __proto__: null, [Gi]: Ki }, + Zi = { + __proto__: null, + [Gi]: { + deoptimizeArgumentsOnCall: Ui, + getLiteralValue: Wi, + hasEffectsWhenCalled({ args: e }, t) { + const [s, i] = e + return !(i instanceof oe) || i.hasEffectsOnInteractionAtPath(Q, he, t) + } + } + }, + Ji = { + __proto__: null, + [Gi]: { + deoptimizeArgumentsOnCall({ args: [, e] }) { + e?.deoptimizePath(Q) + }, + getLiteralValue: Wi, + hasEffectsWhenCalled: ({ args: e }, t) => e.length <= 1 || e[1].hasEffectsOnInteractionAtPath(Z, ue, t) + } + }, + en = { __proto__: null, [Gi]: Yi, prototype: Xi }, + tn = { __proto__: null, [Gi]: Ki, prototype: Xi }, + sn = { __proto__: null, [Gi]: { deoptimizeArgumentsOnCall: Ui, getLiteralValue: Wi, hasEffectsWhenCalled: ({ args: e }) => e.length > 1 && !(e[1] instanceof Ii) }, prototype: Xi }, + nn = { __proto__: null, [Gi]: Ki, from: Xi, of: Qi, prototype: Xi }, + rn = { __proto__: null, [Gi]: Ki, supportedLocalesOf: tn }, + on = { + global: Xi, + globalThis: Xi, + self: Xi, + window: Xi, + __proto__: null, + [Gi]: Yi, + Array: { __proto__: null, [Gi]: Yi, from: Xi, isArray: Qi, of: Qi, prototype: Xi }, + ArrayBuffer: { __proto__: null, [Gi]: Ki, isView: Qi, prototype: Xi }, + Atomics: Xi, + BigInt: en, + BigInt64Array: en, + BigUint64Array: en, + Boolean: tn, + constructor: en, + DataView: tn, + Date: { __proto__: null, [Gi]: Ki, now: Qi, parse: Qi, prototype: Xi, UTC: Qi }, + decodeURI: Qi, + decodeURIComponent: Qi, + encodeURI: Qi, + encodeURIComponent: Qi, + Error: tn, + escape: Qi, + eval: Xi, + EvalError: tn, + Float32Array: nn, + Float64Array: nn, + Function: en, + hasOwnProperty: Xi, + Infinity: Xi, + Int16Array: nn, + Int32Array: nn, + Int8Array: nn, + isFinite: Qi, + isNaN: Qi, + isPrototypeOf: Xi, + JSON: Xi, + Map: sn, + Math: { + __proto__: null, + [Gi]: Yi, + abs: Qi, + acos: Qi, + acosh: Qi, + asin: Qi, + asinh: Qi, + atan: Qi, + atan2: Qi, + atanh: Qi, + cbrt: Qi, + ceil: Qi, + clz32: Qi, + cos: Qi, + cosh: Qi, + exp: Qi, + expm1: Qi, + floor: Qi, + fround: Qi, + hypot: Qi, + imul: Qi, + log: Qi, + log10: Qi, + log1p: Qi, + log2: Qi, + max: Qi, + min: Qi, + pow: Qi, + random: Qi, + round: Qi, + sign: Qi, + sin: Qi, + sinh: Qi, + sqrt: Qi, + tan: Qi, + tanh: Qi, + trunc: Qi + }, + NaN: Xi, + Number: { __proto__: null, [Gi]: Ki, isFinite: Qi, isInteger: Qi, isNaN: Qi, isSafeInteger: Qi, parseFloat: Qi, parseInt: Qi, prototype: Xi }, + Object: { + __proto__: null, + [Gi]: Ki, + create: Qi, + defineProperty: Ji, + defineProperties: Ji, + freeze: Ji, + getOwnPropertyDescriptor: Qi, + getOwnPropertyDescriptors: Qi, + getOwnPropertyNames: Qi, + getOwnPropertySymbols: Qi, + getPrototypeOf: Qi, + hasOwn: Qi, + is: Qi, + isExtensible: Qi, + isFrozen: Qi, + isSealed: Qi, + keys: Qi, + fromEntries: Xi, + entries: Zi, + values: Zi, + prototype: Xi + }, + parseFloat: Qi, + parseInt: Qi, + Promise: { __proto__: null, [Gi]: Yi, all: Xi, allSettled: Xi, any: Xi, prototype: Xi, race: Xi, reject: Xi, resolve: Xi }, + propertyIsEnumerable: Xi, + Proxy: Xi, + RangeError: tn, + ReferenceError: tn, + Reflect: Xi, + RegExp: tn, + Set: sn, + SharedArrayBuffer: en, + String: { __proto__: null, [Gi]: Ki, fromCharCode: Qi, fromCodePoint: Qi, prototype: Xi, raw: Qi }, + Symbol: { + __proto__: null, + [Gi]: Ki, + for: Qi, + keyFor: Qi, + prototype: Xi, + toStringTag: { __proto__: null, [Gi]: { deoptimizeArgumentsOnCall: Ui, getLiteralValue: () => Y, hasEffectsWhenCalled: Hi } } + }, + SyntaxError: tn, + toLocaleString: Xi, + toString: Xi, + TypeError: tn, + Uint16Array: nn, + Uint32Array: nn, + Uint8Array: nn, + Uint8ClampedArray: nn, + unescape: Qi, + URIError: tn, + valueOf: Xi, + WeakMap: sn, + WeakSet: sn, + clearInterval: en, + clearTimeout: en, + console: { + __proto__: null, + [Gi]: Yi, + assert: en, + clear: en, + count: en, + countReset: en, + debug: en, + dir: en, + dirxml: en, + error: en, + exception: en, + group: en, + groupCollapsed: en, + groupEnd: en, + info: en, + log: en, + table: en, + time: en, + timeEnd: en, + timeLog: en, + trace: en, + warn: en + }, + Intl: { __proto__: null, [Gi]: Yi, Collator: rn, DateTimeFormat: rn, DisplayNames: rn, ListFormat: rn, Locale: rn, NumberFormat: rn, PluralRules: rn, RelativeTimeFormat: rn, Segmenter: rn }, + setInterval: en, + setTimeout: en, + TextDecoder: en, + TextEncoder: en, + URL: { __proto__: null, [Gi]: Yi, prototype: Xi, canParse: Qi }, + URLSearchParams: en, + AbortController: en, + AbortSignal: en, + addEventListener: Xi, + alert: Xi, + AnalyserNode: en, + Animation: en, + AnimationEvent: en, + applicationCache: Xi, + ApplicationCache: en, + ApplicationCacheErrorEvent: en, + atob: Xi, + Attr: en, + Audio: en, + AudioBuffer: en, + AudioBufferSourceNode: en, + AudioContext: en, + AudioDestinationNode: en, + AudioListener: en, + AudioNode: en, + AudioParam: en, + AudioProcessingEvent: en, + AudioScheduledSourceNode: en, + AudioWorkletNode: en, + BarProp: en, + BaseAudioContext: en, + BatteryManager: en, + BeforeUnloadEvent: en, + BiquadFilterNode: en, + Blob: en, + BlobEvent: en, + blur: Xi, + BroadcastChannel: en, + btoa: Xi, + ByteLengthQueuingStrategy: en, + Cache: en, + caches: Xi, + CacheStorage: en, + cancelAnimationFrame: Xi, + cancelIdleCallback: Xi, + CanvasCaptureMediaStreamTrack: en, + CanvasGradient: en, + CanvasPattern: en, + CanvasRenderingContext2D: en, + ChannelMergerNode: en, + ChannelSplitterNode: en, + CharacterData: en, + clientInformation: Xi, + ClipboardEvent: en, + close: Xi, + closed: Xi, + CloseEvent: en, + Comment: en, + CompositionEvent: en, + confirm: Xi, + ConstantSourceNode: en, + ConvolverNode: en, + CountQueuingStrategy: en, + createImageBitmap: Xi, + Credential: en, + CredentialsContainer: en, + crypto: Xi, + Crypto: en, + CryptoKey: en, + CSS: en, + CSSConditionRule: en, + CSSFontFaceRule: en, + CSSGroupingRule: en, + CSSImportRule: en, + CSSKeyframeRule: en, + CSSKeyframesRule: en, + CSSMediaRule: en, + CSSNamespaceRule: en, + CSSPageRule: en, + CSSRule: en, + CSSRuleList: en, + CSSStyleDeclaration: en, + CSSStyleRule: en, + CSSStyleSheet: en, + CSSSupportsRule: en, + CustomElementRegistry: en, + customElements: Xi, + CustomEvent: { + __proto__: null, + [Gi]: { + deoptimizeArgumentsOnCall({ args: e }) { + e[2]?.deoptimizePath(['detail']) + }, + getLiteralValue: Wi, + hasEffectsWhenCalled: qi + }, + prototype: Xi + }, + DataTransfer: en, + DataTransferItem: en, + DataTransferItemList: en, + defaultstatus: Xi, + defaultStatus: Xi, + DelayNode: en, + DeviceMotionEvent: en, + DeviceOrientationEvent: en, + devicePixelRatio: Xi, + dispatchEvent: Xi, + document: Xi, + Document: en, + DocumentFragment: en, + DocumentType: en, + DOMError: en, + DOMException: en, + DOMImplementation: en, + DOMMatrix: en, + DOMMatrixReadOnly: en, + DOMParser: en, + DOMPoint: en, + DOMPointReadOnly: en, + DOMQuad: en, + DOMRect: en, + DOMRectReadOnly: en, + DOMStringList: en, + DOMStringMap: en, + DOMTokenList: en, + DragEvent: en, + DynamicsCompressorNode: en, + Element: en, + ErrorEvent: en, + Event: en, + EventSource: en, + EventTarget: en, + external: Xi, + fetch: Xi, + File: en, + FileList: en, + FileReader: en, + find: Xi, + focus: Xi, + FocusEvent: en, + FontFace: en, + FontFaceSetLoadEvent: en, + FormData: en, + frames: Xi, + GainNode: en, + Gamepad: en, + GamepadButton: en, + GamepadEvent: en, + getComputedStyle: Xi, + getSelection: Xi, + HashChangeEvent: en, + Headers: en, + history: Xi, + History: en, + HTMLAllCollection: en, + HTMLAnchorElement: en, + HTMLAreaElement: en, + HTMLAudioElement: en, + HTMLBaseElement: en, + HTMLBodyElement: en, + HTMLBRElement: en, + HTMLButtonElement: en, + HTMLCanvasElement: en, + HTMLCollection: en, + HTMLContentElement: en, + HTMLDataElement: en, + HTMLDataListElement: en, + HTMLDetailsElement: en, + HTMLDialogElement: en, + HTMLDirectoryElement: en, + HTMLDivElement: en, + HTMLDListElement: en, + HTMLDocument: en, + HTMLElement: en, + HTMLEmbedElement: en, + HTMLFieldSetElement: en, + HTMLFontElement: en, + HTMLFormControlsCollection: en, + HTMLFormElement: en, + HTMLFrameElement: en, + HTMLFrameSetElement: en, + HTMLHeadElement: en, + HTMLHeadingElement: en, + HTMLHRElement: en, + HTMLHtmlElement: en, + HTMLIFrameElement: en, + HTMLImageElement: en, + HTMLInputElement: en, + HTMLLabelElement: en, + HTMLLegendElement: en, + HTMLLIElement: en, + HTMLLinkElement: en, + HTMLMapElement: en, + HTMLMarqueeElement: en, + HTMLMediaElement: en, + HTMLMenuElement: en, + HTMLMetaElement: en, + HTMLMeterElement: en, + HTMLModElement: en, + HTMLObjectElement: en, + HTMLOListElement: en, + HTMLOptGroupElement: en, + HTMLOptionElement: en, + HTMLOptionsCollection: en, + HTMLOutputElement: en, + HTMLParagraphElement: en, + HTMLParamElement: en, + HTMLPictureElement: en, + HTMLPreElement: en, + HTMLProgressElement: en, + HTMLQuoteElement: en, + HTMLScriptElement: en, + HTMLSelectElement: en, + HTMLShadowElement: en, + HTMLSlotElement: en, + HTMLSourceElement: en, + HTMLSpanElement: en, + HTMLStyleElement: en, + HTMLTableCaptionElement: en, + HTMLTableCellElement: en, + HTMLTableColElement: en, + HTMLTableElement: en, + HTMLTableRowElement: en, + HTMLTableSectionElement: en, + HTMLTemplateElement: en, + HTMLTextAreaElement: en, + HTMLTimeElement: en, + HTMLTitleElement: en, + HTMLTrackElement: en, + HTMLUListElement: en, + HTMLUnknownElement: en, + HTMLVideoElement: en, + IDBCursor: en, + IDBCursorWithValue: en, + IDBDatabase: en, + IDBFactory: en, + IDBIndex: en, + IDBKeyRange: en, + IDBObjectStore: en, + IDBOpenDBRequest: en, + IDBRequest: en, + IDBTransaction: en, + IDBVersionChangeEvent: en, + IdleDeadline: en, + IIRFilterNode: en, + Image: en, + ImageBitmap: en, + ImageBitmapRenderingContext: en, + ImageCapture: en, + ImageData: en, + indexedDB: Xi, + innerHeight: Xi, + innerWidth: Xi, + InputEvent: en, + IntersectionObserver: en, + IntersectionObserverEntry: en, + isSecureContext: Xi, + KeyboardEvent: en, + KeyframeEffect: en, + length: Xi, + localStorage: Xi, + location: Xi, + Location: en, + locationbar: Xi, + matchMedia: Xi, + MediaDeviceInfo: en, + MediaDevices: en, + MediaElementAudioSourceNode: en, + MediaEncryptedEvent: en, + MediaError: en, + MediaKeyMessageEvent: en, + MediaKeySession: en, + MediaKeyStatusMap: en, + MediaKeySystemAccess: en, + MediaList: en, + MediaQueryList: en, + MediaQueryListEvent: en, + MediaRecorder: en, + MediaSettingsRange: en, + MediaSource: en, + MediaStream: en, + MediaStreamAudioDestinationNode: en, + MediaStreamAudioSourceNode: en, + MediaStreamEvent: en, + MediaStreamTrack: en, + MediaStreamTrackEvent: en, + menubar: Xi, + MessageChannel: en, + MessageEvent: en, + MessagePort: en, + MIDIAccess: en, + MIDIConnectionEvent: en, + MIDIInput: en, + MIDIInputMap: en, + MIDIMessageEvent: en, + MIDIOutput: en, + MIDIOutputMap: en, + MIDIPort: en, + MimeType: en, + MimeTypeArray: en, + MouseEvent: en, + moveBy: Xi, + moveTo: Xi, + MutationEvent: en, + MutationObserver: en, + MutationRecord: en, + name: Xi, + NamedNodeMap: en, + NavigationPreloadManager: en, + navigator: Xi, + Navigator: en, + NetworkInformation: en, + Node: en, + NodeFilter: Xi, + NodeIterator: en, + NodeList: en, + Notification: en, + OfflineAudioCompletionEvent: en, + OfflineAudioContext: en, + offscreenBuffering: Xi, + OffscreenCanvas: en, + open: Xi, + openDatabase: Xi, + Option: en, + origin: Xi, + OscillatorNode: en, + outerHeight: Xi, + outerWidth: Xi, + PageTransitionEvent: en, + pageXOffset: Xi, + pageYOffset: Xi, + PannerNode: en, + parent: Xi, + Path2D: en, + PaymentAddress: en, + PaymentRequest: en, + PaymentRequestUpdateEvent: en, + PaymentResponse: en, + performance: Xi, + Performance: en, + PerformanceEntry: en, + PerformanceLongTaskTiming: en, + PerformanceMark: en, + PerformanceMeasure: en, + PerformanceNavigation: en, + PerformanceNavigationTiming: en, + PerformanceObserver: en, + PerformanceObserverEntryList: en, + PerformancePaintTiming: en, + PerformanceResourceTiming: en, + PerformanceTiming: en, + PeriodicWave: en, + Permissions: en, + PermissionStatus: en, + personalbar: Xi, + PhotoCapabilities: en, + Plugin: en, + PluginArray: en, + PointerEvent: en, + PopStateEvent: en, + postMessage: Xi, + Presentation: en, + PresentationAvailability: en, + PresentationConnection: en, + PresentationConnectionAvailableEvent: en, + PresentationConnectionCloseEvent: en, + PresentationConnectionList: en, + PresentationReceiver: en, + PresentationRequest: en, + print: Xi, + ProcessingInstruction: en, + ProgressEvent: en, + PromiseRejectionEvent: en, + prompt: Xi, + PushManager: en, + PushSubscription: en, + PushSubscriptionOptions: en, + queueMicrotask: Xi, + RadioNodeList: en, + Range: en, + ReadableStream: en, + RemotePlayback: en, + removeEventListener: Xi, + Request: en, + requestAnimationFrame: Xi, + requestIdleCallback: Xi, + resizeBy: Xi, + ResizeObserver: en, + ResizeObserverEntry: en, + resizeTo: Xi, + Response: en, + RTCCertificate: en, + RTCDataChannel: en, + RTCDataChannelEvent: en, + RTCDtlsTransport: en, + RTCIceCandidate: en, + RTCIceTransport: en, + RTCPeerConnection: en, + RTCPeerConnectionIceEvent: en, + RTCRtpReceiver: en, + RTCRtpSender: en, + RTCSctpTransport: en, + RTCSessionDescription: en, + RTCStatsReport: en, + RTCTrackEvent: en, + screen: Xi, + Screen: en, + screenLeft: Xi, + ScreenOrientation: en, + screenTop: Xi, + screenX: Xi, + screenY: Xi, + ScriptProcessorNode: en, + scroll: Xi, + scrollbars: Xi, + scrollBy: Xi, + scrollTo: Xi, + scrollX: Xi, + scrollY: Xi, + SecurityPolicyViolationEvent: en, + Selection: en, + ServiceWorker: en, + ServiceWorkerContainer: en, + ServiceWorkerRegistration: en, + sessionStorage: Xi, + ShadowRoot: en, + SharedWorker: en, + SourceBuffer: en, + SourceBufferList: en, + speechSynthesis: Xi, + SpeechSynthesisEvent: en, + SpeechSynthesisUtterance: en, + StaticRange: en, + status: Xi, + statusbar: Xi, + StereoPannerNode: en, + stop: Xi, + Storage: en, + StorageEvent: en, + StorageManager: en, + styleMedia: Xi, + StyleSheet: en, + StyleSheetList: en, + SubtleCrypto: en, + SVGAElement: en, + SVGAngle: en, + SVGAnimatedAngle: en, + SVGAnimatedBoolean: en, + SVGAnimatedEnumeration: en, + SVGAnimatedInteger: en, + SVGAnimatedLength: en, + SVGAnimatedLengthList: en, + SVGAnimatedNumber: en, + SVGAnimatedNumberList: en, + SVGAnimatedPreserveAspectRatio: en, + SVGAnimatedRect: en, + SVGAnimatedString: en, + SVGAnimatedTransformList: en, + SVGAnimateElement: en, + SVGAnimateMotionElement: en, + SVGAnimateTransformElement: en, + SVGAnimationElement: en, + SVGCircleElement: en, + SVGClipPathElement: en, + SVGComponentTransferFunctionElement: en, + SVGDefsElement: en, + SVGDescElement: en, + SVGDiscardElement: en, + SVGElement: en, + SVGEllipseElement: en, + SVGFEBlendElement: en, + SVGFEColorMatrixElement: en, + SVGFEComponentTransferElement: en, + SVGFECompositeElement: en, + SVGFEConvolveMatrixElement: en, + SVGFEDiffuseLightingElement: en, + SVGFEDisplacementMapElement: en, + SVGFEDistantLightElement: en, + SVGFEDropShadowElement: en, + SVGFEFloodElement: en, + SVGFEFuncAElement: en, + SVGFEFuncBElement: en, + SVGFEFuncGElement: en, + SVGFEFuncRElement: en, + SVGFEGaussianBlurElement: en, + SVGFEImageElement: en, + SVGFEMergeElement: en, + SVGFEMergeNodeElement: en, + SVGFEMorphologyElement: en, + SVGFEOffsetElement: en, + SVGFEPointLightElement: en, + SVGFESpecularLightingElement: en, + SVGFESpotLightElement: en, + SVGFETileElement: en, + SVGFETurbulenceElement: en, + SVGFilterElement: en, + SVGForeignObjectElement: en, + SVGGElement: en, + SVGGeometryElement: en, + SVGGradientElement: en, + SVGGraphicsElement: en, + SVGImageElement: en, + SVGLength: en, + SVGLengthList: en, + SVGLinearGradientElement: en, + SVGLineElement: en, + SVGMarkerElement: en, + SVGMaskElement: en, + SVGMatrix: en, + SVGMetadataElement: en, + SVGMPathElement: en, + SVGNumber: en, + SVGNumberList: en, + SVGPathElement: en, + SVGPatternElement: en, + SVGPoint: en, + SVGPointList: en, + SVGPolygonElement: en, + SVGPolylineElement: en, + SVGPreserveAspectRatio: en, + SVGRadialGradientElement: en, + SVGRect: en, + SVGRectElement: en, + SVGScriptElement: en, + SVGSetElement: en, + SVGStopElement: en, + SVGStringList: en, + SVGStyleElement: en, + SVGSVGElement: en, + SVGSwitchElement: en, + SVGSymbolElement: en, + SVGTextContentElement: en, + SVGTextElement: en, + SVGTextPathElement: en, + SVGTextPositioningElement: en, + SVGTitleElement: en, + SVGTransform: en, + SVGTransformList: en, + SVGTSpanElement: en, + SVGUnitTypes: en, + SVGUseElement: en, + SVGViewElement: en, + TaskAttributionTiming: en, + Text: en, + TextEvent: en, + TextMetrics: en, + TextTrack: en, + TextTrackCue: en, + TextTrackCueList: en, + TextTrackList: en, + TimeRanges: en, + toolbar: Xi, + top: Xi, + Touch: en, + TouchEvent: en, + TouchList: en, + TrackEvent: en, + TransitionEvent: en, + TreeWalker: en, + UIEvent: en, + ValidityState: en, + visualViewport: Xi, + VisualViewport: en, + VTTCue: en, + WaveShaperNode: en, + WebAssembly: Xi, + WebGL2RenderingContext: en, + WebGLActiveInfo: en, + WebGLBuffer: en, + WebGLContextEvent: en, + WebGLFramebuffer: en, + WebGLProgram: en, + WebGLQuery: en, + WebGLRenderbuffer: en, + WebGLRenderingContext: en, + WebGLSampler: en, + WebGLShader: en, + WebGLShaderPrecisionFormat: en, + WebGLSync: en, + WebGLTexture: en, + WebGLTransformFeedback: en, + WebGLUniformLocation: en, + WebGLVertexArrayObject: en, + WebSocket: en, + WheelEvent: en, + Window: en, + Worker: en, + WritableStream: en, + XMLDocument: en, + XMLHttpRequest: en, + XMLHttpRequestEventTarget: en, + XMLHttpRequestUpload: en, + XMLSerializer: en, + XPathEvaluator: en, + XPathExpression: en, + XPathResult: en, + XSLTProcessor: en + } +for (const e of ['window', 'global', 'self', 'globalThis']) on[e] = on +function an(e) { + let t = on + for (const s of e) { + if ('string' != typeof s) return null + if (((t = t[s]), !t)) return null + } + return t[Gi] +} +class ln extends pe { + constructor() { + super(...arguments), (this.isReassigned = !0) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + switch (e.type) { + case 0: + case 1: + return void (an([this.name, ...t].slice(0, -1)) || super.deoptimizeArgumentsOnInteractionAtPath(e, t, s)) + case 2: { + const i = an([this.name, ...t]) + return void (i ? i.deoptimizeArgumentsOnCall(e) : super.deoptimizeArgumentsOnInteractionAtPath(e, t, s)) + } + } + } + getLiteralValueAtPath(e, t, s) { + const i = an([this.name, ...e]) + return i ? i.getLiteralValue() : ne + } + hasEffectsOnInteractionAtPath(e, t, s) { + switch (t.type) { + case 0: + return 0 === e.length ? 'undefined' !== this.name && !an([this.name]) : !an([this.name, ...e].slice(0, -1)) + case 1: + return !0 + case 2: { + const i = an([this.name, ...e]) + return !i || i.hasEffectsWhenCalled(t, s) + } + } + } +} +const cn = { __proto__: null, class: !0, const: !0, let: !0, var: !0 } +class hn extends ei { + constructor() { + super(...arguments), (this.variable = null), (this.isTDZAccess = null) + } + addExportedVariables(e, t) { + t.has(this.variable) && e.push(this.variable) + } + bind() { + !this.variable && Fi(this, this.parent) && ((this.variable = this.scope.findVariable(this.name)), this.variable.addReference(this)) + } + declare(e, t) { + let s + const { treeshake: i } = this.context.options + switch (e) { + case 'var': + ;(s = this.scope.addDeclaration(this, this.context, t, !0)), i && i.correctVarValueBeforeDeclaration && s.markInitializersForDeoptimization() + break + case 'function': + case 'let': + case 'const': + case 'class': + s = this.scope.addDeclaration(this, this.context, t, !1) + break + case 'parameter': + s = this.scope.addParameterDeclaration(this) + break + default: + throw new Error(`Internal Error: Unexpected identifier kind ${e}.`) + } + return (s.kind = e), [(this.variable = s)] + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.variable.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + 0 !== e.length || this.scope.contains(this.name) || this.disallowImportReassignment(), this.variable?.deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.getVariableRespectingTDZ().getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + const [n, r] = this.getVariableRespectingTDZ().getReturnExpressionWhenCalledAtPath(e, t, s, i) + return [n, r || this.isPureFunction(e)] + } + hasEffects(e) { + return ( + this.deoptimized || this.applyDeoptimizations(), + !(!this.isPossibleTDZ() || 'var' === this.variable.kind) || + (this.context.options.treeshake.unknownGlobalSideEffects && this.variable instanceof ln && !this.isPureFunction(X) && this.variable.hasEffectsOnInteractionAtPath(X, he, e)) + ) + } + hasEffectsOnInteractionAtPath(e, t, s) { + switch (t.type) { + case 0: + return null !== this.variable && !this.isPureFunction(e) && this.getVariableRespectingTDZ().hasEffectsOnInteractionAtPath(e, t, s) + case 1: + return (e.length > 0 ? this.getVariableRespectingTDZ() : this.variable).hasEffectsOnInteractionAtPath(e, t, s) + case 2: + return !this.isPureFunction(e) && this.getVariableRespectingTDZ().hasEffectsOnInteractionAtPath(e, t, s) + } + } + include() { + this.deoptimized || this.applyDeoptimizations(), this.included || ((this.included = !0), null !== this.variable && this.context.includeVariableInModule(this.variable)) + } + includeCallArguments(e, t) { + this.variable.includeCallArguments(e, t) + } + isPossibleTDZ() { + if (null !== this.isTDZAccess) return this.isTDZAccess + if (!(this.variable instanceof Pi && this.variable.kind && this.variable.kind in cn && this.variable.module === this.context.module)) return (this.isTDZAccess = !1) + let e + return this.variable.declarations && 1 === this.variable.declarations.length && (e = this.variable.declarations[0]) && this.start < e.start && un(this) === un(e) + ? (this.isTDZAccess = !0) + : this.variable.initReached + ? (this.isTDZAccess = !1) + : (this.isTDZAccess = !0) + } + markDeclarationReached() { + this.variable.initReached = !0 + } + render(e, { snippets: { getPropertyAccess: t }, useOriginalName: s }, { renderedParentType: i, isCalleeOfRenderedParent: n, isShorthandProperty: r } = me) { + if (this.variable) { + const o = this.variable.getName(t, s) + o !== this.name && (e.overwrite(this.start, this.end, o, { contentOnly: !0, storeName: !0 }), r && e.prependRight(this.start, `${this.name}: `)), + 'eval' === o && i === Ps && n && e.appendRight(this.start, '0, ') + } + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.variable instanceof Pi && (this.variable.consolidateInitializers(), this.context.requestTreeshakingPass()) + } + disallowImportReassignment() { + return this.context.error(Vt(this.name, this.context.module.id), this.start) + } + getVariableRespectingTDZ() { + return this.isPossibleTDZ() ? ae : this.variable + } + isPureFunction(e) { + let t = this.context.manualPureFunctions[this.name] + for (const s of e) { + if (!t) return !1 + if (t[ji]) return !0 + t = t[s] + } + return t?.[ji] + } +} +function un(e) { + for (; e && !/^Program|Function/.test(e.type); ) e = e.parent + return e +} +function dn(e, t, s, i) { + if ((t.remove(s, i), e.annotations)) + for (const i of e.annotations) { + if (!(i.start < s)) return + t.remove(i.start, i.end) + } +} +function pn(e, t) { + if ((e.annotations || e.parent.type !== Rs || (e = e.parent), e.annotations)) for (const s of e.annotations) t.remove(s.start, s.end) +} +const fn = { isNoStatement: !0 } +function mn(e, t, s = 0) { + let i, n + for (i = e.indexOf(t, s); ; ) { + if (-1 === (s = e.indexOf('/', s)) || s >= i) return i + ;(n = e.charCodeAt(++s)), ++s, (s = 47 === n ? e.indexOf('\n', s) + 1 : e.indexOf('*/', s) + 2) > i && (i = e.indexOf(t, s)) + } +} +const gn = /\S/g +function yn(e, t) { + gn.lastIndex = t + return gn.exec(e).index +} +function xn(e) { + let t, + s, + i = 0 + for (t = e.indexOf('\n', i); ; ) { + if (((i = e.indexOf('/', i)), -1 === i || i > t)) return [t, t + 1] + if (((s = e.charCodeAt(i + 1)), 47 === s)) return [i, t + 1] + ;(i = e.indexOf('*/', i + 3) + 2), i > t && (t = e.indexOf('\n', i)) + } +} +function En(e, t, s, i, n) { + let r, + o, + a, + l, + c = e[0], + h = !c.included || c.needsBoundaries + h && (l = s + xn(t.original.slice(s, c.start))[1]) + for (let s = 1; s <= e.length; s++) + (r = c), + (o = l), + (a = h), + (c = e[s]), + (h = void 0 !== c && (!c.included || c.needsBoundaries)), + a || h ? ((l = r.end + xn(t.original.slice(r.end, void 0 === c ? i : c.start))[1]), r.included ? (a ? r.render(t, n, { end: l, start: o }) : r.render(t, n)) : dn(r, t, o, l)) : r.render(t, n) +} +function bn(e, t, s, i) { + const n = [] + let r, + o, + a, + l, + c = s - 1 + for (const i of e) { + for ( + void 0 !== r && (c = r.end + mn(t.original.slice(r.end, i.start), ',')), o = a = c + 1 + xn(t.original.slice(c + 1, i.start))[1]; + (l = t.original.charCodeAt(o)), 32 === l || 9 === l || 10 === l || 13 === l; + + ) + o++ + void 0 !== r && n.push({ contentEnd: a, end: o, node: r, separator: c, start: s }), (r = i), (s = o) + } + return n.push({ contentEnd: i, end: i, node: r, separator: null, start: s }), n +} +function vn(e, t, s) { + for (;;) { + const [i, n] = xn(e.original.slice(t, s)) + if (-1 === i) break + e.remove(t + i, (t += n)) + } +} +class Sn extends Vi { + addDeclaration(e, t, s, i) { + if (i) { + const n = this.parent.addDeclaration(e, t, s, i) + return n.markInitializersForDeoptimization(), n + } + return super.addDeclaration(e, t, s, !1) + } +} +class An extends ei { + initialise() { + var e, t + this.directive && + 'use strict' !== this.directive && + this.parent.type === Ts && + this.context.log( + Ae, + ((e = this.directive), { code: 'MODULE_LEVEL_DIRECTIVE', id: (t = this.context.module.id), message: `Module level directives cause errors when bundled, "${e}" in "${V(t)}" was ignored.` }), + this.start + ) + } + render(e, t) { + super.render(e, t), this.included && this.insertSemicolon(e) + } + shouldBeIncluded(e) { + return this.directive && 'use strict' !== this.directive ? this.parent.type !== Ts : super.shouldBeIncluded(e) + } + applyDeoptimizations() {} +} +class kn extends ei { + constructor() { + super(...arguments), (this.directlyIncluded = !1) + } + addImplicitReturnExpressionToScope() { + const e = this.body[this.body.length - 1] + ;(e && 'ReturnStatement' === e.type) || this.scope.addReturnExpression(ae) + } + createScope(e) { + this.scope = this.parent.preventChildBlockScope ? e : new Sn(e) + } + hasEffects(e) { + if (this.deoptimizeBody) return !0 + for (const t of this.body) { + if (e.brokenFlow) break + if (t.hasEffects(e)) return !0 + } + return !1 + } + include(e, t) { + if (!this.deoptimizeBody || !this.directlyIncluded) { + ;(this.included = !0), (this.directlyIncluded = !0), this.deoptimizeBody && (t = !0) + for (const s of this.body) (t || s.shouldBeIncluded(e)) && s.include(e, t) + } + } + initialise() { + const e = this.body[0] + this.deoptimizeBody = e instanceof An && 'use asm' === e.directive + } + render(e, t) { + this.body.length > 0 ? En(this.body, e, this.start + 1, this.end - 1, t) : super.render(e, t) + } +} +class In extends ei { + constructor() { + super(...arguments), (this.declarationInit = null) + } + addExportedVariables(e, t) { + this.argument.addExportedVariables(e, t) + } + declare(e, t) { + return (this.declarationInit = t), this.argument.declare(e, ae) + } + deoptimizePath(e) { + 0 === e.length && this.argument.deoptimizePath(X) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return e.length > 0 || this.argument.hasEffectsOnInteractionAtPath(X, t, s) + } + markDeclarationReached() { + this.argument.markDeclarationReached() + } + applyDeoptimizations() { + ;(this.deoptimized = !0), null !== this.declarationInit && (this.declarationInit.deoptimizePath([q, q]), this.context.requestTreeshakingPass()) + } +} +class wn extends ei { + constructor() { + super(...arguments), (this.objectEntity = null), (this.deoptimizedReturn = !1) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + if (2 === e.type) { + const { parameters: t } = this.scope, + { args: s } = e + let i = !1 + for (let e = 0; e < s.length - 1; e++) { + const n = this.params[e], + r = s[e + 1] + i || n instanceof In + ? ((i = !0), r.deoptimizePath(Q)) + : n instanceof hn + ? (t[e][0].addEntityToBeDeoptimized(r), this.addArgumentToBeDeoptimized(r)) + : n + ? r.deoptimizePath(Q) + : this.addArgumentToBeDeoptimized(r) + } + } else this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + if ((this.getObjectEntity().deoptimizePath(e), 1 === e.length && e[0] === q)) { + this.scope.getReturnExpression().deoptimizePath(Q) + for (const e of this.scope.parameters) for (const t of e) t.deoptimizePath(Q) + } + } + getLiteralValueAtPath(e, t, s) { + return this.getObjectEntity().getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return e.length > 0 + ? this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e, t, s, i) + : this.async + ? (this.deoptimizedReturn || ((this.deoptimizedReturn = !0), this.scope.getReturnExpression().deoptimizePath(Q), this.context.requestTreeshakingPass()), le) + : [this.scope.getReturnExpression(), !1] + } + hasEffectsOnInteractionAtPath(e, t, s) { + if (e.length > 0 || 2 !== t.type) return this.getObjectEntity().hasEffectsOnInteractionAtPath(e, t, s) + if (this.annotationNoSideEffects) return !1 + if (this.async) { + const { propertyReadSideEffects: e } = this.context.options.treeshake, + t = this.scope.getReturnExpression() + if (t.hasEffectsOnInteractionAtPath(['then'], de, s) || (e && ('always' === e || t.hasEffectsOnInteractionAtPath(['then'], he, s)))) return !0 + } + for (const e of this.params) if (e.hasEffects(s)) return !0 + return !1 + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), (this.included = !0) + const { brokenFlow: s } = e + ;(e.brokenFlow = !1), this.body.include(e, t), (e.brokenFlow = s) + } + includeCallArguments(e, t) { + this.scope.includeCallArguments(e, t) + } + initialise() { + this.scope.addParameterVariables( + this.params.map((e) => e.declare('parameter', ae)), + this.params[this.params.length - 1] instanceof In + ), + this.body instanceof kn ? this.body.addImplicitReturnExpressionToScope() : this.scope.addReturnExpression(this.body) + } + parseNode(e) { + e.body.type === ws && (this.body = new kn(e.body, this, this.scope.hoistedBodyVarScope)), super.parseNode(e) + } + addArgumentToBeDeoptimized(e) {} + applyDeoptimizations() {} +} +wn.prototype.preventChildBlockScope = !0 +class Pn extends wn { + constructor() { + super(...arguments), (this.objectEntity = null) + } + createScope(e) { + this.scope = new zi(e, this.context) + } + hasEffects() { + return this.deoptimized || this.applyDeoptimizations(), !1 + } + hasEffectsOnInteractionAtPath(e, t, s) { + if (super.hasEffectsOnInteractionAtPath(e, t, s)) return !0 + if (this.annotationNoSideEffects) return !1 + if (2 === t.type) { + const { ignore: e, brokenFlow: t } = s + if (((s.ignore = { breaks: !1, continues: !1, labels: new Set(), returnYield: !0, this: !1 }), this.body.hasEffects(s))) return !0 + ;(s.ignore = e), (s.brokenFlow = t) + } + return !1 + } + include(e, t) { + super.include(e, t) + for (const s of this.params) s instanceof hn || s.include(e, t) + } + getObjectEntity() { + return null !== this.objectEntity ? this.objectEntity : (this.objectEntity = new li([], ui)) + } +} +function Cn(e, { exportNamesByVariable: t, snippets: { _: s, getObject: i, getPropertyAccess: n } }, r = '') { + if (1 === e.length && 1 === t.get(e[0]).length) { + const i = e[0] + return `exports('${t.get(i)}',${s}${i.getName(n)}${r})` + } + { + const s = [] + for (const i of e) for (const e of t.get(i)) s.push([e, i.getName(n) + r]) + return `exports(${i(s, { lineBreakIndent: null })})` + } +} +function $n(e, t, s, i, { exportNamesByVariable: n, snippets: { _: r } }) { + i.prependRight(t, `exports('${n.get(e)}',${r}`), i.appendLeft(s, ')') +} +function Nn(e, t, s, i, n, r) { + const { _: o, getPropertyAccess: a } = r.snippets + n.appendLeft(s, `,${o}${Cn([e], r)},${o}${e.getName(a)}`), i && (n.prependRight(t, '('), n.appendLeft(s, ')')) +} +class _n extends ei { + addExportedVariables(e, t) { + for (const s of this.properties) 'Property' === s.type ? s.value.addExportedVariables(e, t) : s.argument.addExportedVariables(e, t) + } + declare(e, t) { + const s = [] + for (const i of this.properties) s.push(...i.declare(e, t)) + return s + } + deoptimizePath(e) { + if (0 === e.length) for (const t of this.properties) t.deoptimizePath(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + for (const e of this.properties) if (e.hasEffectsOnInteractionAtPath(X, t, s)) return !0 + return !1 + } + markDeclarationReached() { + for (const e of this.properties) e.markDeclarationReached() + } +} +class Rn extends Pi { + constructor(e) { + super('arguments', null, ae, e), (this.deoptimizedArguments = []) + } + addArgumentToBeDeoptimized(e) { + this.included ? e.deoptimizePath(Q) : this.deoptimizedArguments.push(e) + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return 0 !== t || e.length > 1 + } + include() { + super.include() + for (const e of this.deoptimizedArguments) e.deoptimizePath(Q) + this.deoptimizedArguments.length = 0 + } +} +class Mn extends Ri { + constructor(e) { + super('this', null, e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return (s.replacedVariableInits.get(this) || ae).hasEffectsOnInteractionAtPath(e, t, s) + } +} +class On extends zi { + constructor(e, t) { + super(e, t), this.variables.set('arguments', (this.argumentsVariable = new Rn(t))), this.variables.set('this', (this.thisVariable = new Mn(t))) + } + findLexicalBoundary() { + return this + } + includeCallArguments(e, t) { + if ((super.includeCallArguments(e, t), this.argumentsVariable.included)) for (const s of t) s.included || s.include(e, !1) + } +} +class Dn extends wn { + constructor() { + super(...arguments), (this.objectEntity = null) + } + createScope(e) { + ;(this.scope = new On(e, this.context)), (this.constructedEntity = new li(Object.create(null), ui)), this.scope.thisVariable.addEntityToBeDeoptimized(this.constructedEntity) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + super.deoptimizeArgumentsOnInteractionAtPath(e, t, s), 2 === e.type && 0 === t.length && e.args[0] && this.scope.thisVariable.addEntityToBeDeoptimized(e.args[0]) + } + hasEffects(e) { + return this.deoptimized || this.applyDeoptimizations(), !this.annotationNoSideEffects && !!this.id?.hasEffects(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + if (super.hasEffectsOnInteractionAtPath(e, t, s)) return !0 + if (this.annotationNoSideEffects) return !1 + if (2 === t.type) { + const e = s.replacedVariableInits.get(this.scope.thisVariable) + s.replacedVariableInits.set(this.scope.thisVariable, t.withNew ? this.constructedEntity : ae) + const { brokenFlow: i, ignore: n, replacedVariableInits: r } = s + if (((s.ignore = { breaks: !1, continues: !1, labels: new Set(), returnYield: !0, this: t.withNew }), this.body.hasEffects(s))) return !0 + ;(s.brokenFlow = i), e ? r.set(this.scope.thisVariable, e) : r.delete(this.scope.thisVariable), (s.ignore = n) + } + return !1 + } + include(e, t) { + super.include(e, t), this.id?.include() + const s = this.scope.argumentsVariable.included + for (const i of this.params) (i instanceof hn && !s) || i.include(e, t) + } + initialise() { + super.initialise(), this.id?.declare('function', this) + } + addArgumentToBeDeoptimized(e) { + this.scope.argumentsVariable.addArgumentToBeDeoptimized(e) + } + getObjectEntity() { + return null !== this.objectEntity ? this.objectEntity : (this.objectEntity = new li([{ key: 'prototype', kind: 'init', property: new li([], ui) }], ui)) + } +} +class Ln extends ei { + hasEffects() { + return this.deoptimized || this.applyDeoptimizations(), !0 + } + include(e, t) { + if ((this.deoptimized || this.applyDeoptimizations(), !this.included)) { + this.included = !0 + e: if (!this.context.usesTopLevelAwait) { + let e = this.parent + do { + if (e instanceof Dn || e instanceof Pn) break e + } while ((e = e.parent)) + this.context.usesTopLevelAwait = !0 + } + } + this.argument.include(e, t) + } +} +const Tn = { + '!=': (e, t) => e != t, + '!==': (e, t) => e !== t, + '%': (e, t) => e % t, + '&': (e, t) => e & t, + '*': (e, t) => e * t, + '**': (e, t) => e ** t, + '+': (e, t) => e + t, + '-': (e, t) => e - t, + '/': (e, t) => e / t, + '<': (e, t) => e < t, + '<<': (e, t) => e << t, + '<=': (e, t) => e <= t, + '==': (e, t) => e == t, + '===': (e, t) => e === t, + '>': (e, t) => e > t, + '>=': (e, t) => e >= t, + '>>': (e, t) => e >> t, + '>>>': (e, t) => e >>> t, + '^': (e, t) => e ^ t, + '|': (e, t) => e | t +} +function Vn(e, t, s) { + if (s.arguments.length > 0) + if (s.arguments[s.arguments.length - 1].included) for (const i of s.arguments) i.render(e, t) + else { + let i = s.arguments.length - 2 + for (; i >= 0 && !s.arguments[i].included; ) i-- + if (i >= 0) { + for (let n = 0; n <= i; n++) s.arguments[n].render(e, t) + e.remove(mn(e.original, ',', s.arguments[i].end), s.end - 1) + } else e.remove(mn(e.original, '(', s.callee.end) + 1, s.end - 1) + } +} +class Bn extends ei { + deoptimizeArgumentsOnInteractionAtPath() {} + getLiteralValueAtPath(e) { + return e.length > 0 || (null === this.value && 110 !== this.context.code.charCodeAt(this.start)) || 'bigint' == typeof this.value || 47 === this.context.code.charCodeAt(this.start) + ? ne + : this.value + } + getReturnExpressionWhenCalledAtPath(e) { + return 1 !== e.length ? le : bs(this.members, e[0]) + } + hasEffectsOnInteractionAtPath(e, t, s) { + switch (t.type) { + case 0: + return e.length > (null === this.value ? 0 : 1) + case 1: + return !0 + case 2: + return !!(this.included && this.value instanceof RegExp && (this.value.global || this.value.sticky)) || 1 !== e.length || Es(this.members, e[0], t, s) + } + } + initialise() { + this.members = (function (e) { + if (e instanceof RegExp) return ys + switch (typeof e) { + case 'boolean': + return ms + case 'number': + return gs + case 'string': + return xs + } + return Object.create(null) + })(this.value) + } + parseNode(e) { + ;(this.value = e.value), (this.regex = e.regex), super.parseNode(e) + } + render(e) { + 'string' == typeof this.value && e.indentExclusionRanges.push([this.start + 1, this.end - 1]) + } +} +function zn(e) { + return e.computed + ? (function (e) { + if (e instanceof Bn) return String(e.value) + return null + })(e.property) + : e.property.name +} +function Fn(e) { + const t = e.propertyKey, + s = e.object + if ('string' == typeof t) { + if (s instanceof hn) + return [ + { key: s.name, pos: s.start }, + { key: t, pos: e.property.start } + ] + if (s instanceof jn) { + const i = Fn(s) + return i && [...i, { key: t, pos: e.property.start }] + } + } + return null +} +class jn extends ei { + constructor() { + super(...arguments), (this.variable = null), (this.assignmentDeoptimized = !1), (this.bound = !1), (this.expressionsToBeDeoptimized = []), (this.isUndefined = !1) + } + bind() { + this.bound = !0 + const e = Fn(this), + t = e && this.scope.findVariable(e[0].key) + if (t?.isNamespace) { + const s = Un(t, e.slice(1), this.context) + s + ? 'undefined' === s + ? (this.isUndefined = !0) + : ((this.variable = s), + this.scope.addNamespaceMemberAccess( + (function (e) { + let t = e[0].key + for (let s = 1; s < e.length; s++) t += '.' + e[s].key + return t + })(e), + s + )) + : super.bind() + } else super.bind() + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.variable + ? this.variable.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + : this.isUndefined || (t.length < 7 ? this.object.deoptimizeArgumentsOnInteractionAtPath(e, [this.getPropertyKey(), ...t], s) : ce(e)) + } + deoptimizeCache() { + const { expressionsToBeDeoptimized: e, object: t } = this + ;(this.expressionsToBeDeoptimized = ye), (this.propertyKey = q), t.deoptimizePath(Q) + for (const t of e) t.deoptimizeCache() + } + deoptimizePath(e) { + if ((0 === e.length && this.disallowNamespaceReassignment(), this.variable)) this.variable.deoptimizePath(e) + else if (!this.isUndefined && e.length < 7) { + const t = this.getPropertyKey() + this.object.deoptimizePath([t === q ? H : t, ...e]) + } + } + getLiteralValueAtPath(e, t, s) { + return this.variable + ? this.variable.getLiteralValueAtPath(e, t, s) + : this.isUndefined + ? void 0 + : this.propertyKey !== q && e.length < 7 + ? (this.expressionsToBeDeoptimized.push(s), this.object.getLiteralValueAtPath([this.getPropertyKey(), ...e], t, s)) + : ne + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.variable + ? this.variable.getReturnExpressionWhenCalledAtPath(e, t, s, i) + : this.isUndefined + ? [rs, !1] + : this.propertyKey !== q && e.length < 7 + ? (this.expressionsToBeDeoptimized.push(i), this.object.getReturnExpressionWhenCalledAtPath([this.getPropertyKey(), ...e], t, s, i)) + : le + } + hasEffects(e) { + return this.deoptimized || this.applyDeoptimizations(), this.property.hasEffects(e) || this.object.hasEffects(e) || this.hasAccessEffect(e) + } + hasEffectsAsAssignmentTarget(e, t) { + return ( + t && !this.deoptimized && this.applyDeoptimizations(), + this.assignmentDeoptimized || this.applyAssignmentDeoptimization(), + this.property.hasEffects(e) || this.object.hasEffects(e) || (t && this.hasAccessEffect(e)) || this.hasEffectsOnInteractionAtPath(X, this.assignmentInteraction, e) + ) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.variable + ? this.variable.hasEffectsOnInteractionAtPath(e, t, s) + : !!this.isUndefined || !(e.length < 7) || this.object.hasEffectsOnInteractionAtPath([this.getPropertyKey(), ...e], t, s) + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), this.includeProperties(e, t) + } + includeAsAssignmentTarget(e, t, s) { + this.assignmentDeoptimized || this.applyAssignmentDeoptimization(), s ? this.include(e, t) : this.includeProperties(e, t) + } + includeCallArguments(e, t) { + this.variable ? this.variable.includeCallArguments(e, t) : super.includeCallArguments(e, t) + } + initialise() { + ;(this.propertyKey = zn(this)), (this.accessInteraction = { args: [this.object], type: 0 }) + } + isSkippedAsOptional(e) { + return !this.variable && !this.isUndefined && (this.object.isSkippedAsOptional?.(e) || (this.optional && null == this.object.getLiteralValueAtPath(X, se, e))) + } + render(e, t, { renderedParentType: s, isCalleeOfRenderedParent: i, renderedSurroundingElement: n } = me) { + if (this.variable || this.isUndefined) { + const { + snippets: { getPropertyAccess: n } + } = t + let r = this.variable ? this.variable.getName(n) : 'undefined' + s && i && (r = '0, ' + r), e.overwrite(this.start, this.end, r, { contentOnly: !0, storeName: !0 }) + } else s && i && e.appendRight(this.start, '0, '), this.object.render(e, t, { renderedSurroundingElement: n }), this.property.render(e, t) + } + setAssignedValue(e) { + this.assignmentInteraction = { args: [this.object, e], type: 1 } + } + applyDeoptimizations() { + this.deoptimized = !0 + const { propertyReadSideEffects: e } = this.context.options.treeshake + if (this.bound && e && !this.variable && !this.isUndefined) { + const e = this.getPropertyKey() + this.object.deoptimizeArgumentsOnInteractionAtPath(this.accessInteraction, [e], se), this.context.requestTreeshakingPass() + } + } + applyAssignmentDeoptimization() { + this.assignmentDeoptimized = !0 + const { propertyReadSideEffects: e } = this.context.options.treeshake + this.bound && + e && + !this.variable && + !this.isUndefined && + (this.object.deoptimizeArgumentsOnInteractionAtPath(this.assignmentInteraction, [this.getPropertyKey()], se), this.context.requestTreeshakingPass()) + } + disallowNamespaceReassignment() { + if (this.object instanceof hn) { + this.scope.findVariable(this.object.name).isNamespace && + (this.variable && this.context.includeVariableInModule(this.variable), this.context.log(Ae, Vt(this.object.name, this.context.module.id), this.start)) + } + } + getPropertyKey() { + if (null === this.propertyKey) { + this.propertyKey = q + const e = this.property.getLiteralValueAtPath(X, se, this) + return (this.propertyKey = e === Y ? e : 'symbol' == typeof e ? q : String(e)) + } + return this.propertyKey + } + hasAccessEffect(e) { + const { propertyReadSideEffects: t } = this.context.options.treeshake + return !(this.variable || this.isUndefined) && t && ('always' === t || this.object.hasEffectsOnInteractionAtPath([this.getPropertyKey()], this.accessInteraction, e)) + } + includeProperties(e, t) { + this.included || ((this.included = !0), this.variable && this.context.includeVariableInModule(this.variable)), this.object.include(e, t), this.property.include(e, t) + } +} +function Un(e, t, s) { + if (0 === t.length) return e + if (!e.isNamespace || e instanceof fe) return null + const i = t[0].key, + n = e.context.traceExport(i) + if (!n) { + if (1 === t.length) { + const n = e.context.fileName + return s.log(Ae, Ut(i, s.module.id, n), t[0].pos), 'undefined' + } + return null + } + return Un(n, t.slice(1), s) +} +class Gn extends ei { + constructor() { + super(...arguments), (this.returnExpression = null), (this.deoptimizableDependentExpressions = []), (this.expressionsToBeDeoptimized = new Set()) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + const { args: i } = e, + [n, r] = this.getReturnExpression(s) + if (r) return + const o = i.filter((e) => !!e && e !== ae) + if (0 !== o.length) + if (n === ae) for (const e of o) e.deoptimizePath(Q) + else + s.withTrackedEntityAtPath( + t, + n, + () => { + for (const e of o) this.expressionsToBeDeoptimized.add(e) + n.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + }, + null + ) + } + deoptimizeCache() { + if (this.returnExpression?.[0] !== ae) { + this.returnExpression = le + const { deoptimizableDependentExpressions: e, expressionsToBeDeoptimized: t } = this + ;(this.expressionsToBeDeoptimized = xe), (this.deoptimizableDependentExpressions = ye) + for (const t of e) t.deoptimizeCache() + for (const e of t) e.deoptimizePath(Q) + } + } + deoptimizePath(e) { + if (0 === e.length || this.context.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(e, this)) return + const [t] = this.getReturnExpression() + t !== ae && t.deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + const [i] = this.getReturnExpression(t) + return i === ae ? ne : t.withTrackedEntityAtPath(e, i, () => (this.deoptimizableDependentExpressions.push(s), i.getLiteralValueAtPath(e, t, s)), ne) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + const n = this.getReturnExpression(s) + return n[0] === ae + ? n + : s.withTrackedEntityAtPath( + e, + n, + () => { + this.deoptimizableDependentExpressions.push(i) + const [r, o] = n[0].getReturnExpressionWhenCalledAtPath(e, t, s, i) + return [r, o || n[1]] + }, + le + ) + } + hasEffectsOnInteractionAtPath(e, t, s) { + const { type: i } = t + if (2 === i) { + const { args: i, withNew: n } = t + if ((n ? s.instantiated : s.called).trackEntityAtPathAndGetIfTracked(e, i, this)) return !1 + } else if ((1 === i ? s.assigned : s.accessed).trackEntityAtPathAndGetIfTracked(e, this)) return !1 + const [n, r] = this.getReturnExpression() + return (1 === i || !r) && n.hasEffectsOnInteractionAtPath(e, t, s) + } +} +class Wn extends Gn { + bind() { + if ((super.bind(), this.callee instanceof hn)) { + this.scope.findVariable(this.callee.name).isNamespace && this.context.log(Ae, Ot(this.callee.name), this.start), + 'eval' === this.callee.name && + this.context.log( + Ae, + { + code: 'EVAL', + id: (e = this.context.module.id), + message: `Use of eval in "${V(e)}" is strongly discouraged as it poses security risks and may cause issues with minification.`, + url: De('troubleshooting/#avoiding-eval') + }, + this.start + ) + } + var e + this.interaction = { args: [this.callee instanceof jn && !this.callee.variable ? this.callee.object : null, ...this.arguments], type: 2, withNew: !1 } + } + hasEffects(e) { + try { + for (const t of this.arguments) if (t.hasEffects(e)) return !0 + return !this.annotationPure && (this.callee.hasEffects(e) || this.callee.hasEffectsOnInteractionAtPath(X, this.interaction, e)) + } finally { + this.deoptimized || this.applyDeoptimizations() + } + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), + t + ? (super.include(e, t), t === Js && this.callee instanceof hn && this.callee.variable && this.callee.variable.markCalledFromTryStatement()) + : ((this.included = !0), this.callee.include(e, !1)), + this.callee.includeCallArguments(e, this.arguments) + } + isSkippedAsOptional(e) { + return this.callee.isSkippedAsOptional?.(e) || (this.optional && null == this.callee.getLiteralValueAtPath(X, se, e)) + } + render(e, t, { renderedSurroundingElement: s } = me) { + this.callee.render(e, t, { isCalleeOfRenderedParent: !0, renderedSurroundingElement: s }), Vn(e, t, this) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction, X, se), this.context.requestTreeshakingPass() + } + getReturnExpression(e = se) { + return null === this.returnExpression + ? ((this.returnExpression = le), (this.returnExpression = this.callee.getReturnExpressionWhenCalledAtPath(X, this.interaction, e, this))) + : this.returnExpression + } +} +class qn extends Bi { + addDeclaration(e, t, s, i) { + const n = this.variables.get(e.name) + return n ? (this.parent.addDeclaration(e, t, rs, i), n.addDeclaration(e, s), n) : this.parent.addDeclaration(e, t, s, i) + } +} +class Hn extends Vi { + constructor(e, t, s) { + super(e), this.variables.set('this', (this.thisVariable = new Pi('this', null, t, s))), (this.instanceScope = new Vi(this)), this.instanceScope.variables.set('this', new Mn(s)) + } + findLexicalBoundary() { + return this + } +} +class Kn extends ei { + constructor() { + super(...arguments), (this.accessedValue = null) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + return (0 === e.type && 'get' === this.kind && 0 === t.length) || (1 === e.type && 'set' === this.kind && 0 === t.length) + ? this.value.deoptimizeArgumentsOnInteractionAtPath({ args: e.args, type: 2, withNew: !1 }, X, s) + : void this.getAccessedValue()[0].deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeCache() {} + deoptimizePath(e) { + this.getAccessedValue()[0].deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.getAccessedValue()[0].getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.getAccessedValue()[0].getReturnExpressionWhenCalledAtPath(e, t, s, i) + } + hasEffects(e) { + return this.key.hasEffects(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return ('get' === this.kind && 0 === t.type && 0 === e.length) || ('set' === this.kind && 1 === t.type) + ? this.value.hasEffectsOnInteractionAtPath(X, { args: t.args, type: 2, withNew: !1 }, s) + : this.getAccessedValue()[0].hasEffectsOnInteractionAtPath(e, t, s) + } + applyDeoptimizations() {} + getAccessedValue() { + return null === this.accessedValue + ? 'get' === this.kind + ? ((this.accessedValue = le), (this.accessedValue = this.value.getReturnExpressionWhenCalledAtPath(X, de, se, this))) + : (this.accessedValue = [this.value, !1]) + : this.accessedValue + } +} +class Yn extends Kn { + applyDeoptimizations() {} +} +class Xn extends oe { + constructor(e, t) { + super(), (this.object = e), (this.key = t) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.object.deoptimizeArgumentsOnInteractionAtPath(e, [this.key, ...t], s) + } + deoptimizePath(e) { + this.object.deoptimizePath([this.key, ...e]) + } + getLiteralValueAtPath(e, t, s) { + return this.object.getLiteralValueAtPath([this.key, ...e], t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.object.getReturnExpressionWhenCalledAtPath([this.key, ...e], t, s, i) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.object.hasEffectsOnInteractionAtPath([this.key, ...e], t, s) + } +} +class Qn extends ei { + constructor() { + super(...arguments), (this.objectEntity = null) + } + createScope(e) { + this.scope = new Vi(e) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeCache() { + this.getObjectEntity().deoptimizeAllProperties() + } + deoptimizePath(e) { + this.getObjectEntity().deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.getObjectEntity().getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e, t, s, i) + } + hasEffects(e) { + this.deoptimized || this.applyDeoptimizations() + const t = this.superClass?.hasEffects(e) || this.body.hasEffects(e) + return this.id?.markDeclarationReached(), t || super.hasEffects(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 2 === t.type && 0 === e.length + ? !t.withNew || (null === this.classConstructor ? this.superClass?.hasEffectsOnInteractionAtPath(e, t, s) : this.classConstructor.hasEffectsOnInteractionAtPath(e, t, s)) || !1 + : this.getObjectEntity().hasEffectsOnInteractionAtPath(e, t, s) + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), (this.included = !0), this.superClass?.include(e, t), this.body.include(e, t), this.id && (this.id.markDeclarationReached(), this.id.include()) + } + initialise() { + this.id?.declare('class', this) + for (const e of this.body.body) if (e instanceof Yn && 'constructor' === e.kind) return void (this.classConstructor = e) + this.classConstructor = null + } + applyDeoptimizations() { + this.deoptimized = !0 + for (const e of this.body.body) e.static || (e instanceof Yn && 'constructor' === e.kind) || e.deoptimizePath(Q) + this.context.requestTreeshakingPass() + } + getObjectEntity() { + if (null !== this.objectEntity) return this.objectEntity + const e = [], + t = [] + for (const s of this.body.body) { + const i = s.static ? e : t, + n = s.kind + if (i === t && !n) continue + const r = 'set' === n || 'get' === n ? n : 'init' + let o + if (s.computed) { + const e = s.key.getLiteralValueAtPath(X, se, this) + if ('symbol' == typeof e) { + i.push({ key: q, kind: r, property: s }) + continue + } + o = String(e) + } else o = s.key instanceof hn ? s.key.name : String(s.key.value) + i.push({ key: o, kind: r, property: s }) + } + return e.unshift({ key: 'prototype', kind: 'init', property: new li(t, this.superClass ? new Xn(this.superClass, 'prototype') : ui) }), (this.objectEntity = new li(e, this.superClass || ui)) + } +} +class Zn extends Qn { + initialise() { + super.initialise(), null !== this.id && (this.id.variable.isId = !0) + } + parseNode(e) { + null !== e.id && (this.id = new hn(e.id, this, this.scope.parent)), super.parseNode(e) + } + render(e, t) { + const { + exportNamesByVariable: s, + format: i, + snippets: { _: n, getPropertyAccess: r } + } = t + if (this.id) { + const { variable: o, name: a } = this.id + 'system' === i && s.has(o) && e.appendLeft(this.end, `${n}${Cn([o], t)};`) + const l = o.getName(r) + if (l !== a) + return this.superClass?.render(e, t), this.body.render(e, { ...t, useOriginalName: (e) => e === o }), e.prependRight(this.start, `let ${l}${n}=${n}`), void e.prependLeft(this.end, ';') + } + super.render(e, t) + } + applyDeoptimizations() { + super.applyDeoptimizations() + const { id: e, scope: t } = this + if (e) { + const { name: s, variable: i } = e + for (const e of t.accessedOutsideVariables.values()) e !== i && e.forbidName(s) + } + } +} +class Jn extends Qn { + render(e, t, { renderedSurroundingElement: s } = me) { + super.render(e, t), s === Rs && (e.appendRight(this.start, '('), e.prependLeft(this.end, ')')) + } +} +class er extends oe { + constructor(e) { + super(), (this.expressions = e), (this.included = !1) + } + deoptimizePath(e) { + for (const t of this.expressions) t.deoptimizePath(e) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return [new er(this.expressions.map((n) => n.getReturnExpressionWhenCalledAtPath(e, t, s, i)[0])), !1] + } + hasEffectsOnInteractionAtPath(e, t, s) { + for (const i of this.expressions) if (i.hasEffectsOnInteractionAtPath(e, t, s)) return !0 + return !1 + } +} +function tr(e, t) { + const { brokenFlow: s, hasBreak: i, hasContinue: n, ignore: r } = e, + { breaks: o, continues: a } = r + return ( + (r.breaks = !0), + (r.continues = !0), + (e.hasBreak = !1), + (e.hasContinue = !1), + !!t.hasEffects(e) || ((r.breaks = o), (r.continues = a), (e.hasBreak = i), (e.hasContinue = n), (e.brokenFlow = s), !1) + ) +} +function sr(e, t, s) { + const { brokenFlow: i, hasBreak: n, hasContinue: r } = e + ;(e.hasBreak = !1), (e.hasContinue = !1), t.include(e, s, { asSingleStatement: !0 }), (e.hasBreak = n), (e.hasContinue = r), (e.brokenFlow = i) +} +class ir extends ei { + hasEffects() { + return !1 + } + initialise() { + this.context.addExport(this) + } + render(e, t, s) { + e.remove(s.start, s.end) + } + applyDeoptimizations() {} +} +ir.prototype.needsBoundaries = !0 +class nr extends Dn { + initialise() { + super.initialise(), null !== this.id && (this.id.variable.isId = !0) + } + parseNode(e) { + null !== e.id && (this.id = new hn(e.id, this, this.scope.parent)), super.parseNode(e) + } +} +class rr extends ei { + include(e, t) { + super.include(e, t), t && this.context.includeVariableInModule(this.variable) + } + initialise() { + const e = this.declaration + ;(this.declarationName = (e.id && e.id.name) || this.declaration.name), + (this.variable = this.scope.addExportDefaultDeclaration(this.declarationName || this.context.getModuleName(), this, this.context)), + this.context.addExport(this) + } + render(e, t, s) { + const { start: i, end: n } = s, + r = (function (e, t) { + return yn(e, mn(e, 'default', t) + 7) + })(e.original, this.start) + if (this.declaration instanceof nr) + this.renderNamedDeclaration( + e, + r, + null === this.declaration.id + ? (function (e, t) { + const s = mn(e, 'function', t) + 8 + e = e.slice(s, mn(e, '(', s)) + const i = mn(e, '*') + return -1 === i ? s : s + i + 1 + })(e.original, r) + : null, + t + ) + else if (this.declaration instanceof Zn) this.renderNamedDeclaration(e, r, null === this.declaration.id ? mn(e.original, 'class', i) + 5 : null, t) + else { + if (this.variable.getOriginalVariable() !== this.variable) return void dn(this, e, i, n) + if (!this.variable.included) + return e.remove(this.start, r), this.declaration.render(e, t, { renderedSurroundingElement: Rs }), void (';' !== e.original[this.end - 1] && e.appendLeft(this.end, ';')) + this.renderVariableDeclaration(e, r, t) + } + this.declaration.render(e, t) + } + applyDeoptimizations() {} + renderNamedDeclaration(e, t, s, i) { + const { + exportNamesByVariable: n, + format: r, + snippets: { getPropertyAccess: o } + } = i, + a = this.variable.getName(o) + e.remove(this.start, t), null !== s && e.appendLeft(s, ` ${a}`), 'system' === r && this.declaration instanceof Zn && n.has(this.variable) && e.appendLeft(this.end, ` ${Cn([this.variable], i)};`) + } + renderVariableDeclaration(e, t, { format: s, exportNamesByVariable: i, snippets: { cnst: n, getPropertyAccess: r } }) { + const o = 59 === e.original.charCodeAt(this.end - 1), + a = 'system' === s && i.get(this.variable) + a + ? (e.overwrite(this.start, t, `${n} ${this.variable.getName(r)} = exports('${a[0]}', `), e.appendRight(o ? this.end - 1 : this.end, ')' + (o ? '' : ';'))) + : (e.overwrite(this.start, t, `${n} ${this.variable.getName(r)} = `), o || e.appendLeft(this.end, ';')) + } +} +rr.prototype.needsBoundaries = !0 +class or extends ei { + bind() { + this.declaration?.bind() + } + hasEffects(e) { + return !!this.declaration?.hasEffects(e) + } + initialise() { + this.context.addExport(this) + } + render(e, t, s) { + const { start: i, end: n } = s + null === this.declaration ? e.remove(i, n) : (e.remove(this.start, this.declaration.start), this.declaration.render(e, t, { end: n, start: i })) + } + applyDeoptimizations() {} +} +or.prototype.needsBoundaries = !0 +class ar extends Dn { + render(e, t, { renderedSurroundingElement: s } = me) { + super.render(e, t), s === Rs && (e.appendRight(this.start, '('), e.prependLeft(this.end, ')')) + } +} +class lr extends Sn { + constructor() { + super(...arguments), (this.hoistedDeclarations = []) + } + addDeclaration(e, t, s, i) { + return this.hoistedDeclarations.push(e), super.addDeclaration(e, t, s, i) + } +} +const cr = Symbol('unset') +class hr extends ei { + constructor() { + super(...arguments), (this.testValue = cr) + } + deoptimizeCache() { + this.testValue = ne + } + hasEffects(e) { + if (this.test.hasEffects(e)) return !0 + const t = this.getTestValue() + if ('symbol' == typeof t) { + const { brokenFlow: t } = e + if (this.consequent.hasEffects(e)) return !0 + const s = e.brokenFlow + return (e.brokenFlow = t), null === this.alternate ? !1 : !!this.alternate.hasEffects(e) || ((e.brokenFlow = e.brokenFlow && s), !1) + } + return t ? this.consequent.hasEffects(e) : !!this.alternate?.hasEffects(e) + } + include(e, t) { + if (((this.included = !0), t)) this.includeRecursively(t, e) + else { + const t = this.getTestValue() + 'symbol' == typeof t ? this.includeUnknownTest(e) : this.includeKnownTest(e, t) + } + } + parseNode(e) { + ;(this.consequentScope = new lr(this.scope)), + (this.consequent = new (this.context.getNodeConstructor(e.consequent.type))(e.consequent, this, this.consequentScope)), + e.alternate && ((this.alternateScope = new lr(this.scope)), (this.alternate = new (this.context.getNodeConstructor(e.alternate.type))(e.alternate, this, this.alternateScope))), + super.parseNode(e) + } + render(e, t) { + const { + snippets: { getPropertyAccess: s } + } = t, + i = this.getTestValue(), + n = [], + r = this.test.included, + o = !this.context.options.treeshake + r ? this.test.render(e, t) : e.remove(this.start, this.consequent.start), + this.consequent.included && (o || 'symbol' == typeof i || i) + ? this.consequent.render(e, t) + : (e.overwrite(this.consequent.start, this.consequent.end, r ? ';' : ''), n.push(...this.consequentScope.hoistedDeclarations)), + this.alternate && + (!this.alternate.included || (!o && 'symbol' != typeof i && i) + ? (r && this.shouldKeepAlternateBranch() ? e.overwrite(this.alternate.start, this.end, ';') : e.remove(this.consequent.end, this.end), n.push(...this.alternateScope.hoistedDeclarations)) + : (r ? 101 === e.original.charCodeAt(this.alternate.start - 1) && e.prependLeft(this.alternate.start, ' ') : e.remove(this.consequent.end, this.alternate.start), + this.alternate.render(e, t))), + this.renderHoistedDeclarations(n, e, s) + } + applyDeoptimizations() {} + getTestValue() { + return this.testValue === cr ? (this.testValue = this.test.getLiteralValueAtPath(X, se, this)) : this.testValue + } + includeKnownTest(e, t) { + this.test.shouldBeIncluded(e) && this.test.include(e, !1), + t && this.consequent.shouldBeIncluded(e) && this.consequent.include(e, !1, { asSingleStatement: !0 }), + !t && this.alternate?.shouldBeIncluded(e) && this.alternate.include(e, !1, { asSingleStatement: !0 }) + } + includeRecursively(e, t) { + this.test.include(t, e), this.consequent.include(t, e), this.alternate?.include(t, e) + } + includeUnknownTest(e) { + this.test.include(e, !1) + const { brokenFlow: t } = e + let s = !1 + this.consequent.shouldBeIncluded(e) && (this.consequent.include(e, !1, { asSingleStatement: !0 }), (s = e.brokenFlow), (e.brokenFlow = t)), + this.alternate?.shouldBeIncluded(e) && (this.alternate.include(e, !1, { asSingleStatement: !0 }), (e.brokenFlow = e.brokenFlow && s)) + } + renderHoistedDeclarations(e, t, s) { + const i = [ + ...new Set( + e.map((e) => { + const t = e.variable + return t.included ? t.getName(s) : '' + }) + ) + ] + .filter(Boolean) + .join(', ') + if (i) { + const e = this.parent.type, + s = e !== Ts && e !== ws + t.prependRight(this.start, `${s ? '{ ' : ''}var ${i}; `), s && t.appendLeft(this.end, ' }') + } + } + shouldKeepAlternateBranch() { + let e = this.parent + do { + if (e instanceof hr && e.alternate) return !0 + if (e instanceof kn) return !1 + e = e.parent + } while (e) + return !1 + } +} +class ur extends ei { + bind() {} + hasEffects() { + return !1 + } + initialise() { + this.context.addImport(this) + } + render(e, t, s) { + e.remove(s.start, s.end) + } + applyDeoptimizations() {} +} +ur.prototype.needsBoundaries = !0 +class dr extends ei { + applyDeoptimizations() {} +} +const pr = '_interopDefault', + fr = '_interopDefaultCompat', + mr = '_interopNamespace', + gr = '_interopNamespaceCompat', + yr = '_interopNamespaceDefault', + xr = '_interopNamespaceDefaultOnly', + Er = '_mergeNamespaces', + br = '_documentCurrentScript', + vr = { auto: pr, compat: fr, default: null, defaultOnly: null, esModule: null }, + Sr = (e, t) => 'esModule' === e || (t && ('auto' === e || 'compat' === e)), + Ar = { auto: mr, compat: gr, default: yr, defaultOnly: xr, esModule: null }, + kr = (e, t) => 'esModule' !== e && Sr(e, t), + Ir = (e, t, s, i, n, r, o) => { + const a = new Set(e) + for (const e of Br) t.has(e) && a.add(e) + return Br.map((e) => (a.has(e) ? wr[e](s, i, n, r, o, a) : '')).join('') + }, + wr = { + [br]: (e, { _: t, n: s }) => `var${t}${br}${t}=${t}typeof${t}document${t}!==${t}'undefined'${t}?${t}document.currentScript${t}:${t}null;${s}`, + [fr](e, t, s) { + const { _: i, getDirectReturnFunction: n, n: r } = t, + [o, a] = n(['e'], { functionReturn: !0, lineBreakIndent: null, name: fr }) + return `${o}${$r(t)}${i}?${i}${s ? Pr(t) : Cr(t)}${a}${r}${r}` + }, + [pr](e, t, s) { + const { _: i, getDirectReturnFunction: n, n: r } = t, + [o, a] = n(['e'], { functionReturn: !0, lineBreakIndent: null, name: pr }) + return `${o}e${i}&&${i}e.__esModule${i}?${i}${s ? Pr(t) : Cr(t)}${a}${r}${r}` + }, + [gr](e, t, s, i, n, r) { + const { _: o, getDirectReturnFunction: a, n: l } = t + if (r.has(yr)) { + const [e, s] = a(['e'], { functionReturn: !0, lineBreakIndent: null, name: gr }) + return `${e}${$r(t)}${o}?${o}e${o}:${o}${yr}(e)${s}${l}${l}` + } + return `function ${gr}(e)${o}{${l}${e}if${o}(${$r(t)})${o}return e;${l}` + Nr(e, e, t, s, i, n) + `}${l}${l}` + }, + [xr](e, t, s, i, n) { + const { getDirectReturnFunction: r, getObject: o, n: a } = t, + [l, c] = r(['e'], { functionReturn: !0, lineBreakIndent: null, name: xr }) + return `${l}${Tr( + i, + Vr( + n, + o( + [ + ['__proto__', 'null'], + ['default', 'e'] + ], + { lineBreakIndent: null } + ), + t + ) + )}${c}${a}${a}` + }, + [yr](e, t, s, i, n) { + const { _: r, n: o } = t + return `function ${yr}(e)${r}{${o}` + Nr(e, e, t, s, i, n) + `}${o}${o}` + }, + [mr](e, t, s, i, n, r) { + const { _: o, getDirectReturnFunction: a, n: l } = t + if (r.has(yr)) { + const [e, t] = a(['e'], { functionReturn: !0, lineBreakIndent: null, name: mr }) + return `${e}e${o}&&${o}e.__esModule${o}?${o}e${o}:${o}${yr}(e)${t}${l}${l}` + } + return `function ${mr}(e)${o}{${l}${e}if${o}(e${o}&&${o}e.__esModule)${o}return e;${l}` + Nr(e, e, t, s, i, n) + `}${l}${l}` + }, + [Er](e, t, s, i, n) { + const { _: r, cnst: o, n: a } = t, + l = 'var' === o && s + return `function ${Er}(n, m)${r}{${a}${e}${Rr( + `{${a}${e}${e}${e}if${r}(k${r}!==${r}'default'${r}&&${r}!(k in n))${r}{${a}` + (s ? (l ? Or : Dr) : Lr)(e, e + e + e + e, t) + `${e}${e}${e}}${a}` + `${e}${e}}`, + l, + e, + t + )}${a}${e}return ${Tr(i, Vr(n, 'n', t))};${a}}${a}${a}` + } + }, + Pr = ({ _: e, getObject: t }) => `e${e}:${e}${t([['default', 'e']], { lineBreakIndent: null })}`, + Cr = ({ _: e, getPropertyAccess: t }) => `e${t('default')}${e}:${e}e`, + $r = ({ _: e }) => `e${e}&&${e}typeof e${e}===${e}'object'${e}&&${e}'default'${e}in e`, + Nr = (e, t, s, i, n, r) => { + const { _: o, cnst: a, getObject: l, getPropertyAccess: c, n: h, s: u } = s, + d = `{${h}` + (i ? Mr : Lr)(e, t + e + e, s) + `${t}${e}}` + return `${t}${a} n${o}=${o}Object.create(null${r ? `,${o}{${o}[Symbol.toStringTag]:${o}${zr(l)}${o}}` : ''});${h}${t}if${o}(e)${o}{${h}${t}${e}${_r(d, !i, s)}${h}${t}}${h}${t}n${c( + 'default' + )}${o}=${o}e;${h}${t}return ${Tr(n, 'n')}${u}${h}` + }, + _r = (e, t, { _: s, cnst: i, getFunctionIntro: n, s: r }) => ('var' !== i || t ? `for${s}(${i} k in e)${s}${e}` : `Object.keys(e).forEach(${n(['k'], { isAsync: !1, name: null })}${e})${r}`), + Rr = (e, t, s, { _: i, cnst: n, getDirectReturnFunction: r, getFunctionIntro: o, n: a }) => { + if (t) { + const [t, n] = r(['e'], { functionReturn: !1, lineBreakIndent: { base: s, t: s }, name: null }) + return `m.forEach(${t}e${i}&&${i}typeof e${i}!==${i}'string'${i}&&${i}!Array.isArray(e)${i}&&${i}Object.keys(e).forEach(${o(['k'], { isAsync: !1, name: null })}${e})${n});` + } + return `for${i}(var i${i}=${i}0;${i}i${i}<${i}m.length;${i}i++)${i}{${a}${s}${s}${n} e${i}=${i}m[i];${a}${s}${s}if${i}(typeof e${i}!==${i}'string'${i}&&${i}!Array.isArray(e))${i}{${i}for${i}(${n} k in e)${i}${e}${i}}${a}${s}}` + }, + Mr = (e, t, s) => { + const { _: i, n: n } = s + return `${t}if${i}(k${i}!==${i}'default')${i}{${n}` + Or(e, t + e, s) + `${t}}${n}` + }, + Or = (e, t, { _: s, cnst: i, getDirectReturnFunction: n, n: r }) => { + const [o, a] = n([], { functionReturn: !0, lineBreakIndent: null, name: null }) + return `${t}${i} d${s}=${s}Object.getOwnPropertyDescriptor(e,${s}k);${r}${t}Object.defineProperty(n,${s}k,${s}d.get${s}?${s}d${s}:${s}{${r}${t}${e}enumerable:${s}true,${r}${t}${e}get:${s}${o}e[k]${a}${r}${t}});${r}` + }, + Dr = (e, t, { _: s, cnst: i, getDirectReturnFunction: n, n: r }) => { + const [o, a] = n([], { functionReturn: !0, lineBreakIndent: null, name: null }) + return `${t}${i} d${s}=${s}Object.getOwnPropertyDescriptor(e,${s}k);${r}${t}if${s}(d)${s}{${r}${t}${e}Object.defineProperty(n,${s}k,${s}d.get${s}?${s}d${s}:${s}{${r}${t}${e}${e}enumerable:${s}true,${r}${t}${e}${e}get:${s}${o}e[k]${a}${r}${t}${e}});${r}${t}}${r}` + }, + Lr = (e, t, { _: s, n: i }) => `${t}n[k]${s}=${s}e[k];${i}`, + Tr = (e, t) => (e ? `Object.freeze(${t})` : t), + Vr = (e, t, { _: s, getObject: i }) => (e ? `Object.defineProperty(${t},${s}Symbol.toStringTag,${s}${zr(i)})` : t), + Br = Object.keys(wr) +function zr(e) { + return e([['value', "'Module'"]], { lineBreakIndent: null }) +} +function Fr(e, t) { + return null !== e.renderBaseName && t.has(e) && e.isReassigned +} +class jr extends ei { + declareDeclarator(e) { + this.id.declare(e, this.init || rs) + } + deoptimizePath(e) { + this.id.deoptimizePath(e) + } + hasEffects(e) { + this.deoptimized || this.applyDeoptimizations() + const t = this.init?.hasEffects(e) + return this.id.markDeclarationReached(), t || this.id.hasEffects(e) + } + include(e, t) { + const { deoptimized: s, id: i, init: n } = this + s || this.applyDeoptimizations(), (this.included = !0), n?.include(e, t), i.markDeclarationReached(), (t || i.shouldBeIncluded(e)) && i.include(e, t) + } + render(e, t) { + const { + exportNamesByVariable: s, + snippets: { _: i, getPropertyAccess: n } + } = t, + { end: r, id: o, init: a, start: l } = this, + c = o.included + if (c) o.render(e, t) + else { + const t = mn(e.original, '=', o.end) + e.remove(l, yn(e.original, t + 1)) + } + if (a) { + if (o instanceof hn && a instanceof Jn && !a.id) { + o.variable.getName(n) !== o.name && e.appendLeft(a.start + 5, ` ${o.name}`) + } + a.render(e, t, c ? me : { renderedSurroundingElement: Rs }) + } else o instanceof hn && Fr(o.variable, s) && e.appendLeft(r, `${i}=${i}void 0`) + } + applyDeoptimizations() { + this.deoptimized = !0 + const { id: e, init: t } = this + if (t && e instanceof hn && t instanceof Jn && !t.id) { + const { name: s, variable: i } = e + for (const e of t.scope.accessedOutsideVariables.values()) e !== i && e.forbidName(s) + } + } +} +function Ur(e, t, s) { + return 'external' === t ? Ar[s(e instanceof Jt ? e.id : null)] : 'default' === t ? xr : null +} +const Gr = { amd: ['require'], cjs: ['require'], system: ['module'] } +function Wr(e) { + const t = [] + for (const s of e.properties) { + if ('RestElement' === s.type || s.computed || 'Identifier' !== s.key.type) return + t.push(s.key.name) + } + return t +} +class qr extends ei { + applyDeoptimizations() {} +} +const Hr = 'ROLLUP_FILE_URL_', + Kr = 'import' +const Yr = ['cjs', 'iife', 'umd'], + Xr = { amd: ['document', 'module', 'URL'], cjs: ['document', 'require', 'URL', br], es: [], iife: ['document', 'URL', br], system: ['module'], umd: ['document', 'require', 'URL', br] }, + Qr = { amd: ['document', 'require', 'URL'], cjs: ['document', 'require', 'URL'], es: [], iife: ['document', 'URL'], system: ['module', 'URL'], umd: ['document', 'require', 'URL'] }, + Zr = (e, t = 'URL') => `new ${t}(${e}).href`, + Jr = (e, t = !1) => Zr(`'${L(e)}', ${t ? "typeof document === 'undefined' ? location.href : " : ''}document.currentScript && document.currentScript.src || document.baseURI`), + eo = + (e) => + (t, { chunkId: s }) => { + const i = e(s) + return null === t ? `({ url: ${i} })` : 'url' === t ? i : 'undefined' + }, + to = (e) => `require('u' + 'rl').pathToFileURL(${e}).href`, + so = (e) => to(`__dirname + '/${e}'`), + io = (e, t = !1) => `${t ? "typeof document === 'undefined' ? location.href : " : ''}(${br} && ${br}.src || new URL('${L(e)}', document.baseURI).href)`, + no = { + amd: (e) => ('.' !== e[0] && (e = './' + e), Zr(`require.toUrl('${e}'), document.baseURI`)), + cjs: (e) => `(typeof document === 'undefined' ? ${so(e)} : ${Jr(e)})`, + es: (e) => Zr(`'${e}', import.meta.url`), + iife: (e) => Jr(e), + system: (e) => Zr(`'${e}', module.meta.url`), + umd: (e) => `(typeof document === 'undefined' && typeof location === 'undefined' ? ${so(e)} : ${Jr(e, !0)})` + }, + ro = { + amd: eo(() => Zr('module.uri, document.baseURI')), + cjs: eo((e) => `(typeof document === 'undefined' ? ${to('__filename')} : ${io(e)})`), + iife: eo((e) => io(e)), + system: (e, { snippets: { getPropertyAccess: t } }) => (null === e ? 'module.meta' : `module.meta${t(e)}`), + umd: eo((e) => `(typeof document === 'undefined' && typeof location === 'undefined' ? ${to('__filename')} : ${io(e, !0)})`) + } +class oo extends ei { + constructor() { + super(...arguments), (this.hasCachedEffect = null), (this.hasLoggedEffect = !1) + } + hasCachedEffects() { + return !!this.included && (null === this.hasCachedEffect ? (this.hasCachedEffect = this.hasEffects(is())) : this.hasCachedEffect) + } + hasEffects(e) { + for (const t of this.body) + if (t.hasEffects(e)) { + if (this.context.options.experimentalLogSideEffects && !this.hasLoggedEffect) { + this.hasLoggedEffect = !0 + const { code: e, log: s, module: i } = this.context + s(ke, Tt(e, i.id, Ce(e, t.start, { offsetLine: 1 })), t.start) + } + return (this.hasCachedEffect = !0) + } + return !1 + } + include(e, t) { + this.included = !0 + for (const s of this.body) (t || s.shouldBeIncluded(e)) && s.include(e, t) + } + render(e, t) { + let s = this.start + if ((e.original.startsWith('#!') && ((s = Math.min(e.original.indexOf('\n') + 1, this.end)), e.remove(0, s)), this.body.length > 0)) { + for (; '/' === e.original[s] && /[*/]/.test(e.original[s + 1]); ) { + const t = xn(e.original.slice(s, this.body[0].start)) + if (-1 === t[0]) break + s += t[1] + } + En(this.body, e, s, this.end, t) + } else super.render(e, t) + } + applyDeoptimizations() {} +} +class ao extends ei { + hasEffects(e) { + if (this.test?.hasEffects(e)) return !0 + for (const t of this.consequent) { + if (e.brokenFlow) break + if (t.hasEffects(e)) return !0 + } + return !1 + } + include(e, t) { + ;(this.included = !0), this.test?.include(e, t) + for (const s of this.consequent) (t || s.shouldBeIncluded(e)) && s.include(e, t) + } + render(e, t, s) { + if (this.consequent.length > 0) { + this.test && this.test.render(e, t) + const i = this.test ? this.test.end : mn(e.original, 'default', this.start) + 7, + n = mn(e.original, ':', i) + 1 + En(this.consequent, e, n, s.end, t) + } else super.render(e, t) + } +} +ao.prototype.needsBoundaries = !0 +class lo extends ei { + deoptimizeArgumentsOnInteractionAtPath() {} + getLiteralValueAtPath(e) { + return e.length > 0 || 1 !== this.quasis.length ? ne : this.quasis[0].value.cooked + } + getReturnExpressionWhenCalledAtPath(e) { + return 1 !== e.length ? le : bs(xs, e[0]) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 0 === t.type ? e.length > 1 : 2 !== t.type || 1 !== e.length || Es(xs, e[0], t, s) + } + render(e, t) { + e.indentExclusionRanges.push([this.start, this.end]), super.render(e, t) + } +} +class co extends pe { + constructor() { + super('undefined') + } + getLiteralValueAtPath() {} +} +class ho extends Pi { + constructor(e, t, s) { + super(e, t, t.declaration, s), (this.hasId = !1), (this.originalId = null), (this.originalVariable = null) + const i = t.declaration + ;(i instanceof nr || i instanceof Zn) && i.id ? ((this.hasId = !0), (this.originalId = i.id)) : i instanceof hn && (this.originalId = i) + } + addReference(e) { + this.hasId || (this.name = e.name) + } + forbidName(e) { + const t = this.getOriginalVariable() + t === this ? super.forbidName(e) : t.forbidName(e) + } + getAssignedVariableName() { + return (this.originalId && this.originalId.name) || null + } + getBaseVariableName() { + const e = this.getOriginalVariable() + return e === this ? super.getBaseVariableName() : e.getBaseVariableName() + } + getDirectOriginalVariable() { + return !this.originalId || + (!this.hasId && (this.originalId.isPossibleTDZ() || this.originalId.variable.isReassigned || this.originalId.variable instanceof co || 'syntheticNamespace' in this.originalId.variable)) + ? null + : this.originalId.variable + } + getName(e) { + const t = this.getOriginalVariable() + return t === this ? super.getName(e) : t.getName(e) + } + getOriginalVariable() { + if (this.originalVariable) return this.originalVariable + let e, + t = this + const s = new Set() + do { + s.add(t), (e = t), (t = e.getDirectOriginalVariable()) + } while (t instanceof ho && !s.has(t)) + return (this.originalVariable = t || e) + } +} +class uo extends Vi { + constructor(e, t) { + super(e), (this.context = t), this.variables.set('this', new Pi('this', null, rs, t)) + } + addExportDefaultDeclaration(e, t, s) { + const i = new ho(e, t, s) + return this.variables.set('default', i), i + } + addNamespaceMemberAccess() {} + deconflict(e, t, s) { + for (const i of this.children) i.deconflict(e, t, s) + } + findLexicalBoundary() { + return this + } + findVariable(e) { + const t = this.variables.get(e) || this.accessedOutsideVariables.get(e) + if (t) return t + const s = this.context.traceVariable(e) || this.parent.findVariable(e) + return s instanceof ln && this.accessedOutsideVariables.set(e, s), s + } +} +const po = { '!': (e) => !e, '+': (e) => +e, '-': (e) => -e, delete: () => ne, typeof: (e) => typeof e, void: () => {}, '~': (e) => ~e } +class fo extends ei { + deoptimizePath() { + for (const e of this.declarations) e.deoptimizePath(X) + } + hasEffectsOnInteractionAtPath() { + return !1 + } + include(e, t, { asSingleStatement: s } = me) { + this.included = !0 + for (const i of this.declarations) { + ;(t || i.shouldBeIncluded(e)) && i.include(e, t) + const { id: n, init: r } = i + s && n.include(e, t), r && n.included && !r.included && (n instanceof _n || n instanceof wi) && r.include(e, t) + } + } + initialise() { + for (const e of this.declarations) e.declareDeclarator(this.kind) + } + render(e, t, s = me) { + if ( + (function (e, t) { + for (const s of e) { + if (!s.id.included) return !1 + if (s.id.type === Os) { + if (t.has(s.id.variable)) return !1 + } else { + const e = [] + if ((s.id.addExportedVariables(e, t), e.length > 0)) return !1 + } + } + return !0 + })(this.declarations, t.exportNamesByVariable) + ) { + for (const s of this.declarations) s.render(e, t) + s.isNoStatement || 59 === e.original.charCodeAt(this.end - 1) || e.appendLeft(this.end, ';') + } else this.renderReplacedDeclarations(e, t) + } + applyDeoptimizations() {} + renderDeclarationEnd(e, t, s, i, n, r, o) { + 59 === e.original.charCodeAt(this.end - 1) && e.remove(this.end - 1, this.end), + (t += ';'), + null === s + ? e.appendLeft(n, t) + : (10 !== e.original.charCodeAt(i - 1) || (10 !== e.original.charCodeAt(this.end) && 13 !== e.original.charCodeAt(this.end)) || (i--, 13 === e.original.charCodeAt(i) && i--), + i === s + 1 ? e.overwrite(s, n, t) : (e.overwrite(s, s + 1, t), e.remove(i, n))), + r.length > 0 && e.appendLeft(n, ` ${Cn(r, o)};`) + } + renderReplacedDeclarations(e, t) { + const s = bn(this.declarations, e, this.start + this.kind.length, this.end - (59 === e.original.charCodeAt(this.end - 1) ? 1 : 0)) + let i, n + n = yn(e.original, this.start + this.kind.length) + let r = n - 1 + e.remove(this.start, r) + let o, + a, + l = !1, + c = !1, + h = '' + const u = [], + d = (function (e, t, s) { + let i = null + if ('system' === t.format) { + for (const { node: n } of e) + n.id instanceof hn && n.init && 0 === s.length && 1 === t.exportNamesByVariable.get(n.id.variable)?.length + ? ((i = n.id.variable), s.push(i)) + : n.id.addExportedVariables(s, t.exportNamesByVariable) + s.length > 1 ? (i = null) : i && (s.length = 0) + } + return i + })(s, t, u) + for (const { node: u, start: p, separator: f, contentEnd: m, end: g } of s) + if (u.included) { + if ((u.render(e, t), (o = ''), (a = ''), !u.id.included || (u.id instanceof hn && Fr(u.id.variable, t.exportNamesByVariable)))) c && (h += ';'), (l = !1) + else { + if (d && d === u.id.variable) { + const s = mn(e.original, '=', u.id.end) + $n(d, yn(e.original, s + 1), null === f ? m : f, e, t) + } + l ? (h += ',') : (c && (h += ';'), (o += `${this.kind} `), (l = !0)) + } + n === r + 1 ? e.overwrite(r, n, h + o) : (e.overwrite(r, r + 1, h), e.appendLeft(n, o)), (i = m), (n = g), (c = !0), (r = f), (h = '') + } else e.remove(p, g) + this.renderDeclarationEnd(e, h, r, i, n, u, t) + } +} +const mo = { + ArrayExpression: Ii, + ArrayPattern: wi, + ArrowFunctionExpression: Pn, + AssignmentExpression: class extends ei { + hasEffects(e) { + const { deoptimized: t, left: s, operator: i, right: n } = this + return t || this.applyDeoptimizations(), n.hasEffects(e) || s.hasEffectsAsAssignmentTarget(e, '=' !== i) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.right.hasEffectsOnInteractionAtPath(e, t, s) + } + include(e, t) { + const { deoptimized: s, left: i, right: n, operator: r } = this + s || this.applyDeoptimizations(), + (this.included = !0), + (t || '=' !== r || i.included || i.hasEffectsAsAssignmentTarget(is(), !1)) && i.includeAsAssignmentTarget(e, t, '=' !== r), + n.include(e, t) + } + initialise() { + this.left.setAssignedValue(this.right) + } + render(e, t, { preventASI: s, renderedParentType: i, renderedSurroundingElement: n } = me) { + const { left: r, right: o, start: a, end: l, parent: c } = this + if (r.included) r.render(e, t), o.render(e, t) + else { + const l = yn(e.original, mn(e.original, '=', r.end) + 1) + e.remove(a, l), s && vn(e, l, o.start), o.render(e, t, { renderedParentType: i || c.type, renderedSurroundingElement: n || c.type }) + } + if ('system' === t.format) + if (r instanceof hn) { + const s = r.variable, + i = t.exportNamesByVariable.get(s) + if (i) return void (1 === i.length ? $n(s, a, l, e, t) : Nn(s, a, l, c.type !== Rs, e, t)) + } else { + const s = [] + if ((r.addExportedVariables(s, t.exportNamesByVariable), s.length > 0)) + return void (function (e, t, s, i, n, r) { + const { _: o, getDirectReturnIifeLeft: a } = r.snippets + n.prependRight(t, a(['v'], `${Cn(e, r)},${o}v`, { needsArrowReturnParens: !0, needsWrappedFunction: i })), n.appendLeft(s, ')') + })(s, a, l, n === Rs, e, t) + } + r.included && r instanceof _n && (n === Rs || n === ks) && (e.appendRight(a, '('), e.prependLeft(l, ')')) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.left.deoptimizePath(X), this.right.deoptimizePath(Q), this.context.requestTreeshakingPass() + } + }, + AssignmentPattern: class extends ei { + addExportedVariables(e, t) { + this.left.addExportedVariables(e, t) + } + declare(e, t) { + return this.left.declare(e, t) + } + deoptimizePath(e) { + 0 === e.length && this.left.deoptimizePath(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return e.length > 0 || this.left.hasEffectsOnInteractionAtPath(X, t, s) + } + markDeclarationReached() { + this.left.markDeclarationReached() + } + render(e, t, { isShorthandProperty: s } = me) { + this.left.render(e, t, { isShorthandProperty: s }), this.right.render(e, t) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.left.deoptimizePath(X), this.right.deoptimizePath(Q), this.context.requestTreeshakingPass() + } + }, + AwaitExpression: Ln, + BinaryExpression: class extends ei { + deoptimizeCache() {} + getLiteralValueAtPath(e, t, s) { + if (e.length > 0) return ne + const i = this.left.getLiteralValueAtPath(X, t, s) + if ('symbol' == typeof i) return ne + const n = this.right.getLiteralValueAtPath(X, t, s) + if ('symbol' == typeof n) return ne + const r = Tn[this.operator] + return r ? r(i, n) : ne + } + hasEffects(e) { + return ('+' === this.operator && this.parent instanceof An && '' === this.left.getLiteralValueAtPath(X, se, this)) || super.hasEffects(e) + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return 0 !== t || e.length > 1 + } + render(e, t, { renderedSurroundingElement: s } = me) { + this.left.render(e, t, { renderedSurroundingElement: s }), this.right.render(e, t) + } + }, + BlockStatement: kn, + BreakStatement: class extends ei { + hasEffects(e) { + if (this.label) { + if (!e.ignore.labels.has(this.label.name)) return !0 + e.includedLabels.add(this.label.name) + } else { + if (!e.ignore.breaks) return !0 + e.hasBreak = !0 + } + return (e.brokenFlow = !0), !1 + } + include(e) { + ;(this.included = !0), this.label ? (this.label.include(), e.includedLabels.add(this.label.name)) : (e.hasBreak = !0), (e.brokenFlow = !0) + } + }, + CallExpression: Wn, + CatchClause: class extends ei { + createScope(e) { + this.scope = new qn(e, this.context) + } + parseNode(e) { + const { param: t } = e + t && ((this.param = new (this.context.getNodeConstructor(t.type))(t, this, this.scope)), this.param.declare('parameter', ae)), super.parseNode(e) + } + }, + ChainExpression: class extends ei { + deoptimizeCache() {} + getLiteralValueAtPath(e, t, s) { + if (!this.expression.isSkippedAsOptional(s)) return this.expression.getLiteralValueAtPath(e, t, s) + } + hasEffects(e) { + return !this.expression.isSkippedAsOptional(this) && this.expression.hasEffects(e) + } + }, + ClassBody: class extends ei { + createScope(e) { + this.scope = new Hn(e, this.parent, this.context) + } + include(e, t) { + ;(this.included = !0), this.context.includeVariableInModule(this.scope.thisVariable) + for (const s of this.body) s.include(e, t) + } + parseNode(e) { + const t = (this.body = []) + for (const s of e.body) t.push(new (this.context.getNodeConstructor(s.type))(s, this, s.static ? this.scope : this.scope.instanceScope)) + super.parseNode(e) + } + applyDeoptimizations() {} + }, + ClassDeclaration: Zn, + ClassExpression: Jn, + ConditionalExpression: class extends ei { + constructor() { + super(...arguments), (this.expressionsToBeDeoptimized = []), (this.isBranchResolutionAnalysed = !1), (this.usedBranch = null) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.consequent.deoptimizeArgumentsOnInteractionAtPath(e, t, s), this.alternate.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeCache() { + if (null !== this.usedBranch) { + const e = this.usedBranch === this.consequent ? this.alternate : this.consequent + ;(this.usedBranch = null), e.deoptimizePath(Q) + const { expressionsToBeDeoptimized: t } = this + this.expressionsToBeDeoptimized = ye + for (const e of t) e.deoptimizeCache() + } + } + deoptimizePath(e) { + const t = this.getUsedBranch() + t ? t.deoptimizePath(e) : (this.consequent.deoptimizePath(e), this.alternate.deoptimizePath(e)) + } + getLiteralValueAtPath(e, t, s) { + const i = this.getUsedBranch() + return i ? (this.expressionsToBeDeoptimized.push(s), i.getLiteralValueAtPath(e, t, s)) : ne + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + const n = this.getUsedBranch() + return n + ? (this.expressionsToBeDeoptimized.push(i), n.getReturnExpressionWhenCalledAtPath(e, t, s, i)) + : [new er([this.consequent.getReturnExpressionWhenCalledAtPath(e, t, s, i)[0], this.alternate.getReturnExpressionWhenCalledAtPath(e, t, s, i)[0]]), !1] + } + hasEffects(e) { + if (this.test.hasEffects(e)) return !0 + const t = this.getUsedBranch() + return t ? t.hasEffects(e) : this.consequent.hasEffects(e) || this.alternate.hasEffects(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + const i = this.getUsedBranch() + return i ? i.hasEffectsOnInteractionAtPath(e, t, s) : this.consequent.hasEffectsOnInteractionAtPath(e, t, s) || this.alternate.hasEffectsOnInteractionAtPath(e, t, s) + } + include(e, t) { + this.included = !0 + const s = this.getUsedBranch() + t || this.test.shouldBeIncluded(e) || null === s ? (this.test.include(e, t), this.consequent.include(e, t), this.alternate.include(e, t)) : s.include(e, t) + } + includeCallArguments(e, t) { + const s = this.getUsedBranch() + s ? s.includeCallArguments(e, t) : (this.consequent.includeCallArguments(e, t), this.alternate.includeCallArguments(e, t)) + } + render(e, t, { isCalleeOfRenderedParent: s, preventASI: i, renderedParentType: n, renderedSurroundingElement: r } = me) { + const o = this.getUsedBranch() + if (this.test.included) this.test.render(e, t, { renderedSurroundingElement: r }), this.consequent.render(e, t), this.alternate.render(e, t) + else { + const a = mn(e.original, ':', this.consequent.end), + l = yn(e.original, (this.consequent.included ? mn(e.original, '?', this.test.end) : a) + 1) + i && vn(e, l, o.start), + e.remove(this.start, l), + this.consequent.included && e.remove(a, this.end), + pn(this, e), + o.render(e, t, { isCalleeOfRenderedParent: s, preventASI: !0, renderedParentType: n || this.parent.type, renderedSurroundingElement: r || this.parent.type }) + } + } + getUsedBranch() { + if (this.isBranchResolutionAnalysed) return this.usedBranch + this.isBranchResolutionAnalysed = !0 + const e = this.test.getLiteralValueAtPath(X, se, this) + return 'symbol' == typeof e ? null : (this.usedBranch = e ? this.consequent : this.alternate) + } + }, + ContinueStatement: class extends ei { + hasEffects(e) { + if (this.label) { + if (!e.ignore.labels.has(this.label.name)) return !0 + e.includedLabels.add(this.label.name) + } else { + if (!e.ignore.continues) return !0 + e.hasContinue = !0 + } + return (e.brokenFlow = !0), !1 + } + include(e) { + ;(this.included = !0), this.label ? (this.label.include(), e.includedLabels.add(this.label.name)) : (e.hasContinue = !0), (e.brokenFlow = !0) + } + }, + DoWhileStatement: class extends ei { + hasEffects(e) { + return !!this.test.hasEffects(e) || tr(e, this.body) + } + include(e, t) { + ;(this.included = !0), this.test.include(e, t), sr(e, this.body, t) + } + }, + EmptyStatement: class extends ei { + hasEffects() { + return !1 + } + }, + ExportAllDeclaration: ir, + ExportDefaultDeclaration: rr, + ExportNamedDeclaration: or, + ExportSpecifier: class extends ei { + applyDeoptimizations() {} + }, + ExpressionStatement: An, + ForInStatement: class extends ei { + createScope(e) { + this.scope = new Sn(e) + } + hasEffects(e) { + const { body: t, deoptimized: s, left: i, right: n } = this + return s || this.applyDeoptimizations(), !(!i.hasEffectsAsAssignmentTarget(e, !1) && !n.hasEffects(e)) || tr(e, t) + } + include(e, t) { + const { body: s, deoptimized: i, left: n, right: r } = this + i || this.applyDeoptimizations(), (this.included = !0), n.includeAsAssignmentTarget(e, t || !0, !1), r.include(e, t), sr(e, s, t) + } + initialise() { + this.left.setAssignedValue(ae) + } + render(e, t) { + this.left.render(e, t, fn), this.right.render(e, t, fn), 110 === e.original.charCodeAt(this.right.start - 1) && e.prependLeft(this.right.start, ' '), this.body.render(e, t) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.left.deoptimizePath(X), this.context.requestTreeshakingPass() + } + }, + ForOfStatement: class extends ei { + createScope(e) { + this.scope = new Sn(e) + } + hasEffects() { + return this.deoptimized || this.applyDeoptimizations(), !0 + } + include(e, t) { + const { body: s, deoptimized: i, left: n, right: r } = this + i || this.applyDeoptimizations(), (this.included = !0), n.includeAsAssignmentTarget(e, t || !0, !1), r.include(e, t), sr(e, s, t) + } + initialise() { + this.left.setAssignedValue(ae) + } + render(e, t) { + this.left.render(e, t, fn), this.right.render(e, t, fn), 102 === e.original.charCodeAt(this.right.start - 1) && e.prependLeft(this.right.start, ' '), this.body.render(e, t) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.left.deoptimizePath(X), this.right.deoptimizePath(Q), this.context.requestTreeshakingPass() + } + }, + ForStatement: class extends ei { + createScope(e) { + this.scope = new Sn(e) + } + hasEffects(e) { + return !!(this.init?.hasEffects(e) || this.test?.hasEffects(e) || this.update?.hasEffects(e)) || tr(e, this.body) + } + include(e, t) { + ;(this.included = !0), this.init?.include(e, t, { asSingleStatement: !0 }), this.test?.include(e, t), this.update?.include(e, t), sr(e, this.body, t) + } + render(e, t) { + this.init?.render(e, t, fn), this.test?.render(e, t, fn), this.update?.render(e, t, fn), this.body.render(e, t) + } + }, + FunctionDeclaration: nr, + FunctionExpression: ar, + Identifier: hn, + IfStatement: hr, + ImportAttribute: class extends ei {}, + ImportDeclaration: ur, + ImportDefaultSpecifier: dr, + ImportExpression: class extends ei { + constructor() { + super(...arguments), + (this.inlineNamespace = null), + (this.assertions = null), + (this.mechanism = null), + (this.namespaceExportName = void 0), + (this.resolution = null), + (this.resolutionString = null) + } + bind() { + this.source.bind() + } + getDeterministicImportedNames() { + const e = this.parent + if (e instanceof An) return ye + if (e instanceof Ln) { + const t = e.parent + if (t instanceof An) return ye + if (t instanceof jr) { + const e = t.id + return e instanceof _n ? Wr(e) : void 0 + } + if (t instanceof jn) { + const e = t.property + if (!t.computed && e instanceof hn) return [e.name] + } + } else if (e instanceof jn) { + const t = e.parent, + s = e.property + if (!(t instanceof Wn && s instanceof hn)) return + const i = s.name + if (t.parent instanceof An && ['catch', 'finally'].includes(i)) return ye + if ('then' !== i) return + if (0 === t.arguments.length) return ye + const n = t.arguments[0] + if (1 !== t.arguments.length || !(n instanceof Pn || n instanceof ar)) return + if (0 === n.params.length) return ye + const r = n.params[0] + return 1 === n.params.length && r instanceof _n ? Wr(r) : void 0 + } + } + hasEffects() { + return !0 + } + include(e, t) { + this.included || ((this.included = !0), this.context.includeDynamicImport(this), this.scope.addAccessedDynamicImport(this)), this.source.include(e, t) + } + initialise() { + this.context.addDynamicImport(this) + } + parseNode(e) { + super.parseNode(e, ['source']) + } + render(e, t) { + const { + snippets: { _: s, getDirectReturnFunction: i, getObject: n, getPropertyAccess: r } + } = t + if (this.inlineNamespace) { + const [t, s] = i([], { functionReturn: !0, lineBreakIndent: null, name: null }) + e.overwrite(this.start, this.end, `Promise.resolve().then(${t}${this.inlineNamespace.getName(r)}${s})`) + } else { + if ( + (this.mechanism && (e.overwrite(this.start, mn(e.original, '(', this.start + 6) + 1, this.mechanism.left), e.overwrite(this.end - 1, this.end, this.mechanism.right)), + this.resolutionString) + ) { + if ((e.overwrite(this.source.start, this.source.end, this.resolutionString), this.namespaceExportName)) { + const [t, s] = i(['n'], { functionReturn: !0, lineBreakIndent: null, name: null }) + e.prependLeft(this.end, `.then(${t}n.${this.namespaceExportName}${s})`) + } + } else this.source.render(e, t) + !0 !== this.assertions && + (this.arguments && e.overwrite(this.source.end, this.end - 1, '', { contentOnly: !0 }), + this.assertions && e.appendLeft(this.end - 1, `,${s}${n([['assert', this.assertions]], { lineBreakIndent: null })}`)) + } + } + setExternalResolution(e, t, s, i, n, r, o, a, l) { + const { format: c } = s + ;(this.inlineNamespace = null), (this.resolution = t), (this.resolutionString = o), (this.namespaceExportName = a), (this.assertions = l) + const h = [...(Gr[c] || [])] + let u + ;({ helper: u, mechanism: this.mechanism } = this.getDynamicImportMechanismAndHelper(t, e, s, i, n)), u && h.push(u), h.length > 0 && this.scope.addAccessedGlobals(h, r) + } + setInternalResolution(e) { + this.inlineNamespace = e + } + applyDeoptimizations() {} + getDynamicImportMechanismAndHelper( + e, + t, + { compact: s, dynamicImportFunction: i, dynamicImportInCjs: n, format: r, generatedCode: { arrowFunctions: o }, interop: a }, + { _: l, getDirectReturnFunction: c, getDirectReturnIifeLeft: h }, + u + ) { + const d = u.hookFirstSync('renderDynamicImport', [ + { + customResolution: 'string' == typeof this.resolution ? this.resolution : null, + format: r, + moduleId: this.context.module.id, + targetModuleId: this.resolution && 'string' != typeof this.resolution ? this.resolution.id : null + } + ]) + if (d) return { helper: null, mechanism: d } + const p = !this.resolution || 'string' == typeof this.resolution + switch (r) { + case 'cjs': { + if (n && (!e || 'string' == typeof e || e instanceof Jt)) return { helper: null, mechanism: null } + const s = Ur(e, t, a) + let i = 'require(', + r = ')' + s && ((i = `/*#__PURE__*/${s}(${i}`), (r += ')')) + const [l, u] = c([], { functionReturn: !0, lineBreakIndent: null, name: null }) + return ( + (i = `Promise.resolve().then(${l}${i}`), + (r += `${u})`), + !o && p && ((i = h(['t'], `${i}t${r}`, { needsArrowReturnParens: !1, needsWrappedFunction: !0 })), (r = ')')), + { helper: s, mechanism: { left: i, right: r } } + ) + } + case 'amd': { + const i = s ? 'c' : 'resolve', + n = s ? 'e' : 'reject', + r = Ur(e, t, a), + [u, d] = c(['m'], { functionReturn: !1, lineBreakIndent: null, name: null }), + f = r ? `${u}${i}(/*#__PURE__*/${r}(m))${d}` : i, + [m, g] = c([i, n], { functionReturn: !1, lineBreakIndent: null, name: null }) + let y = `new Promise(${m}require([`, + x = `],${l}${f},${l}${n})${g})` + return !o && p && ((y = h(['t'], `${y}t${x}`, { needsArrowReturnParens: !1, needsWrappedFunction: !0 })), (x = ')')), { helper: r, mechanism: { left: y, right: x } } + } + case 'system': + return { helper: null, mechanism: { left: 'module.import(', right: ')' } } + case 'es': + if (i) return { helper: null, mechanism: { left: `${i}(`, right: ')' } } + } + return { helper: null, mechanism: null } + } + }, + ImportNamespaceSpecifier: qr, + ImportSpecifier: class extends ei { + applyDeoptimizations() {} + }, + LabeledStatement: class extends ei { + hasEffects(e) { + const t = e.brokenFlow + return ( + e.ignore.labels.add(this.label.name), + !!this.body.hasEffects(e) || (e.ignore.labels.delete(this.label.name), e.includedLabels.has(this.label.name) && (e.includedLabels.delete(this.label.name), (e.brokenFlow = t)), !1) + ) + } + include(e, t) { + this.included = !0 + const s = e.brokenFlow + this.body.include(e, t), (t || e.includedLabels.has(this.label.name)) && (this.label.include(), e.includedLabels.delete(this.label.name), (e.brokenFlow = s)) + } + render(e, t) { + this.label.included ? this.label.render(e, t) : e.remove(this.start, yn(e.original, mn(e.original, ':', this.label.end) + 1)), this.body.render(e, t) + } + }, + Literal: Bn, + LogicalExpression: class extends ei { + constructor() { + super(...arguments), (this.expressionsToBeDeoptimized = []), (this.isBranchResolutionAnalysed = !1), (this.usedBranch = null) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.left.deoptimizeArgumentsOnInteractionAtPath(e, t, s), this.right.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeCache() { + if (this.usedBranch) { + const e = this.usedBranch === this.left ? this.right : this.left + ;(this.usedBranch = null), e.deoptimizePath(Q) + const { context: t, expressionsToBeDeoptimized: s } = this + this.expressionsToBeDeoptimized = ye + for (const e of s) e.deoptimizeCache() + t.requestTreeshakingPass() + } + } + deoptimizePath(e) { + const t = this.getUsedBranch() + t ? t.deoptimizePath(e) : (this.left.deoptimizePath(e), this.right.deoptimizePath(e)) + } + getLiteralValueAtPath(e, t, s) { + const i = this.getUsedBranch() + return i ? (this.expressionsToBeDeoptimized.push(s), i.getLiteralValueAtPath(e, t, s)) : ne + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + const n = this.getUsedBranch() + return n + ? (this.expressionsToBeDeoptimized.push(i), n.getReturnExpressionWhenCalledAtPath(e, t, s, i)) + : [new er([this.left.getReturnExpressionWhenCalledAtPath(e, t, s, i)[0], this.right.getReturnExpressionWhenCalledAtPath(e, t, s, i)[0]]), !1] + } + hasEffects(e) { + return !!this.left.hasEffects(e) || (this.getUsedBranch() !== this.left && this.right.hasEffects(e)) + } + hasEffectsOnInteractionAtPath(e, t, s) { + const i = this.getUsedBranch() + return i ? i.hasEffectsOnInteractionAtPath(e, t, s) : this.left.hasEffectsOnInteractionAtPath(e, t, s) || this.right.hasEffectsOnInteractionAtPath(e, t, s) + } + include(e, t) { + this.included = !0 + const s = this.getUsedBranch() + t || (s === this.right && this.left.shouldBeIncluded(e)) || !s ? (this.left.include(e, t), this.right.include(e, t)) : s.include(e, t) + } + render(e, t, { isCalleeOfRenderedParent: s, preventASI: i, renderedParentType: n, renderedSurroundingElement: r } = me) { + if (this.left.included && this.right.included) this.left.render(e, t, { preventASI: i, renderedSurroundingElement: r }), this.right.render(e, t) + else { + const o = mn(e.original, this.operator, this.left.end) + if (this.right.included) { + const t = yn(e.original, o + 2) + e.remove(this.start, t), i && vn(e, t, this.right.start) + } else e.remove(o, this.end) + pn(this, e), this.getUsedBranch().render(e, t, { isCalleeOfRenderedParent: s, preventASI: i, renderedParentType: n || this.parent.type, renderedSurroundingElement: r || this.parent.type }) + } + } + getUsedBranch() { + if (!this.isBranchResolutionAnalysed) { + this.isBranchResolutionAnalysed = !0 + const e = this.left.getLiteralValueAtPath(X, se, this) + if ('symbol' == typeof e) return null + this.usedBranch = ('||' === this.operator && e) || ('&&' === this.operator && !e) || ('??' === this.operator && null != e) ? this.left : this.right + } + return this.usedBranch + } + }, + MemberExpression: jn, + MetaProperty: class extends ei { + constructor() { + super(...arguments), (this.metaProperty = null), (this.preliminaryChunkId = null), (this.referenceId = null) + } + getReferencedFileName(e) { + const { + meta: { name: t }, + metaProperty: s + } = this + return t === Kr && s?.startsWith(Hr) ? e.getFileName(s.slice(16)) : null + } + hasEffects() { + return !1 + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return e.length > 1 || 0 !== t + } + include() { + if (!this.included && ((this.included = !0), this.meta.name === Kr)) { + this.context.addImportMeta(this) + const e = this.parent, + t = (this.metaProperty = e instanceof jn && 'string' == typeof e.propertyKey ? e.propertyKey : null) + t?.startsWith(Hr) && (this.referenceId = t.slice(16)) + } + } + render(e, t) { + const { format: s, pluginDriver: i, snippets: n } = t, + { + context: { module: r }, + meta: { name: o }, + metaProperty: a, + parent: l, + preliminaryChunkId: c, + referenceId: h, + start: u, + end: d + } = this, + { id: p } = r + if (o !== Kr) return + const f = c + if (h) { + const t = i.getFileName(h), + n = P(_($(f), t)), + r = i.hookFirstSync('resolveFileUrl', [{ chunkId: f, fileName: t, format: s, moduleId: p, referenceId: h, relativePath: n }]) || no[s](n) + return void e.overwrite(l.start, l.end, r, { contentOnly: !0 }) + } + let m = i.hookFirstSync('resolveImportMeta', [a, { chunkId: f, format: s, moduleId: p }]) + m || ((m = ro[s]?.(a, { chunkId: f, snippets: n })), t.accessedDocumentCurrentScript || (t.accessedDocumentCurrentScript = Yr.includes(s) && 'undefined' !== m)), + 'string' == typeof m && (l instanceof jn ? e.overwrite(l.start, l.end, m, { contentOnly: !0 }) : e.overwrite(u, d, m, { contentOnly: !0 })) + } + setResolution(e, t, s) { + this.preliminaryChunkId = s + const i = (this.metaProperty?.startsWith(Hr) ? Qr : Xr)[e] + i.length > 0 && this.scope.addAccessedGlobals(i, t) + } + }, + MethodDefinition: Yn, + NewExpression: class extends ei { + hasEffects(e) { + try { + for (const t of this.arguments) if (t.hasEffects(e)) return !0 + return !this.annotationPure && (this.callee.hasEffects(e) || this.callee.hasEffectsOnInteractionAtPath(X, this.interaction, e)) + } finally { + this.deoptimized || this.applyDeoptimizations() + } + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return e.length > 0 || 0 !== t + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), t ? super.include(e, t) : ((this.included = !0), this.callee.include(e, !1)), this.callee.includeCallArguments(e, this.arguments) + } + initialise() { + this.interaction = { args: [null, ...this.arguments], type: 2, withNew: !0 } + } + render(e, t) { + this.callee.render(e, t), Vn(e, t, this) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction, X, se), this.context.requestTreeshakingPass() + } + }, + ObjectExpression: class extends ei { + constructor() { + super(...arguments), (this.objectEntity = null) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizeCache() { + this.getObjectEntity().deoptimizeAllProperties() + } + deoptimizePath(e) { + this.getObjectEntity().deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.getObjectEntity().getLiteralValueAtPath(e, t, s) + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e, t, s, i) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.getObjectEntity().hasEffectsOnInteractionAtPath(e, t, s) + } + render(e, t, { renderedSurroundingElement: s } = me) { + super.render(e, t), (s !== Rs && s !== ks) || (e.appendRight(this.start, '('), e.prependLeft(this.end, ')')) + } + applyDeoptimizations() {} + getObjectEntity() { + if (null !== this.objectEntity) return this.objectEntity + let e = ui + const t = [] + for (const s of this.properties) { + if (s instanceof ti) { + t.push({ key: q, kind: 'init', property: s }) + continue + } + let i + if (s.computed) { + const e = s.key.getLiteralValueAtPath(X, se, this) + if ('symbol' == typeof e) { + t.push({ key: q, kind: s.kind, property: s }) + continue + } + i = String(e) + } else if (((i = s.key instanceof hn ? s.key.name : String(s.key.value)), '__proto__' === i && 'init' === s.kind)) { + e = s.value instanceof Bn && null === s.value.value ? null : s.value + continue + } + t.push({ key: i, kind: s.kind, property: s }) + } + return (this.objectEntity = new li(t, e)) + } + }, + ObjectPattern: _n, + PrivateIdentifier: class extends ei {}, + Program: oo, + Property: class extends Kn { + constructor() { + super(...arguments), (this.declarationInit = null) + } + declare(e, t) { + return (this.declarationInit = t), this.value.declare(e, ae) + } + hasEffects(e) { + this.deoptimized || this.applyDeoptimizations() + const t = this.context.options.treeshake.propertyReadSideEffects + return ('ObjectPattern' === this.parent.type && 'always' === t) || this.key.hasEffects(e) || this.value.hasEffects(e) + } + markDeclarationReached() { + this.value.markDeclarationReached() + } + render(e, t) { + this.shorthand || this.key.render(e, t), this.value.render(e, t, { isShorthandProperty: this.shorthand }) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), null !== this.declarationInit && (this.declarationInit.deoptimizePath([q, q]), this.context.requestTreeshakingPass()) + } + }, + PropertyDefinition: class extends ei { + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.value?.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + this.value?.deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.value ? this.value.getLiteralValueAtPath(e, t, s) : ne + } + getReturnExpressionWhenCalledAtPath(e, t, s, i) { + return this.value ? this.value.getReturnExpressionWhenCalledAtPath(e, t, s, i) : le + } + hasEffects(e) { + return this.key.hasEffects(e) || (this.static && !!this.value?.hasEffects(e)) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return !this.value || this.value.hasEffectsOnInteractionAtPath(e, t, s) + } + applyDeoptimizations() {} + }, + RestElement: In, + ReturnStatement: class extends ei { + hasEffects(e) { + return !(e.ignore.returnYield && !this.argument?.hasEffects(e)) || ((e.brokenFlow = !0), !1) + } + include(e, t) { + ;(this.included = !0), this.argument?.include(e, t), (e.brokenFlow = !0) + } + initialise() { + this.scope.addReturnExpression(this.argument || ae) + } + render(e, t) { + this.argument && (this.argument.render(e, t, { preventASI: !0 }), this.argument.start === this.start + 6 && e.prependLeft(this.start + 6, ' ')) + } + }, + SequenceExpression: class extends ei { + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.expressions[this.expressions.length - 1].deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + this.expressions[this.expressions.length - 1].deoptimizePath(e) + } + getLiteralValueAtPath(e, t, s) { + return this.expressions[this.expressions.length - 1].getLiteralValueAtPath(e, t, s) + } + hasEffects(e) { + for (const t of this.expressions) if (t.hasEffects(e)) return !0 + return !1 + } + hasEffectsOnInteractionAtPath(e, t, s) { + return this.expressions[this.expressions.length - 1].hasEffectsOnInteractionAtPath(e, t, s) + } + include(e, t) { + this.included = !0 + const s = this.expressions[this.expressions.length - 1] + for (const i of this.expressions) (t || (i === s && !(this.parent instanceof An)) || i.shouldBeIncluded(e)) && i.include(e, t) + } + render(e, t, { renderedParentType: s, isCalleeOfRenderedParent: i, preventASI: n } = me) { + let r = 0, + o = null + const a = this.expressions[this.expressions.length - 1] + for (const { node: l, separator: c, start: h, end: u } of bn(this.expressions, e, this.start, this.end)) + if (l.included) + if ((r++, (o = c), 1 === r && n && vn(e, h, l.start), 1 === r)) { + const n = s || this.parent.type + l.render(e, t, { isCalleeOfRenderedParent: i && l === a, renderedParentType: n, renderedSurroundingElement: n }) + } else l.render(e, t) + else dn(l, e, h, u) + o && e.remove(o, this.end) + } + }, + SpreadElement: ti, + StaticBlock: class extends ei { + createScope(e) { + this.scope = new Sn(e) + } + hasEffects(e) { + for (const t of this.body) if (t.hasEffects(e)) return !0 + return !1 + } + include(e, t) { + this.included = !0 + for (const s of this.body) (t || s.shouldBeIncluded(e)) && s.include(e, t) + } + render(e, t) { + if (this.body.length > 0) { + const s = mn(e.original.slice(this.start, this.end), '{') + 1 + En(this.body, e, this.start + s, this.end - 1, t) + } else super.render(e, t) + } + }, + Super: class extends ei { + bind() { + this.variable = this.scope.findVariable('this') + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.variable.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + this.variable.deoptimizePath(e) + } + include() { + this.included || ((this.included = !0), this.context.includeVariableInModule(this.variable)) + } + }, + SwitchCase: ao, + SwitchStatement: class extends ei { + createScope(e) { + ;(this.parentScope = e), (this.scope = new Sn(e)) + } + hasEffects(e) { + if (this.discriminant.hasEffects(e)) return !0 + const { brokenFlow: t, hasBreak: s, ignore: i } = e, + { breaks: n } = i + ;(i.breaks = !0), (e.hasBreak = !1) + let r = !0 + for (const s of this.cases) { + if (s.hasEffects(e)) return !0 + r && (r = e.brokenFlow && !e.hasBreak), (e.hasBreak = !1), (e.brokenFlow = t) + } + return null !== this.defaultCase && (e.brokenFlow = r), (i.breaks = n), (e.hasBreak = s), !1 + } + include(e, t) { + ;(this.included = !0), this.discriminant.include(e, t) + const { brokenFlow: s, hasBreak: i } = e + e.hasBreak = !1 + let n = !0, + r = t || (null !== this.defaultCase && this.defaultCase < this.cases.length - 1) + for (let i = this.cases.length - 1; i >= 0; i--) { + const o = this.cases[i] + if ((o.included && (r = !0), !r)) { + const e = is() + ;(e.ignore.breaks = !0), (r = o.hasEffects(e)) + } + r ? (o.include(e, t), n && (n = e.brokenFlow && !e.hasBreak), (e.hasBreak = !1), (e.brokenFlow = s)) : (n = s) + } + r && null !== this.defaultCase && (e.brokenFlow = n), (e.hasBreak = i) + } + initialise() { + for (let e = 0; e < this.cases.length; e++) if (null === this.cases[e].test) return void (this.defaultCase = e) + this.defaultCase = null + } + parseNode(e) { + ;(this.discriminant = new (this.context.getNodeConstructor(e.discriminant.type))(e.discriminant, this, this.parentScope)), super.parseNode(e) + } + render(e, t) { + this.discriminant.render(e, t), this.cases.length > 0 && En(this.cases, e, this.cases[0].start, this.end - 1, t) + } + }, + TaggedTemplateExpression: class extends Gn { + bind() { + if ((super.bind(), this.tag.type === Os)) { + const e = this.tag.name + this.scope.findVariable(e).isNamespace && this.context.log(Ae, Ot(e), this.start) + } + } + hasEffects(e) { + try { + for (const t of this.quasi.expressions) if (t.hasEffects(e)) return !0 + return this.tag.hasEffects(e) || this.tag.hasEffectsOnInteractionAtPath(X, this.interaction, e) + } finally { + this.deoptimized || this.applyDeoptimizations() + } + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), t ? super.include(e, t) : ((this.included = !0), this.tag.include(e, t), this.quasi.include(e, t)), this.tag.includeCallArguments(e, this.args) + const [s] = this.getReturnExpression() + s.included || s.include(e, !1) + } + initialise() { + ;(this.args = [ae, ...this.quasi.expressions]), (this.interaction = { args: [this.tag instanceof jn && !this.tag.variable ? this.tag.object : null, ...this.args], type: 2, withNew: !1 }) + } + render(e, t) { + this.tag.render(e, t, { isCalleeOfRenderedParent: !0 }), this.quasi.render(e, t) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), this.tag.deoptimizeArgumentsOnInteractionAtPath(this.interaction, X, se), this.context.requestTreeshakingPass() + } + getReturnExpression(e = se) { + return null === this.returnExpression + ? ((this.returnExpression = le), (this.returnExpression = this.tag.getReturnExpressionWhenCalledAtPath(X, this.interaction, e, this))) + : this.returnExpression + } + }, + TemplateElement: class extends ei { + bind() {} + hasEffects() { + return !1 + } + include() { + this.included = !0 + } + parseNode(e) { + ;(this.value = e.value), super.parseNode(e) + } + render() {} + }, + TemplateLiteral: lo, + ThisExpression: class extends ei { + bind() { + this.variable = this.scope.findVariable('this') + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + this.variable.deoptimizeArgumentsOnInteractionAtPath(e, t, s) + } + deoptimizePath(e) { + this.variable.deoptimizePath(e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + return 0 === e.length ? 0 !== t.type : this.variable.hasEffectsOnInteractionAtPath(e, t, s) + } + include() { + this.included || ((this.included = !0), this.context.includeVariableInModule(this.variable)) + } + initialise() { + ;(this.alias = this.scope.findLexicalBoundary() instanceof uo ? this.context.moduleContext : null), + 'undefined' === this.alias && + this.context.log( + Ae, + { + code: 'THIS_IS_UNDEFINED', + message: "The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten", + url: De('troubleshooting/#error-this-is-undefined') + }, + this.start + ) + } + render(e) { + null !== this.alias && e.overwrite(this.start, this.end, this.alias, { contentOnly: !1, storeName: !0 }) + } + }, + ThrowStatement: class extends ei { + hasEffects() { + return !0 + } + include(e, t) { + ;(this.included = !0), this.argument.include(e, t), (e.brokenFlow = !0) + } + render(e, t) { + this.argument.render(e, t, { preventASI: !0 }), this.argument.start === this.start + 5 && e.prependLeft(this.start + 5, ' ') + } + }, + TryStatement: class extends ei { + constructor() { + super(...arguments), (this.directlyIncluded = !1), (this.includedLabelsAfterBlock = null) + } + hasEffects(e) { + return (this.context.options.treeshake.tryCatchDeoptimization ? this.block.body.length > 0 : this.block.hasEffects(e)) || !!this.finalizer?.hasEffects(e) + } + include(e, t) { + const s = this.context.options.treeshake?.tryCatchDeoptimization, + { brokenFlow: i, includedLabels: n } = e + if (this.directlyIncluded && s) { + if (this.includedLabelsAfterBlock) for (const e of this.includedLabelsAfterBlock) n.add(e) + } else (this.included = !0), (this.directlyIncluded = !0), this.block.include(e, s ? Js : t), n.size > 0 && (this.includedLabelsAfterBlock = [...n]), (e.brokenFlow = i) + null !== this.handler && (this.handler.include(e, t), (e.brokenFlow = i)), this.finalizer?.include(e, t) + } + }, + UnaryExpression: class extends ei { + getLiteralValueAtPath(e, t, s) { + if (e.length > 0) return ne + const i = this.argument.getLiteralValueAtPath(X, t, s) + return 'symbol' == typeof i ? ne : po[this.operator](i) + } + hasEffects(e) { + return ( + this.deoptimized || this.applyDeoptimizations(), + !('typeof' === this.operator && this.argument instanceof hn) && (this.argument.hasEffects(e) || ('delete' === this.operator && this.argument.hasEffectsOnInteractionAtPath(X, ue, e))) + ) + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return 0 !== t || e.length > ('void' === this.operator ? 0 : 1) + } + applyDeoptimizations() { + ;(this.deoptimized = !0), 'delete' === this.operator && (this.argument.deoptimizePath(X), this.context.requestTreeshakingPass()) + } + }, + UnknownNode: class extends ei { + hasEffects() { + return !0 + } + include(e) { + super.include(e, !0) + } + }, + UpdateExpression: class extends ei { + hasEffects(e) { + return this.deoptimized || this.applyDeoptimizations(), this.argument.hasEffectsAsAssignmentTarget(e, !0) + } + hasEffectsOnInteractionAtPath(e, { type: t }) { + return e.length > 1 || 0 !== t + } + include(e, t) { + this.deoptimized || this.applyDeoptimizations(), (this.included = !0), this.argument.includeAsAssignmentTarget(e, t, !0) + } + initialise() { + this.argument.setAssignedValue(ae) + } + render(e, t) { + const { + exportNamesByVariable: s, + format: i, + snippets: { _: n } + } = t + if ((this.argument.render(e, t), 'system' === i)) { + const i = this.argument.variable, + r = s.get(i) + if (r) + if (this.prefix) 1 === r.length ? $n(i, this.start, this.end, e, t) : Nn(i, this.start, this.end, this.parent.type !== Rs, e, t) + else { + const s = this.operator[0] + !(function (e, t, s, i, n, r, o) { + const { _: a } = r.snippets + n.prependRight(t, `${Cn([e], r, o)},${a}`), i && (n.prependRight(t, '('), n.appendLeft(s, ')')) + })(i, this.start, this.end, this.parent.type !== Rs, e, t, `${n}${s}${n}1`) + } + } + } + applyDeoptimizations() { + if (((this.deoptimized = !0), this.argument.deoptimizePath(X), this.argument instanceof hn)) { + this.scope.findVariable(this.argument.name).isReassigned = !0 + } + this.context.requestTreeshakingPass() + } + }, + VariableDeclaration: fo, + VariableDeclarator: jr, + WhileStatement: class extends ei { + hasEffects(e) { + return !!this.test.hasEffects(e) || tr(e, this.body) + } + include(e, t) { + ;(this.included = !0), this.test.include(e, t), sr(e, this.body, t) + } + }, + YieldExpression: class extends ei { + hasEffects(e) { + return this.deoptimized || this.applyDeoptimizations(), !(e.ignore.returnYield && !this.argument?.hasEffects(e)) + } + render(e, t) { + this.argument && (this.argument.render(e, t, { preventASI: !0 }), this.argument.start === this.start + 5 && e.prependLeft(this.start + 5, ' ')) + } + } + }, + go = '_missingExportShim' +class yo extends pe { + constructor(e) { + super(go), (this.module = e) + } + include() { + super.include(), (this.module.needsExportShim = !0) + } +} +class xo extends pe { + constructor(e) { + super(e.getModuleName()), (this.memberVariables = null), (this.mergedNamespaces = []), (this.referencedEarly = !1), (this.references = []), (this.context = e), (this.module = e.module) + } + addReference(e) { + this.references.push(e), (this.name = e.name) + } + deoptimizeArgumentsOnInteractionAtPath(e, t, s) { + if (t.length > 1 || (1 === t.length && 2 === e.type)) { + const i = t[0] + 'string' == typeof i ? this.getMemberVariables()[i]?.deoptimizeArgumentsOnInteractionAtPath(e, t.slice(1), s) : ce(e) + } + } + deoptimizePath(e) { + if (e.length > 1) { + const t = e[0] + 'string' == typeof t && this.getMemberVariables()[t]?.deoptimizePath(e.slice(1)) + } + } + getLiteralValueAtPath(e) { + return e[0] === Y ? 'Module' : ne + } + getMemberVariables() { + if (this.memberVariables) return this.memberVariables + const e = Object.create(null), + t = [...this.context.getExports(), ...this.context.getReexports()].sort() + for (const s of t) + if ('*' !== s[0] && s !== this.module.info.syntheticNamedExports) { + const t = this.context.traceExport(s) + t && (e[s] = t) + } + return (this.memberVariables = e) + } + hasEffectsOnInteractionAtPath(e, t, s) { + const { type: i } = t + if (0 === e.length) return !0 + if (1 === e.length && 2 !== i) return 1 === i + const n = e[0] + if ('string' != typeof n) return !0 + const r = this.getMemberVariables()[n] + return !r || r.hasEffectsOnInteractionAtPath(e.slice(1), t, s) + } + include() { + ;(this.included = !0), this.context.includeAllExports() + } + prepare(e) { + this.mergedNamespaces.length > 0 && this.module.scope.addAccessedGlobals([Er], e) + } + renderBlock(e) { + const { + exportNamesByVariable: t, + format: s, + freeze: i, + indent: n, + namespaceToStringTag: r, + snippets: { _: o, cnst: a, getObject: l, getPropertyAccess: c, n: h, s: u } + } = e, + d = this.getMemberVariables(), + p = Object.entries(d) + .filter(([e, t]) => t.included) + .map(([e, t]) => (this.referencedEarly || t.isReassigned || t === this ? [null, `get ${e}${o}()${o}{${o}return ${t.getName(c)}${u}${o}}`] : [e, t.getName(c)])) + p.unshift([null, `__proto__:${o}null`]) + let f = l(p, { lineBreakIndent: { base: '', t: n } }) + if (this.mergedNamespaces.length > 0) { + const e = this.mergedNamespaces.map((e) => e.getName(c)) + f = `/*#__PURE__*/${Er}(${f},${o}[${e.join(`,${o}`)}])` + } else r && (f = `/*#__PURE__*/Object.defineProperty(${f},${o}Symbol.toStringTag,${o}${zr(l)})`), i && (f = `/*#__PURE__*/Object.freeze(${f})`) + return (f = `${a} ${this.getName(c)}${o}=${o}${f};`), 'system' === s && t.has(this) && (f += `${h}${Cn([this], e)};`), f + } + renderFirst() { + return this.referencedEarly + } + setMergedNamespaces(e) { + this.mergedNamespaces = e + const t = this.context.getModuleExecIndex() + for (const e of this.references) + if (e.context.getModuleExecIndex() <= t) { + this.referencedEarly = !0 + break + } + } +} +xo.prototype.isNamespace = !0 +class Eo extends pe { + constructor(e, t, s) { + super(t), (this.baseVariable = null), (this.context = e), (this.module = e.module), (this.syntheticNamespace = s) + } + getBaseVariable() { + if (this.baseVariable) return this.baseVariable + let e = this.syntheticNamespace + for (; e instanceof ho || e instanceof Eo; ) { + if (e instanceof ho) { + const t = e.getOriginalVariable() + if (t === e) break + e = t + } + e instanceof Eo && (e = e.syntheticNamespace) + } + return (this.baseVariable = e) + } + getBaseVariableName() { + return this.syntheticNamespace.getBaseVariableName() + } + getName(e) { + return `${this.syntheticNamespace.getName(e)}${e(this.name)}` + } + include() { + ;(this.included = !0), this.context.includeVariableInModule(this.syntheticNamespace) + } + setRenderNames(e, t) { + super.setRenderNames(e, t) + } +} +var bo +!(function (e) { + ;(e[(e.LOAD_AND_PARSE = 0)] = 'LOAD_AND_PARSE'), (e[(e.ANALYSE = 1)] = 'ANALYSE'), (e[(e.GENERATE = 2)] = 'GENERATE') +})(bo || (bo = {})) +const vo = new WeakMap() +function So(e, t) { + if (e) { + const t = vo.get(e) + t && + (function (e) { + void 0 === e.encodedMappings && e.decodedMappings && (e.encodedMappings = i.encode(e.decodedMappings)), (e.decodedMappings = void 0) + })(t) + } + if (t) for (const e of t) e.missing || So(e) +} +function Ao(e) { + if (!e) return null + if (('string' == typeof e && (e = JSON.parse(e)), !e.mappings)) return { mappings: [], names: [], sources: [], version: 3 } + const t = e.mappings, + s = Array.isArray(t), + n = { decodedMappings: s ? t : void 0, encodedMappings: s ? void 0 : t }, + r = { + ...e, + get mappings() { + return n.decodedMappings || ((n.decodedMappings = n.encodedMappings ? i.decode(n.encodedMappings) : []), (n.encodedMappings = void 0)), n.decodedMappings + } + } + return vo.set(r, n), r +} +function ko(e) { + return e.id +} +const Io = (e) => { + const t = e.key + return t && (t.name || t.value) +} +function wo(e, t) { + const s = Object.keys(e) + return s.length !== Object.keys(t).length || s.some((s) => e[s] !== t[s]) +} +var Po = 'performance' in ('undefined' == typeof globalThis ? ('undefined' == typeof window ? {} : window) : globalThis) ? performance : { now: () => 0 }, + Co = { memoryUsage: () => ({ heapUsed: 0 }) } +let $o = new Map() +function No(e, t) { + switch (t) { + case 1: + return `# ${e}` + case 2: + return `## ${e}` + case 3: + return e + default: + return `${' '.repeat(t - 4)}- ${e}` + } +} +function _o(e, t = 3) { + e = No(e, t) + const s = Co.memoryUsage().heapUsed, + i = Po.now(), + n = $o.get(e) + void 0 === n ? $o.set(e, { memory: 0, startMemory: s, startTime: i, time: 0, totalMemory: 0 }) : ((n.startMemory = s), (n.startTime = i)) +} +function Ro(e, t = 3) { + e = No(e, t) + const s = $o.get(e) + if (void 0 !== s) { + const e = Co.memoryUsage().heapUsed + ;(s.memory += e - s.startMemory), (s.time += Po.now() - s.startTime), (s.totalMemory = Math.max(s.totalMemory, e)) + } +} +function Mo() { + const e = {} + for (const [t, { memory: s, time: i, totalMemory: n }] of $o) e[t] = [i, s, n] + return e +} +let Oo = Ui, + Do = Ui +const Lo = [ + 'augmentChunkHash', + 'buildEnd', + 'buildStart', + 'generateBundle', + 'load', + 'moduleParsed', + 'options', + 'outputOptions', + 'renderChunk', + 'renderDynamicImport', + 'renderStart', + 'resolveDynamicImport', + 'resolveFileUrl', + 'resolveId', + 'resolveImportMeta', + 'shouldTransformCachedModule', + 'transform', + 'writeBundle' +] +function To(e, t) { + if (e._hasTimer) return e + e._hasTimer = !0 + for (const s of Lo) + if (s in e) { + let i = `plugin ${t}` + e.name && (i += ` (${e.name})`), (i += ` - ${s}`) + const n = function (...e) { + Oo(i, 4) + const t = r.apply(this, e) + return Do(i, 4), t + } + let r + 'function' == typeof e[s].handler ? ((r = e[s].handler), (e[s].handler = n)) : ((r = e[s]), (e[s] = n)) + } + return e +} +function Vo(e) { + e.isExecuted = !0 + const t = [e], + s = new Set() + for (const e of t) + for (const i of [...e.dependencies, ...e.implicitlyLoadedBefore]) + i instanceof Jt || i.isExecuted || (!i.info.moduleSideEffects && !e.implicitlyLoadedBefore.has(i)) || s.has(i.id) || ((i.isExecuted = !0), s.add(i.id), t.push(i)) +} +const Bo = { identifier: null, localName: go } +function zo(e, t, s, i, n = new Map()) { + const r = n.get(t) + if (r) { + if (r.has(e)) return i ? [null] : Qe(((o = t), (a = e.id), { code: rt, exporter: a, message: `"${o}" cannot be exported from "${V(a)}" as it is a reexport that references itself.` })) + r.add(e) + } else n.set(t, new Set([e])) + var o, a + return e.getVariableForExportName(t, { importerForSideEffects: s, isExportAllSearch: i, searchedNamesAndModules: n }) +} +function Fo(e, t) { + const s = U(t.sideEffectDependenciesByVariable, e, G) + let i = e + const n = new Set([i]) + for (;;) { + const e = i.module + if (((i = i instanceof ho ? i.getDirectOriginalVariable() : i instanceof Eo ? i.syntheticNamespace : null), !i || n.has(i))) break + n.add(i), s.add(e) + const t = e.sideEffectDependenciesByVariable.get(i) + if (t) for (const e of t) s.add(e) + } + return s +} +class jo { + constructor(e, t, s, i, n, r, o, a) { + ;(this.graph = e), + (this.id = t), + (this.options = s), + (this.alternativeReexportModules = new Map()), + (this.chunkFileNames = new Set()), + (this.chunkNames = []), + (this.cycles = new Set()), + (this.dependencies = new Set()), + (this.dynamicDependencies = new Set()), + (this.dynamicImporters = []), + (this.dynamicImports = []), + (this.execIndex = 1 / 0), + (this.implicitlyLoadedAfter = new Set()), + (this.implicitlyLoadedBefore = new Set()), + (this.importDescriptions = new Map()), + (this.importMetas = []), + (this.importedFromNotTreeshaken = !1), + (this.importers = []), + (this.includedDynamicImporters = []), + (this.includedImports = new Set()), + (this.isExecuted = !1), + (this.isUserDefinedEntryPoint = !1), + (this.needsExportShim = !1), + (this.sideEffectDependenciesByVariable = new Map()), + (this.sourcesWithAssertions = new Map()), + (this.allExportNames = null), + (this.ast = null), + (this.exportAllModules = []), + (this.exportAllSources = new Set()), + (this.exportNamesByVariable = null), + (this.exportShimVariable = new yo(this)), + (this.exports = new Map()), + (this.namespaceReexportsByName = new Map()), + (this.reexportDescriptions = new Map()), + (this.relevantDependencies = null), + (this.syntheticExports = new Map()), + (this.syntheticNamespace = null), + (this.transformDependencies = []), + (this.transitiveReexports = null), + (this.excludeFromSourcemap = /\0/.test(t)), + (this.context = s.moduleContext(t)), + (this.preserveSignature = this.options.preserveEntrySignatures) + const l = this, + { + dynamicImports: c, + dynamicImporters: h, + exportAllSources: u, + exports: d, + implicitlyLoadedAfter: p, + implicitlyLoadedBefore: f, + importers: m, + reexportDescriptions: g, + sourcesWithAssertions: y + } = this + ;(this.info = { + assertions: a, + ast: null, + code: null, + get dynamicallyImportedIdResolutions() { + return c.map(({ argument: e }) => 'string' == typeof e && l.resolvedIds[e]).filter(Boolean) + }, + get dynamicallyImportedIds() { + return c.map(({ id: e }) => e).filter((e) => null != e) + }, + get dynamicImporters() { + return h.sort() + }, + get exportedBindings() { + const e = { '.': [...d.keys()] } + for (const [t, { source: s }] of g) (e[s] ?? (e[s] = [])).push(t) + for (const t of u) (e[t] ?? (e[t] = [])).push('*') + return e + }, + get exports() { + return [...d.keys(), ...g.keys(), ...[...u].map(() => '*')] + }, + get hasDefaultExport() { + return l.ast ? l.exports.has('default') || g.has('default') : null + }, + get hasModuleSideEffects() { + return Qt('Accessing ModuleInfo.hasModuleSideEffects from plugins is deprecated. Please use ModuleInfo.moduleSideEffects instead.', Xe, !0, s), this.moduleSideEffects + }, + id: t, + get implicitlyLoadedAfterOneOf() { + return Array.from(p, ko).sort() + }, + get implicitlyLoadedBefore() { + return Array.from(f, ko).sort() + }, + get importedIdResolutions() { + return Array.from(y.keys(), (e) => l.resolvedIds[e]).filter(Boolean) + }, + get importedIds() { + return Array.from(y.keys(), (e) => l.resolvedIds[e]?.id).filter(Boolean) + }, + get importers() { + return m.sort() + }, + isEntry: i, + isExternal: !1, + get isIncluded() { + return e.phase !== bo.GENERATE ? null : l.isIncluded() + }, + meta: { ...o }, + moduleSideEffects: n, + syntheticNamedExports: r + }), + Object.defineProperty(this.info, 'hasModuleSideEffects', { enumerable: !1 }) + } + basename() { + const e = C(this.id), + t = N(this.id) + return Se(t ? e.slice(0, -t.length) : e) + } + bindReferences() { + this.ast.bind() + } + error(e, t) { + return this.addLocationToLogProps(e, t), Qe(e) + } + estimateSize() { + let e = 0 + for (const t of this.ast.body) t.included && (e += t.end - t.start) + return e + } + getAllExportNames() { + if (this.allExportNames) return this.allExportNames + this.allExportNames = new Set([...this.exports.keys(), ...this.reexportDescriptions.keys()]) + for (const e of this.exportAllModules) + if (e instanceof Jt) this.allExportNames.add(`*${e.id}`) + else for (const t of e.getAllExportNames()) 'default' !== t && this.allExportNames.add(t) + return 'string' == typeof this.info.syntheticNamedExports && this.allExportNames.delete(this.info.syntheticNamedExports), this.allExportNames + } + getDependenciesToBeIncluded() { + if (this.relevantDependencies) return this.relevantDependencies + this.relevantDependencies = new Set() + const e = new Set(), + t = new Set(), + s = new Set(this.includedImports) + if (this.info.isEntry || this.includedDynamicImporters.length > 0 || this.namespace.included || this.implicitlyLoadedAfter.size > 0) + for (const e of [...this.getReexports(), ...this.getExports()]) { + const [t] = this.getVariableForExportName(e) + t?.included && s.add(t) + } + for (let i of s) { + const s = this.sideEffectDependenciesByVariable.get(i) + if (s) for (const e of s) t.add(e) + i instanceof Eo ? (i = i.getBaseVariable()) : i instanceof ho && (i = i.getOriginalVariable()), e.add(i.module) + } + if (this.options.treeshake && 'no-treeshake' !== this.info.moduleSideEffects) this.addRelevantSideEffectDependencies(this.relevantDependencies, e, t) + else for (const e of this.dependencies) this.relevantDependencies.add(e) + for (const t of e) this.relevantDependencies.add(t) + return this.relevantDependencies + } + getExportNamesByVariable() { + if (this.exportNamesByVariable) return this.exportNamesByVariable + const e = new Map() + for (const t of this.getAllExportNames()) { + let [s] = this.getVariableForExportName(t) + if ((s instanceof ho && (s = s.getOriginalVariable()), !s || !(s.included || s instanceof fe))) continue + const i = e.get(s) + i ? i.push(t) : e.set(s, [t]) + } + return (this.exportNamesByVariable = e) + } + getExports() { + return [...this.exports.keys()] + } + getReexports() { + if (this.transitiveReexports) return this.transitiveReexports + this.transitiveReexports = [] + const e = new Set(this.reexportDescriptions.keys()) + for (const t of this.exportAllModules) + if (t instanceof Jt) e.add(`*${t.id}`) + else for (const s of [...t.getReexports(), ...t.getExports()]) 'default' !== s && e.add(s) + return (this.transitiveReexports = [...e]) + } + getRenderedExports() { + const e = [], + t = [] + for (const s of this.exports.keys()) { + const [i] = this.getVariableForExportName(s) + ;(i && i.included ? e : t).push(s) + } + return { removedExports: t, renderedExports: e } + } + getSyntheticNamespace() { + return ( + null === this.syntheticNamespace && + ((this.syntheticNamespace = void 0), + ([this.syntheticNamespace] = this.getVariableForExportName('string' == typeof this.info.syntheticNamedExports ? this.info.syntheticNamedExports : 'default', { onlyExplicit: !0 }))), + this.syntheticNamespace + ? this.syntheticNamespace + : Qe( + ((e = this.id), + (t = this.info.syntheticNamedExports), + { + code: 'SYNTHETIC_NAMED_EXPORTS_NEED_NAMESPACE_EXPORT', + exporter: e, + message: `Module "${V(e)}" that is marked with \`syntheticNamedExports: ${JSON.stringify(t)}\` needs ${ + 'string' == typeof t && 'default' !== t ? `an explicit export named "${t}"` : 'a default export' + } that does not reexport an unresolved named export of the same module.` + }) + ) + ) + var e, t + } + getVariableForExportName(e, { importerForSideEffects: t, isExportAllSearch: s, onlyExplicit: i, searchedNamesAndModules: n } = ge) { + if ('*' === e[0]) { + if (1 === e.length) return [this.namespace] + return this.graph.modulesById.get(e.slice(1)).getVariableForExportName('*') + } + const r = this.reexportDescriptions.get(e) + if (r) { + const [e] = zo(r.module, r.localName, t, !1, n) + return e ? (t && (Uo(e, t, this), this.info.moduleSideEffects && U(t.sideEffectDependenciesByVariable, e, G).add(this)), [e]) : this.error(Ut(r.localName, this.id, r.module.id), r.start) + } + const o = this.exports.get(e) + if (o) { + if (o === Bo) return [this.exportShimVariable] + const e = o.localName, + s = this.traceVariable(e, { importerForSideEffects: t, searchedNamesAndModules: n }) + return t && (Uo(s, t, this), U(t.sideEffectDependenciesByVariable, s, G).add(this)), [s] + } + if (i) return [null] + if ('default' !== e) { + const s = this.namespaceReexportsByName.get(e) ?? this.getVariableFromNamespaceReexports(e, t, n) + if ((this.namespaceReexportsByName.set(e, s), s[0])) return s + } + return this.info.syntheticNamedExports + ? [U(this.syntheticExports, e, () => new Eo(this.astContext, e, this.getSyntheticNamespace()))] + : !s && this.options.shimMissingExports + ? (this.shimMissingExport(e), [this.exportShimVariable]) + : [null] + } + hasEffects() { + return 'no-treeshake' === this.info.moduleSideEffects || this.ast.hasCachedEffects() + } + include() { + const e = ss() + this.ast.shouldBeIncluded(e) && this.ast.include(e, !1) + } + includeAllExports(e) { + this.isExecuted || (Vo(this), (this.graph.needsTreeshakingPass = !0)) + for (const t of this.exports.keys()) + if (e || t !== this.info.syntheticNamedExports) { + const e = this.getVariableForExportName(t)[0] + e.deoptimizePath(Q), e.included || this.includeVariable(e) + } + for (const e of this.getReexports()) { + const [t] = this.getVariableForExportName(e) + t && (t.deoptimizePath(Q), t.included || this.includeVariable(t), t instanceof fe && (t.module.reexported = !0)) + } + e && this.namespace.setMergedNamespaces(this.includeAndGetAdditionalMergedNamespaces()) + } + includeAllInBundle() { + this.ast.include(ss(), !0), this.includeAllExports(!1) + } + includeExportsByNames(e) { + this.isExecuted || (Vo(this), (this.graph.needsTreeshakingPass = !0)) + let t = !1 + for (const s of e) { + const e = this.getVariableForExportName(s)[0] + e && (e.deoptimizePath(Q), e.included || this.includeVariable(e)), this.exports.has(s) || this.reexportDescriptions.has(s) || (t = !0) + } + t && this.namespace.setMergedNamespaces(this.includeAndGetAdditionalMergedNamespaces()) + } + isIncluded() { + return this.ast && (this.ast.included || this.namespace.included || this.importedFromNotTreeshaken || this.exportShimVariable.included) + } + linkImports() { + this.addModulesToImportDescriptions(this.importDescriptions), this.addModulesToImportDescriptions(this.reexportDescriptions) + const e = [] + for (const t of this.exportAllSources) { + const s = this.graph.modulesById.get(this.resolvedIds[t].id) + s instanceof Jt ? e.push(s) : this.exportAllModules.push(s) + } + this.exportAllModules.push(...e) + } + log(e, t, s) { + this.addLocationToLogProps(t, s), this.options.onLog(e, t) + } + render(e) { + const t = this.magicString.clone() + this.ast.render(t, e), t.trim() + const { usesTopLevelAwait: s } = this.astContext + return s && 'es' !== e.format && 'system' !== e.format + ? Qe(((i = this.id), (n = e.format), { code: 'INVALID_TLA_FORMAT', id: i, message: `Module format "${n}" does not support top-level await. Use the "es" or "system" output formats rather.` })) + : { source: t, usesTopLevelAwait: s } + var i, n + } + setSource({ ast: e, code: t, customTransformCache: s, originalCode: i, originalSourcemap: n, resolvedIds: r, sourcemapChain: o, transformDependencies: a, transformFiles: l, ...c }) { + Oo('generate ast', 3), + (this.info.code = t), + (this.originalCode = i), + (this.originalSourcemap = Ao(n)), + (this.sourcemapChain = o.map((e) => (e.missing ? e : Ao(e)))), + So(this.originalSourcemap, this.sourcemapChain), + l && (this.transformFiles = l), + (this.transformDependencies = a), + (this.customTransformCache = s), + this.updateOptions(c) + const h = e ?? this.tryParse() + Do('generate ast', 3), Oo('analyze ast', 3), (this.resolvedIds = r ?? Object.create(null)) + const u = this.id + ;(this.magicString = new y(t, { filename: this.excludeFromSourcemap ? null : u, indentExclusionRanges: [] })), + (this.astContext = { + addDynamicImport: this.addDynamicImport.bind(this), + addExport: this.addExport.bind(this), + addImport: this.addImport.bind(this), + addImportMeta: this.addImportMeta.bind(this), + code: t, + deoptimizationTracker: this.graph.deoptimizationTracker, + error: this.error.bind(this), + fileName: u, + getExports: this.getExports.bind(this), + getModuleExecIndex: () => this.execIndex, + getModuleName: this.basename.bind(this), + getNodeConstructor: (e) => mo[e] || mo.UnknownNode, + getReexports: this.getReexports.bind(this), + importDescriptions: this.importDescriptions, + includeAllExports: () => this.includeAllExports(!0), + includeDynamicImport: this.includeDynamicImport.bind(this), + includeVariableInModule: this.includeVariableInModule.bind(this), + log: this.log.bind(this), + magicString: this.magicString, + manualPureFunctions: this.graph.pureFunctions, + module: this, + moduleContext: this.context, + options: this.options, + requestTreeshakingPass: () => (this.graph.needsTreeshakingPass = !0), + traceExport: (e) => this.getVariableForExportName(e)[0], + traceVariable: this.traceVariable.bind(this), + usesTopLevelAwait: !1 + }), + (this.scope = new uo(this.graph.scope, this.astContext)), + (this.namespace = new xo(this.astContext)), + (this.ast = new oo(h, { context: this.astContext, type: 'Module' }, this.scope)), + e || !1 !== this.options.cache + ? (this.info.ast = h) + : Object.defineProperty(this.info, 'ast', { + get: () => { + if (this.graph.astLru.has(u)) return this.graph.astLru.get(u) + { + const e = this.tryParse() + return this.graph.astLru.set(u, e), e + } + } + }), + Do('analyze ast', 3) + } + toJSON() { + return { + assertions: this.info.assertions, + ast: this.info.ast, + code: this.info.code, + customTransformCache: this.customTransformCache, + dependencies: Array.from(this.dependencies, ko), + id: this.id, + meta: this.info.meta, + moduleSideEffects: this.info.moduleSideEffects, + originalCode: this.originalCode, + originalSourcemap: this.originalSourcemap, + resolvedIds: this.resolvedIds, + sourcemapChain: this.sourcemapChain, + syntheticNamedExports: this.info.syntheticNamedExports, + transformDependencies: this.transformDependencies, + transformFiles: this.transformFiles + } + } + traceVariable(e, { importerForSideEffects: t, isExportAllSearch: s, searchedNamesAndModules: i } = ge) { + const n = this.scope.variables.get(e) + if (n) return n + const r = this.importDescriptions.get(e) + if (r) { + const e = r.module + if (e instanceof jo && '*' === r.name) return e.namespace + const [n] = zo(e, r.name, t || this, s, i) + return n || this.error(Ut(r.name, this.id, e.id), r.start) + } + return null + } + updateOptions({ meta: e, moduleSideEffects: t, syntheticNamedExports: s }) { + null != t && (this.info.moduleSideEffects = t), null != s && (this.info.syntheticNamedExports = s), null != e && Object.assign(this.info.meta, e) + } + addDynamicImport(e) { + let t = e.source + t instanceof lo ? 1 === t.quasis.length && t.quasis[0].value.cooked && (t = t.quasis[0].value.cooked) : t instanceof Bn && 'string' == typeof t.value && (t = t.value), + this.dynamicImports.push({ argument: t, id: null, node: e, resolution: null }) + } + addExport(e) { + if (e instanceof rr) this.exports.set('default', { identifier: e.variable.getAssignedVariableName(), localName: 'default' }) + else if (e instanceof ir) { + const t = e.source.value + if ((this.addSource(t, e), e.exported)) { + const s = e.exported.name + this.reexportDescriptions.set(s, { localName: '*', module: null, source: t, start: e.start }) + } else this.exportAllSources.add(t) + } else if (e.source instanceof Bn) { + const t = e.source.value + this.addSource(t, e) + for (const { exported: s, local: i, start: n } of e.specifiers) { + const e = s instanceof Bn ? s.value : s.name + this.reexportDescriptions.set(e, { localName: i instanceof Bn ? i.value : i.name, module: null, source: t, start: n }) + } + } else if (e.declaration) { + const t = e.declaration + if (t instanceof fo) for (const e of t.declarations) for (const t of ts(e.id)) this.exports.set(t, { identifier: null, localName: t }) + else { + const e = t.id.name + this.exports.set(e, { identifier: null, localName: e }) + } + } else + for (const { local: t, exported: s } of e.specifiers) { + const e = t.name, + i = s instanceof hn ? s.name : s.value + this.exports.set(i, { identifier: null, localName: e }) + } + } + addImport(e) { + const t = e.source.value + this.addSource(t, e) + for (const s of e.specifiers) { + const e = s instanceof dr ? 'default' : s instanceof qr ? '*' : s.imported instanceof hn ? s.imported.name : s.imported.value + this.importDescriptions.set(s.local.name, { module: null, name: e, source: t, start: s.start }) + } + } + addImportMeta(e) { + this.importMetas.push(e) + } + addLocationToLogProps(e, t) { + ;(e.id = this.id), (e.pos = t) + let s = this.info.code + const i = Ce(s, t, { offsetLine: 1 }) + if (i) { + let { column: n, line: r } = i + try { + ;({ column: n, line: r } = (function (e, t) { + const s = e.filter((e) => !e.missing) + e: for (; s.length > 0; ) { + const e = s.pop().mappings[t.line - 1] + if (e) { + const s = e.filter((e) => e.length > 1), + i = s[s.length - 1] + for (const e of s) + if (e[0] >= t.column || e === i) { + t = { column: e[3], line: e[2] + 1 } + continue e + } + } + throw new Error("Can't resolve original location of error.") + } + return t + })(this.sourcemapChain, { column: n, line: r })), + (s = this.originalCode) + } catch (e) { + this.options.onLog( + Ae, + (function (e, t, s, i, n) { + return { cause: e, code: 'SOURCEMAP_ERROR', id: t, loc: { column: s, file: t, line: i }, message: `Error when using sourcemap for reporting an error: ${e.message}`, pos: n } + })(e, this.id, n, r, t) + ) + } + Ze(e, { column: n, line: r }, s, this.id) + } + } + addModulesToImportDescriptions(e) { + for (const t of e.values()) { + const { id: e } = this.resolvedIds[t.source] + t.module = this.graph.modulesById.get(e) + } + } + addRelevantSideEffectDependencies(e, t, s) { + const i = new Set(), + n = (r) => { + for (const o of r) i.has(o) || (i.add(o), t.has(o) ? e.add(o) : (o.info.moduleSideEffects || s.has(o)) && (o instanceof Jt || o.hasEffects() ? e.add(o) : n(o.dependencies))) + } + n(this.dependencies), n(s) + } + addSource(e, t) { + const s = ((i = t.assertions), i?.length ? Object.fromEntries(i.map((e) => [Io(e), e.value.value])) : ge) + var i + const n = this.sourcesWithAssertions.get(e) + n ? wo(n, s) && this.log(Ae, Bt(n, s, e, this.id), t.start) : this.sourcesWithAssertions.set(e, s) + } + getVariableFromNamespaceReexports(e, t, s) { + let i = null + const n = new Map(), + r = new Set() + for (const o of this.exportAllModules) { + if (o.info.syntheticNamedExports === e) continue + const [a, l] = zo(o, e, t, !0, Go(s)) + o instanceof Jt || l ? r.add(a) : a instanceof Eo ? i || (i = a) : a && n.set(a, o) + } + if (n.size > 0) { + const t = [...n], + s = t[0][0] + return 1 === t.length + ? [s] + : (this.options.onLog( + Ae, + ((o = e), + (a = this.id), + (l = t.map(([, e]) => e.id)), + { + binding: o, + code: 'NAMESPACE_CONFLICT', + ids: l, + message: `Conflicting namespaces: "${V(a)}" re-exports "${o}" from one of the modules ${Oe(l.map((e) => V(e)))} (will be ignored).`, + reexporter: a + }) + ), + [null]) + } + var o, a, l + if (r.size > 0) { + const t = [...r], + s = t[0] + return ( + t.length > 1 && + this.options.onLog( + Ae, + (function (e, t, s, i) { + return { + binding: e, + code: 'AMBIGUOUS_EXTERNAL_NAMESPACES', + ids: i, + message: `Ambiguous external namespace resolution: "${V(t)}" re-exports "${e}" from one of the external modules ${Oe(i.map((e) => V(e)))}, guessing "${V(s)}".`, + reexporter: t + } + })( + e, + this.id, + s.module.id, + t.map((e) => e.module.id) + ) + ), + [s, !0] + ) + } + return i ? [i] : [null] + } + includeAndGetAdditionalMergedNamespaces() { + const e = new Set(), + t = new Set() + for (const s of [this, ...this.exportAllModules]) + if (s instanceof Jt) { + const [t] = s.getVariableForExportName('*') + t.include(), this.includedImports.add(t), e.add(t) + } else if (s.info.syntheticNamedExports) { + const e = s.getSyntheticNamespace() + e.include(), this.includedImports.add(e), t.add(e) + } + return [...t, ...e] + } + includeDynamicImport(e) { + const t = this.dynamicImports.find((t) => t.node === e).resolution + if (t instanceof jo) { + t.includedDynamicImporters.push(this) + const s = this.options.treeshake ? e.getDeterministicImportedNames() : void 0 + s ? t.includeExportsByNames(s) : t.includeAllExports(!0) + } + } + includeVariable(e) { + const t = e.module + if (e.included) t instanceof jo && t !== this && Fo(e, this) + else if ((e.include(), (this.graph.needsTreeshakingPass = !0), t instanceof jo && (t.isExecuted || Vo(t), t !== this))) { + const t = Fo(e, this) + for (const e of t) e.isExecuted || Vo(e) + } + } + includeVariableInModule(e) { + this.includeVariable(e) + const t = e.module + t && t !== this && this.includedImports.add(e) + } + shimMissingExport(e) { + var t, s + this.options.onLog(Ae, ((t = this.id), { binding: (s = e), code: 'SHIMMED_EXPORT', exporter: t, message: `Missing export "${s}" has been shimmed in module "${V(t)}".` })), this.exports.set(e, Bo) + } + tryParse() { + try { + return this.graph.contextParse(this.info.code) + } catch (e) { + return this.error( + (function (e, t) { + let s = e.message.replace(/ \(\d+:\d+\)$/, '') + return ( + t.endsWith('.json') + ? (s += ' (Note that you need @rollup/plugin-json to import JSON files)') + : t.endsWith('.js') || (s += ' (Note that you need plugins to import files that are not JavaScript)'), + { cause: e, code: 'PARSE_ERROR', id: t, message: s } + ) + })(e, this.id), + e.pos + ) + } + } +} +function Uo(e, t, s) { + if (e.module instanceof jo && e.module !== s) { + const i = e.module.cycles + if (i.size > 0) { + const n = s.cycles + for (const r of n) + if (i.has(r)) { + t.alternativeReexportModules.set(e, s) + break + } + } + } +} +const Go = (e) => e && new Map(Array.from(e, ([e, t]) => [e, new Set(t)])) +function Wo(e) { + return e.endsWith('.js') ? e.slice(0, -3) : e +} +function qo(e, t) { + return e.autoId ? `${e.basePath ? e.basePath + '/' : ''}${Wo(t)}` : e.id ?? '' +} +function Ho(e, t, s, i, n, r, o, a = 'return ') { + const { _: l, getDirectReturnFunction: c, getFunctionIntro: h, getPropertyAccess: u, n: d, s: p } = n + if (!s) + return `${d}${d}${a}${(function (e, t, s, i, n) { + if (e.length > 0) return e[0].local + for (const { defaultVariableName: e, importPath: r, isChunk: o, name: a, namedExportsMode: l, namespaceVariableName: c, reexports: h } of t) + if (h) return Ko(a, h[0].imported, l, o, e, c, s, r, i, n) + })(e, t, i, o, u)};` + let f = '' + for (const { defaultVariableName: e, importPath: n, isChunk: a, name: h, namedExportsMode: p, namespaceVariableName: m, reexports: g } of t) + if (g && s) + for (const t of g) + if ('*' !== t.reexported) { + const s = Ko(h, t.imported, p, a, e, m, i, n, o, u) + if ((f && (f += d), '*' !== t.imported && t.needsLiveBinding)) { + const [e, i] = c([], { functionReturn: !0, lineBreakIndent: null, name: null }) + f += `Object.defineProperty(exports,${l}'${t.reexported}',${l}{${d}${r}enumerable:${l}true,${d}${r}get:${l}${e}${s}${i}${d}});` + } else f += `exports${u(t.reexported)}${l}=${l}${s};` + } + for (const { exported: t, local: s } of e) { + const e = `exports${u(t)}` + e !== s && (f && (f += d), (f += `${e}${l}=${l}${s};`)) + } + for (const { name: e, reexports: i } of t) + if (i && s) + for (const t of i) + if ('*' === t.reexported) { + f && (f += d) + const s = `{${d}${r}if${l}(k${l}!==${l}'default'${l}&&${l}!Object.prototype.hasOwnProperty.call(exports,${l}k))${l}${Qo(e, t.needsLiveBinding, r, n)}${p}${d}}` + f += `Object.keys(${e}).forEach(${h(['k'], { isAsync: !1, name: null })}${s});` + } + return f ? `${d}${d}${f}` : '' +} +function Ko(e, t, s, i, n, r, o, a, l, c) { + if ('default' === t) { + if (!i) { + const t = o(a), + s = vr[t] ? n : e + return Sr(t, l) ? `${s}${c('default')}` : s + } + return s ? `${e}${c('default')}` : e + } + return '*' === t ? ((i ? !s : Ar[o(a)]) ? r : e) : `${e}${c(t)}` +} +function Yo(e) { + return e([['value', 'true']], { lineBreakIndent: null }) +} +function Xo(e, t, s, { _: i, getObject: n }) { + if (e) { + if (t) + return s + ? `Object.defineProperties(exports,${i}${n( + [ + ['__esModule', Yo(n)], + [null, `[Symbol.toStringTag]:${i}${zr(n)}`] + ], + { lineBreakIndent: null } + )});` + : `Object.defineProperty(exports,${i}'__esModule',${i}${Yo(n)});` + if (s) return `Object.defineProperty(exports,${i}Symbol.toStringTag,${i}${zr(n)});` + } + return '' +} +const Qo = (e, t, s, { _: i, getDirectReturnFunction: n, n: r }) => { + if (t) { + const [t, o] = n([], { functionReturn: !0, lineBreakIndent: null, name: null }) + return `Object.defineProperty(exports,${i}k,${i}{${r}${s}${s}enumerable:${i}true,${r}${s}${s}get:${i}${t}${e}[k]${o}${r}${s}})` + } + return `exports[k]${i}=${i}${e}[k]` +} +function Zo(e, t, s, i, n, r, o, a) { + const { _: l, cnst: c, n: h } = a, + u = new Set(), + d = [], + p = (e, t, s) => { + u.add(t), d.push(`${c} ${e}${l}=${l}/*#__PURE__*/${t}(${s});`) + } + for (const { defaultVariableName: s, imports: i, importPath: n, isChunk: r, name: o, namedExportsMode: a, namespaceVariableName: l, reexports: c } of e) + if (r) { + for (const { imported: e, reexported: t } of [...(i || []), ...(c || [])]) + if ('*' === e && '*' !== t) { + a || p(l, xr, o) + break + } + } else { + const e = t(n) + let r = !1, + a = !1 + for (const { imported: t, reexported: n } of [...(i || []), ...(c || [])]) { + let i, c + 'default' === t ? r || ((r = !0), s !== l && ((c = s), (i = vr[e]))) : '*' !== t || '*' === n || a || ((a = !0), (i = Ar[e]), (c = l)), i && p(c, i, o) + } + } + return `${Ir(u, r, o, a, s, i, n)}${d.length > 0 ? `${d.join(h)}${h}${h}` : ''}` +} +function Jo(e, t) { + return '.' !== e[0] ? e : t ? ((s = e).endsWith('.js') ? s : s + '.js') : Wo(e) + var s +} +const ea = new Set([ + ...t([ + 'assert', + 'async_hooks', + 'buffer', + 'child_process', + 'cluster', + 'console', + 'constants', + 'crypto', + 'dgram', + 'diagnostics_channel', + 'dns', + 'domain', + 'events', + 'fs', + 'http', + 'http2', + 'https', + 'inspector', + 'module', + 'net', + 'os', + 'path', + 'perf_hooks', + 'process', + 'punycode', + 'querystring', + 'readline', + 'repl', + 'stream', + 'string_decoder', + 'timers', + 'tls', + 'trace_events', + 'tty', + 'url', + 'util', + 'v8', + 'vm', + 'wasi', + 'worker_threads', + 'zlib' + ]), + 'assert/strict', + 'dns/promises', + 'fs/promises', + 'path/posix', + 'path/win32', + 'readline/promises', + 'stream/consumers', + 'stream/promises', + 'stream/web', + 'timers/promises', + 'util/types' +]) +function ta(e, t) { + const s = t.map(({ importPath: e }) => e).filter((e) => ea.has(e) || e.startsWith('node:')) + 0 !== s.length && + e( + Ae, + (function (e) { + return { + code: vt, + ids: e, + message: `Creating a browser bundle that depends on Node.js built-in modules (${Oe(e)}). You might need to include https://github.com/FredKSchott/rollup-plugin-polyfill-node` + } + })(s) + ) +} +const sa = (e, t) => e.split('.').map(t).join('') +function ia(e, t, s, i, { _: n, getPropertyAccess: r }) { + const o = e.split('.') + o[0] = ('function' == typeof s ? s(o[0]) : s[o[0]]) || o[0] + const a = o.pop() + let l = t, + c = [...o.map((e) => ((l += r(e)), `${l}${n}=${n}${l}${n}||${n}{}`)), `${l}${r(a)}`].join(`,${n}`) + `${n}=${n}${i}` + return o.length > 0 && (c = `(${c})`), c +} +function na(e) { + let t = e.length + for (; t--; ) { + const { imports: s, reexports: i } = e[t] + if (s || i) return e.slice(0, t + 1) + } + return [] +} +const ra = ({ dependencies: e, exports: t }) => { + const s = new Set(t.map((e) => e.exported)) + s.add('default') + for (const { reexports: t } of e) if (t) for (const e of t) '*' !== e.reexported && s.add(e.reexported) + return s + }, + oa = (e, t, { _: s, cnst: i, getObject: n, n: r }) => + e + ? `${r}${t}${i} _starExcludes${s}=${s}${n( + [...e].map((e) => [e, '1']), + { lineBreakIndent: { base: t, t: t } } + )};` + : '', + aa = (e, t, { _: s, n: i }) => (e.length > 0 ? `${i}${t}var ${e.join(`,${s}`)};` : ''), + la = (e, t, s) => + ca( + e.filter((e) => e.hoisted).map((e) => ({ name: e.exported, value: e.local })), + t, + s + ) +function ca(e, t, { _: s, n: i }) { + return 0 === e.length + ? '' + : 1 === e.length + ? `exports('${e[0].name}',${s}${e[0].value});${i}${i}` + : `exports({${i}` + e.map(({ name: e, value: i }) => `${t}${e}:${s}${i}`).join(`,${i}`) + `${i}});${i}${i}` +} +const ha = (e, t, s) => + ca( + e.filter((e) => e.expression).map((e) => ({ name: e.exported, value: e.local })), + t, + s + ), + ua = (e, t, s) => + ca( + e.filter((e) => e.local === go).map((e) => ({ name: e.exported, value: go })), + t, + s + ) +function da(e, t, s) { + return e ? `${t}${sa(e, s)}` : 'null' +} +var pa = { + amd: function ( + e, + { + accessedGlobals: t, + dependencies: s, + exports: i, + hasDefaultExport: n, + hasExports: r, + id: o, + indent: a, + intro: l, + isEntryFacade: c, + isModuleFacade: h, + namedExportsMode: u, + log: d, + outro: p, + snippets: f + }, + { amd: m, esModule: g, externalLiveBindings: y, freeze: x, interop: E, namespaceToStringTag: b, strict: v } + ) { + ta(d, s) + const S = s.map((e) => `'${Jo(e.importPath, m.forceJsExtensionForImports)}'`), + A = s.map((e) => e.name), + { n: k, getNonArrowFunctionIntro: I, _: w } = f + u && r && (A.unshift('exports'), S.unshift("'exports'")), t.has('require') && (A.unshift('require'), S.unshift("'require'")), t.has('module') && (A.unshift('module'), S.unshift("'module'")) + const P = qo(m, o), + C = (P ? `'${P}',${w}` : '') + (S.length > 0 ? `[${S.join(`,${w}`)}],${w}` : ''), + $ = v ? `${w}'use strict';` : '' + e.prepend(`${l}${Zo(s, E, y, x, b, t, a, f)}`) + const N = Ho(i, s, u, E, f, a, y) + let _ = Xo(u && r, c && (!0 === g || ('if-default-prop' === g && n)), h && b, f) + _ && (_ = k + k + _), + e + .append(`${N}${_}${p}`) + .indent(a) + .prepend(`${m.define}(${C}(${I(A, { isAsync: !1, name: null })}{${$}${k}${k}`) + .append(`${k}${k}}));`) + }, + cjs: function ( + e, + { accessedGlobals: t, dependencies: s, exports: i, hasDefaultExport: n, hasExports: r, indent: o, intro: a, isEntryFacade: l, isModuleFacade: c, namedExportsMode: h, outro: u, snippets: d }, + { compact: p, esModule: f, externalLiveBindings: m, freeze: g, interop: y, namespaceToStringTag: x, strict: E } + ) { + const { _: b, n: v } = d, + S = E ? `'use strict';${v}${v}` : '' + let A = Xo(h && r, l && (!0 === f || ('if-default-prop' === f && n)), c && x, d) + A && (A += v + v) + const k = (function (e, { _: t, cnst: s, n: i }, n) { + let r = '', + o = !1 + for (const { importPath: a, name: l, reexports: c, imports: h } of e) + c || h ? ((r += n && o ? ',' : `${r ? `;${i}` : ''}${s} `), (o = !0), (r += `${l}${t}=${t}require('${a}')`)) : (r && (r += n && !o ? ',' : `;${i}`), (o = !1), (r += `require('${a}')`)) + if (r) return `${r};${i}${i}` + return '' + })(s, d, p), + I = Zo(s, y, m, g, x, t, o, d) + e.prepend(`${S}${a}${A}${k}${I}`) + const w = Ho(i, s, h, y, d, o, m, `module.exports${b}=${b}`) + e.append(`${w}${u}`) + }, + es: function (e, { accessedGlobals: t, indent: s, intro: i, outro: n, dependencies: r, exports: o, snippets: a }, { externalLiveBindings: l, freeze: c, namespaceToStringTag: h }) { + const { n: u } = a, + d = (function (e, { _: t }) { + const s = [] + for (const { importPath: i, reexports: n, imports: r, name: o, assertions: a } of e) { + const e = `'${i}'${a ? `${t}assert${t}${a}` : ''};` + if (n || r) { + if (r) { + let i = null, + n = null + const o = [] + for (const e of r) 'default' === e.imported ? (i = e) : '*' === e.imported ? (n = e) : o.push(e) + n && s.push(`import${t}*${t}as ${n.local} from${t}${e}`), + i && 0 === o.length + ? s.push(`import ${i.local} from${t}${e}`) + : o.length > 0 && + s.push(`import ${i ? `${i.local},${t}` : ''}{${t}${o.map((e) => (e.imported === e.local ? e.imported : `${e.imported} as ${e.local}`)).join(`,${t}`)}${t}}${t}from${t}${e}`) + } + if (n) { + let i = null + const a = [], + l = [] + for (const e of n) '*' === e.reexported ? (i = e) : '*' === e.imported ? a.push(e) : l.push(e) + if ((i && s.push(`export${t}*${t}from${t}${e}`), a.length > 0)) { + ;(r && r.some((e) => '*' === e.imported && e.local === o)) || s.push(`import${t}*${t}as ${o} from${t}${e}`) + for (const e of a) s.push(`export${t}{${t}${o === e.reexported ? o : `${o} as ${e.reexported}`} };`) + } + l.length > 0 && s.push(`export${t}{${t}${l.map((e) => (e.imported === e.reexported ? e.imported : `${e.imported} as ${e.reexported}`)).join(`,${t}`)}${t}}${t}from${t}${e}`) + } + } else s.push(`import${t}${e}`) + } + return s + })(r, a) + d.length > 0 && (i += d.join(u) + u + u), (i += Ir(null, t, s, a, l, c, h)) && e.prepend(i) + const p = (function (e, { _: t, cnst: s }) { + const i = [], + n = [] + for (const r of e) r.expression && i.push(`${s} ${r.local}${t}=${t}${r.expression};`), n.push(r.exported === r.local ? r.local : `${r.local} as ${r.exported}`) + n.length > 0 && i.push(`export${t}{${t}${n.join(`,${t}`)}${t}};`) + return i + })(o, a) + p.length > 0 && e.append(u + u + p.join(u).trim()), n && e.append(n), e.trim() + }, + iife: function ( + e, + { accessedGlobals: t, dependencies: s, exports: i, hasDefaultExport: n, hasExports: r, indent: o, intro: a, namedExportsMode: l, log: c, outro: h, snippets: u }, + { compact: d, esModule: p, extend: f, freeze: m, externalLiveBindings: g, globals: y, interop: x, name: E, namespaceToStringTag: b, strict: v } + ) { + const { _: S, getNonArrowFunctionIntro: A, getPropertyAccess: k, n: I } = u, + w = E && E.includes('.'), + P = !f && !w + if (E && P && (ve((C = E)) || be.test(C))) + return Qe( + (function (e) { + return { code: ct, message: `Given name "${e}" is not a legal JS identifier. If you need this, you can try "output.extend: true".`, url: De(Fe) } + })(E) + ) + var C + ta(c, s) + const $ = na(s), + N = $.map((e) => e.globalName || 'null'), + _ = $.map((e) => e.name) + r && !E && c(Ae, { code: bt, message: 'If you do not supply "output.name", you may not be able to access the exports of an IIFE bundle.', url: De(Ke) }), + l && r && (f ? (N.unshift(`this${sa(E, k)}${S}=${S}this${sa(E, k)}${S}||${S}{}`), _.unshift('exports')) : (N.unshift('{}'), _.unshift('exports'))) + const R = v ? `${o}'use strict';${I}` : '', + M = Zo(s, x, g, m, b, t, o, u) + e.prepend(`${a}${M}`) + let O = `(${A(_, { isAsync: !1, name: null })}{${I}${R}${I}` + r && + (!E || (f && l) || (O = (P ? `var ${E}` : `this${sa(E, k)}`) + `${S}=${S}${O}`), + w && + (O = + (function (e, t, s, { _: i, getPropertyAccess: n, s: r }, o) { + const a = e.split('.') + ;(a[0] = ('function' == typeof s ? s(a[0]) : s[a[0]]) || a[0]), a.pop() + let l = t + return a.map((e) => ((l += n(e)), `${l}${i}=${i}${l}${i}||${i}{}${r}`)).join(o ? ',' : '\n') + (o && a.length > 0 ? ';' : '\n') + })(E, 'this', y, u, d) + O)) + let D = `${I}${I}})(${N.join(`,${S}`)});` + r && !f && l && (D = `${I}${I}${o}return exports;${D}`) + const L = Ho(i, s, l, x, u, o, g) + let T = Xo(l && r, !0 === p || ('if-default-prop' === p && n), b, u) + T && (T = I + I + T), e.append(`${L}${T}${h}`).indent(o).prepend(O).append(D) + }, + system: function ( + e, + { accessedGlobals: t, dependencies: s, exports: i, hasExports: n, indent: r, intro: o, snippets: a, outro: l, usesTopLevelAwait: c }, + { externalLiveBindings: h, freeze: u, name: d, namespaceToStringTag: p, strict: f, systemNullSetters: m } + ) { + const { _: g, getFunctionIntro: y, getNonArrowFunctionIntro: x, n: E, s: b } = a, + { + importBindings: v, + setters: S, + starExcludes: A + } = (function (e, t, s, { _: i, cnst: n, getObject: r, getPropertyAccess: o, n: a }) { + const l = [], + c = [] + let h = null + for (const { imports: u, reexports: d } of e) { + const p = [] + if (u) for (const e of u) l.push(e.local), '*' === e.imported ? p.push(`${e.local}${i}=${i}module;`) : p.push(`${e.local}${i}=${i}module${o(e.imported)};`) + if (d) { + const a = [] + let l = !1 + for (const { imported: e, reexported: t } of d) '*' === t ? (l = !0) : a.push([t, '*' === e ? 'module' : `module${o(e)}`]) + if (a.length > 1 || l) { + const o = r(a, { lineBreakIndent: null }) + l + ? (h || (h = ra({ dependencies: e, exports: t })), + p.push(`${n} setter${i}=${i}${o};`, `for${i}(${n} name in module)${i}{`, `${s}if${i}(!_starExcludes[name])${i}setter[name]${i}=${i}module[name];`, '}', 'exports(setter);')) + : p.push(`exports(${o});`) + } else { + const [e, t] = a[0] + p.push(`exports('${e}',${i}${t});`) + } + } + c.push(p.join(`${a}${s}${s}${s}`)) + } + return { importBindings: l, setters: c, starExcludes: h } + })(s, i, r, a), + k = d ? `'${d}',${g}` : '', + I = t.has('module') ? ['exports', 'module'] : n ? ['exports'] : [] + let w = + `System.register(${k}[` + + s.map(({ importPath: e }) => `'${e}'`).join(`,${g}`) + + `],${g}(${x(I, { isAsync: !1, name: null })}{${E}${r}${f ? "'use strict';" : ''}` + + oa(A, r, a) + + aa(v, r, a) + + `${E}${r}return${g}{${ + S.length > 0 + ? `${E}${r}${r}setters:${g}[${S.map((e) => + e ? `${y(['module'], { isAsync: !1, name: null })}{${E}${r}${r}${r}${e}${E}${r}${r}}` : m ? 'null' : `${y([], { isAsync: !1, name: null })}{}` + ).join(`,${g}`)}],` + : '' + }${E}` + w += `${r}${r}execute:${g}(${x([], { isAsync: c, name: null })}{${E}${E}` + const P = `${r}${r}})${E}${r}}${b}${E}}));` + e.prepend(o + Ir(null, t, r, a, h, u, p) + la(i, r, a)) + .append(`${l}${E}${E}` + ha(i, r, a) + ua(i, r, a)) + .indent(`${r}${r}${r}`) + .append(P) + .prepend(w) + }, + umd: function ( + e, + { accessedGlobals: t, dependencies: s, exports: i, hasDefaultExport: n, hasExports: r, id: o, indent: a, intro: l, namedExportsMode: c, log: h, outro: u, snippets: d }, + { amd: p, compact: f, esModule: m, extend: g, externalLiveBindings: y, freeze: x, interop: E, name: b, namespaceToStringTag: v, globals: S, noConflict: A, strict: k } + ) { + const { _: I, cnst: w, getFunctionIntro: P, getNonArrowFunctionIntro: C, getPropertyAccess: $, n: N, s: _ } = d, + R = f ? 'f' : 'factory', + M = f ? 'g' : 'global' + if (r && !b) + return Qe({ code: bt, message: 'You must supply "output.name" for UMD bundles that have exports so that the exports are accessible in environments without a module loader.', url: De(Ke) }) + ta(h, s) + const O = s.map((e) => `'${Jo(e.importPath, p.forceJsExtensionForImports)}'`), + D = s.map((e) => `require('${e.importPath}')`), + L = na(s), + T = L.map((e) => da(e.globalName, M, $)), + V = L.map((e) => e.name) + c && (r || A) && (O.unshift("'exports'"), D.unshift('exports'), T.unshift(ia(b, M, S, (g ? `${da(b, M, $)}${I}||${I}` : '') + '{}', d)), V.unshift('exports')) + const B = qo(p, o), + z = (B ? `'${B}',${I}` : '') + (O.length > 0 ? `[${O.join(`,${I}`)}],${I}` : ''), + F = p.define, + j = !c && r ? `module.exports${I}=${I}` : '', + U = k ? `${I}'use strict';${N}` : '' + let G + if (A) { + const e = f ? 'e' : 'exports' + let t + if (!c && r) t = `${w} ${e}${I}=${I}${ia(b, M, S, `${R}(${T.join(`,${I}`)})`, d)};` + else { + t = `${w} ${e}${I}=${I}${T.shift()};${N}${a}${a}${R}(${[e, ...T].join(`,${I}`)});` + } + G = `(${P([], { isAsync: !1, name: null })}{${N}${a}${a}${w} current${I}=${I}${(function (e, t, { _: s, getPropertyAccess: i }) { + let n = t + return e + .split('.') + .map((e) => (n += i(e))) + .join(`${s}&&${s}`) + })(b, M, d)};${N}${a}${a}${t}${N}${a}${a}${e}.noConflict${I}=${I}${P([], { isAsync: !1, name: null })}{${I}${da(b, M, $)}${I}=${I}current;${I}return ${e}${_}${I}};${N}${a}})()` + } else (G = `${R}(${T.join(`,${I}`)})`), !c && r && (G = ia(b, M, S, G, d)) + const W = r || (A && c) || T.length > 0, + q = [R] + W && q.unshift(M) + const H = W ? `this,${I}` : '', + K = W ? `(${M}${I}=${I}typeof globalThis${I}!==${I}'undefined'${I}?${I}globalThis${I}:${I}${M}${I}||${I}self,${I}` : '', + Y = W ? ')' : '', + X = W ? `${a}typeof exports${I}===${I}'object'${I}&&${I}typeof module${I}!==${I}'undefined'${I}?${I}${j}${R}(${D.join(`,${I}`)})${I}:${N}` : '', + Q = + `(${C(q, { isAsync: !1, name: null })}{${N}` + + X + + `${a}typeof ${F}${I}===${I}'function'${I}&&${I}${F}.amd${I}?${I}${F}(${z}${R})${I}:${N}` + + `${a}${K}${G}${Y};${N}` + + `})(${H}(${C(V, { isAsync: !1, name: null })}{${U}${N}`, + Z = N + N + '}));' + e.prepend(`${l}${Zo(s, E, y, x, v, t, a, d)}`) + const J = Ho(i, s, c, E, d, a, y) + let ee = Xo(c && r, !0 === m || ('if-default-prop' === m && n), v, d) + ee && (ee = N + N + ee), e.append(`${J}${ee}${u}`).trim().indent(a).append(Z).prepend(Q) + } +} +const fa = (e, t) => (t ? `${e}\n${t}` : e), + ma = (e, t) => (t ? `${e}\n\n${t}` : e) +async function ga(e, t, s) { + try { + let [i, n, r, o] = await Promise.all([ + t.hookReduceValue('banner', e.banner(s), [s], fa), + t.hookReduceValue('footer', e.footer(s), [s], fa), + t.hookReduceValue('intro', e.intro(s), [s], ma), + t.hookReduceValue('outro', e.outro(s), [s], ma) + ]) + return r && (r += '\n\n'), o && (o = `\n\n${o}`), i && (i += '\n'), n && (n = '\n' + n), { banner: i, footer: n, intro: r, outro: o } + } catch (e) { + return Qe(((i = e.message), (n = e.hook), (r = e.plugin), { code: Je, message: `Could not retrieve "${n}". Check configuration of plugin "${r}".\n\tError Message: ${i}` })) + } + var i, n, r +} +const ya = { amd: ba, cjs: ba, es: Ea, iife: ba, system: Ea, umd: ba } +function xa(e, t, s, i, n, r, o, a, l, c, h, u, d, p) { + const f = [...e].reverse() + for (const e of f) e.scope.addUsedOutsideNames(i, n, u, d) + !(function (e, t, s) { + for (const i of t) { + for (const t of i.scope.variables.values()) t.included && !(t.renderBaseName || (t instanceof ho && t.getOriginalVariable() !== t)) && t.setRenderNames(null, Li(t.name, e, t.forbiddenNames)) + if (s.has(i)) { + const t = i.namespace + t.setRenderNames(null, Li(t.name, e, t.forbiddenNames)) + } + } + })(i, f, p), + ya[n](i, s, t, r, o, a, l, c, h) + for (const e of f) e.scope.deconflict(n, u, d) +} +function Ea(e, t, s, i, n, r, o, a, l) { + for (const t of s.dependencies) (n || t instanceof j) && (t.variableName = Li(t.suggestedVariableName, e, null)) + for (const s of t) { + const t = s.module, + i = s.name + s.isNamespace && (n || t instanceof Jt) + ? s.setRenderNames(null, (t instanceof Jt ? a.get(t) : o.get(t)).variableName) + : t instanceof Jt && 'default' === i + ? s.setRenderNames(null, Li([...t.exportedVariables].some(([e, t]) => '*' === t && e.included) ? t.suggestedVariableName + '__default' : t.suggestedVariableName, e, s.forbiddenNames)) + : s.setRenderNames(null, Li(i, e, s.forbiddenNames)) + } + for (const t of l) t.setRenderNames(null, Li(t.name, e, t.forbiddenNames)) +} +function ba(e, t, { deconflictedDefault: s, deconflictedNamespace: i, dependencies: n }, r, o, a, l, c) { + for (const t of n) t.variableName = Li(t.suggestedVariableName, e, null) + for (const t of i) t.namespaceVariableName = Li(`${t.suggestedVariableName}__namespace`, e, null) + for (const t of s) t.defaultVariableName = i.has(t) && kr(r(t.id), a) ? t.namespaceVariableName : Li(`${t.suggestedVariableName}__default`, e, null) + for (const e of t) { + const t = e.module + if (t instanceof Jt) { + const s = c.get(t), + i = e.name + if ('default' === i) { + const i = r(t.id), + n = vr[i] ? s.defaultVariableName : s.variableName + Sr(i, a) ? e.setRenderNames(n, 'default') : e.setRenderNames(null, n) + } else '*' === i ? e.setRenderNames(null, Ar[r(t.id)] ? s.namespaceVariableName : s.variableName) : e.setRenderNames(s.variableName, null) + } else { + const s = l.get(t) + o && e.isNamespace + ? e.setRenderNames(null, 'default' === s.exportMode ? s.namespaceVariableName : s.variableName) + : 'default' === s.exportMode + ? e.setRenderNames(null, s.variableName) + : e.setRenderNames(s.variableName, s.getVariableExportName(e)) + } + } +} +function va(e, { exports: t, name: s, format: i }, n, r) { + const o = e.getExportNames() + if ('default' === t) { + if (1 !== o.length || 'default' !== o[0]) return Qe(Ft('default', o, n)) + } else if ('none' === t && o.length > 0) return Qe(Ft('none', o, n)) + return ( + 'auto' === t && + (0 === o.length + ? (t = 'none') + : 1 === o.length && 'default' === o[0] + ? (t = 'default') + : ('es' !== i && + 'system' !== i && + o.includes('default') && + r( + Ae, + (function (e, t) { + return { + code: At, + id: e, + message: `Entry module "${V(e)}" is using named and default exports together. Consumers of your bundle will have to use \`${ + t || 'chunk' + }.default\` to access the default export, which may not be what you want. Use \`output.exports: "named"\` to disable this warning.`, + url: De(ze) + } + })(n, s) + ), + (t = 'named'))), + t + ) +} +function Sa(e) { + const t = e.split('\n'), + s = t.filter((e) => /^\t+/.test(e)), + i = t.filter((e) => /^ {2,}/.test(e)) + if (0 === s.length && 0 === i.length) return null + if (s.length >= i.length) return '\t' + const n = i.reduce((e, t) => { + const s = /^ +/.exec(t)[0].length + return Math.min(s, e) + }, 1 / 0) + return ' '.repeat(n) +} +function Aa(e, t, s, i, n, r) { + const o = e.getDependenciesToBeIncluded() + for (const e of o) { + if (e instanceof Jt) { + t.push(r.get(e)) + continue + } + const o = n.get(e) + o === i ? s.has(e) || (s.add(e), Aa(e, t, s, i, n, r)) : t.push(o) + } +} +const ka = '!~{', + Ia = '}~', + wa = new RegExp(`${ka}[0-9a-zA-Z_$]{1,59}${Ia}`, 'g'), + Pa = (e, t) => e.replace(wa, (e) => t.get(e) || e), + Ca = (e, t, s) => e.replace(wa, (e) => (e === t ? s : e)), + $a = (e, t) => { + const s = new Set(), + i = e.replace(wa, (e) => (t.has(e) ? (s.add(e), `${ka}${'0'.repeat(e.length - 5)}${Ia}`) : e)) + return { containedPlaceholders: s, transformedCode: i } + }, + Na = Symbol('bundleKeys'), + _a = { type: 'placeholder' } +function Ra(e, t, s) { + return B(e) + ? Qe( + Xt( + `Invalid pattern "${e}" for "${t}", patterns can be neither absolute nor relative paths. If you want your files to be stored in a subdirectory, write its name without a leading slash like this: subdirectory/pattern.` + ) + ) + : e.replace(/\[(\w+)(:\d+)?]/g, (e, i, n) => { + if (!s.hasOwnProperty(i) || (n && 'hash' !== i)) return Qe(Xt(`"[${i}${n || ''}]" is not a valid placeholder in the "${t}" pattern.`)) + const r = s[i](n && Number.parseInt(n.slice(1))) + return B(r) ? Qe(Xt(`Invalid substitution "${r}" for placeholder "[${i}]" in "${t}" pattern, can be neither absolute nor relative path.`)) : r + }) +} +function Ma(e, { [Na]: t }) { + if (!t.has(e.toLowerCase())) return e + const s = N(e) + e = e.slice(0, Math.max(0, e.length - s.length)) + let i, + n = 1 + for (; t.has((i = e + ++n + s).toLowerCase()); ); + return i +} +const Oa = new Set(['.js', '.jsx', '.ts', '.tsx', '.mjs', '.mts', '.cjs', '.cts']) +function Da(e, t, s, i) { + const n = 'function' == typeof t ? t(e.id) : t[e.id] + return ( + n || + (s + ? (i(Ae, ((r = e.id), (o = e.variableName), { code: xt, id: r, message: `No name was provided for external module "${r}" in "output.globals" – guessing "${o}".`, names: [o], url: De(Ge) })), + e.variableName) + : void 0) + ) + var r, o +} +class La { + constructor(e, t, s, i, n, r, o, a, l, c, h, u, d, p, f) { + ;(this.orderedModules = e), + (this.inputOptions = t), + (this.outputOptions = s), + (this.unsetOptions = i), + (this.pluginDriver = n), + (this.modulesById = r), + (this.chunkByModule = o), + (this.externalChunkByModule = a), + (this.facadeChunkByModule = l), + (this.includedNamespaces = c), + (this.manualChunkAlias = h), + (this.getPlaceholder = u), + (this.bundle = d), + (this.inputBase = p), + (this.snippets = f), + (this.entryModules = []), + (this.exportMode = 'named'), + (this.facadeModule = null), + (this.namespaceVariableName = ''), + (this.variableName = ''), + (this.accessedGlobalsByScope = new Map()), + (this.dependencies = new Set()), + (this.dynamicEntryModules = []), + (this.dynamicName = null), + (this.exportNamesByVariable = new Map()), + (this.exports = new Set()), + (this.exportsByName = new Map()), + (this.fileName = null), + (this.implicitEntryModules = []), + (this.implicitlyLoadedBefore = new Set()), + (this.imports = new Set()), + (this.includedDynamicImports = null), + (this.includedReexportsByModule = new Map()), + (this.isEmpty = !0), + (this.name = null), + (this.needsExportsShim = !1), + (this.preRenderedChunkInfo = null), + (this.preliminaryFileName = null), + (this.preliminarySourcemapFileName = null), + (this.renderedChunkInfo = null), + (this.renderedDependencies = null), + (this.renderedModules = Object.create(null)), + (this.sortedExportNames = null), + (this.strictFacade = !1), + (this.execIndex = e.length > 0 ? e[0].execIndex : 1 / 0) + const m = new Set(e) + for (const t of e) { + o.set(t, this), t.namespace.included && !s.preserveModules && c.add(t), this.isEmpty && t.isIncluded() && (this.isEmpty = !1), (t.info.isEntry || s.preserveModules) && this.entryModules.push(t) + for (const e of t.includedDynamicImporters) m.has(e) || (this.dynamicEntryModules.push(t), t.info.syntheticNamedExports && (c.add(t), this.exports.add(t.namespace))) + t.implicitlyLoadedAfter.size > 0 && this.implicitEntryModules.push(t) + } + this.suggestedVariableName = Se(this.generateVariableName()) + } + static generateFacade(e, t, s, i, n, r, o, a, l, c, h, u, d, p, f) { + const m = new La([], e, t, s, i, n, r, o, a, l, null, u, d, p, f) + m.assignFacadeName(h, c), a.has(c) || a.set(c, m) + for (const e of c.getDependenciesToBeIncluded()) m.dependencies.add(e instanceof jo ? r.get(e) : o.get(e)) + return ( + !m.dependencies.has(r.get(c)) && c.info.moduleSideEffects && c.hasEffects() && m.dependencies.add(r.get(c)), + m.ensureReexportsAreAvailableForModule(c), + (m.facadeModule = c), + (m.strictFacade = !0), + m + ) + } + canModuleBeFacade(e, t) { + const s = e.getExportNamesByVariable() + for (const e of this.exports) if (!s.has(e)) return !1 + for (const i of t) if (!(i.module === e || s.has(i) || (i instanceof Eo && s.has(i.getBaseVariable())))) return !1 + return !0 + } + finalizeChunk(e, t, s, i) { + const n = this.getRenderedChunkInfo(), + r = (e) => Pa(e, i), + o = n.fileName, + a = (this.fileName = r(o)) + return { + ...n, + code: e, + dynamicImports: n.dynamicImports.map(r), + fileName: a, + implicitlyLoadedBefore: n.implicitlyLoadedBefore.map(r), + importedBindings: Object.fromEntries(Object.entries(n.importedBindings).map(([e, t]) => [r(e), t])), + imports: n.imports.map(r), + map: t, + preliminaryFileName: o, + referencedFiles: n.referencedFiles.map(r), + sourcemapFileName: s + } + } + generateExports() { + this.sortedExportNames = null + const e = new Set(this.exports) + if (null !== this.facadeModule && (!1 !== this.facadeModule.preserveSignature || this.strictFacade)) { + const t = this.facadeModule.getExportNamesByVariable() + for (const [s, i] of t) { + this.exportNamesByVariable.set(s, [...i]) + for (const e of i) this.exportsByName.set(e, s) + e.delete(s) + } + } + this.outputOptions.minifyInternalExports + ? (function (e, t, s) { + let i = 0 + for (const n of e) { + let [e] = n.name + if (t.has(e)) + do { + ;(e = Di(++i)), 49 === e.charCodeAt(0) && ((i += 9 * 64 ** (e.length - 1)), (e = Di(i))) + } while (Ee.has(e) || t.has(e)) + t.set(e, n), s.set(n, [e]) + } + })(e, this.exportsByName, this.exportNamesByVariable) + : (function (e, t, s) { + for (const i of e) { + let e = 0, + n = i.name + for (; t.has(n); ) n = i.name + '$' + ++e + t.set(n, i), s.set(i, [n]) + } + })(e, this.exportsByName, this.exportNamesByVariable), + (this.outputOptions.preserveModules || (this.facadeModule && this.facadeModule.info.isEntry)) && (this.exportMode = va(this, this.outputOptions, this.facadeModule.id, this.inputOptions.onLog)) + } + generateFacades() { + const e = [], + t = new Set([...this.entryModules, ...this.implicitEntryModules]), + s = new Set(this.dynamicEntryModules.map(({ namespace: e }) => e)) + for (const e of t) if (e.preserveSignature) for (const t of e.getExportNamesByVariable().keys()) this.chunkByModule.get(t.module) === this && s.add(t) + for (const i of t) { + const t = Array.from(new Set(i.chunkNames.filter(({ isUserDefined: e }) => e).map(({ name: e }) => e)), (e) => ({ name: e })) + if ((0 === t.length && i.isUserDefinedEntryPoint && t.push({}), t.push(...Array.from(i.chunkFileNames, (e) => ({ fileName: e }))), 0 === t.length && t.push({}), !this.facadeModule)) { + const e = !this.outputOptions.preserveModules && ('strict' === i.preserveSignature || ('exports-only' === i.preserveSignature && i.getExportNamesByVariable().size > 0)) + ;(e && !this.canModuleBeFacade(i, s)) || + ((this.facadeModule = i), this.facadeChunkByModule.set(i, this), i.preserveSignature && (this.strictFacade = e), this.assignFacadeName(t.shift(), i, this.outputOptions.preserveModules)) + } + for (const s of t) + e.push( + La.generateFacade( + this.inputOptions, + this.outputOptions, + this.unsetOptions, + this.pluginDriver, + this.modulesById, + this.chunkByModule, + this.externalChunkByModule, + this.facadeChunkByModule, + this.includedNamespaces, + i, + s, + this.getPlaceholder, + this.bundle, + this.inputBase, + this.snippets + ) + ) + } + for (const e of this.dynamicEntryModules) + e.info.syntheticNamedExports || + (!this.facadeModule && this.canModuleBeFacade(e, s) + ? ((this.facadeModule = e), this.facadeChunkByModule.set(e, this), (this.strictFacade = !0), (this.dynamicName = Ta(e))) + : this.facadeModule === e && !this.strictFacade && this.canModuleBeFacade(e, s) + ? (this.strictFacade = !0) + : this.facadeChunkByModule.get(e)?.strictFacade || (this.includedNamespaces.add(e), this.exports.add(e.namespace))) + return this.outputOptions.preserveModules || this.addNecessaryImportsForFacades(), e + } + getChunkName() { + return this.name ?? (this.name = this.outputOptions.sanitizeFileName(this.getFallbackChunkName())) + } + getExportNames() { + return this.sortedExportNames ?? (this.sortedExportNames = [...this.exportsByName.keys()].sort()) + } + getFileName() { + return this.fileName || this.getPreliminaryFileName().fileName + } + getImportPath(e) { + return L(F(e, this.getFileName(), 'amd' === this.outputOptions.format && !this.outputOptions.amd.forceJsExtensionForImports, !0)) + } + getPreliminaryFileName() { + if (this.preliminaryFileName) return this.preliminaryFileName + let e, + t = null + const { chunkFileNames: s, entryFileNames: i, file: n, format: r, preserveModules: o } = this.outputOptions + if (n) e = C(n) + else if (null === this.fileName) { + const [n, a] = o || this.facadeModule?.isUserDefinedEntryPoint ? [i, 'output.entryFileNames'] : [s, 'output.chunkFileNames'] + ;(e = Ra('function' == typeof n ? n(this.getPreRenderedChunkInfo()) : n, a, { format: () => r, hash: (e) => t || (t = this.getPlaceholder(a, e)), name: () => this.getChunkName() })), + t || (e = Ma(e, this.bundle)) + } else e = this.fileName + return t || (this.bundle[e] = _a), (this.preliminaryFileName = { fileName: e, hashPlaceholder: t }) + } + getPreliminarySourcemapFileName() { + if (this.preliminarySourcemapFileName) return this.preliminarySourcemapFileName + let e = null, + t = null + const { sourcemapFileNames: s, format: i } = this.outputOptions + if (!s) return null + { + const [n, r] = [s, 'output.sourcemapFileNames'] + ;(e = Ra('function' == typeof n ? n(this.getPreRenderedChunkInfo()) : n, r, { + chunkhash: () => this.getPreliminaryFileName().hashPlaceholder || '', + format: () => i, + hash: (e) => t || (t = this.getPlaceholder(r, e)), + name: () => this.getChunkName() + })), + t || (e = Ma(e, this.bundle)) + } + return (this.preliminarySourcemapFileName = { fileName: e, hashPlaceholder: t }) + } + getRenderedChunkInfo() { + return this.renderedChunkInfo + ? this.renderedChunkInfo + : (this.renderedChunkInfo = { + ...this.getPreRenderedChunkInfo(), + dynamicImports: this.getDynamicDependencies().map(Fa), + fileName: this.getFileName(), + implicitlyLoadedBefore: Array.from(this.implicitlyLoadedBefore, Fa), + importedBindings: Ba(this.getRenderedDependencies(), Fa), + imports: Array.from(this.dependencies, Fa), + modules: this.renderedModules, + referencedFiles: this.getReferencedFiles() + }) + } + getVariableExportName(e) { + return this.outputOptions.preserveModules && e instanceof xo ? '*' : this.exportNamesByVariable.get(e)[0] + } + link() { + this.dependencies = (function (e, t, s, i) { + const n = [], + r = new Set() + for (let o = t.length - 1; o >= 0; o--) { + const a = t[o] + if (!r.has(a)) { + const t = [] + Aa(a, t, r, e, s, i), n.unshift(t) + } + } + const o = new Set() + for (const e of n) for (const t of e) o.add(t) + return o + })(this, this.orderedModules, this.chunkByModule, this.externalChunkByModule) + for (const e of this.orderedModules) this.addImplicitlyLoadedBeforeFromModule(e), this.setUpChunkImportsAndExportsForModule(e) + } + async render() { + const { + dependencies: e, + exportMode: t, + facadeModule: s, + inputOptions: { onLog: i }, + outputOptions: n, + pluginDriver: r, + snippets: o + } = this, + { format: a, hoistTransitiveImports: l, preserveModules: c } = n + if (l && !c && null !== s) for (const t of e) t instanceof La && this.inlineChunkDependencies(t) + const h = this.getPreliminaryFileName(), + u = this.getPreliminarySourcemapFileName(), + { accessedGlobals: d, indent: p, magicString: f, renderedSource: m, usedModules: g, usesTopLevelAwait: y } = this.renderModules(h.fileName), + x = [...this.getRenderedDependencies().values()], + E = 'none' === t ? [] : this.getChunkExportDeclarations(a) + let b = E.length > 0, + v = !1 + for (const e of x) { + const { reexports: t } = e + t?.length && ((b = !0), !v && t.some((e) => 'default' === e.reexported) && (v = !0), 'es' === a && (e.reexports = t.filter(({ reexported: e }) => !E.find(({ exported: t }) => t === e)))) + } + if (!v) + for (const { exported: e } of E) + if ('default' === e) { + v = !0 + break + } + const { intro: S, outro: A, banner: k, footer: I } = await ga(n, r, this.getRenderedChunkInfo()) + return ( + pa[a]( + m, + { + accessedGlobals: d, + dependencies: x, + exports: E, + hasDefaultExport: v, + hasExports: b, + id: h.fileName, + indent: p, + intro: S, + isEntryFacade: c || (null !== s && s.info.isEntry), + isModuleFacade: null !== s, + log: i, + namedExportsMode: 'default' !== t, + outro: A, + snippets: o, + usesTopLevelAwait: y + }, + n + ), + k && f.prepend(k), + I && f.append(I), + { chunk: this, magicString: f, preliminaryFileName: h, preliminarySourcemapFileName: u, usedModules: g } + ) + } + addImplicitlyLoadedBeforeFromModule(e) { + const { chunkByModule: t, implicitlyLoadedBefore: s } = this + for (const i of e.implicitlyLoadedBefore) { + const e = t.get(i) + e && e !== this && s.add(e) + } + } + addNecessaryImportsForFacades() { + for (const [e, t] of this.includedReexportsByModule) if (this.includedNamespaces.has(e)) for (const e of t) this.imports.add(e) + } + assignFacadeName({ fileName: e, name: t }, s, i) { + e ? (this.fileName = e) : (this.name = this.outputOptions.sanitizeFileName(t || (i ? this.getPreserveModulesChunkNameFromModule(s) : Ta(s)))) + } + checkCircularDependencyImport(e, t) { + const s = e.module + if (s instanceof jo) { + const l = this.chunkByModule.get(s) + let c + do { + if (((c = t.alternativeReexportModules.get(e)), c)) { + this.chunkByModule.get(c) !== l && + this.inputOptions.onLog( + Ae, + ((i = s.getExportNamesByVariable().get(e)?.[0] || '*'), + (n = s.id), + (r = c.id), + (o = t.id), + (a = this.outputOptions.preserveModules), + { + code: 'CYCLIC_CROSS_CHUNK_REEXPORT', + exporter: n, + id: o, + message: `Export "${i}" of module "${V(n)}" was reexported through module "${V( + r + )}" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.\nEither change the import in "${V( + o + )}" to point directly to the exporting module or ${a ? 'do not use "output.preserveModules"' : 'reconfigure "output.manualChunks"'} to ensure these modules end up in the same chunk.`, + reexporter: r + }) + ), + (t = c) + } + } while (c) + } + var i, n, r, o, a + } + ensureReexportsAreAvailableForModule(e) { + const t = [], + s = e.getExportNamesByVariable() + for (const i of s.keys()) { + const s = i instanceof Eo, + n = s ? i.getBaseVariable() : i + if ((this.checkCircularDependencyImport(n, e), !(n instanceof xo && this.outputOptions.preserveModules))) { + const e = n.module + if (e instanceof jo) { + const i = this.chunkByModule.get(e) + i && i !== this && (i.exports.add(n), t.push(n), s && this.imports.add(n)) + } + } + } + t.length > 0 && this.includedReexportsByModule.set(e, t) + } + generateVariableName() { + if (this.manualChunkAlias) return this.manualChunkAlias + const e = this.entryModules[0] || this.implicitEntryModules[0] || this.dynamicEntryModules[0] || this.orderedModules[this.orderedModules.length - 1] + return e ? Ta(e) : 'chunk' + } + getChunkExportDeclarations(e) { + const t = [] + for (const s of this.getExportNames()) { + if ('*' === s[0]) continue + const i = this.exportsByName.get(s) + if (!(i instanceof Eo)) { + const t = i.module + if (t) { + const i = this.chunkByModule.get(t) + if (i !== this) { + if (!i || 'es' !== e) continue + const t = this.renderedDependencies.get(i) + if (!t) continue + const { imports: n, reexports: r } = t, + o = r?.find(({ reexported: e }) => e === s), + a = n?.find(({ imported: e }) => e === o?.imported) + if (!a) continue + } + } + } + let n = null, + r = !1, + o = i.getName(this.snippets.getPropertyAccess) + if (i instanceof Pi) { + for (const e of i.declarations) + if (e.parent instanceof nr || (e instanceof rr && e.declaration instanceof nr)) { + r = !0 + break + } + } else i instanceof Eo && ((n = o), 'es' === e && (o = i.renderName)) + t.push({ exported: s, expression: n, hoisted: r, local: o }) + } + return t + } + getDependenciesToBeDeconflicted(e, t, s) { + const i = new Set(), + n = new Set(), + r = new Set() + for (const t of [...this.exportNamesByVariable.keys(), ...this.imports]) + if (e || t.isNamespace) { + const o = t.module + if (o instanceof Jt) { + const a = this.externalChunkByModule.get(o) + i.add(a), e && ('default' === t.name ? vr[s(o.id)] && n.add(a) : '*' === t.name && Ar[s(o.id)] && r.add(a)) + } else { + const s = this.chunkByModule.get(o) + s !== this && (i.add(s), e && 'default' === s.exportMode && t.isNamespace && r.add(s)) + } + } + if (t) for (const e of this.dependencies) i.add(e) + return { deconflictedDefault: n, deconflictedNamespace: r, dependencies: i } + } + getDynamicDependencies() { + return this.getIncludedDynamicImports() + .map((e) => e.facadeChunk || e.chunk || e.externalChunk || e.resolution) + .filter((e) => e !== this && (e instanceof La || e instanceof j)) + } + getDynamicImportStringAndAssertions(e, t) { + if (e instanceof Jt) { + const s = this.externalChunkByModule.get(e) + return [`'${s.getImportPath(t)}'`, s.getImportAssertions(this.snippets)] + } + return [e || '', ('es' === this.outputOptions.format && this.outputOptions.externalImportAssertions) || null] + } + getFallbackChunkName() { + return this.manualChunkAlias ? this.manualChunkAlias : this.dynamicName ? this.dynamicName : this.fileName ? T(this.fileName) : T(this.orderedModules[this.orderedModules.length - 1].id) + } + getImportSpecifiers() { + const { interop: e } = this.outputOptions, + t = new Map() + for (const s of this.imports) { + const i = s.module + let n, r + if (i instanceof Jt) { + if (((n = this.externalChunkByModule.get(i)), (r = s.name), 'default' !== r && '*' !== r && 'defaultOnly' === e(i.id))) return Qe(Kt(i.id, r, !1)) + } else (n = this.chunkByModule.get(i)), (r = n.getVariableExportName(s)) + U(t, n, W).push({ imported: r, local: s.getName(this.snippets.getPropertyAccess) }) + } + return t + } + getIncludedDynamicImports() { + if (this.includedDynamicImports) return this.includedDynamicImports + const e = [] + for (const t of this.orderedModules) + for (const { node: s, resolution: i } of t.dynamicImports) + s.included && + e.push( + i instanceof jo + ? { chunk: this.chunkByModule.get(i), externalChunk: null, facadeChunk: this.facadeChunkByModule.get(i), node: s, resolution: i } + : i instanceof Jt + ? { chunk: null, externalChunk: this.externalChunkByModule.get(i), facadeChunk: null, node: s, resolution: i } + : { chunk: null, externalChunk: null, facadeChunk: null, node: s, resolution: i } + ) + return (this.includedDynamicImports = e) + } + getPreRenderedChunkInfo() { + if (this.preRenderedChunkInfo) return this.preRenderedChunkInfo + const { dynamicEntryModules: e, facadeModule: t, implicitEntryModules: s, orderedModules: i } = this + return (this.preRenderedChunkInfo = { + exports: this.getExportNames(), + facadeModuleId: t && t.id, + isDynamicEntry: e.length > 0, + isEntry: !!t?.info.isEntry, + isImplicitEntry: s.length > 0, + moduleIds: i.map(({ id: e }) => e), + name: this.getChunkName(), + type: 'chunk' + }) + } + getPreserveModulesChunkNameFromModule(e) { + const t = Va(e) + if (t) return t + const { preserveModulesRoot: s, sanitizeFileName: i } = this.outputOptions, + n = i(P(e.id.split(za, 1)[0])), + r = N(n), + o = Oa.has(r) ? n.slice(0, -r.length) : n + return I(o) ? (s && R(o).startsWith(s) ? o.slice(s.length).replace(/^[/\\]/, '') : _(this.inputBase, o)) : `_virtual/${C(o)}` + } + getReexportSpecifiers() { + const { externalLiveBindings: e, interop: t } = this.outputOptions, + s = new Map() + for (let i of this.getExportNames()) { + let n, + r, + o = !1 + if ('*' === i[0]) { + const s = i.slice(1) + 'defaultOnly' === t(s) && this.inputOptions.onLog(Ae, Yt(s)), (o = e), (n = this.externalChunkByModule.get(this.modulesById.get(s))), (r = i = '*') + } else { + const s = this.exportsByName.get(i) + if (s instanceof Eo) continue + const a = s.module + if (a instanceof jo) { + if (((n = this.chunkByModule.get(a)), n === this)) continue + ;(r = n.getVariableExportName(s)), (o = s.isReassigned) + } else { + if (((n = this.externalChunkByModule.get(a)), (r = s.name), 'default' !== r && '*' !== r && 'defaultOnly' === t(a.id))) return Qe(Kt(a.id, r, !0)) + o = e && ('default' !== r || Sr(t(a.id), !0)) + } + } + U(s, n, W).push({ imported: r, needsLiveBinding: o, reexported: i }) + } + return s + } + getReferencedFiles() { + const e = new Set() + for (const t of this.orderedModules) + for (const s of t.importMetas) { + const t = s.getReferencedFileName(this.pluginDriver) + t && e.add(t) + } + return [...e] + } + getRenderedDependencies() { + if (this.renderedDependencies) return this.renderedDependencies + const e = this.getImportSpecifiers(), + t = this.getReexportSpecifiers(), + s = new Map(), + i = this.getFileName() + for (const n of this.dependencies) { + const r = e.get(n) || null, + o = t.get(n) || null, + a = n instanceof j || 'default' !== n.exportMode, + l = n.getImportPath(i) + s.set(n, { + assertions: n instanceof j ? n.getImportAssertions(this.snippets) : null, + defaultVariableName: n.defaultVariableName, + globalName: n instanceof j && ('umd' === this.outputOptions.format || 'iife' === this.outputOptions.format) && Da(n, this.outputOptions.globals, null !== (r || o), this.inputOptions.onLog), + importPath: l, + imports: r, + isChunk: n instanceof La, + name: n.variableName, + namedExportsMode: a, + namespaceVariableName: n.namespaceVariableName, + reexports: o + }) + } + return (this.renderedDependencies = s) + } + inlineChunkDependencies(e) { + for (const t of e.dependencies) this.dependencies.has(t) || (this.dependencies.add(t), t instanceof La && this.inlineChunkDependencies(t)) + } + renderModules(e) { + const { + accessedGlobalsByScope: t, + dependencies: s, + exportNamesByVariable: i, + includedNamespaces: n, + inputOptions: { onLog: r }, + isEmpty: o, + orderedModules: a, + outputOptions: l, + pluginDriver: c, + renderedModules: h, + snippets: u + } = this, + { compact: d, dynamicImportFunction: p, format: f, freeze: m, namespaceToStringTag: g } = l, + { _: x, cnst: b, n: v } = u + this.setDynamicImportResolutions(e), this.setImportMetaResolutions(e), this.setIdentifierRenderResolutions() + const S = new E({ separator: `${v}${v}` }), + A = (function (e, t) { + if (!0 !== t.indent) return t.indent + for (const t of e) { + const e = Sa(t.originalCode) + if (null !== e) return e + } + return '\t' + })(a, l), + k = [] + let I = '' + const w = new Set(), + P = new Map(), + C = { + accessedDocumentCurrentScript: !1, + dynamicImportFunction: p, + exportNamesByVariable: i, + format: f, + freeze: m, + indent: A, + namespaceToStringTag: g, + pluginDriver: c, + snippets: u, + useOriginalName: null + } + let $ = !1 + for (const e of a) { + let s, + i = 0 + if (e.isIncluded() || n.has(e)) { + const r = e.render(C) + !C.accessedDocumentCurrentScript && Yr.includes(f) && this.accessedGlobalsByScope.get(e.scope)?.delete(br), + (C.accessedDocumentCurrentScript = !1), + ({ source: s } = r), + $ || ($ = r.usesTopLevelAwait), + (i = s.length()), + i && (d && s.lastLine().includes('//') && s.append('\n'), P.set(e, s), S.addSource(s), k.push(e)) + const o = e.namespace + if (n.has(e)) { + const e = o.renderBlock(C) + o.renderFirst() ? (I += v + e) : S.addSource(new y(e)) + } + const a = t.get(e.scope) + if (a) for (const e of a) w.add(e) + } + const { renderedExports: r, removedExports: o } = e.getRenderedExports() + h[e.id] = { + get code() { + return s?.toString() ?? null + }, + originalLength: e.originalCode.length, + removedExports: o, + renderedExports: r, + renderedLength: i + } + } + I && S.prepend(I + v + v), this.needsExportsShim && S.prepend(`${v}${b} ${go}${x}=${x}void 0;${v}${v}`) + const N = d ? S : S.trim() + var _ + return ( + o && 0 === this.getExportNames().length && 0 === s.size && r(Ae, { code: 'EMPTY_BUNDLE', message: `Generated an empty chunk: "${(_ = this.getChunkName())}".`, names: [_] }), + { accessedGlobals: w, indent: A, magicString: S, renderedSource: N, usedModules: k, usesTopLevelAwait: $ } + ) + } + setDynamicImportResolutions(e) { + const { accessedGlobalsByScope: t, outputOptions: s, pluginDriver: i, snippets: n } = this + for (const r of this.getIncludedDynamicImports()) + if (r.chunk) { + const { chunk: o, facadeChunk: a, node: l, resolution: c } = r + o === this + ? l.setInternalResolution(c.namespace) + : l.setExternalResolution((a || o).exportMode, c, s, n, i, t, `'${(a || o).getImportPath(e)}'`, !a?.strictFacade && o.exportNamesByVariable.get(c.namespace)[0], null) + } else { + const { node: o, resolution: a } = r, + [l, c] = this.getDynamicImportStringAndAssertions(a, e) + o.setExternalResolution('external', a, s, n, i, t, l, !1, c) + } + } + setIdentifierRenderResolutions() { + const { format: e, interop: t, namespaceToStringTag: s, preserveModules: i, externalLiveBindings: n } = this.outputOptions, + r = new Set() + for (const t of this.getExportNames()) { + const s = this.exportsByName.get(t) + 'es' !== e && 'system' !== e && s.isReassigned && !s.isId ? s.setRenderNames('exports', t) : s instanceof Eo ? r.add(s) : s.setRenderNames(null, null) + } + for (const e of this.orderedModules) + if (e.needsExportShim) { + this.needsExportsShim = !0 + break + } + const o = new Set(['Object', 'Promise']) + switch ((this.needsExportsShim && o.add(go), s && o.add('Symbol'), e)) { + case 'system': + o.add('module').add('exports') + break + case 'es': + break + case 'cjs': + o.add('module').add('require').add('__filename').add('__dirname') + default: + o.add('exports') + for (const e of Br) o.add(e) + } + xa( + this.orderedModules, + this.getDependenciesToBeDeconflicted('es' !== e && 'system' !== e, 'amd' === e || 'umd' === e || 'iife' === e, t), + this.imports, + o, + e, + t, + i, + n, + this.chunkByModule, + this.externalChunkByModule, + r, + this.exportNamesByVariable, + this.accessedGlobalsByScope, + this.includedNamespaces + ) + } + setImportMetaResolutions(e) { + const { + accessedGlobalsByScope: t, + includedNamespaces: s, + orderedModules: i, + outputOptions: { format: n } + } = this + for (const r of i) { + for (const s of r.importMetas) s.setResolution(n, t, e) + s.has(r) && r.namespace.prepare(t) + } + } + setUpChunkImportsAndExportsForModule(e) { + const t = new Set(e.includedImports) + if (!this.outputOptions.preserveModules && this.includedNamespaces.has(e)) { + const s = e.namespace.getMemberVariables() + for (const e of Object.values(s)) e.included && t.add(e) + } + for (let s of t) { + s instanceof ho && (s = s.getOriginalVariable()), s instanceof Eo && (s = s.getBaseVariable()) + const t = this.chunkByModule.get(s.module) + t !== this && (this.imports.add(s), s.module instanceof jo && (this.checkCircularDependencyImport(s, e), (s instanceof xo && this.outputOptions.preserveModules) || t.exports.add(s))) + } + ;(this.includedNamespaces.has(e) || (e.info.isEntry && !1 !== e.preserveSignature) || e.includedDynamicImporters.some((e) => this.chunkByModule.get(e) !== this)) && + this.ensureReexportsAreAvailableForModule(e) + for (const { node: t, resolution: s } of e.dynamicImports) + t.included && s instanceof jo && this.chunkByModule.get(s) === this && !this.includedNamespaces.has(s) && (this.includedNamespaces.add(s), this.ensureReexportsAreAvailableForModule(s)) + } +} +function Ta(e) { + return Va(e) ?? T(e.id) +} +function Va(e) { + return e.chunkNames.find(({ isUserDefined: e }) => e)?.name ?? e.chunkNames[0]?.name +} +function Ba(e, t) { + const s = {} + for (const [i, n] of e) { + const e = new Set() + if (n.imports) for (const { imported: t } of n.imports) e.add(t) + if (n.reexports) for (const { imported: t } of n.reexports) e.add(t) + s[t(i)] = [...e] + } + return s +} +const za = /[#?]/, + Fa = (e) => e.getFileName() +function* ja(e) { + for (const t of e) yield* t +} +function Ua(e, t, s, i) { + const { chunkDefinitions: n, modulesInManualChunks: r } = (function (e) { + const t = [], + s = new Set(e.keys()), + i = Object.create(null) + for (const [t, n] of e) Ga(t, i[n] || (i[n] = []), s) + for (const [e, s] of Object.entries(i)) t.push({ alias: e, modules: s }) + return { chunkDefinitions: t, modulesInManualChunks: s } + })(t), + { + allEntries: o, + dependentEntriesByModule: a, + dynamicallyDependentEntriesByDynamicEntry: l, + dynamicImportsByEntry: c + } = (function (e) { + const t = new Set(), + s = new Map(), + i = [], + n = new Set(e) + let r = 0 + for (const e of n) { + const o = new Set() + i.push(o) + const a = new Set([e]) + for (const e of a) { + U(s, e, G).add(r) + for (const t of e.getDependenciesToBeIncluded()) t instanceof Jt || a.add(t) + for (const { resolution: s } of e.dynamicImports) s instanceof jo && s.includedDynamicImporters.length > 0 && !n.has(s) && (t.add(s), n.add(s), o.add(s)) + for (const s of e.implicitlyLoadedBefore) n.has(s) || (t.add(s), n.add(s)) + } + r++ + } + const o = [...n], + { dynamicEntries: a, dynamicImportsByEntry: l } = (function (e, t, s) { + const i = new Map(), + n = new Set() + for (const [s, r] of e.entries()) i.set(r, s), t.has(r) && n.add(s) + const r = [] + for (const e of s) { + const t = new Set() + for (const s of e) t.add(i.get(s)) + r.push(t) + } + return { dynamicEntries: n, dynamicImportsByEntry: r } + })(o, t, i) + return { allEntries: o, dependentEntriesByModule: s, dynamicallyDependentEntriesByDynamicEntry: Wa(s, a, o), dynamicImportsByEntry: l } + })(e), + h = qa( + (function* (e, t) { + for (const [s, i] of e) t.has(s) || (yield { dependentEntries: i, modules: [s] }) + })(a, r) + ) + return ( + (function (e, t, s, i) { + const n = i.map(() => 0n), + r = i.map((e, s) => (t.has(s) ? -1n : 0n)) + let o = 1n + for (const { dependentEntries: t } of e) { + for (const e of t) n[e] |= o + o <<= 1n + } + const a = t + for (const [e, t] of a) { + a.delete(e) + const i = r[e] + let o = i + for (const e of t) o &= n[e] | r[e] + if (o !== i) { + r[e] = o + for (const t of s[e]) U(a, t, G).add(e) + } + } + o = 1n + for (const { dependentEntries: t } of e) { + for (const e of t) (r[e] & o) === o && t.delete(e) + o <<= 1n + } + })(h, l, c, o), + n.push( + ...(function (e, t, s, i) { + Oo('optimize chunks', 3) + const n = (function (e, t, s) { + const i = [], + n = [], + r = new Map(), + o = [] + let a = 0n, + l = 1n + for (const { dependentEntries: t, modules: c } of e) { + const e = { containedAtoms: l, correlatedAtoms: 0n, dependencies: new Set(), dependentChunks: new Set(), dependentEntries: t, modules: c, pure: !0, size: 0 } + let h = 0, + u = !0 + for (const t of c) r.set(t, e), t.isIncluded() && (u && (u = !t.hasEffects()), (h += s > 1 ? t.estimateSize() : 1)) + ;(e.pure = u), (e.size = h), o.push(h), u || (a |= l), (h < s ? i : n).push(e), (l <<= 1n) + } + if (0 === i.length) return null + return ( + (a |= (function (e, t, s, i) { + const n = new Map() + let r = 0n + const o = [] + for (let e = 0; e < s; e++) o.push(0n) + for (const s of e) { + s.sort(Ya) + for (const e of s) { + const { dependencies: s, dependentEntries: a, modules: l } = e + for (const o of l) + for (const a of o.getDependenciesToBeIncluded()) + if (a instanceof Jt) + a.info.moduleSideEffects && + (e.containedAtoms |= U(n, a, () => { + const e = i + return (i <<= 1n), (r |= e), e + })) + else { + const i = t.get(a) + i && i !== e && (s.add(i), i.dependentChunks.add(e)) + } + const { containedAtoms: c } = e + for (const e of a) o[e] |= c + } + } + for (const t of e) + for (const e of t) { + const { dependentEntries: t } = e + e.correlatedAtoms = -1n + for (const s of t) e.correlatedAtoms &= o[s] + } + return r + })([n, i], r, t, l)), + { big: new Set(n), sideEffectAtoms: a, sizeByAtom: o, small: new Set(i) } + ) + })(e, t, s) + if (!n) return Do('optimize chunks', 3), e + return ( + s > 1 && i('info', Wt(e.length, n.small.size, 'Initially')), + (function (e, t) { + const { small: s } = e + for (const i of s) { + const n = Ha(i, e, t <= 1 ? 1 : 1 / 0) + if (n) { + const { containedAtoms: r, correlatedAtoms: o, modules: a, pure: l, size: c } = i + s.delete(i), Ka(n, t, e).delete(n), n.modules.push(...a), (n.size += c), n.pure && (n.pure = l) + const { dependencies: h, dependentChunks: u, dependentEntries: d } = n + ;(n.correlatedAtoms &= o), (n.containedAtoms |= r) + for (const e of i.dependentEntries) d.add(e) + for (const e of i.dependencies) h.add(e), e.dependentChunks.delete(i), e.dependentChunks.add(n) + for (const e of i.dependentChunks) u.add(e), e.dependencies.delete(i), e.dependencies.add(n) + h.delete(n), u.delete(n), Ka(n, t, e).add(n) + } + } + })(n, s), + s > 1 && i('info', Wt(n.small.size + n.big.size, n.small.size, 'After merging chunks')), + Do('optimize chunks', 3), + [...n.small, ...n.big] + ) + })(qa(h), o.length, s, i).map(({ modules: e }) => ({ alias: null, modules: e })) + ), + n + ) +} +function Ga(e, t, s) { + const i = new Set([e]) + for (const e of i) { + s.add(e), t.push(e) + for (const t of e.dependencies) t instanceof Jt || s.has(t) || i.add(t) + } +} +function Wa(e, t, s) { + const i = new Map() + for (const n of t) { + const t = U(i, n, G), + r = s[n] + for (const s of ja([r.includedDynamicImporters, r.implicitlyLoadedAfter])) for (const i of e.get(s)) t.add(i) + } + return i +} +function qa(e) { + var t + const s = Object.create(null) + for (const { dependentEntries: i, modules: n } of e) { + let e = 0n + for (const t of i) e |= 1n << BigInt(t) + ;(s[(t = String(e))] || (s[t] = { dependentEntries: new Set(i), modules: [] })).modules.push(...n) + } + return Object.values(s) +} +function Ha(e, { big: t, sideEffectAtoms: s, sizeByAtom: i, small: n }, r) { + let o = null + for (const a of ja([n, t])) { + if (e === a) continue + const t = Xa(e, a, r, s, i) + if (t < r) { + if (((o = a), 0 === t)) break + r = t + } + } + return o +} +function Ka(e, t, s) { + return e.size < t ? s.small : s.big +} +function Ya({ size: e }, { size: t }) { + return e - t +} +function Xa(e, t, s, i, n) { + const r = Qa(e, t, s, i, n) + return r < s ? r + Qa(t, e, s - r, i, n) : 1 / 0 +} +function Qa(e, t, s, i, n) { + const { correlatedAtoms: r } = t + let o = e.containedAtoms + const a = o & i + if ((r & a) !== a) return 1 / 0 + const l = new Set(e.dependencies) + for (const { dependencies: e, containedAtoms: s } of l) { + o |= s + const n = s & i + if ((r & n) !== n) return 1 / 0 + for (const s of e) { + if (s === t) return 1 / 0 + l.add(s) + } + } + return (function (e, t, s) { + let i = 0, + n = 0, + r = 1n + const { length: o } = s + for (; n < o; n++) if (((e & r) === r && (i += s[n]), (r <<= 1n), i >= t)) return 1 / 0 + return i + })(o & ~r, s, n) +} +const Za = (e, t) => (e.execIndex > t.execIndex ? 1 : -1) +function Ja(e, t, s) { + const i = Symbol(e.id), + n = [e.id] + let r = t + for (e.cycles.add(i); r !== e; ) r.cycles.add(i), n.push(r.id), (r = s.get(r)) + return n.push(n[0]), n.reverse(), n +} +const el = (e, t) => (t ? `(${e})` : e), + tl = /^(?!\d)[\w$]+$/ +class sl { + constructor(e, t) { + ;(this.isOriginal = !0), (this.filename = e), (this.content = t) + } + traceSegment(e, t, s) { + return { column: t, line: e, name: s, source: this } + } +} +class il { + constructor(e, t) { + ;(this.sources = t), (this.names = e.names), (this.mappings = e.mappings) + } + traceMappings() { + const e = [], + t = new Map(), + s = [], + i = [], + n = new Map(), + r = [] + for (const o of this.mappings) { + const a = [] + for (const r of o) { + if (1 === r.length) continue + const o = this.sources[r[1]] + if (!o) continue + const l = o.traceSegment(r[2], r[3], 5 === r.length ? this.names[r[4]] : '') + if (l) { + const { + column: o, + line: c, + name: h, + source: { content: u, filename: d } + } = l + let p = t.get(d) + if (void 0 === p) (p = e.length), e.push(d), t.set(d, p), (s[p] = u) + else if (null == s[p]) s[p] = u + else if (null != u && s[p] !== u) return Qe(Ht(d)) + const f = [r[0], p, c, o] + if (h) { + let e = n.get(h) + void 0 === e && ((e = i.length), i.push(h), n.set(h, e)), (f[4] = e) + } + a.push(f) + } + } + r.push(a) + } + return { mappings: r, names: i, sources: e, sourcesContent: s } + } + traceSegment(e, t, s) { + const i = this.mappings[e] + if (!i) return null + let n = 0, + r = i.length - 1 + for (; n <= r; ) { + const e = (n + r) >> 1, + o = i[e] + if (o[0] === t || n === r) { + if (1 == o.length) return null + const e = this.sources[o[1]] + return e ? e.traceSegment(o[2], o[3], 5 === o.length ? this.names[o[4]] : s) : null + } + o[0] > t ? (r = e - 1) : (n = e + 1) + } + return null + } +} +function nl(e) { + return function (t, s) { + return s.missing + ? (e( + Ae, + ((i = s.plugin), + { + code: Pt, + message: `Sourcemap is likely to be incorrect: a plugin (${i}) was used to transform files, but didn't generate a sourcemap for the transformation. Consult the plugin documentation for help`, + plugin: i, + url: De(Te) + }) + ), + new il({ mappings: [], names: [] }, [t])) + : new il(s, [t]) + var i + } +} +function rl(e, t, s, i, n) { + let r + if (s) { + const t = s.sources, + i = s.sourcesContent || [], + n = $(e) || '.', + o = s.sourceRoot || '.', + a = t.map((e, t) => new sl(R(n, o, e), i[t])) + r = new il(s, a) + } else r = new sl(e, t) + return i.reduce(n, r) +} +var ol = {}, + al = ll +function ll(e, t) { + if (!e) throw new Error(t || 'Assertion failed') +} +ll.equal = function (e, t, s) { + if (e != t) throw new Error(s || 'Assertion failed: ' + e + ' != ' + t) +} +var cl = { exports: {} } +'function' == typeof Object.create + ? (cl.exports = function (e, t) { + t && ((e.super_ = t), (e.prototype = Object.create(t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }))) + }) + : (cl.exports = function (e, t) { + if (t) { + e.super_ = t + var s = function () {} + ;(s.prototype = t.prototype), (e.prototype = new s()), (e.prototype.constructor = e) + } + }) +var hl = cl.exports, + ul = al, + dl = hl +function pl(e, t) { + return 55296 == (64512 & e.charCodeAt(t)) && !(t < 0 || t + 1 >= e.length) && 56320 == (64512 & e.charCodeAt(t + 1)) +} +function fl(e) { + return ((e >>> 24) | ((e >>> 8) & 65280) | ((e << 8) & 16711680) | ((255 & e) << 24)) >>> 0 +} +function ml(e) { + return 1 === e.length ? '0' + e : e +} +function gl(e) { + return 7 === e.length + ? '0' + e + : 6 === e.length + ? '00' + e + : 5 === e.length + ? '000' + e + : 4 === e.length + ? '0000' + e + : 3 === e.length + ? '00000' + e + : 2 === e.length + ? '000000' + e + : 1 === e.length + ? '0000000' + e + : e +} +;(ol.inherits = dl), + (ol.toArray = function (e, t) { + if (Array.isArray(e)) return e.slice() + if (!e) return [] + var s = [] + if ('string' == typeof e) + if (t) { + if ('hex' === t) for ((e = e.replace(/[^a-z0-9]+/gi, '')).length % 2 != 0 && (e = '0' + e), n = 0; n < e.length; n += 2) s.push(parseInt(e[n] + e[n + 1], 16)) + } else + for (var i = 0, n = 0; n < e.length; n++) { + var r = e.charCodeAt(n) + r < 128 + ? (s[i++] = r) + : r < 2048 + ? ((s[i++] = (r >> 6) | 192), (s[i++] = (63 & r) | 128)) + : pl(e, n) + ? ((r = 65536 + ((1023 & r) << 10) + (1023 & e.charCodeAt(++n))), + (s[i++] = (r >> 18) | 240), + (s[i++] = ((r >> 12) & 63) | 128), + (s[i++] = ((r >> 6) & 63) | 128), + (s[i++] = (63 & r) | 128)) + : ((s[i++] = (r >> 12) | 224), (s[i++] = ((r >> 6) & 63) | 128), (s[i++] = (63 & r) | 128)) + } + else for (n = 0; n < e.length; n++) s[n] = 0 | e[n] + return s + }), + (ol.toHex = function (e) { + for (var t = '', s = 0; s < e.length; s++) t += ml(e[s].toString(16)) + return t + }), + (ol.htonl = fl), + (ol.toHex32 = function (e, t) { + for (var s = '', i = 0; i < e.length; i++) { + var n = e[i] + 'little' === t && (n = fl(n)), (s += gl(n.toString(16))) + } + return s + }), + (ol.zero2 = ml), + (ol.zero8 = gl), + (ol.join32 = function (e, t, s, i) { + var n = s - t + ul(n % 4 == 0) + for (var r = new Array(n / 4), o = 0, a = t; o < r.length; o++, a += 4) { + var l + ;(l = 'big' === i ? (e[a] << 24) | (e[a + 1] << 16) | (e[a + 2] << 8) | e[a + 3] : (e[a + 3] << 24) | (e[a + 2] << 16) | (e[a + 1] << 8) | e[a]), (r[o] = l >>> 0) + } + return r + }), + (ol.split32 = function (e, t) { + for (var s = new Array(4 * e.length), i = 0, n = 0; i < e.length; i++, n += 4) { + var r = e[i] + 'big' === t + ? ((s[n] = r >>> 24), (s[n + 1] = (r >>> 16) & 255), (s[n + 2] = (r >>> 8) & 255), (s[n + 3] = 255 & r)) + : ((s[n + 3] = r >>> 24), (s[n + 2] = (r >>> 16) & 255), (s[n + 1] = (r >>> 8) & 255), (s[n] = 255 & r)) + } + return s + }), + (ol.rotr32 = function (e, t) { + return (e >>> t) | (e << (32 - t)) + }), + (ol.rotl32 = function (e, t) { + return (e << t) | (e >>> (32 - t)) + }), + (ol.sum32 = function (e, t) { + return (e + t) >>> 0 + }), + (ol.sum32_3 = function (e, t, s) { + return (e + t + s) >>> 0 + }), + (ol.sum32_4 = function (e, t, s, i) { + return (e + t + s + i) >>> 0 + }), + (ol.sum32_5 = function (e, t, s, i, n) { + return (e + t + s + i + n) >>> 0 + }), + (ol.sum64 = function (e, t, s, i) { + var n = e[t], + r = (i + e[t + 1]) >>> 0, + o = (r < i ? 1 : 0) + s + n + ;(e[t] = o >>> 0), (e[t + 1] = r) + }), + (ol.sum64_hi = function (e, t, s, i) { + return (((t + i) >>> 0 < t ? 1 : 0) + e + s) >>> 0 + }), + (ol.sum64_lo = function (e, t, s, i) { + return (t + i) >>> 0 + }), + (ol.sum64_4_hi = function (e, t, s, i, n, r, o, a) { + var l = 0, + c = t + return (l += (c = (c + i) >>> 0) < t ? 1 : 0), (l += (c = (c + r) >>> 0) < r ? 1 : 0), (e + s + n + o + (l += (c = (c + a) >>> 0) < a ? 1 : 0)) >>> 0 + }), + (ol.sum64_4_lo = function (e, t, s, i, n, r, o, a) { + return (t + i + r + a) >>> 0 + }), + (ol.sum64_5_hi = function (e, t, s, i, n, r, o, a, l, c) { + var h = 0, + u = t + return (h += (u = (u + i) >>> 0) < t ? 1 : 0), (h += (u = (u + r) >>> 0) < r ? 1 : 0), (h += (u = (u + a) >>> 0) < a ? 1 : 0), (e + s + n + o + l + (h += (u = (u + c) >>> 0) < c ? 1 : 0)) >>> 0 + }), + (ol.sum64_5_lo = function (e, t, s, i, n, r, o, a, l, c) { + return (t + i + r + a + c) >>> 0 + }), + (ol.rotr64_hi = function (e, t, s) { + return ((t << (32 - s)) | (e >>> s)) >>> 0 + }), + (ol.rotr64_lo = function (e, t, s) { + return ((e << (32 - s)) | (t >>> s)) >>> 0 + }), + (ol.shr64_hi = function (e, t, s) { + return e >>> s + }), + (ol.shr64_lo = function (e, t, s) { + return ((e << (32 - s)) | (t >>> s)) >>> 0 + }) +var yl = {}, + xl = ol, + El = al +function bl() { + ;(this.pending = null), + (this.pendingTotal = 0), + (this.blockSize = this.constructor.blockSize), + (this.outSize = this.constructor.outSize), + (this.hmacStrength = this.constructor.hmacStrength), + (this.padLength = this.constructor.padLength / 8), + (this.endian = 'big'), + (this._delta8 = this.blockSize / 8), + (this._delta32 = this.blockSize / 32) +} +;(yl.BlockHash = bl), + (bl.prototype.update = function (e, t) { + if (((e = xl.toArray(e, t)), this.pending ? (this.pending = this.pending.concat(e)) : (this.pending = e), (this.pendingTotal += e.length), this.pending.length >= this._delta8)) { + var s = (e = this.pending).length % this._delta8 + ;(this.pending = e.slice(e.length - s, e.length)), 0 === this.pending.length && (this.pending = null), (e = xl.join32(e, 0, e.length - s, this.endian)) + for (var i = 0; i < e.length; i += this._delta32) this._update(e, i, i + this._delta32) + } + return this + }), + (bl.prototype.digest = function (e) { + return this.update(this._pad()), El(null === this.pending), this._digest(e) + }), + (bl.prototype._pad = function () { + var e = this.pendingTotal, + t = this._delta8, + s = t - ((e + this.padLength) % t), + i = new Array(s + this.padLength) + i[0] = 128 + for (var n = 1; n < s; n++) i[n] = 0 + if (((e <<= 3), 'big' === this.endian)) { + for (var r = 8; r < this.padLength; r++) i[n++] = 0 + ;(i[n++] = 0), (i[n++] = 0), (i[n++] = 0), (i[n++] = 0), (i[n++] = (e >>> 24) & 255), (i[n++] = (e >>> 16) & 255), (i[n++] = (e >>> 8) & 255), (i[n++] = 255 & e) + } else + for (i[n++] = 255 & e, i[n++] = (e >>> 8) & 255, i[n++] = (e >>> 16) & 255, i[n++] = (e >>> 24) & 255, i[n++] = 0, i[n++] = 0, i[n++] = 0, i[n++] = 0, r = 8; r < this.padLength; r++) i[n++] = 0 + return i + }) +var vl = {}, + Sl = ol.rotr32 +function Al(e, t, s) { + return (e & t) ^ (~e & s) +} +function kl(e, t, s) { + return (e & t) ^ (e & s) ^ (t & s) +} +function Il(e, t, s) { + return e ^ t ^ s +} +;(vl.ft_1 = function (e, t, s, i) { + return 0 === e ? Al(t, s, i) : 1 === e || 3 === e ? Il(t, s, i) : 2 === e ? kl(t, s, i) : void 0 +}), + (vl.ch32 = Al), + (vl.maj32 = kl), + (vl.p32 = Il), + (vl.s0_256 = function (e) { + return Sl(e, 2) ^ Sl(e, 13) ^ Sl(e, 22) + }), + (vl.s1_256 = function (e) { + return Sl(e, 6) ^ Sl(e, 11) ^ Sl(e, 25) + }), + (vl.g0_256 = function (e) { + return Sl(e, 7) ^ Sl(e, 18) ^ (e >>> 3) + }), + (vl.g1_256 = function (e) { + return Sl(e, 17) ^ Sl(e, 19) ^ (e >>> 10) + }) +var wl = ol, + Pl = yl, + Cl = vl, + $l = al, + Nl = wl.sum32, + _l = wl.sum32_4, + Rl = wl.sum32_5, + Ml = Cl.ch32, + Ol = Cl.maj32, + Dl = Cl.s0_256, + Ll = Cl.s1_256, + Tl = Cl.g0_256, + Vl = Cl.g1_256, + Bl = Pl.BlockHash, + zl = [ + 1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, + 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, + 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, + 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298 + ] +function Fl() { + if (!(this instanceof Fl)) return new Fl() + Bl.call(this), (this.h = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]), (this.k = zl), (this.W = new Array(64)) +} +wl.inherits(Fl, Bl) +var jl = Fl +;(Fl.blockSize = 512), + (Fl.outSize = 256), + (Fl.hmacStrength = 192), + (Fl.padLength = 64), + (Fl.prototype._update = function (e, t) { + for (var s = this.W, i = 0; i < 16; i++) s[i] = e[t + i] + for (; i < s.length; i++) s[i] = _l(Vl(s[i - 2]), s[i - 7], Tl(s[i - 15]), s[i - 16]) + var n = this.h[0], + r = this.h[1], + o = this.h[2], + a = this.h[3], + l = this.h[4], + c = this.h[5], + h = this.h[6], + u = this.h[7] + for ($l(this.k.length === s.length), i = 0; i < s.length; i++) { + var d = Rl(u, Ll(l), Ml(l, c, h), this.k[i], s[i]), + p = Nl(Dl(n), Ol(n, r, o)) + ;(u = h), (h = c), (c = l), (l = Nl(a, d)), (a = o), (o = r), (r = n), (n = Nl(d, p)) + } + ;(this.h[0] = Nl(this.h[0], n)), + (this.h[1] = Nl(this.h[1], r)), + (this.h[2] = Nl(this.h[2], o)), + (this.h[3] = Nl(this.h[3], a)), + (this.h[4] = Nl(this.h[4], l)), + (this.h[5] = Nl(this.h[5], c)), + (this.h[6] = Nl(this.h[6], h)), + (this.h[7] = Nl(this.h[7], u)) + }), + (Fl.prototype._digest = function (e) { + return 'hex' === e ? wl.toHex32(this.h, 'big') : wl.split32(this.h, 'big') + }) +var Ul = t(jl) +const Gl = () => Ul() +async function Wl(e, t, s, i, n) { + Oo('render chunks', 2), + (function (e) { + for (const t of e) t.facadeModule && t.facadeModule.isUserDefinedEntryPoint && t.getPreliminaryFileName() + })(e) + const r = await Promise.all(e.map((e) => e.render())) + Do('render chunks', 2), Oo('transform chunks', 2) + const o = (function (e) { + return Object.fromEntries( + e.map((e) => { + const t = e.getRenderedChunkInfo() + return [t.fileName, t] + }) + ) + })(e), + { + initialHashesByPlaceholder: a, + nonHashedChunksWithPlaceholders: l, + renderedChunksByPlaceholder: c, + hashDependenciesByPlaceholder: h + } = await (async function (e, t, s, i, n) { + const r = [], + o = new Map(), + a = new Map(), + l = new Map(), + c = new Set() + for (const { + preliminaryFileName: { hashPlaceholder: t } + } of e) + t && c.add(t) + return ( + await Promise.all( + e.map(async ({ chunk: e, preliminaryFileName: { fileName: h, hashPlaceholder: u }, preliminarySourcemapFileName: d, magicString: p, usedModules: f }) => { + const m = { chunk: e, fileName: h, sourcemapFileName: d?.fileName ?? null, ...(await ql(p, h, f, t, s, i, n)) }, + { code: g, map: y } = m + if (u) { + const { containedPlaceholders: t, transformedCode: s } = $a(g, c), + n = Gl().update(s), + r = i.hookReduceValueSync('augmentChunkHash', '', [e.getRenderedChunkInfo()], (e, t) => (t && (e += t), e)) + r && n.update(r), o.set(u, m), a.set(u, { containedPlaceholders: t, contentHash: n.digest('hex') }) + } else r.push(m) + const x = d?.hashPlaceholder + y && x && l.set(d.hashPlaceholder, Gl().update(y.toString()).digest('hex').slice(0, d.hashPlaceholder.length)) + }) + ), + { hashDependenciesByPlaceholder: a, initialHashesByPlaceholder: l, nonHashedChunksWithPlaceholders: r, renderedChunksByPlaceholder: o } + ) + })(r, o, i, s, n), + u = (function (e, t, s, i) { + const n = new Map(s) + for (const [s, { fileName: r }] of e) { + let e = Gl() + const o = new Set([s]) + for (const s of o) { + const { containedPlaceholders: i, contentHash: n } = t.get(s) + e.update(n) + for (const e of i) o.add(e) + } + let a, l + do { + l && (e = Gl().update(l)), (l = e.digest('hex').slice(0, s.length)), (a = Ca(r, s, l)) + } while (i[Na].has(a.toLowerCase())) + ;(i[a] = _a), n.set(s, l) + } + return n + })(c, h, a, t) + !(function (e, t, s, i, n, r) { + for (const { chunk: i, code: o, fileName: a, sourcemapFileName: l, map: c } of e.values()) { + let e = Pa(o, t) + const h = Pa(a, t) + let u = null + c && ((u = l ? Pa(l, t) : `${h}.map`), (c.file = Pa(c.file, t)), (e += Hl(u, c, n, r))), (s[h] = i.finalizeChunk(e, c, u, t)) + } + for (const { chunk: e, code: o, fileName: a, sourcemapFileName: l, map: c } of i) { + let i = t.size > 0 ? Pa(o, t) : o, + h = null + c && ((h = l ? Pa(l, t) : `${a}.map`), (i += Hl(h, c, n, r))), (s[a] = e.finalizeChunk(i, c, h, t)) + } + })(c, u, t, l, s, i), + Do('transform chunks', 2) +} +async function ql(e, t, s, i, n, r, o) { + let a = null + const c = [] + let h = await r.hookReduceArg0('renderChunk', [e.toString(), i[t], n, { chunks: i }], (e, t, s) => { + if (null == t) return e + if (('string' == typeof t && (t = { code: t, map: void 0 }), null !== t.map)) { + const e = Ao(t.map) + c.push(e || { missing: !0, plugin: s.name }) + } + return t.code + }) + const { compact: u, dir: d, file: p, sourcemap: f, sourcemapExcludeSources: m, sourcemapFile: g, sourcemapPathTransform: y, sourcemapIgnoreList: x } = n + if ((u || '\n' === h[h.length - 1] || (h += '\n'), f)) { + let i + Oo('sourcemaps', 3), (i = p ? R(g || p) : d ? R(d, t) : R(t)) + a = (function (e, t, s, i, n, r) { + const o = nl(r), + a = s.filter((e) => !e.excludeFromSourcemap).map((e) => rl(e.id, e.originalCode, e.originalSourcemap, e.sourcemapChain, o)), + c = new il(t, a), + h = i.reduce(o, c) + let { sources: u, sourcesContent: d, names: p, mappings: f } = h.traceMappings() + if (e) { + const t = $(e) + ;(u = u.map((e) => _(t, e))), (e = C(e)) + } + d = n ? null : d + for (const e of s) So(e.originalSourcemap, e.sourcemapChain) + return new l({ file: e, mappings: f, names: p, sources: u, sourcesContent: d }) + })(i, e.generateDecodedMap({}), s, c, m, o) + for (let e = 0; e < a.sources.length; ++e) { + let t = a.sources[e] + const s = `${i}.map`, + n = x(t, s) + 'boolean' != typeof n && Qe(Xt('sourcemapIgnoreList function must return a boolean.')), + n && (void 0 === a.x_google_ignoreList && (a.x_google_ignoreList = []), a.x_google_ignoreList.includes(e) || a.x_google_ignoreList.push(e)), + y && ((t = y(t, s)), 'string' != typeof t && Qe(Xt('sourcemapPathTransform function must return a string.'))), + (a.sources[e] = P(t)) + } + Do('sourcemaps', 3) + } + return { code: h, map: a } +} +function Hl(e, t, s, { sourcemap: i, sourcemapBaseUrl: n }) { + let r + if ('inline' === i) r = t.toUrl() + else { + const i = C(e) + ;(r = n ? new URL(i, n).toString() : i), s.emitFile({ fileName: e, source: t.toString(), type: 'asset' }) + } + return 'hidden' === i ? '' : `//# ${Fs}=${r}\n` +} +class Kl { + constructor(e, t, s, i, n) { + ;(this.outputOptions = e), + (this.unsetOptions = t), + (this.inputOptions = s), + (this.pluginDriver = i), + (this.graph = n), + (this.facadeChunkByModule = new Map()), + (this.includedNamespaces = new Set()) + } + async generate(e) { + Oo('GENERATE', 1) + const t = Object.create(null), + s = ((e) => { + const t = new Set() + return new Proxy(e, { + deleteProperty: (e, s) => ('string' == typeof s && t.delete(s.toLowerCase()), Reflect.deleteProperty(e, s)), + get: (e, s) => (s === Na ? t : Reflect.get(e, s)), + set: (e, s, i) => ('string' == typeof s && t.add(s.toLowerCase()), Reflect.set(e, s, i)) + }) + })(t) + this.pluginDriver.setOutputBundle(s, this.outputOptions) + try { + Oo('initialize render', 2), await this.pluginDriver.hookParallel('renderStart', [this.outputOptions, this.inputOptions]), Do('initialize render', 2), Oo('generate chunks', 2) + const e = (() => { + let e = 0 + return (t, s = 8) => { + if (s > 64) return Qe(Xt(`Hashes cannot be longer than 64 characters, received ${s}. Check the "${t}" option.`)) + const i = `${ka}${Di(++e).padStart(s - 5, '0')}${Ia}` + return i.length > s ? Qe(Xt(`To generate hashes for this number of chunks (currently ${e}), you need a minimum hash size of ${i.length}, received ${s}. Check the "${t}" option.`)) : i + } + })(), + t = await this.generateChunks(s, e) + t.length > 1 && + (function (e, t) { + if ('umd' === e.format || 'iife' === e.format) return Qe(jt('output.format', je, 'UMD and IIFE output formats are not supported for code-splitting builds', e.format)) + if ('string' == typeof e.file) + return Qe(jt('output.file', Be, 'when building multiple chunks, the "output.dir" option must be used, not "output.file". To inline dynamic imports, set the "inlineDynamicImports" option')) + if (e.sourcemapFile) return Qe(jt('output.sourcemapFile', Ye, '"output.sourcemapFile" is only supported for single-file builds')) + !e.amd.autoId && e.amd.id && t(Ae, jt('output.amd.id', Ve, 'this option is only properly supported for single-file builds. Use "output.amd.autoId" and "output.amd.basePath" instead')) + })(this.outputOptions, this.inputOptions.onLog), + this.pluginDriver.setChunkInformation(this.facadeChunkByModule) + for (const e of t) e.generateExports() + Do('generate chunks', 2), await Wl(t, s, this.pluginDriver, this.outputOptions, this.inputOptions.onLog) + } catch (e) { + throw (await this.pluginDriver.hookParallel('renderError', [e]), e) + } + return ( + ((e) => { + const t = new Set(), + s = Object.values(e) + for (const e of s) 'asset' === e.type && e.needsCodeReference && t.add(e.fileName) + for (const e of s) if ('chunk' === e.type) for (const s of e.referencedFiles) t.has(s) && t.delete(s) + for (const s of t) delete e[s] + })(s), + Oo('generate bundle', 2), + await this.pluginDriver.hookSeq('generateBundle', [this.outputOptions, s, e]), + this.finaliseAssets(s), + Do('generate bundle', 2), + Do('GENERATE', 1), + t + ) + } + async addManualChunks(e) { + const t = new Map(), + s = await Promise.all(Object.entries(e).map(async ([e, t]) => ({ alias: e, entries: await this.graph.moduleLoader.addAdditionalModules(t, !0) }))) + for (const { alias: e, entries: i } of s) for (const s of i) Yl(e, s, t) + return t + } + assignManualChunks(e) { + const t = [], + s = { getModuleIds: () => this.graph.modulesById.keys(), getModuleInfo: this.graph.getModuleInfo } + for (const i of this.graph.modulesById.values()) + if (i instanceof jo) { + const n = e(i.id, s) + 'string' == typeof n && t.push([n, i]) + } + t.sort(([e], [t]) => (e > t ? 1 : e < t ? -1 : 0)) + const i = new Map() + for (const [e, s] of t) Yl(e, s, i) + return i + } + finaliseAssets(e) { + if (this.outputOptions.validate) + for (const t of Object.values(e)) + if ('code' in t) + try { + this.graph.contextParse(t.code, { ecmaVersion: 'latest' }) + } catch (e) { + this.inputOptions.onLog(Ae, Dt(t, e)) + } + this.pluginDriver.finaliseAssets() + } + async generateChunks(e, t) { + const { experimentalMinChunkSize: s, inlineDynamicImports: i, manualChunks: n, preserveModules: r } = this.outputOptions, + o = 'object' == typeof n ? await this.addManualChunks(n) : this.assignManualChunks(n), + a = (function ({ compact: e, generatedCode: { arrowFunctions: t, constBindings: s, objectShorthand: i, reservedNamesAsProps: n } }) { + const { _: r, n: o, s: a } = e ? { _: '', n: '', s: '' } : { _: ' ', n: '\n', s: ';' }, + l = s ? 'const' : 'var', + c = (e, { isAsync: t, name: s }) => `${t ? 'async ' : ''}function${s ? ` ${s}` : ''}${r}(${e.join(`,${r}`)})${r}`, + h = t + ? (e, { isAsync: t, name: s }) => { + const i = 1 === e.length + return `${s ? `${l} ${s}${r}=${r}` : ''}${t ? `async${i ? ' ' : r}` : ''}${i ? e[0] : `(${e.join(`,${r}`)})`}${r}=>${r}` + } + : c, + u = (e, { functionReturn: s, lineBreakIndent: i, name: n }) => [ + `${h(e, { isAsync: !1, name: n })}${t ? (i ? `${o}${i.base}${i.t}` : '') : `{${i ? `${o}${i.base}${i.t}` : r}${s ? 'return ' : ''}`}`, + t ? `${n ? ';' : ''}${i ? `${o}${i.base}` : ''}` : `${a}${i ? `${o}${i.base}` : r}}` + ], + d = n ? (e) => tl.test(e) : (e) => !Ee.has(e) && tl.test(e) + return { + _: r, + cnst: l, + getDirectReturnFunction: u, + getDirectReturnIifeLeft: (e, s, { needsArrowReturnParens: i, needsWrappedFunction: n }) => { + const [r, o] = u(e, { functionReturn: !0, lineBreakIndent: null, name: null }) + return `${el(`${r}${el(s, t && i)}${o}`, t || n)}(` + }, + getFunctionIntro: h, + getNonArrowFunctionIntro: c, + getObject(e, { lineBreakIndent: t }) { + const s = t ? `${o}${t.base}${t.t}` : r + return `{${e + .map(([e, t]) => { + if (null === e) return `${s}${t}` + const n = !d(e) + return e === t && i && !n ? s + e : `${s}${n ? `'${e}'` : e}:${r}${t}` + }) + .join(',')}${0 === e.length ? '' : t ? `${o}${t.base}` : r}}` + }, + getPropertyAccess: (e) => (d(e) ? `.${e}` : `[${JSON.stringify(e)}]`), + n: o, + s: a + } + })(this.outputOptions), + l = (function (e) { + const t = [] + for (const s of e.values()) s instanceof jo && (s.isIncluded() || s.info.isEntry || s.includedDynamicImporters.length > 0) && t.push(s) + return t + })(this.graph.modulesById), + c = (function (e) { + if (0 === e.length) return '/' + if (1 === e.length) return $(e[0]) + const t = e.slice(1).reduce((e, t) => { + const s = t.split(/\/+|\\+/) + let i + for (i = 0; e[i] === s[i] && i < Math.min(e.length, s.length); i++); + return e.slice(0, i) + }, e[0].split(/\/+|\\+/)) + return t.length > 1 ? t.join('/') : '/' + })( + (function (e, t) { + const s = [] + for (const i of e) (i.info.isEntry || t) && I(i.id) && s.push(i.id) + return s + })(l, r) + ), + h = (function (e, t, s) { + const i = new Map() + for (const n of e.values()) n instanceof Jt && i.set(n, new j(n, t, s)) + return i + })(this.graph.modulesById, this.outputOptions, c), + u = [], + d = new Map() + for (const { alias: n, modules: p } of i ? [{ alias: null, modules: l }] : r ? l.map((e) => ({ alias: null, modules: [e] })) : Ua(this.graph.entryModules, o, s, this.inputOptions.onLog)) { + p.sort(Za) + const s = new La(p, this.inputOptions, this.outputOptions, this.unsetOptions, this.pluginDriver, this.graph.modulesById, d, h, this.facadeChunkByModule, this.includedNamespaces, n, t, e, c, a) + u.push(s) + } + for (const e of u) e.link() + const p = [] + for (const e of u) p.push(...e.generateFacades()) + return [...u, ...p] + } +} +function Yl(e, t, s) { + const i = s.get(t) + if ('string' == typeof i && i !== e) return Qe(((n = t.id), (r = e), (o = i), { code: ht, message: `Cannot assign "${V(n)}" to the "${r}" chunk as it is already in the "${o}" chunk.` })) + var n, r, o + s.set(t, e) +} +var Xl = [ + 509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, + 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, + 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, + 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, + 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, + 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239 + ], + Ql = [ + 0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, + 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, + 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, + 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, + 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, + 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, + 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, + 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, + 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, + 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, + 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191 + ], + Zl = + 'ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࡰ-ࢇࢉ-ࢎࢠ-ࣉऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౝౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೝೞೠೡೱೲഄ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜑᜟ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭌᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆿㇰ-ㇿ㐀-䶿一-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꟊꟐꟑꟓꟕ-ꟙꟲ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭩꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ', + Jl = { + 3: 'abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile', + 5: 'class enum extends super const export import', + 6: 'enum', + strict: 'implements interface let package private protected public static yield', + strictBind: 'eval arguments' + }, + ec = 'break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this', + tc = { 5: ec, '5module': ec + ' export import', 6: ec + ' const class extends export import super' }, + sc = /^in(stanceof)?$/, + ic = new RegExp('[' + Zl + ']'), + nc = new RegExp( + '[' + + Zl + + '‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࢘-࢟࣊-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍୕-ୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఄ఼ా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ೳഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ඁ-ඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ຼ່-໎໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜕ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠏-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᪿ-ᫎᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭᳴᳷-᳹᷀-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧ꠬ꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱ꣿ-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_]' + ) +function rc(e, t) { + for (var s = 65536, i = 0; i < t.length; i += 2) { + if ((s += t[i]) > e) return !1 + if ((s += t[i + 1]) >= e) return !0 + } + return !1 +} +function oc(e, t) { + return e < 65 ? 36 === e : e < 91 || (e < 97 ? 95 === e : e < 123 || (e <= 65535 ? e >= 170 && ic.test(String.fromCharCode(e)) : !1 !== t && rc(e, Ql))) +} +function ac(e, t) { + return e < 48 ? 36 === e : e < 58 || (!(e < 65) && (e < 91 || (e < 97 ? 95 === e : e < 123 || (e <= 65535 ? e >= 170 && nc.test(String.fromCharCode(e)) : !1 !== t && (rc(e, Ql) || rc(e, Xl)))))) +} +var lc = function (e, t) { + void 0 === t && (t = {}), + (this.label = e), + (this.keyword = t.keyword), + (this.beforeExpr = !!t.beforeExpr), + (this.startsExpr = !!t.startsExpr), + (this.isLoop = !!t.isLoop), + (this.isAssign = !!t.isAssign), + (this.prefix = !!t.prefix), + (this.postfix = !!t.postfix), + (this.binop = t.binop || null), + (this.updateContext = null) +} +function cc(e, t) { + return new lc(e, { beforeExpr: !0, binop: t }) +} +var hc = { beforeExpr: !0 }, + uc = { startsExpr: !0 }, + dc = {} +function pc(e, t) { + return void 0 === t && (t = {}), (t.keyword = e), (dc[e] = new lc(e, t)) +} +var fc = { + num: new lc('num', uc), + regexp: new lc('regexp', uc), + string: new lc('string', uc), + name: new lc('name', uc), + privateId: new lc('privateId', uc), + eof: new lc('eof'), + bracketL: new lc('[', { beforeExpr: !0, startsExpr: !0 }), + bracketR: new lc(']'), + braceL: new lc('{', { beforeExpr: !0, startsExpr: !0 }), + braceR: new lc('}'), + parenL: new lc('(', { beforeExpr: !0, startsExpr: !0 }), + parenR: new lc(')'), + comma: new lc(',', hc), + semi: new lc(';', hc), + colon: new lc(':', hc), + dot: new lc('.'), + question: new lc('?', hc), + questionDot: new lc('?.'), + arrow: new lc('=>', hc), + template: new lc('template'), + invalidTemplate: new lc('invalidTemplate'), + ellipsis: new lc('...', hc), + backQuote: new lc('`', uc), + dollarBraceL: new lc('${', { beforeExpr: !0, startsExpr: !0 }), + eq: new lc('=', { beforeExpr: !0, isAssign: !0 }), + assign: new lc('_=', { beforeExpr: !0, isAssign: !0 }), + incDec: new lc('++/--', { prefix: !0, postfix: !0, startsExpr: !0 }), + prefix: new lc('!/~', { beforeExpr: !0, prefix: !0, startsExpr: !0 }), + logicalOR: cc('||', 1), + logicalAND: cc('&&', 2), + bitwiseOR: cc('|', 3), + bitwiseXOR: cc('^', 4), + bitwiseAND: cc('&', 5), + equality: cc('==/!=/===/!==', 6), + relational: cc('/<=/>=', 7), + bitShift: cc('<>/>>>', 8), + plusMin: new lc('+/-', { beforeExpr: !0, binop: 9, prefix: !0, startsExpr: !0 }), + modulo: cc('%', 10), + star: cc('*', 10), + slash: cc('/', 10), + starstar: new lc('**', { beforeExpr: !0 }), + coalesce: cc('??', 1), + _break: pc('break'), + _case: pc('case', hc), + _catch: pc('catch'), + _continue: pc('continue'), + _debugger: pc('debugger'), + _default: pc('default', hc), + _do: pc('do', { isLoop: !0, beforeExpr: !0 }), + _else: pc('else', hc), + _finally: pc('finally'), + _for: pc('for', { isLoop: !0 }), + _function: pc('function', uc), + _if: pc('if'), + _return: pc('return', hc), + _switch: pc('switch'), + _throw: pc('throw', hc), + _try: pc('try'), + _var: pc('var'), + _const: pc('const'), + _while: pc('while', { isLoop: !0 }), + _with: pc('with'), + _new: pc('new', { beforeExpr: !0, startsExpr: !0 }), + _this: pc('this', uc), + _super: pc('super', uc), + _class: pc('class', uc), + _extends: pc('extends', hc), + _export: pc('export'), + _import: pc('import', uc), + _null: pc('null', uc), + _true: pc('true', uc), + _false: pc('false', uc), + _in: pc('in', { beforeExpr: !0, binop: 7 }), + _instanceof: pc('instanceof', { beforeExpr: !0, binop: 7 }), + _typeof: pc('typeof', { beforeExpr: !0, prefix: !0, startsExpr: !0 }), + _void: pc('void', { beforeExpr: !0, prefix: !0, startsExpr: !0 }), + _delete: pc('delete', { beforeExpr: !0, prefix: !0, startsExpr: !0 }) + }, + mc = /\r\n?|\n|\u2028|\u2029/, + gc = new RegExp(mc.source, 'g') +function yc(e) { + return 10 === e || 13 === e || 8232 === e || 8233 === e +} +function xc(e, t, s) { + void 0 === s && (s = e.length) + for (var i = t; i < s; i++) { + var n = e.charCodeAt(i) + if (yc(n)) return i < s - 1 && 13 === n && 10 === e.charCodeAt(i + 1) ? i + 2 : i + 1 + } + return -1 +} +var Ec = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/, + bc = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g, + vc = Object.prototype, + Sc = vc.hasOwnProperty, + Ac = vc.toString, + kc = + Object.hasOwn || + function (e, t) { + return Sc.call(e, t) + }, + Ic = + Array.isArray || + function (e) { + return '[object Array]' === Ac.call(e) + } +function wc(e) { + return new RegExp('^(?:' + e.replace(/ /g, '|') + ')$') +} +function Pc(e) { + return e <= 65535 ? String.fromCharCode(e) : ((e -= 65536), String.fromCharCode(55296 + (e >> 10), 56320 + (1023 & e))) +} +var Cc = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/, + $c = function (e, t) { + ;(this.line = e), (this.column = t) + } +$c.prototype.offset = function (e) { + return new $c(this.line, this.column + e) +} +var Nc = function (e, t, s) { + ;(this.start = t), (this.end = s), null !== e.sourceFile && (this.source = e.sourceFile) +} +function _c(e, t) { + for (var s = 1, i = 0; ; ) { + var n = xc(e, i, t) + if (n < 0) return new $c(s, t - i) + ++s, (i = n) + } +} +var Rc = { + ecmaVersion: null, + sourceType: 'script', + onInsertedSemicolon: null, + onTrailingComma: null, + allowReserved: null, + allowReturnOutsideFunction: !1, + allowImportExportEverywhere: !1, + allowAwaitOutsideFunction: null, + allowSuperOutsideMethod: null, + allowHashBang: !1, + checkPrivateFields: !0, + locations: !1, + onToken: null, + onComment: null, + ranges: !1, + program: null, + sourceFile: null, + directSourceFile: null, + preserveParens: !1 + }, + Mc = !1 +function Oc(e) { + var t = {} + for (var s in Rc) t[s] = e && kc(e, s) ? e[s] : Rc[s] + if ( + ('latest' === t.ecmaVersion + ? (t.ecmaVersion = 1e8) + : null == t.ecmaVersion + ? (!Mc && + 'object' == typeof console && + console.warn && + ((Mc = !0), console.warn('Since Acorn 8.0.0, options.ecmaVersion is required.\nDefaulting to 2020, but this will stop working in the future.')), + (t.ecmaVersion = 11)) + : t.ecmaVersion >= 2015 && (t.ecmaVersion -= 2009), + null == t.allowReserved && (t.allowReserved = t.ecmaVersion < 5), + (e && null != e.allowHashBang) || (t.allowHashBang = t.ecmaVersion >= 14), + Ic(t.onToken)) + ) { + var i = t.onToken + t.onToken = function (e) { + return i.push(e) + } + } + return ( + Ic(t.onComment) && + (t.onComment = (function (e, t) { + return function (s, i, n, r, o, a) { + var l = { type: s ? 'Block' : 'Line', value: i, start: n, end: r } + e.locations && (l.loc = new Nc(this, o, a)), e.ranges && (l.range = [n, r]), t.push(l) + } + })(t, t.onComment)), + t + ) +} +var Dc = 256 +function Lc(e, t) { + return 2 | (e ? 4 : 0) | (t ? 8 : 0) +} +var Tc = function (e, t, s) { + ;(this.options = e = Oc(e)), (this.sourceFile = e.sourceFile), (this.keywords = wc(tc[e.ecmaVersion >= 6 ? 6 : 'module' === e.sourceType ? '5module' : 5])) + var i = '' + !0 !== e.allowReserved && ((i = Jl[e.ecmaVersion >= 6 ? 6 : 5 === e.ecmaVersion ? 5 : 3]), 'module' === e.sourceType && (i += ' await')), (this.reservedWords = wc(i)) + var n = (i ? i + ' ' : '') + Jl.strict + ;(this.reservedWordsStrict = wc(n)), + (this.reservedWordsStrictBind = wc(n + ' ' + Jl.strictBind)), + (this.input = String(t)), + (this.containsEsc = !1), + s + ? ((this.pos = s), (this.lineStart = this.input.lastIndexOf('\n', s - 1) + 1), (this.curLine = this.input.slice(0, this.lineStart).split(mc).length)) + : ((this.pos = this.lineStart = 0), (this.curLine = 1)), + (this.type = fc.eof), + (this.value = null), + (this.start = this.end = this.pos), + (this.startLoc = this.endLoc = this.curPosition()), + (this.lastTokEndLoc = this.lastTokStartLoc = null), + (this.lastTokStart = this.lastTokEnd = this.pos), + (this.context = this.initialContext()), + (this.exprAllowed = !0), + (this.inModule = 'module' === e.sourceType), + (this.strict = this.inModule || this.strictDirective(this.pos)), + (this.potentialArrowAt = -1), + (this.potentialArrowInForAwait = !1), + (this.yieldPos = this.awaitPos = this.awaitIdentPos = 0), + (this.labels = []), + (this.undefinedExports = Object.create(null)), + 0 === this.pos && e.allowHashBang && '#!' === this.input.slice(0, 2) && this.skipLineComment(2), + (this.scopeStack = []), + this.enterScope(1), + (this.regexpState = null), + (this.privateNameStack = []) + }, + Vc = { + inFunction: { configurable: !0 }, + inGenerator: { configurable: !0 }, + inAsync: { configurable: !0 }, + canAwait: { configurable: !0 }, + allowSuper: { configurable: !0 }, + allowDirectSuper: { configurable: !0 }, + treatFunctionsAsVar: { configurable: !0 }, + allowNewDotTarget: { configurable: !0 }, + inClassStaticBlock: { configurable: !0 } + } +;(Tc.prototype.parse = function () { + var e = this.options.program || this.startNode() + return this.nextToken(), this.parseTopLevel(e) +}), + (Vc.inFunction.get = function () { + return (2 & this.currentVarScope().flags) > 0 + }), + (Vc.inGenerator.get = function () { + return (8 & this.currentVarScope().flags) > 0 && !this.currentVarScope().inClassFieldInit + }), + (Vc.inAsync.get = function () { + return (4 & this.currentVarScope().flags) > 0 && !this.currentVarScope().inClassFieldInit + }), + (Vc.canAwait.get = function () { + for (var e = this.scopeStack.length - 1; e >= 0; e--) { + var t = this.scopeStack[e] + if (t.inClassFieldInit || t.flags & Dc) return !1 + if (2 & t.flags) return (4 & t.flags) > 0 + } + return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction + }), + (Vc.allowSuper.get = function () { + var e = this.currentThisScope(), + t = e.flags, + s = e.inClassFieldInit + return (64 & t) > 0 || s || this.options.allowSuperOutsideMethod + }), + (Vc.allowDirectSuper.get = function () { + return (128 & this.currentThisScope().flags) > 0 + }), + (Vc.treatFunctionsAsVar.get = function () { + return this.treatFunctionsAsVarInScope(this.currentScope()) + }), + (Vc.allowNewDotTarget.get = function () { + var e = this.currentThisScope(), + t = e.flags, + s = e.inClassFieldInit + return (258 & t) > 0 || s + }), + (Vc.inClassStaticBlock.get = function () { + return (this.currentVarScope().flags & Dc) > 0 + }), + (Tc.extend = function () { + for (var e = [], t = arguments.length; t--; ) e[t] = arguments[t] + for (var s = this, i = 0; i < e.length; i++) s = e[i](s) + return s + }), + (Tc.parse = function (e, t) { + return new this(t, e).parse() + }), + (Tc.parseExpressionAt = function (e, t, s) { + var i = new this(s, e, t) + return i.nextToken(), i.parseExpression() + }), + (Tc.tokenizer = function (e, t) { + return new this(t, e) + }), + Object.defineProperties(Tc.prototype, Vc) +var Bc = Tc.prototype, + zc = /^(?:'((?:\\.|[^'\\])*?)'|"((?:\\.|[^"\\])*?)")/ +;(Bc.strictDirective = function (e) { + if (this.options.ecmaVersion < 5) return !1 + for (;;) { + ;(bc.lastIndex = e), (e += bc.exec(this.input)[0].length) + var t = zc.exec(this.input.slice(e)) + if (!t) return !1 + if ('use strict' === (t[1] || t[2])) { + bc.lastIndex = e + t[0].length + var s = bc.exec(this.input), + i = s.index + s[0].length, + n = this.input.charAt(i) + return ';' === n || '}' === n || (mc.test(s[0]) && !(/[(`.[+\-/*%<>=,?^&]/.test(n) || ('!' === n && '=' === this.input.charAt(i + 1)))) + } + ;(e += t[0].length), (bc.lastIndex = e), (e += bc.exec(this.input)[0].length), ';' === this.input[e] && e++ + } +}), + (Bc.eat = function (e) { + return this.type === e && (this.next(), !0) + }), + (Bc.isContextual = function (e) { + return this.type === fc.name && this.value === e && !this.containsEsc + }), + (Bc.eatContextual = function (e) { + return !!this.isContextual(e) && (this.next(), !0) + }), + (Bc.expectContextual = function (e) { + this.eatContextual(e) || this.unexpected() + }), + (Bc.canInsertSemicolon = function () { + return this.type === fc.eof || this.type === fc.braceR || mc.test(this.input.slice(this.lastTokEnd, this.start)) + }), + (Bc.insertSemicolon = function () { + if (this.canInsertSemicolon()) return this.options.onInsertedSemicolon && this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc), !0 + }), + (Bc.semicolon = function () { + this.eat(fc.semi) || this.insertSemicolon() || this.unexpected() + }), + (Bc.afterTrailingComma = function (e, t) { + if (this.type === e) return this.options.onTrailingComma && this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc), t || this.next(), !0 + }), + (Bc.expect = function (e) { + this.eat(e) || this.unexpected() + }), + (Bc.unexpected = function (e) { + this.raise(null != e ? e : this.start, 'Unexpected token') + }) +var Fc = function () { + this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = this.doubleProto = -1 +} +;(Bc.checkPatternErrors = function (e, t) { + if (e) { + e.trailingComma > -1 && this.raiseRecoverable(e.trailingComma, 'Comma is not permitted after the rest element') + var s = t ? e.parenthesizedAssign : e.parenthesizedBind + s > -1 && this.raiseRecoverable(s, t ? 'Assigning to rvalue' : 'Parenthesized pattern') + } +}), + (Bc.checkExpressionErrors = function (e, t) { + if (!e) return !1 + var s = e.shorthandAssign, + i = e.doubleProto + if (!t) return s >= 0 || i >= 0 + s >= 0 && this.raise(s, 'Shorthand property assignments are valid only in destructuring patterns'), i >= 0 && this.raiseRecoverable(i, 'Redefinition of __proto__ property') + }), + (Bc.checkYieldAwaitInDefaultParams = function () { + this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos) && this.raise(this.yieldPos, 'Yield expression cannot be a default value'), + this.awaitPos && this.raise(this.awaitPos, 'Await expression cannot be a default value') + }), + (Bc.isSimpleAssignTarget = function (e) { + return 'ParenthesizedExpression' === e.type ? this.isSimpleAssignTarget(e.expression) : 'Identifier' === e.type || 'MemberExpression' === e.type + }) +var jc = Tc.prototype +jc.parseTopLevel = function (e) { + var t = Object.create(null) + for (e.body || (e.body = []); this.type !== fc.eof; ) { + var s = this.parseStatement(null, !0, t) + e.body.push(s) + } + if (this.inModule) + for (var i = 0, n = Object.keys(this.undefinedExports); i < n.length; i += 1) { + var r = n[i] + this.raiseRecoverable(this.undefinedExports[r].start, "Export '" + r + "' is not defined") + } + return this.adaptDirectivePrologue(e.body), this.next(), (e.sourceType = this.options.sourceType), this.finishNode(e, 'Program') +} +var Uc = { kind: 'loop' }, + Gc = { kind: 'switch' } +;(jc.isLet = function (e) { + if (this.options.ecmaVersion < 6 || !this.isContextual('let')) return !1 + bc.lastIndex = this.pos + var t = bc.exec(this.input), + s = this.pos + t[0].length, + i = this.input.charCodeAt(s) + if (91 === i || 92 === i) return !0 + if (e) return !1 + if (123 === i || (i > 55295 && i < 56320)) return !0 + if (oc(i, !0)) { + for (var n = s + 1; ac((i = this.input.charCodeAt(n)), !0); ) ++n + if (92 === i || (i > 55295 && i < 56320)) return !0 + var r = this.input.slice(s, n) + if (!sc.test(r)) return !0 + } + return !1 +}), + (jc.isAsyncFunction = function () { + if (this.options.ecmaVersion < 8 || !this.isContextual('async')) return !1 + bc.lastIndex = this.pos + var e, + t = bc.exec(this.input), + s = this.pos + t[0].length + return !( + mc.test(this.input.slice(this.pos, s)) || + 'function' !== this.input.slice(s, s + 8) || + (s + 8 !== this.input.length && (ac((e = this.input.charCodeAt(s + 8))) || (e > 55295 && e < 56320))) + ) + }), + (jc.parseStatement = function (e, t, s) { + var i, + n = this.type, + r = this.startNode() + switch ((this.isLet(e) && ((n = fc._var), (i = 'let')), n)) { + case fc._break: + case fc._continue: + return this.parseBreakContinueStatement(r, n.keyword) + case fc._debugger: + return this.parseDebuggerStatement(r) + case fc._do: + return this.parseDoStatement(r) + case fc._for: + return this.parseForStatement(r) + case fc._function: + return e && (this.strict || ('if' !== e && 'label' !== e)) && this.options.ecmaVersion >= 6 && this.unexpected(), this.parseFunctionStatement(r, !1, !e) + case fc._class: + return e && this.unexpected(), this.parseClass(r, !0) + case fc._if: + return this.parseIfStatement(r) + case fc._return: + return this.parseReturnStatement(r) + case fc._switch: + return this.parseSwitchStatement(r) + case fc._throw: + return this.parseThrowStatement(r) + case fc._try: + return this.parseTryStatement(r) + case fc._const: + case fc._var: + return (i = i || this.value), e && 'var' !== i && this.unexpected(), this.parseVarStatement(r, i) + case fc._while: + return this.parseWhileStatement(r) + case fc._with: + return this.parseWithStatement(r) + case fc.braceL: + return this.parseBlock(!0, r) + case fc.semi: + return this.parseEmptyStatement(r) + case fc._export: + case fc._import: + if (this.options.ecmaVersion > 10 && n === fc._import) { + bc.lastIndex = this.pos + var o = bc.exec(this.input), + a = this.pos + o[0].length, + l = this.input.charCodeAt(a) + if (40 === l || 46 === l) return this.parseExpressionStatement(r, this.parseExpression()) + } + return ( + this.options.allowImportExportEverywhere || + (t || this.raise(this.start, "'import' and 'export' may only appear at the top level"), + this.inModule || this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'")), + n === fc._import ? this.parseImport(r) : this.parseExport(r, s) + ) + default: + if (this.isAsyncFunction()) return e && this.unexpected(), this.next(), this.parseFunctionStatement(r, !0, !e) + var c = this.value, + h = this.parseExpression() + return n === fc.name && 'Identifier' === h.type && this.eat(fc.colon) ? this.parseLabeledStatement(r, c, h, e) : this.parseExpressionStatement(r, h) + } + }), + (jc.parseBreakContinueStatement = function (e, t) { + var s = 'break' === t + this.next(), this.eat(fc.semi) || this.insertSemicolon() ? (e.label = null) : this.type !== fc.name ? this.unexpected() : ((e.label = this.parseIdent()), this.semicolon()) + for (var i = 0; i < this.labels.length; ++i) { + var n = this.labels[i] + if (null == e.label || n.name === e.label.name) { + if (null != n.kind && (s || 'loop' === n.kind)) break + if (e.label && s) break + } + } + return i === this.labels.length && this.raise(e.start, 'Unsyntactic ' + t), this.finishNode(e, s ? 'BreakStatement' : 'ContinueStatement') + }), + (jc.parseDebuggerStatement = function (e) { + return this.next(), this.semicolon(), this.finishNode(e, 'DebuggerStatement') + }), + (jc.parseDoStatement = function (e) { + return ( + this.next(), + this.labels.push(Uc), + (e.body = this.parseStatement('do')), + this.labels.pop(), + this.expect(fc._while), + (e.test = this.parseParenExpression()), + this.options.ecmaVersion >= 6 ? this.eat(fc.semi) : this.semicolon(), + this.finishNode(e, 'DoWhileStatement') + ) + }), + (jc.parseForStatement = function (e) { + this.next() + var t = this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual('await') ? this.lastTokStart : -1 + if ((this.labels.push(Uc), this.enterScope(0), this.expect(fc.parenL), this.type === fc.semi)) return t > -1 && this.unexpected(t), this.parseFor(e, null) + var s = this.isLet() + if (this.type === fc._var || this.type === fc._const || s) { + var i = this.startNode(), + n = s ? 'let' : this.value + return ( + this.next(), + this.parseVar(i, !0, n), + this.finishNode(i, 'VariableDeclaration'), + (this.type === fc._in || (this.options.ecmaVersion >= 6 && this.isContextual('of'))) && 1 === i.declarations.length + ? (this.options.ecmaVersion >= 9 && (this.type === fc._in ? t > -1 && this.unexpected(t) : (e.await = t > -1)), this.parseForIn(e, i)) + : (t > -1 && this.unexpected(t), this.parseFor(e, i)) + ) + } + var r = this.isContextual('let'), + o = !1, + a = new Fc(), + l = this.parseExpression(!(t > -1) || 'await', a) + return this.type === fc._in || (o = this.options.ecmaVersion >= 6 && this.isContextual('of')) + ? (this.options.ecmaVersion >= 9 && (this.type === fc._in ? t > -1 && this.unexpected(t) : (e.await = t > -1)), + r && o && this.raise(l.start, "The left-hand side of a for-of loop may not start with 'let'."), + this.toAssignable(l, !1, a), + this.checkLValPattern(l), + this.parseForIn(e, l)) + : (this.checkExpressionErrors(a, !0), t > -1 && this.unexpected(t), this.parseFor(e, l)) + }), + (jc.parseFunctionStatement = function (e, t, s) { + return this.next(), this.parseFunction(e, qc | (s ? 0 : Hc), !1, t) + }), + (jc.parseIfStatement = function (e) { + return ( + this.next(), + (e.test = this.parseParenExpression()), + (e.consequent = this.parseStatement('if')), + (e.alternate = this.eat(fc._else) ? this.parseStatement('if') : null), + this.finishNode(e, 'IfStatement') + ) + }), + (jc.parseReturnStatement = function (e) { + return ( + this.inFunction || this.options.allowReturnOutsideFunction || this.raise(this.start, "'return' outside of function"), + this.next(), + this.eat(fc.semi) || this.insertSemicolon() ? (e.argument = null) : ((e.argument = this.parseExpression()), this.semicolon()), + this.finishNode(e, 'ReturnStatement') + ) + }), + (jc.parseSwitchStatement = function (e) { + var t + this.next(), (e.discriminant = this.parseParenExpression()), (e.cases = []), this.expect(fc.braceL), this.labels.push(Gc), this.enterScope(0) + for (var s = !1; this.type !== fc.braceR; ) + if (this.type === fc._case || this.type === fc._default) { + var i = this.type === fc._case + t && this.finishNode(t, 'SwitchCase'), + e.cases.push((t = this.startNode())), + (t.consequent = []), + this.next(), + i ? (t.test = this.parseExpression()) : (s && this.raiseRecoverable(this.lastTokStart, 'Multiple default clauses'), (s = !0), (t.test = null)), + this.expect(fc.colon) + } else t || this.unexpected(), t.consequent.push(this.parseStatement(null)) + return this.exitScope(), t && this.finishNode(t, 'SwitchCase'), this.next(), this.labels.pop(), this.finishNode(e, 'SwitchStatement') + }), + (jc.parseThrowStatement = function (e) { + return ( + this.next(), + mc.test(this.input.slice(this.lastTokEnd, this.start)) && this.raise(this.lastTokEnd, 'Illegal newline after throw'), + (e.argument = this.parseExpression()), + this.semicolon(), + this.finishNode(e, 'ThrowStatement') + ) + }) +var Wc = [] +;(jc.parseCatchClauseParam = function () { + var e = this.parseBindingAtom(), + t = 'Identifier' === e.type + return this.enterScope(t ? 32 : 0), this.checkLValPattern(e, t ? 4 : 2), this.expect(fc.parenR), e +}), + (jc.parseTryStatement = function (e) { + if ((this.next(), (e.block = this.parseBlock()), (e.handler = null), this.type === fc._catch)) { + var t = this.startNode() + this.next(), + this.eat(fc.parenL) ? (t.param = this.parseCatchClauseParam()) : (this.options.ecmaVersion < 10 && this.unexpected(), (t.param = null), this.enterScope(0)), + (t.body = this.parseBlock(!1)), + this.exitScope(), + (e.handler = this.finishNode(t, 'CatchClause')) + } + return (e.finalizer = this.eat(fc._finally) ? this.parseBlock() : null), e.handler || e.finalizer || this.raise(e.start, 'Missing catch or finally clause'), this.finishNode(e, 'TryStatement') + }), + (jc.parseVarStatement = function (e, t, s) { + return this.next(), this.parseVar(e, !1, t, s), this.semicolon(), this.finishNode(e, 'VariableDeclaration') + }), + (jc.parseWhileStatement = function (e) { + return this.next(), (e.test = this.parseParenExpression()), this.labels.push(Uc), (e.body = this.parseStatement('while')), this.labels.pop(), this.finishNode(e, 'WhileStatement') + }), + (jc.parseWithStatement = function (e) { + return ( + this.strict && this.raise(this.start, "'with' in strict mode"), this.next(), (e.object = this.parseParenExpression()), (e.body = this.parseStatement('with')), this.finishNode(e, 'WithStatement') + ) + }), + (jc.parseEmptyStatement = function (e) { + return this.next(), this.finishNode(e, 'EmptyStatement') + }), + (jc.parseLabeledStatement = function (e, t, s, i) { + for (var n = 0, r = this.labels; n < r.length; n += 1) { + r[n].name === t && this.raise(s.start, "Label '" + t + "' is already declared") + } + for (var o = this.type.isLoop ? 'loop' : this.type === fc._switch ? 'switch' : null, a = this.labels.length - 1; a >= 0; a--) { + var l = this.labels[a] + if (l.statementStart !== e.start) break + ;(l.statementStart = this.start), (l.kind = o) + } + return ( + this.labels.push({ name: t, kind: o, statementStart: this.start }), + (e.body = this.parseStatement(i ? (-1 === i.indexOf('label') ? i + 'label' : i) : 'label')), + this.labels.pop(), + (e.label = s), + this.finishNode(e, 'LabeledStatement') + ) + }), + (jc.parseExpressionStatement = function (e, t) { + return (e.expression = t), this.semicolon(), this.finishNode(e, 'ExpressionStatement') + }), + (jc.parseBlock = function (e, t, s) { + for (void 0 === e && (e = !0), void 0 === t && (t = this.startNode()), t.body = [], this.expect(fc.braceL), e && this.enterScope(0); this.type !== fc.braceR; ) { + var i = this.parseStatement(null) + t.body.push(i) + } + return s && (this.strict = !1), this.next(), e && this.exitScope(), this.finishNode(t, 'BlockStatement') + }), + (jc.parseFor = function (e, t) { + return ( + (e.init = t), + this.expect(fc.semi), + (e.test = this.type === fc.semi ? null : this.parseExpression()), + this.expect(fc.semi), + (e.update = this.type === fc.parenR ? null : this.parseExpression()), + this.expect(fc.parenR), + (e.body = this.parseStatement('for')), + this.exitScope(), + this.labels.pop(), + this.finishNode(e, 'ForStatement') + ) + }), + (jc.parseForIn = function (e, t) { + var s = this.type === fc._in + return ( + this.next(), + 'VariableDeclaration' === t.type && + null != t.declarations[0].init && + (!s || this.options.ecmaVersion < 8 || this.strict || 'var' !== t.kind || 'Identifier' !== t.declarations[0].id.type) && + this.raise(t.start, (s ? 'for-in' : 'for-of') + ' loop variable declaration may not have an initializer'), + (e.left = t), + (e.right = s ? this.parseExpression() : this.parseMaybeAssign()), + this.expect(fc.parenR), + (e.body = this.parseStatement('for')), + this.exitScope(), + this.labels.pop(), + this.finishNode(e, s ? 'ForInStatement' : 'ForOfStatement') + ) + }), + (jc.parseVar = function (e, t, s, i) { + for (e.declarations = [], e.kind = s; ; ) { + var n = this.startNode() + if ( + (this.parseVarId(n, s), + this.eat(fc.eq) + ? (n.init = this.parseMaybeAssign(t)) + : i || 'const' !== s || this.type === fc._in || (this.options.ecmaVersion >= 6 && this.isContextual('of')) + ? i || 'Identifier' === n.id.type || (t && (this.type === fc._in || this.isContextual('of'))) + ? (n.init = null) + : this.raise(this.lastTokEnd, 'Complex binding patterns require an initialization value') + : this.unexpected(), + e.declarations.push(this.finishNode(n, 'VariableDeclarator')), + !this.eat(fc.comma)) + ) + break + } + return e + }), + (jc.parseVarId = function (e, t) { + ;(e.id = this.parseBindingAtom()), this.checkLValPattern(e.id, 'var' === t ? 1 : 2, !1) + }) +var qc = 1, + Hc = 2 +function Kc(e, t) { + var s = t.key.name, + i = e[s], + n = 'true' + return ( + 'MethodDefinition' !== t.type || ('get' !== t.kind && 'set' !== t.kind) || (n = (t.static ? 's' : 'i') + t.kind), + ('iget' === i && 'iset' === n) || ('iset' === i && 'iget' === n) || ('sget' === i && 'sset' === n) || ('sset' === i && 'sget' === n) ? ((e[s] = 'true'), !1) : !!i || ((e[s] = n), !1) + ) +} +function Yc(e, t) { + var s = e.computed, + i = e.key + return !s && (('Identifier' === i.type && i.name === t) || ('Literal' === i.type && i.value === t)) +} +;(jc.parseFunction = function (e, t, s, i, n) { + this.initFunction(e), + (this.options.ecmaVersion >= 9 || (this.options.ecmaVersion >= 6 && !i)) && (this.type === fc.star && t & Hc && this.unexpected(), (e.generator = this.eat(fc.star))), + this.options.ecmaVersion >= 8 && (e.async = !!i), + t & qc && + ((e.id = 4 & t && this.type !== fc.name ? null : this.parseIdent()), + !e.id || t & Hc || this.checkLValSimple(e.id, this.strict || e.generator || e.async ? (this.treatFunctionsAsVar ? 1 : 2) : 3)) + var r = this.yieldPos, + o = this.awaitPos, + a = this.awaitIdentPos + return ( + (this.yieldPos = 0), + (this.awaitPos = 0), + (this.awaitIdentPos = 0), + this.enterScope(Lc(e.async, e.generator)), + t & qc || (e.id = this.type === fc.name ? this.parseIdent() : null), + this.parseFunctionParams(e), + this.parseFunctionBody(e, s, !1, n), + (this.yieldPos = r), + (this.awaitPos = o), + (this.awaitIdentPos = a), + this.finishNode(e, t & qc ? 'FunctionDeclaration' : 'FunctionExpression') + ) +}), + (jc.parseFunctionParams = function (e) { + this.expect(fc.parenL), (e.params = this.parseBindingList(fc.parenR, !1, this.options.ecmaVersion >= 8)), this.checkYieldAwaitInDefaultParams() + }), + (jc.parseClass = function (e, t) { + this.next() + var s = this.strict + ;(this.strict = !0), this.parseClassId(e, t), this.parseClassSuper(e) + var i = this.enterClassBody(), + n = this.startNode(), + r = !1 + for (n.body = [], this.expect(fc.braceL); this.type !== fc.braceR; ) { + var o = this.parseClassElement(null !== e.superClass) + o && + (n.body.push(o), + 'MethodDefinition' === o.type && 'constructor' === o.kind + ? (r && this.raiseRecoverable(o.start, 'Duplicate constructor in the same class'), (r = !0)) + : o.key && 'PrivateIdentifier' === o.key.type && Kc(i, o) && this.raiseRecoverable(o.key.start, "Identifier '#" + o.key.name + "' has already been declared")) + } + return (this.strict = s), this.next(), (e.body = this.finishNode(n, 'ClassBody')), this.exitClassBody(), this.finishNode(e, t ? 'ClassDeclaration' : 'ClassExpression') + }), + (jc.parseClassElement = function (e) { + if (this.eat(fc.semi)) return null + var t = this.options.ecmaVersion, + s = this.startNode(), + i = '', + n = !1, + r = !1, + o = 'method', + a = !1 + if (this.eatContextual('static')) { + if (t >= 13 && this.eat(fc.braceL)) return this.parseClassStaticBlock(s), s + this.isClassElementNameStart() || this.type === fc.star ? (a = !0) : (i = 'static') + } + if ( + ((s.static = a), + !i && t >= 8 && this.eatContextual('async') && ((!this.isClassElementNameStart() && this.type !== fc.star) || this.canInsertSemicolon() ? (i = 'async') : (r = !0)), + !i && (t >= 9 || !r) && this.eat(fc.star) && (n = !0), + !i && !r && !n) + ) { + var l = this.value + ;(this.eatContextual('get') || this.eatContextual('set')) && (this.isClassElementNameStart() ? (o = l) : (i = l)) + } + if ( + (i ? ((s.computed = !1), (s.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc)), (s.key.name = i), this.finishNode(s.key, 'Identifier')) : this.parseClassElementName(s), + t < 13 || this.type === fc.parenL || 'method' !== o || n || r) + ) { + var c = !s.static && Yc(s, 'constructor'), + h = c && e + c && 'method' !== o && this.raise(s.key.start, "Constructor can't have get/set modifier"), (s.kind = c ? 'constructor' : o), this.parseClassMethod(s, n, r, h) + } else this.parseClassField(s) + return s + }), + (jc.isClassElementNameStart = function () { + return this.type === fc.name || this.type === fc.privateId || this.type === fc.num || this.type === fc.string || this.type === fc.bracketL || this.type.keyword + }), + (jc.parseClassElementName = function (e) { + this.type === fc.privateId + ? ('constructor' === this.value && this.raise(this.start, "Classes can't have an element named '#constructor'"), (e.computed = !1), (e.key = this.parsePrivateIdent())) + : this.parsePropertyName(e) + }), + (jc.parseClassMethod = function (e, t, s, i) { + var n = e.key + 'constructor' === e.kind + ? (t && this.raise(n.start, "Constructor can't be a generator"), s && this.raise(n.start, "Constructor can't be an async method")) + : e.static && Yc(e, 'prototype') && this.raise(n.start, 'Classes may not have a static property named prototype') + var r = (e.value = this.parseMethod(t, s, i)) + return ( + 'get' === e.kind && 0 !== r.params.length && this.raiseRecoverable(r.start, 'getter should have no params'), + 'set' === e.kind && 1 !== r.params.length && this.raiseRecoverable(r.start, 'setter should have exactly one param'), + 'set' === e.kind && 'RestElement' === r.params[0].type && this.raiseRecoverable(r.params[0].start, 'Setter cannot use rest params'), + this.finishNode(e, 'MethodDefinition') + ) + }), + (jc.parseClassField = function (e) { + if ( + (Yc(e, 'constructor') + ? this.raise(e.key.start, "Classes can't have a field named 'constructor'") + : e.static && Yc(e, 'prototype') && this.raise(e.key.start, "Classes can't have a static field named 'prototype'"), + this.eat(fc.eq)) + ) { + var t = this.currentThisScope(), + s = t.inClassFieldInit + ;(t.inClassFieldInit = !0), (e.value = this.parseMaybeAssign()), (t.inClassFieldInit = s) + } else e.value = null + return this.semicolon(), this.finishNode(e, 'PropertyDefinition') + }), + (jc.parseClassStaticBlock = function (e) { + e.body = [] + var t = this.labels + for (this.labels = [], this.enterScope(320); this.type !== fc.braceR; ) { + var s = this.parseStatement(null) + e.body.push(s) + } + return this.next(), this.exitScope(), (this.labels = t), this.finishNode(e, 'StaticBlock') + }), + (jc.parseClassId = function (e, t) { + this.type === fc.name ? ((e.id = this.parseIdent()), t && this.checkLValSimple(e.id, 2, !1)) : (!0 === t && this.unexpected(), (e.id = null)) + }), + (jc.parseClassSuper = function (e) { + e.superClass = this.eat(fc._extends) ? this.parseExprSubscripts(null, !1) : null + }), + (jc.enterClassBody = function () { + var e = { declared: Object.create(null), used: [] } + return this.privateNameStack.push(e), e.declared + }), + (jc.exitClassBody = function () { + var e = this.privateNameStack.pop(), + t = e.declared, + s = e.used + if (this.options.checkPrivateFields) + for (var i = this.privateNameStack.length, n = 0 === i ? null : this.privateNameStack[i - 1], r = 0; r < s.length; ++r) { + var o = s[r] + kc(t, o.name) || (n ? n.used.push(o) : this.raiseRecoverable(o.start, "Private field '#" + o.name + "' must be declared in an enclosing class")) + } + }), + (jc.parseExportAllDeclaration = function (e, t) { + return ( + this.options.ecmaVersion >= 11 && (this.eatContextual('as') ? ((e.exported = this.parseModuleExportName()), this.checkExport(t, e.exported, this.lastTokStart)) : (e.exported = null)), + this.expectContextual('from'), + this.type !== fc.string && this.unexpected(), + (e.source = this.parseExprAtom()), + this.semicolon(), + this.finishNode(e, 'ExportAllDeclaration') + ) + }), + (jc.parseExport = function (e, t) { + if ((this.next(), this.eat(fc.star))) return this.parseExportAllDeclaration(e, t) + if (this.eat(fc._default)) return this.checkExport(t, 'default', this.lastTokStart), (e.declaration = this.parseExportDefaultDeclaration()), this.finishNode(e, 'ExportDefaultDeclaration') + if (this.shouldParseExportStatement()) + (e.declaration = this.parseExportDeclaration(e)), + 'VariableDeclaration' === e.declaration.type ? this.checkVariableExport(t, e.declaration.declarations) : this.checkExport(t, e.declaration.id, e.declaration.id.start), + (e.specifiers = []), + (e.source = null) + else { + if (((e.declaration = null), (e.specifiers = this.parseExportSpecifiers(t)), this.eatContextual('from'))) this.type !== fc.string && this.unexpected(), (e.source = this.parseExprAtom()) + else { + for (var s = 0, i = e.specifiers; s < i.length; s += 1) { + var n = i[s] + this.checkUnreserved(n.local), + this.checkLocalExport(n.local), + 'Literal' === n.local.type && this.raise(n.local.start, 'A string literal cannot be used as an exported binding without `from`.') + } + e.source = null + } + this.semicolon() + } + return this.finishNode(e, 'ExportNamedDeclaration') + }), + (jc.parseExportDeclaration = function (e) { + return this.parseStatement(null) + }), + (jc.parseExportDefaultDeclaration = function () { + var e + if (this.type === fc._function || (e = this.isAsyncFunction())) { + var t = this.startNode() + return this.next(), e && this.next(), this.parseFunction(t, 4 | qc, !1, e) + } + if (this.type === fc._class) { + var s = this.startNode() + return this.parseClass(s, 'nullableID') + } + var i = this.parseMaybeAssign() + return this.semicolon(), i + }), + (jc.checkExport = function (e, t, s) { + e && ('string' != typeof t && (t = 'Identifier' === t.type ? t.name : t.value), kc(e, t) && this.raiseRecoverable(s, "Duplicate export '" + t + "'"), (e[t] = !0)) + }), + (jc.checkPatternExport = function (e, t) { + var s = t.type + if ('Identifier' === s) this.checkExport(e, t, t.start) + else if ('ObjectPattern' === s) + for (var i = 0, n = t.properties; i < n.length; i += 1) { + var r = n[i] + this.checkPatternExport(e, r) + } + else if ('ArrayPattern' === s) + for (var o = 0, a = t.elements; o < a.length; o += 1) { + var l = a[o] + l && this.checkPatternExport(e, l) + } + else + 'Property' === s + ? this.checkPatternExport(e, t.value) + : 'AssignmentPattern' === s + ? this.checkPatternExport(e, t.left) + : 'RestElement' === s + ? this.checkPatternExport(e, t.argument) + : 'ParenthesizedExpression' === s && this.checkPatternExport(e, t.expression) + }), + (jc.checkVariableExport = function (e, t) { + if (e) + for (var s = 0, i = t; s < i.length; s += 1) { + var n = i[s] + this.checkPatternExport(e, n.id) + } + }), + (jc.shouldParseExportStatement = function () { + return 'var' === this.type.keyword || 'const' === this.type.keyword || 'class' === this.type.keyword || 'function' === this.type.keyword || this.isLet() || this.isAsyncFunction() + }), + (jc.parseExportSpecifier = function (e) { + var t = this.startNode() + return ( + (t.local = this.parseModuleExportName()), + (t.exported = this.eatContextual('as') ? this.parseModuleExportName() : t.local), + this.checkExport(e, t.exported, t.exported.start), + this.finishNode(t, 'ExportSpecifier') + ) + }), + (jc.parseExportSpecifiers = function (e) { + var t = [], + s = !0 + for (this.expect(fc.braceL); !this.eat(fc.braceR); ) { + if (s) s = !1 + else if ((this.expect(fc.comma), this.afterTrailingComma(fc.braceR))) break + t.push(this.parseExportSpecifier(e)) + } + return t + }), + (jc.parseImport = function (e) { + return ( + this.next(), + this.type === fc.string + ? ((e.specifiers = Wc), (e.source = this.parseExprAtom())) + : ((e.specifiers = this.parseImportSpecifiers()), this.expectContextual('from'), (e.source = this.type === fc.string ? this.parseExprAtom() : this.unexpected())), + this.semicolon(), + this.finishNode(e, 'ImportDeclaration') + ) + }), + (jc.parseImportSpecifier = function () { + var e = this.startNode() + return ( + (e.imported = this.parseModuleExportName()), + this.eatContextual('as') ? (e.local = this.parseIdent()) : (this.checkUnreserved(e.imported), (e.local = e.imported)), + this.checkLValSimple(e.local, 2), + this.finishNode(e, 'ImportSpecifier') + ) + }), + (jc.parseImportDefaultSpecifier = function () { + var e = this.startNode() + return (e.local = this.parseIdent()), this.checkLValSimple(e.local, 2), this.finishNode(e, 'ImportDefaultSpecifier') + }), + (jc.parseImportNamespaceSpecifier = function () { + var e = this.startNode() + return this.next(), this.expectContextual('as'), (e.local = this.parseIdent()), this.checkLValSimple(e.local, 2), this.finishNode(e, 'ImportNamespaceSpecifier') + }), + (jc.parseImportSpecifiers = function () { + var e = [], + t = !0 + if (this.type === fc.name && (e.push(this.parseImportDefaultSpecifier()), !this.eat(fc.comma))) return e + if (this.type === fc.star) return e.push(this.parseImportNamespaceSpecifier()), e + for (this.expect(fc.braceL); !this.eat(fc.braceR); ) { + if (t) t = !1 + else if ((this.expect(fc.comma), this.afterTrailingComma(fc.braceR))) break + e.push(this.parseImportSpecifier()) + } + return e + }), + (jc.parseModuleExportName = function () { + if (this.options.ecmaVersion >= 13 && this.type === fc.string) { + var e = this.parseLiteral(this.value) + return Cc.test(e.value) && this.raise(e.start, 'An export name cannot include a lone surrogate.'), e + } + return this.parseIdent(!0) + }), + (jc.adaptDirectivePrologue = function (e) { + for (var t = 0; t < e.length && this.isDirectiveCandidate(e[t]); ++t) e[t].directive = e[t].expression.raw.slice(1, -1) + }), + (jc.isDirectiveCandidate = function (e) { + return ( + this.options.ecmaVersion >= 5 && + 'ExpressionStatement' === e.type && + 'Literal' === e.expression.type && + 'string' == typeof e.expression.value && + ('"' === this.input[e.start] || "'" === this.input[e.start]) + ) + }) +var Xc = Tc.prototype +;(Xc.toAssignable = function (e, t, s) { + if (this.options.ecmaVersion >= 6 && e) + switch (e.type) { + case 'Identifier': + this.inAsync && 'await' === e.name && this.raise(e.start, "Cannot use 'await' as identifier inside an async function") + break + case 'ObjectPattern': + case 'ArrayPattern': + case 'AssignmentPattern': + case 'RestElement': + break + case 'ObjectExpression': + ;(e.type = 'ObjectPattern'), s && this.checkPatternErrors(s, !0) + for (var i = 0, n = e.properties; i < n.length; i += 1) { + var r = n[i] + this.toAssignable(r, t), 'RestElement' !== r.type || ('ArrayPattern' !== r.argument.type && 'ObjectPattern' !== r.argument.type) || this.raise(r.argument.start, 'Unexpected token') + } + break + case 'Property': + 'init' !== e.kind && this.raise(e.key.start, "Object pattern can't contain getter or setter"), this.toAssignable(e.value, t) + break + case 'ArrayExpression': + ;(e.type = 'ArrayPattern'), s && this.checkPatternErrors(s, !0), this.toAssignableList(e.elements, t) + break + case 'SpreadElement': + ;(e.type = 'RestElement'), this.toAssignable(e.argument, t), 'AssignmentPattern' === e.argument.type && this.raise(e.argument.start, 'Rest elements cannot have a default value') + break + case 'AssignmentExpression': + '=' !== e.operator && this.raise(e.left.end, "Only '=' operator can be used for specifying default value."), (e.type = 'AssignmentPattern'), delete e.operator, this.toAssignable(e.left, t) + break + case 'ParenthesizedExpression': + this.toAssignable(e.expression, t, s) + break + case 'ChainExpression': + this.raiseRecoverable(e.start, 'Optional chaining cannot appear in left-hand side') + break + case 'MemberExpression': + if (!t) break + default: + this.raise(e.start, 'Assigning to rvalue') + } + else s && this.checkPatternErrors(s, !0) + return e +}), + (Xc.toAssignableList = function (e, t) { + for (var s = e.length, i = 0; i < s; i++) { + var n = e[i] + n && this.toAssignable(n, t) + } + if (s) { + var r = e[s - 1] + 6 === this.options.ecmaVersion && t && r && 'RestElement' === r.type && 'Identifier' !== r.argument.type && this.unexpected(r.argument.start) + } + return e + }), + (Xc.parseSpread = function (e) { + var t = this.startNode() + return this.next(), (t.argument = this.parseMaybeAssign(!1, e)), this.finishNode(t, 'SpreadElement') + }), + (Xc.parseRestBinding = function () { + var e = this.startNode() + return this.next(), 6 === this.options.ecmaVersion && this.type !== fc.name && this.unexpected(), (e.argument = this.parseBindingAtom()), this.finishNode(e, 'RestElement') + }), + (Xc.parseBindingAtom = function () { + if (this.options.ecmaVersion >= 6) + switch (this.type) { + case fc.bracketL: + var e = this.startNode() + return this.next(), (e.elements = this.parseBindingList(fc.bracketR, !0, !0)), this.finishNode(e, 'ArrayPattern') + case fc.braceL: + return this.parseObj(!0) + } + return this.parseIdent() + }), + (Xc.parseBindingList = function (e, t, s, i) { + for (var n = [], r = !0; !this.eat(e); ) + if ((r ? (r = !1) : this.expect(fc.comma), t && this.type === fc.comma)) n.push(null) + else { + if (s && this.afterTrailingComma(e)) break + if (this.type === fc.ellipsis) { + var o = this.parseRestBinding() + this.parseBindingListItem(o), n.push(o), this.type === fc.comma && this.raiseRecoverable(this.start, 'Comma is not permitted after the rest element'), this.expect(e) + break + } + n.push(this.parseAssignableListItem(i)) + } + return n + }), + (Xc.parseAssignableListItem = function (e) { + var t = this.parseMaybeDefault(this.start, this.startLoc) + return this.parseBindingListItem(t), t + }), + (Xc.parseBindingListItem = function (e) { + return e + }), + (Xc.parseMaybeDefault = function (e, t, s) { + if (((s = s || this.parseBindingAtom()), this.options.ecmaVersion < 6 || !this.eat(fc.eq))) return s + var i = this.startNodeAt(e, t) + return (i.left = s), (i.right = this.parseMaybeAssign()), this.finishNode(i, 'AssignmentPattern') + }), + (Xc.checkLValSimple = function (e, t, s) { + void 0 === t && (t = 0) + var i = 0 !== t + switch (e.type) { + case 'Identifier': + this.strict && this.reservedWordsStrictBind.test(e.name) && this.raiseRecoverable(e.start, (i ? 'Binding ' : 'Assigning to ') + e.name + ' in strict mode'), + i && + (2 === t && 'let' === e.name && this.raiseRecoverable(e.start, 'let is disallowed as a lexically bound name'), + s && (kc(s, e.name) && this.raiseRecoverable(e.start, 'Argument name clash'), (s[e.name] = !0)), + 5 !== t && this.declareName(e.name, t, e.start)) + break + case 'ChainExpression': + this.raiseRecoverable(e.start, 'Optional chaining cannot appear in left-hand side') + break + case 'MemberExpression': + i && this.raiseRecoverable(e.start, 'Binding member expression') + break + case 'ParenthesizedExpression': + return i && this.raiseRecoverable(e.start, 'Binding parenthesized expression'), this.checkLValSimple(e.expression, t, s) + default: + this.raise(e.start, (i ? 'Binding' : 'Assigning to') + ' rvalue') + } + }), + (Xc.checkLValPattern = function (e, t, s) { + switch ((void 0 === t && (t = 0), e.type)) { + case 'ObjectPattern': + for (var i = 0, n = e.properties; i < n.length; i += 1) { + var r = n[i] + this.checkLValInnerPattern(r, t, s) + } + break + case 'ArrayPattern': + for (var o = 0, a = e.elements; o < a.length; o += 1) { + var l = a[o] + l && this.checkLValInnerPattern(l, t, s) + } + break + default: + this.checkLValSimple(e, t, s) + } + }), + (Xc.checkLValInnerPattern = function (e, t, s) { + switch ((void 0 === t && (t = 0), e.type)) { + case 'Property': + this.checkLValInnerPattern(e.value, t, s) + break + case 'AssignmentPattern': + this.checkLValPattern(e.left, t, s) + break + case 'RestElement': + this.checkLValPattern(e.argument, t, s) + break + default: + this.checkLValPattern(e, t, s) + } + }) +var Qc = function (e, t, s, i, n) { + ;(this.token = e), (this.isExpr = !!t), (this.preserveSpace = !!s), (this.override = i), (this.generator = !!n) + }, + Zc = { + b_stat: new Qc('{', !1), + b_expr: new Qc('{', !0), + b_tmpl: new Qc('${', !1), + p_stat: new Qc('(', !1), + p_expr: new Qc('(', !0), + q_tmpl: new Qc('`', !0, !0, function (e) { + return e.tryReadTemplateToken() + }), + f_stat: new Qc('function', !1), + f_expr: new Qc('function', !0), + f_expr_gen: new Qc('function', !0, !1, null, !0), + f_gen: new Qc('function', !1, !1, null, !0) + }, + Jc = Tc.prototype +;(Jc.initialContext = function () { + return [Zc.b_stat] +}), + (Jc.curContext = function () { + return this.context[this.context.length - 1] + }), + (Jc.braceIsBlock = function (e) { + var t = this.curContext() + return ( + t === Zc.f_expr || + t === Zc.f_stat || + (e !== fc.colon || (t !== Zc.b_stat && t !== Zc.b_expr) + ? e === fc._return || (e === fc.name && this.exprAllowed) + ? mc.test(this.input.slice(this.lastTokEnd, this.start)) + : e === fc._else || + e === fc.semi || + e === fc.eof || + e === fc.parenR || + e === fc.arrow || + (e === fc.braceL ? t === Zc.b_stat : e !== fc._var && e !== fc._const && e !== fc.name && !this.exprAllowed) + : !t.isExpr) + ) + }), + (Jc.inGeneratorContext = function () { + for (var e = this.context.length - 1; e >= 1; e--) { + var t = this.context[e] + if ('function' === t.token) return t.generator + } + return !1 + }), + (Jc.updateContext = function (e) { + var t, + s = this.type + s.keyword && e === fc.dot ? (this.exprAllowed = !1) : (t = s.updateContext) ? t.call(this, e) : (this.exprAllowed = s.beforeExpr) + }), + (Jc.overrideContext = function (e) { + this.curContext() !== e && (this.context[this.context.length - 1] = e) + }), + (fc.parenR.updateContext = fc.braceR.updateContext = + function () { + if (1 !== this.context.length) { + var e = this.context.pop() + e === Zc.b_stat && 'function' === this.curContext().token && (e = this.context.pop()), (this.exprAllowed = !e.isExpr) + } else this.exprAllowed = !0 + }), + (fc.braceL.updateContext = function (e) { + this.context.push(this.braceIsBlock(e) ? Zc.b_stat : Zc.b_expr), (this.exprAllowed = !0) + }), + (fc.dollarBraceL.updateContext = function () { + this.context.push(Zc.b_tmpl), (this.exprAllowed = !0) + }), + (fc.parenL.updateContext = function (e) { + var t = e === fc._if || e === fc._for || e === fc._with || e === fc._while + this.context.push(t ? Zc.p_stat : Zc.p_expr), (this.exprAllowed = !0) + }), + (fc.incDec.updateContext = function () {}), + (fc._function.updateContext = fc._class.updateContext = + function (e) { + !e.beforeExpr || + e === fc._else || + (e === fc.semi && this.curContext() !== Zc.p_stat) || + (e === fc._return && mc.test(this.input.slice(this.lastTokEnd, this.start))) || + ((e === fc.colon || e === fc.braceL) && this.curContext() === Zc.b_stat) + ? this.context.push(Zc.f_stat) + : this.context.push(Zc.f_expr), + (this.exprAllowed = !1) + }), + (fc.backQuote.updateContext = function () { + this.curContext() === Zc.q_tmpl ? this.context.pop() : this.context.push(Zc.q_tmpl), (this.exprAllowed = !1) + }), + (fc.star.updateContext = function (e) { + if (e === fc._function) { + var t = this.context.length - 1 + this.context[t] === Zc.f_expr ? (this.context[t] = Zc.f_expr_gen) : (this.context[t] = Zc.f_gen) + } + this.exprAllowed = !0 + }), + (fc.name.updateContext = function (e) { + var t = !1 + this.options.ecmaVersion >= 6 && e !== fc.dot && (('of' === this.value && !this.exprAllowed) || ('yield' === this.value && this.inGeneratorContext())) && (t = !0), (this.exprAllowed = t) + }) +var eh = Tc.prototype +function th(e) { + return ('MemberExpression' === e.type && 'PrivateIdentifier' === e.property.type) || ('ChainExpression' === e.type && th(e.expression)) +} +;(eh.checkPropClash = function (e, t, s) { + if (!((this.options.ecmaVersion >= 9 && 'SpreadElement' === e.type) || (this.options.ecmaVersion >= 6 && (e.computed || e.method || e.shorthand)))) { + var i, + n = e.key + switch (n.type) { + case 'Identifier': + i = n.name + break + case 'Literal': + i = String(n.value) + break + default: + return + } + var r = e.kind + if (this.options.ecmaVersion >= 6) + '__proto__' === i && 'init' === r && (t.proto && (s ? s.doubleProto < 0 && (s.doubleProto = n.start) : this.raiseRecoverable(n.start, 'Redefinition of __proto__ property')), (t.proto = !0)) + else { + var o = t[(i = '$' + i)] + if (o) ('init' === r ? (this.strict && o.init) || o.get || o.set : o.init || o[r]) && this.raiseRecoverable(n.start, 'Redefinition of property') + else o = t[i] = { init: !1, get: !1, set: !1 } + o[r] = !0 + } + } +}), + (eh.parseExpression = function (e, t) { + var s = this.start, + i = this.startLoc, + n = this.parseMaybeAssign(e, t) + if (this.type === fc.comma) { + var r = this.startNodeAt(s, i) + for (r.expressions = [n]; this.eat(fc.comma); ) r.expressions.push(this.parseMaybeAssign(e, t)) + return this.finishNode(r, 'SequenceExpression') + } + return n + }), + (eh.parseMaybeAssign = function (e, t, s) { + if (this.isContextual('yield')) { + if (this.inGenerator) return this.parseYield(e) + this.exprAllowed = !1 + } + var i = !1, + n = -1, + r = -1, + o = -1 + t ? ((n = t.parenthesizedAssign), (r = t.trailingComma), (o = t.doubleProto), (t.parenthesizedAssign = t.trailingComma = -1)) : ((t = new Fc()), (i = !0)) + var a = this.start, + l = this.startLoc + ;(this.type !== fc.parenL && this.type !== fc.name) || ((this.potentialArrowAt = this.start), (this.potentialArrowInForAwait = 'await' === e)) + var c = this.parseMaybeConditional(e, t) + if ((s && (c = s.call(this, c, a, l)), this.type.isAssign)) { + var h = this.startNodeAt(a, l) + return ( + (h.operator = this.value), + this.type === fc.eq && (c = this.toAssignable(c, !1, t)), + i || (t.parenthesizedAssign = t.trailingComma = t.doubleProto = -1), + t.shorthandAssign >= c.start && (t.shorthandAssign = -1), + this.type === fc.eq ? this.checkLValPattern(c) : this.checkLValSimple(c), + (h.left = c), + this.next(), + (h.right = this.parseMaybeAssign(e)), + o > -1 && (t.doubleProto = o), + this.finishNode(h, 'AssignmentExpression') + ) + } + return i && this.checkExpressionErrors(t, !0), n > -1 && (t.parenthesizedAssign = n), r > -1 && (t.trailingComma = r), c + }), + (eh.parseMaybeConditional = function (e, t) { + var s = this.start, + i = this.startLoc, + n = this.parseExprOps(e, t) + if (this.checkExpressionErrors(t)) return n + if (this.eat(fc.question)) { + var r = this.startNodeAt(s, i) + return (r.test = n), (r.consequent = this.parseMaybeAssign()), this.expect(fc.colon), (r.alternate = this.parseMaybeAssign(e)), this.finishNode(r, 'ConditionalExpression') + } + return n + }), + (eh.parseExprOps = function (e, t) { + var s = this.start, + i = this.startLoc, + n = this.parseMaybeUnary(t, !1, !1, e) + return this.checkExpressionErrors(t) || (n.start === s && 'ArrowFunctionExpression' === n.type) ? n : this.parseExprOp(n, s, i, -1, e) + }), + (eh.parseExprOp = function (e, t, s, i, n) { + var r = this.type.binop + if (null != r && (!n || this.type !== fc._in) && r > i) { + var o = this.type === fc.logicalOR || this.type === fc.logicalAND, + a = this.type === fc.coalesce + a && (r = fc.logicalAND.binop) + var l = this.value + this.next() + var c = this.start, + h = this.startLoc, + u = this.parseExprOp(this.parseMaybeUnary(null, !1, !1, n), c, h, r, n), + d = this.buildBinary(t, s, e, u, l, o || a) + return ( + ((o && this.type === fc.coalesce) || (a && (this.type === fc.logicalOR || this.type === fc.logicalAND))) && + this.raiseRecoverable(this.start, 'Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses'), + this.parseExprOp(d, t, s, i, n) + ) + } + return e + }), + (eh.buildBinary = function (e, t, s, i, n, r) { + 'PrivateIdentifier' === i.type && this.raise(i.start, 'Private identifier can only be left side of binary expression') + var o = this.startNodeAt(e, t) + return (o.left = s), (o.operator = n), (o.right = i), this.finishNode(o, r ? 'LogicalExpression' : 'BinaryExpression') + }), + (eh.parseMaybeUnary = function (e, t, s, i) { + var n, + r = this.start, + o = this.startLoc + if (this.isContextual('await') && this.canAwait) (n = this.parseAwait(i)), (t = !0) + else if (this.type.prefix) { + var a = this.startNode(), + l = this.type === fc.incDec + ;(a.operator = this.value), + (a.prefix = !0), + this.next(), + (a.argument = this.parseMaybeUnary(null, !0, l, i)), + this.checkExpressionErrors(e, !0), + l + ? this.checkLValSimple(a.argument) + : this.strict && 'delete' === a.operator && 'Identifier' === a.argument.type + ? this.raiseRecoverable(a.start, 'Deleting local variable in strict mode') + : 'delete' === a.operator && th(a.argument) + ? this.raiseRecoverable(a.start, 'Private fields can not be deleted') + : (t = !0), + (n = this.finishNode(a, l ? 'UpdateExpression' : 'UnaryExpression')) + } else if (t || this.type !== fc.privateId) { + if (((n = this.parseExprSubscripts(e, i)), this.checkExpressionErrors(e))) return n + for (; this.type.postfix && !this.canInsertSemicolon(); ) { + var c = this.startNodeAt(r, o) + ;(c.operator = this.value), (c.prefix = !1), (c.argument = n), this.checkLValSimple(n), this.next(), (n = this.finishNode(c, 'UpdateExpression')) + } + } else (i || 0 === this.privateNameStack.length) && this.options.checkPrivateFields && this.unexpected(), (n = this.parsePrivateIdent()), this.type !== fc._in && this.unexpected() + return s || !this.eat(fc.starstar) ? n : t ? void this.unexpected(this.lastTokStart) : this.buildBinary(r, o, n, this.parseMaybeUnary(null, !1, !1, i), '**', !1) + }), + (eh.parseExprSubscripts = function (e, t) { + var s = this.start, + i = this.startLoc, + n = this.parseExprAtom(e, t) + if ('ArrowFunctionExpression' === n.type && ')' !== this.input.slice(this.lastTokStart, this.lastTokEnd)) return n + var r = this.parseSubscripts(n, s, i, !1, t) + return ( + e && + 'MemberExpression' === r.type && + (e.parenthesizedAssign >= r.start && (e.parenthesizedAssign = -1), e.parenthesizedBind >= r.start && (e.parenthesizedBind = -1), e.trailingComma >= r.start && (e.trailingComma = -1)), + r + ) + }), + (eh.parseSubscripts = function (e, t, s, i, n) { + for ( + var r = + this.options.ecmaVersion >= 8 && + 'Identifier' === e.type && + 'async' === e.name && + this.lastTokEnd === e.end && + !this.canInsertSemicolon() && + e.end - e.start == 5 && + this.potentialArrowAt === e.start, + o = !1; + ; + + ) { + var a = this.parseSubscript(e, t, s, i, r, o, n) + if ((a.optional && (o = !0), a === e || 'ArrowFunctionExpression' === a.type)) { + if (o) { + var l = this.startNodeAt(t, s) + ;(l.expression = a), (a = this.finishNode(l, 'ChainExpression')) + } + return a + } + e = a + } + }), + (eh.shouldParseAsyncArrow = function () { + return !this.canInsertSemicolon() && this.eat(fc.arrow) + }), + (eh.parseSubscriptAsyncArrow = function (e, t, s, i) { + return this.parseArrowExpression(this.startNodeAt(e, t), s, !0, i) + }), + (eh.parseSubscript = function (e, t, s, i, n, r, o) { + var a = this.options.ecmaVersion >= 11, + l = a && this.eat(fc.questionDot) + i && l && this.raise(this.lastTokStart, 'Optional chaining cannot appear in the callee of new expressions') + var c = this.eat(fc.bracketL) + if (c || (l && this.type !== fc.parenL && this.type !== fc.backQuote) || this.eat(fc.dot)) { + var h = this.startNodeAt(t, s) + ;(h.object = e), + c + ? ((h.property = this.parseExpression()), this.expect(fc.bracketR)) + : this.type === fc.privateId && 'Super' !== e.type + ? (h.property = this.parsePrivateIdent()) + : (h.property = this.parseIdent('never' !== this.options.allowReserved)), + (h.computed = !!c), + a && (h.optional = l), + (e = this.finishNode(h, 'MemberExpression')) + } else if (!i && this.eat(fc.parenL)) { + var u = new Fc(), + d = this.yieldPos, + p = this.awaitPos, + f = this.awaitIdentPos + ;(this.yieldPos = 0), (this.awaitPos = 0), (this.awaitIdentPos = 0) + var m = this.parseExprList(fc.parenR, this.options.ecmaVersion >= 8, !1, u) + if (n && !l && this.shouldParseAsyncArrow()) + return ( + this.checkPatternErrors(u, !1), + this.checkYieldAwaitInDefaultParams(), + this.awaitIdentPos > 0 && this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"), + (this.yieldPos = d), + (this.awaitPos = p), + (this.awaitIdentPos = f), + this.parseSubscriptAsyncArrow(t, s, m, o) + ) + this.checkExpressionErrors(u, !0), (this.yieldPos = d || this.yieldPos), (this.awaitPos = p || this.awaitPos), (this.awaitIdentPos = f || this.awaitIdentPos) + var g = this.startNodeAt(t, s) + ;(g.callee = e), (g.arguments = m), a && (g.optional = l), (e = this.finishNode(g, 'CallExpression')) + } else if (this.type === fc.backQuote) { + ;(l || r) && this.raise(this.start, 'Optional chaining cannot appear in the tag of tagged template expressions') + var y = this.startNodeAt(t, s) + ;(y.tag = e), (y.quasi = this.parseTemplate({ isTagged: !0 })), (e = this.finishNode(y, 'TaggedTemplateExpression')) + } + return e + }), + (eh.parseExprAtom = function (e, t, s) { + this.type === fc.slash && this.readRegexp() + var i, + n = this.potentialArrowAt === this.start + switch (this.type) { + case fc._super: + return ( + this.allowSuper || this.raise(this.start, "'super' keyword outside a method"), + (i = this.startNode()), + this.next(), + this.type !== fc.parenL || this.allowDirectSuper || this.raise(i.start, 'super() call outside constructor of a subclass'), + this.type !== fc.dot && this.type !== fc.bracketL && this.type !== fc.parenL && this.unexpected(), + this.finishNode(i, 'Super') + ) + case fc._this: + return (i = this.startNode()), this.next(), this.finishNode(i, 'ThisExpression') + case fc.name: + var r = this.start, + o = this.startLoc, + a = this.containsEsc, + l = this.parseIdent(!1) + if (this.options.ecmaVersion >= 8 && !a && 'async' === l.name && !this.canInsertSemicolon() && this.eat(fc._function)) + return this.overrideContext(Zc.f_expr), this.parseFunction(this.startNodeAt(r, o), 0, !1, !0, t) + if (n && !this.canInsertSemicolon()) { + if (this.eat(fc.arrow)) return this.parseArrowExpression(this.startNodeAt(r, o), [l], !1, t) + if (this.options.ecmaVersion >= 8 && 'async' === l.name && this.type === fc.name && !a && (!this.potentialArrowInForAwait || 'of' !== this.value || this.containsEsc)) + return (l = this.parseIdent(!1)), (!this.canInsertSemicolon() && this.eat(fc.arrow)) || this.unexpected(), this.parseArrowExpression(this.startNodeAt(r, o), [l], !0, t) + } + return l + case fc.regexp: + var c = this.value + return ((i = this.parseLiteral(c.value)).regex = { pattern: c.pattern, flags: c.flags }), i + case fc.num: + case fc.string: + return this.parseLiteral(this.value) + case fc._null: + case fc._true: + case fc._false: + return ((i = this.startNode()).value = this.type === fc._null ? null : this.type === fc._true), (i.raw = this.type.keyword), this.next(), this.finishNode(i, 'Literal') + case fc.parenL: + var h = this.start, + u = this.parseParenAndDistinguishExpression(n, t) + return e && (e.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(u) && (e.parenthesizedAssign = h), e.parenthesizedBind < 0 && (e.parenthesizedBind = h)), u + case fc.bracketL: + return (i = this.startNode()), this.next(), (i.elements = this.parseExprList(fc.bracketR, !0, !0, e)), this.finishNode(i, 'ArrayExpression') + case fc.braceL: + return this.overrideContext(Zc.b_expr), this.parseObj(!1, e) + case fc._function: + return (i = this.startNode()), this.next(), this.parseFunction(i, 0) + case fc._class: + return this.parseClass(this.startNode(), !1) + case fc._new: + return this.parseNew() + case fc.backQuote: + return this.parseTemplate() + case fc._import: + return this.options.ecmaVersion >= 11 ? this.parseExprImport(s) : this.unexpected() + default: + return this.parseExprAtomDefault() + } + }), + (eh.parseExprAtomDefault = function () { + this.unexpected() + }), + (eh.parseExprImport = function (e) { + var t = this.startNode() + this.containsEsc && this.raiseRecoverable(this.start, 'Escape sequence in keyword import') + var s = this.parseIdent(!0) + return this.type !== fc.parenL || e ? (this.type === fc.dot ? ((t.meta = s), this.parseImportMeta(t)) : void this.unexpected()) : this.parseDynamicImport(t) + }), + (eh.parseDynamicImport = function (e) { + if ((this.next(), (e.source = this.parseMaybeAssign()), !this.eat(fc.parenR))) { + var t = this.start + this.eat(fc.comma) && this.eat(fc.parenR) ? this.raiseRecoverable(t, 'Trailing comma is not allowed in import()') : this.unexpected(t) + } + return this.finishNode(e, 'ImportExpression') + }), + (eh.parseImportMeta = function (e) { + this.next() + var t = this.containsEsc + return ( + (e.property = this.parseIdent(!0)), + 'meta' !== e.property.name && this.raiseRecoverable(e.property.start, "The only valid meta property for import is 'import.meta'"), + t && this.raiseRecoverable(e.start, "'import.meta' must not contain escaped characters"), + 'module' === this.options.sourceType || this.options.allowImportExportEverywhere || this.raiseRecoverable(e.start, "Cannot use 'import.meta' outside a module"), + this.finishNode(e, 'MetaProperty') + ) + }), + (eh.parseLiteral = function (e) { + var t = this.startNode() + return ( + (t.value = e), + (t.raw = this.input.slice(this.start, this.end)), + 110 === t.raw.charCodeAt(t.raw.length - 1) && (t.bigint = t.raw.slice(0, -1).replace(/_/g, '')), + this.next(), + this.finishNode(t, 'Literal') + ) + }), + (eh.parseParenExpression = function () { + this.expect(fc.parenL) + var e = this.parseExpression() + return this.expect(fc.parenR), e + }), + (eh.shouldParseArrow = function (e) { + return !this.canInsertSemicolon() + }), + (eh.parseParenAndDistinguishExpression = function (e, t) { + var s, + i = this.start, + n = this.startLoc, + r = this.options.ecmaVersion >= 8 + if (this.options.ecmaVersion >= 6) { + this.next() + var o, + a = this.start, + l = this.startLoc, + c = [], + h = !0, + u = !1, + d = new Fc(), + p = this.yieldPos, + f = this.awaitPos + for (this.yieldPos = 0, this.awaitPos = 0; this.type !== fc.parenR; ) { + if ((h ? (h = !1) : this.expect(fc.comma), r && this.afterTrailingComma(fc.parenR, !0))) { + u = !0 + break + } + if (this.type === fc.ellipsis) { + ;(o = this.start), c.push(this.parseParenItem(this.parseRestBinding())), this.type === fc.comma && this.raiseRecoverable(this.start, 'Comma is not permitted after the rest element') + break + } + c.push(this.parseMaybeAssign(!1, d, this.parseParenItem)) + } + var m = this.lastTokEnd, + g = this.lastTokEndLoc + if ((this.expect(fc.parenR), e && this.shouldParseArrow(c) && this.eat(fc.arrow))) + return this.checkPatternErrors(d, !1), this.checkYieldAwaitInDefaultParams(), (this.yieldPos = p), (this.awaitPos = f), this.parseParenArrowList(i, n, c, t) + ;(c.length && !u) || this.unexpected(this.lastTokStart), + o && this.unexpected(o), + this.checkExpressionErrors(d, !0), + (this.yieldPos = p || this.yieldPos), + (this.awaitPos = f || this.awaitPos), + c.length > 1 ? (((s = this.startNodeAt(a, l)).expressions = c), this.finishNodeAt(s, 'SequenceExpression', m, g)) : (s = c[0]) + } else s = this.parseParenExpression() + if (this.options.preserveParens) { + var y = this.startNodeAt(i, n) + return (y.expression = s), this.finishNode(y, 'ParenthesizedExpression') + } + return s + }), + (eh.parseParenItem = function (e) { + return e + }), + (eh.parseParenArrowList = function (e, t, s, i) { + return this.parseArrowExpression(this.startNodeAt(e, t), s, !1, i) + }) +var sh = [] +;(eh.parseNew = function () { + this.containsEsc && this.raiseRecoverable(this.start, 'Escape sequence in keyword new') + var e = this.startNode(), + t = this.parseIdent(!0) + if (this.options.ecmaVersion >= 6 && this.eat(fc.dot)) { + e.meta = t + var s = this.containsEsc + return ( + (e.property = this.parseIdent(!0)), + 'target' !== e.property.name && this.raiseRecoverable(e.property.start, "The only valid meta property for new is 'new.target'"), + s && this.raiseRecoverable(e.start, "'new.target' must not contain escaped characters"), + this.allowNewDotTarget || this.raiseRecoverable(e.start, "'new.target' can only be used in functions and class static block"), + this.finishNode(e, 'MetaProperty') + ) + } + var i = this.start, + n = this.startLoc + return ( + (e.callee = this.parseSubscripts(this.parseExprAtom(null, !1, !0), i, n, !0, !1)), + this.eat(fc.parenL) ? (e.arguments = this.parseExprList(fc.parenR, this.options.ecmaVersion >= 8, !1)) : (e.arguments = sh), + this.finishNode(e, 'NewExpression') + ) +}), + (eh.parseTemplateElement = function (e) { + var t = e.isTagged, + s = this.startNode() + return ( + this.type === fc.invalidTemplate + ? (t || this.raiseRecoverable(this.start, 'Bad escape sequence in untagged template literal'), (s.value = { raw: this.value, cooked: null })) + : (s.value = { raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, '\n'), cooked: this.value }), + this.next(), + (s.tail = this.type === fc.backQuote), + this.finishNode(s, 'TemplateElement') + ) + }), + (eh.parseTemplate = function (e) { + void 0 === e && (e = {}) + var t = e.isTagged + void 0 === t && (t = !1) + var s = this.startNode() + this.next(), (s.expressions = []) + var i = this.parseTemplateElement({ isTagged: t }) + for (s.quasis = [i]; !i.tail; ) + this.type === fc.eof && this.raise(this.pos, 'Unterminated template literal'), + this.expect(fc.dollarBraceL), + s.expressions.push(this.parseExpression()), + this.expect(fc.braceR), + s.quasis.push((i = this.parseTemplateElement({ isTagged: t }))) + return this.next(), this.finishNode(s, 'TemplateLiteral') + }), + (eh.isAsyncProp = function (e) { + return ( + !e.computed && + 'Identifier' === e.key.type && + 'async' === e.key.name && + (this.type === fc.name || this.type === fc.num || this.type === fc.string || this.type === fc.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === fc.star)) && + !mc.test(this.input.slice(this.lastTokEnd, this.start)) + ) + }), + (eh.parseObj = function (e, t) { + var s = this.startNode(), + i = !0, + n = {} + for (s.properties = [], this.next(); !this.eat(fc.braceR); ) { + if (i) i = !1 + else if ((this.expect(fc.comma), this.options.ecmaVersion >= 5 && this.afterTrailingComma(fc.braceR))) break + var r = this.parseProperty(e, t) + e || this.checkPropClash(r, n, t), s.properties.push(r) + } + return this.finishNode(s, e ? 'ObjectPattern' : 'ObjectExpression') + }), + (eh.parseProperty = function (e, t) { + var s, + i, + n, + r, + o = this.startNode() + if (this.options.ecmaVersion >= 9 && this.eat(fc.ellipsis)) + return e + ? ((o.argument = this.parseIdent(!1)), this.type === fc.comma && this.raiseRecoverable(this.start, 'Comma is not permitted after the rest element'), this.finishNode(o, 'RestElement')) + : ((o.argument = this.parseMaybeAssign(!1, t)), this.type === fc.comma && t && t.trailingComma < 0 && (t.trailingComma = this.start), this.finishNode(o, 'SpreadElement')) + this.options.ecmaVersion >= 6 && ((o.method = !1), (o.shorthand = !1), (e || t) && ((n = this.start), (r = this.startLoc)), e || (s = this.eat(fc.star))) + var a = this.containsEsc + return ( + this.parsePropertyName(o), + !e && !a && this.options.ecmaVersion >= 8 && !s && this.isAsyncProp(o) ? ((i = !0), (s = this.options.ecmaVersion >= 9 && this.eat(fc.star)), this.parsePropertyName(o)) : (i = !1), + this.parsePropertyValue(o, e, s, i, n, r, t, a), + this.finishNode(o, 'Property') + ) + }), + (eh.parseGetterSetter = function (e) { + ;(e.kind = e.key.name), this.parsePropertyName(e), (e.value = this.parseMethod(!1)) + var t = 'get' === e.kind ? 0 : 1 + if (e.value.params.length !== t) { + var s = e.value.start + 'get' === e.kind ? this.raiseRecoverable(s, 'getter should have no params') : this.raiseRecoverable(s, 'setter should have exactly one param') + } else 'set' === e.kind && 'RestElement' === e.value.params[0].type && this.raiseRecoverable(e.value.params[0].start, 'Setter cannot use rest params') + }), + (eh.parsePropertyValue = function (e, t, s, i, n, r, o, a) { + ;(s || i) && this.type === fc.colon && this.unexpected(), + this.eat(fc.colon) + ? ((e.value = t ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(!1, o)), (e.kind = 'init')) + : this.options.ecmaVersion >= 6 && this.type === fc.parenL + ? (t && this.unexpected(), (e.kind = 'init'), (e.method = !0), (e.value = this.parseMethod(s, i))) + : t || + a || + !(this.options.ecmaVersion >= 5) || + e.computed || + 'Identifier' !== e.key.type || + ('get' !== e.key.name && 'set' !== e.key.name) || + this.type === fc.comma || + this.type === fc.braceR || + this.type === fc.eq + ? this.options.ecmaVersion >= 6 && !e.computed && 'Identifier' === e.key.type + ? ((s || i) && this.unexpected(), + this.checkUnreserved(e.key), + 'await' !== e.key.name || this.awaitIdentPos || (this.awaitIdentPos = n), + (e.kind = 'init'), + t + ? (e.value = this.parseMaybeDefault(n, r, this.copyNode(e.key))) + : this.type === fc.eq && o + ? (o.shorthandAssign < 0 && (o.shorthandAssign = this.start), (e.value = this.parseMaybeDefault(n, r, this.copyNode(e.key)))) + : (e.value = this.copyNode(e.key)), + (e.shorthand = !0)) + : this.unexpected() + : ((s || i) && this.unexpected(), this.parseGetterSetter(e)) + }), + (eh.parsePropertyName = function (e) { + if (this.options.ecmaVersion >= 6) { + if (this.eat(fc.bracketL)) return (e.computed = !0), (e.key = this.parseMaybeAssign()), this.expect(fc.bracketR), e.key + e.computed = !1 + } + return (e.key = this.type === fc.num || this.type === fc.string ? this.parseExprAtom() : this.parseIdent('never' !== this.options.allowReserved)) + }), + (eh.initFunction = function (e) { + ;(e.id = null), this.options.ecmaVersion >= 6 && (e.generator = e.expression = !1), this.options.ecmaVersion >= 8 && (e.async = !1) + }), + (eh.parseMethod = function (e, t, s) { + var i = this.startNode(), + n = this.yieldPos, + r = this.awaitPos, + o = this.awaitIdentPos + return ( + this.initFunction(i), + this.options.ecmaVersion >= 6 && (i.generator = e), + this.options.ecmaVersion >= 8 && (i.async = !!t), + (this.yieldPos = 0), + (this.awaitPos = 0), + (this.awaitIdentPos = 0), + this.enterScope(64 | Lc(t, i.generator) | (s ? 128 : 0)), + this.expect(fc.parenL), + (i.params = this.parseBindingList(fc.parenR, !1, this.options.ecmaVersion >= 8)), + this.checkYieldAwaitInDefaultParams(), + this.parseFunctionBody(i, !1, !0, !1), + (this.yieldPos = n), + (this.awaitPos = r), + (this.awaitIdentPos = o), + this.finishNode(i, 'FunctionExpression') + ) + }), + (eh.parseArrowExpression = function (e, t, s, i) { + var n = this.yieldPos, + r = this.awaitPos, + o = this.awaitIdentPos + return ( + this.enterScope(16 | Lc(s, !1)), + this.initFunction(e), + this.options.ecmaVersion >= 8 && (e.async = !!s), + (this.yieldPos = 0), + (this.awaitPos = 0), + (this.awaitIdentPos = 0), + (e.params = this.toAssignableList(t, !0)), + this.parseFunctionBody(e, !0, !1, i), + (this.yieldPos = n), + (this.awaitPos = r), + (this.awaitIdentPos = o), + this.finishNode(e, 'ArrowFunctionExpression') + ) + }), + (eh.parseFunctionBody = function (e, t, s, i) { + var n = t && this.type !== fc.braceL, + r = this.strict, + o = !1 + if (n) (e.body = this.parseMaybeAssign(i)), (e.expression = !0), this.checkParams(e, !1) + else { + var a = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(e.params) + ;(r && !a) || ((o = this.strictDirective(this.end)) && a && this.raiseRecoverable(e.start, "Illegal 'use strict' directive in function with non-simple parameter list")) + var l = this.labels + ;(this.labels = []), + o && (this.strict = !0), + this.checkParams(e, !r && !o && !t && !s && this.isSimpleParamList(e.params)), + this.strict && e.id && this.checkLValSimple(e.id, 5), + (e.body = this.parseBlock(!1, void 0, o && !r)), + (e.expression = !1), + this.adaptDirectivePrologue(e.body.body), + (this.labels = l) + } + this.exitScope() + }), + (eh.isSimpleParamList = function (e) { + for (var t = 0, s = e; t < s.length; t += 1) { + if ('Identifier' !== s[t].type) return !1 + } + return !0 + }), + (eh.checkParams = function (e, t) { + for (var s = Object.create(null), i = 0, n = e.params; i < n.length; i += 1) { + var r = n[i] + this.checkLValInnerPattern(r, 1, t ? null : s) + } + }), + (eh.parseExprList = function (e, t, s, i) { + for (var n = [], r = !0; !this.eat(e); ) { + if (r) r = !1 + else if ((this.expect(fc.comma), t && this.afterTrailingComma(e))) break + var o = void 0 + s && this.type === fc.comma + ? (o = null) + : this.type === fc.ellipsis + ? ((o = this.parseSpread(i)), i && this.type === fc.comma && i.trailingComma < 0 && (i.trailingComma = this.start)) + : (o = this.parseMaybeAssign(!1, i)), + n.push(o) + } + return n + }), + (eh.checkUnreserved = function (e) { + var t = e.start, + s = e.end, + i = e.name + ;(this.inGenerator && 'yield' === i && this.raiseRecoverable(t, "Cannot use 'yield' as identifier inside a generator"), + this.inAsync && 'await' === i && this.raiseRecoverable(t, "Cannot use 'await' as identifier inside an async function"), + this.currentThisScope().inClassFieldInit && 'arguments' === i && this.raiseRecoverable(t, "Cannot use 'arguments' in class field initializer"), + !this.inClassStaticBlock || ('arguments' !== i && 'await' !== i) || this.raise(t, 'Cannot use ' + i + ' in class static initialization block'), + this.keywords.test(i) && this.raise(t, "Unexpected keyword '" + i + "'"), + this.options.ecmaVersion < 6 && -1 !== this.input.slice(t, s).indexOf('\\')) || + ((this.strict ? this.reservedWordsStrict : this.reservedWords).test(i) && + (this.inAsync || 'await' !== i || this.raiseRecoverable(t, "Cannot use keyword 'await' outside an async function"), this.raiseRecoverable(t, "The keyword '" + i + "' is reserved"))) + }), + (eh.parseIdent = function (e) { + var t = this.parseIdentNode() + return this.next(!!e), this.finishNode(t, 'Identifier'), e || (this.checkUnreserved(t), 'await' !== t.name || this.awaitIdentPos || (this.awaitIdentPos = t.start)), t + }), + (eh.parseIdentNode = function () { + var e = this.startNode() + return ( + this.type === fc.name + ? (e.name = this.value) + : this.type.keyword + ? ((e.name = this.type.keyword), + ('class' !== e.name && 'function' !== e.name) || (this.lastTokEnd === this.lastTokStart + 1 && 46 === this.input.charCodeAt(this.lastTokStart)) || this.context.pop()) + : this.unexpected(), + e + ) + }), + (eh.parsePrivateIdent = function () { + var e = this.startNode() + return ( + this.type === fc.privateId ? (e.name = this.value) : this.unexpected(), + this.next(), + this.finishNode(e, 'PrivateIdentifier'), + this.options.checkPrivateFields && + (0 === this.privateNameStack.length + ? this.raise(e.start, "Private field '#" + e.name + "' must be declared in an enclosing class") + : this.privateNameStack[this.privateNameStack.length - 1].used.push(e)), + e + ) + }), + (eh.parseYield = function (e) { + this.yieldPos || (this.yieldPos = this.start) + var t = this.startNode() + return ( + this.next(), + this.type === fc.semi || this.canInsertSemicolon() || (this.type !== fc.star && !this.type.startsExpr) + ? ((t.delegate = !1), (t.argument = null)) + : ((t.delegate = this.eat(fc.star)), (t.argument = this.parseMaybeAssign(e))), + this.finishNode(t, 'YieldExpression') + ) + }), + (eh.parseAwait = function (e) { + this.awaitPos || (this.awaitPos = this.start) + var t = this.startNode() + return this.next(), (t.argument = this.parseMaybeUnary(null, !0, !1, e)), this.finishNode(t, 'AwaitExpression') + }) +var ih = Tc.prototype +;(ih.raise = function (e, t) { + var s = _c(this.input, e) + t += ' (' + s.line + ':' + s.column + ')' + var i = new SyntaxError(t) + throw ((i.pos = e), (i.loc = s), (i.raisedAt = this.pos), i) +}), + (ih.raiseRecoverable = ih.raise), + (ih.curPosition = function () { + if (this.options.locations) return new $c(this.curLine, this.pos - this.lineStart) + }) +var nh = Tc.prototype, + rh = function (e) { + ;(this.flags = e), (this.var = []), (this.lexical = []), (this.functions = []), (this.inClassFieldInit = !1) + } +;(nh.enterScope = function (e) { + this.scopeStack.push(new rh(e)) +}), + (nh.exitScope = function () { + this.scopeStack.pop() + }), + (nh.treatFunctionsAsVarInScope = function (e) { + return 2 & e.flags || (!this.inModule && 1 & e.flags) + }), + (nh.declareName = function (e, t, s) { + var i = !1 + if (2 === t) { + var n = this.currentScope() + ;(i = n.lexical.indexOf(e) > -1 || n.functions.indexOf(e) > -1 || n.var.indexOf(e) > -1), n.lexical.push(e), this.inModule && 1 & n.flags && delete this.undefinedExports[e] + } else if (4 === t) { + this.currentScope().lexical.push(e) + } else if (3 === t) { + var r = this.currentScope() + ;(i = this.treatFunctionsAsVar ? r.lexical.indexOf(e) > -1 : r.lexical.indexOf(e) > -1 || r.var.indexOf(e) > -1), r.functions.push(e) + } else + for (var o = this.scopeStack.length - 1; o >= 0; --o) { + var a = this.scopeStack[o] + if ((a.lexical.indexOf(e) > -1 && !(32 & a.flags && a.lexical[0] === e)) || (!this.treatFunctionsAsVarInScope(a) && a.functions.indexOf(e) > -1)) { + i = !0 + break + } + if ((a.var.push(e), this.inModule && 1 & a.flags && delete this.undefinedExports[e], 259 & a.flags)) break + } + i && this.raiseRecoverable(s, "Identifier '" + e + "' has already been declared") + }), + (nh.checkLocalExport = function (e) { + ;-1 === this.scopeStack[0].lexical.indexOf(e.name) && -1 === this.scopeStack[0].var.indexOf(e.name) && (this.undefinedExports[e.name] = e) + }), + (nh.currentScope = function () { + return this.scopeStack[this.scopeStack.length - 1] + }), + (nh.currentVarScope = function () { + for (var e = this.scopeStack.length - 1; ; e--) { + var t = this.scopeStack[e] + if (259 & t.flags) return t + } + }), + (nh.currentThisScope = function () { + for (var e = this.scopeStack.length - 1; ; e--) { + var t = this.scopeStack[e] + if (259 & t.flags && !(16 & t.flags)) return t + } + }) +var oh = function (e, t, s) { + ;(this.type = ''), + (this.start = t), + (this.end = 0), + e.options.locations && (this.loc = new Nc(e, s)), + e.options.directSourceFile && (this.sourceFile = e.options.directSourceFile), + e.options.ranges && (this.range = [t, 0]) + }, + ah = Tc.prototype +function lh(e, t, s, i) { + return (e.type = t), (e.end = s), this.options.locations && (e.loc.end = i), this.options.ranges && (e.range[1] = s), e +} +;(ah.startNode = function () { + return new oh(this, this.start, this.startLoc) +}), + (ah.startNodeAt = function (e, t) { + return new oh(this, e, t) + }), + (ah.finishNode = function (e, t) { + return lh.call(this, e, t, this.lastTokEnd, this.lastTokEndLoc) + }), + (ah.finishNodeAt = function (e, t, s, i) { + return lh.call(this, e, t, s, i) + }), + (ah.copyNode = function (e) { + var t = new oh(this, e.start, this.startLoc) + for (var s in e) t[s] = e[s] + return t + }) +var ch = + 'ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS', + hh = ch + ' Extended_Pictographic', + uh = hh + ' EBase EComp EMod EPres ExtPict', + dh = { 9: ch, 10: hh, 11: hh, 12: uh, 13: uh, 14: uh }, + ph = { 9: '', 10: '', 11: '', 12: '', 13: '', 14: 'Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji' }, + fh = + 'Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu', + mh = + 'Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb', + gh = mh + ' Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd', + yh = gh + ' Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho', + xh = yh + ' Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi', + Eh = xh + ' Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith', + bh = { 9: mh, 10: gh, 11: yh, 12: xh, 13: Eh, 14: Eh + ' Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz' }, + vh = {} +function Sh(e) { + var t = (vh[e] = { binary: wc(dh[e] + ' ' + fh), binaryOfStrings: wc(ph[e]), nonBinary: { General_Category: wc(fh), Script: wc(bh[e]) } }) + ;(t.nonBinary.Script_Extensions = t.nonBinary.Script), (t.nonBinary.gc = t.nonBinary.General_Category), (t.nonBinary.sc = t.nonBinary.Script), (t.nonBinary.scx = t.nonBinary.Script_Extensions) +} +for (var Ah = 0, kh = [9, 10, 11, 12, 13, 14]; Ah < kh.length; Ah += 1) { + Sh(kh[Ah]) +} +var Ih = Tc.prototype, + wh = function (e) { + ;(this.parser = e), + (this.validFlags = + 'gim' + (e.options.ecmaVersion >= 6 ? 'uy' : '') + (e.options.ecmaVersion >= 9 ? 's' : '') + (e.options.ecmaVersion >= 13 ? 'd' : '') + (e.options.ecmaVersion >= 15 ? 'v' : '')), + (this.unicodeProperties = vh[e.options.ecmaVersion >= 14 ? 14 : e.options.ecmaVersion]), + (this.source = ''), + (this.flags = ''), + (this.start = 0), + (this.switchU = !1), + (this.switchV = !1), + (this.switchN = !1), + (this.pos = 0), + (this.lastIntValue = 0), + (this.lastStringValue = ''), + (this.lastAssertionIsQuantifiable = !1), + (this.numCapturingParens = 0), + (this.maxBackReference = 0), + (this.groupNames = []), + (this.backReferenceNames = []) + } +function Ph(e) { + return 36 === e || (e >= 40 && e <= 43) || 46 === e || 63 === e || (e >= 91 && e <= 94) || (e >= 123 && e <= 125) +} +function Ch(e) { + return (e >= 65 && e <= 90) || (e >= 97 && e <= 122) +} +;(wh.prototype.reset = function (e, t, s) { + var i = -1 !== s.indexOf('v'), + n = -1 !== s.indexOf('u') + ;(this.start = 0 | e), + (this.source = t + ''), + (this.flags = s), + i && this.parser.options.ecmaVersion >= 15 + ? ((this.switchU = !0), (this.switchV = !0), (this.switchN = !0)) + : ((this.switchU = n && this.parser.options.ecmaVersion >= 6), (this.switchV = !1), (this.switchN = n && this.parser.options.ecmaVersion >= 9)) +}), + (wh.prototype.raise = function (e) { + this.parser.raiseRecoverable(this.start, 'Invalid regular expression: /' + this.source + '/: ' + e) + }), + (wh.prototype.at = function (e, t) { + void 0 === t && (t = !1) + var s = this.source, + i = s.length + if (e >= i) return -1 + var n = s.charCodeAt(e) + if ((!t && !this.switchU) || n <= 55295 || n >= 57344 || e + 1 >= i) return n + var r = s.charCodeAt(e + 1) + return r >= 56320 && r <= 57343 ? (n << 10) + r - 56613888 : n + }), + (wh.prototype.nextIndex = function (e, t) { + void 0 === t && (t = !1) + var s = this.source, + i = s.length + if (e >= i) return i + var n, + r = s.charCodeAt(e) + return (!t && !this.switchU) || r <= 55295 || r >= 57344 || e + 1 >= i || (n = s.charCodeAt(e + 1)) < 56320 || n > 57343 ? e + 1 : e + 2 + }), + (wh.prototype.current = function (e) { + return void 0 === e && (e = !1), this.at(this.pos, e) + }), + (wh.prototype.lookahead = function (e) { + return void 0 === e && (e = !1), this.at(this.nextIndex(this.pos, e), e) + }), + (wh.prototype.advance = function (e) { + void 0 === e && (e = !1), (this.pos = this.nextIndex(this.pos, e)) + }), + (wh.prototype.eat = function (e, t) { + return void 0 === t && (t = !1), this.current(t) === e && (this.advance(t), !0) + }), + (wh.prototype.eatChars = function (e, t) { + void 0 === t && (t = !1) + for (var s = this.pos, i = 0, n = e; i < n.length; i += 1) { + var r = n[i], + o = this.at(s, t) + if (-1 === o || o !== r) return !1 + s = this.nextIndex(s, t) + } + return (this.pos = s), !0 + }), + (Ih.validateRegExpFlags = function (e) { + for (var t = e.validFlags, s = e.flags, i = !1, n = !1, r = 0; r < s.length; r++) { + var o = s.charAt(r) + ;-1 === t.indexOf(o) && this.raise(e.start, 'Invalid regular expression flag'), + s.indexOf(o, r + 1) > -1 && this.raise(e.start, 'Duplicate regular expression flag'), + 'u' === o && (i = !0), + 'v' === o && (n = !0) + } + this.options.ecmaVersion >= 15 && i && n && this.raise(e.start, 'Invalid regular expression flag') + }), + (Ih.validateRegExpPattern = function (e) { + this.regexp_pattern(e), !e.switchN && this.options.ecmaVersion >= 9 && e.groupNames.length > 0 && ((e.switchN = !0), this.regexp_pattern(e)) + }), + (Ih.regexp_pattern = function (e) { + ;(e.pos = 0), + (e.lastIntValue = 0), + (e.lastStringValue = ''), + (e.lastAssertionIsQuantifiable = !1), + (e.numCapturingParens = 0), + (e.maxBackReference = 0), + (e.groupNames.length = 0), + (e.backReferenceNames.length = 0), + this.regexp_disjunction(e), + e.pos !== e.source.length && (e.eat(41) && e.raise("Unmatched ')'"), (e.eat(93) || e.eat(125)) && e.raise('Lone quantifier brackets')), + e.maxBackReference > e.numCapturingParens && e.raise('Invalid escape') + for (var t = 0, s = e.backReferenceNames; t < s.length; t += 1) { + var i = s[t] + ;-1 === e.groupNames.indexOf(i) && e.raise('Invalid named capture referenced') + } + }), + (Ih.regexp_disjunction = function (e) { + for (this.regexp_alternative(e); e.eat(124); ) this.regexp_alternative(e) + this.regexp_eatQuantifier(e, !0) && e.raise('Nothing to repeat'), e.eat(123) && e.raise('Lone quantifier brackets') + }), + (Ih.regexp_alternative = function (e) { + for (; e.pos < e.source.length && this.regexp_eatTerm(e); ); + }), + (Ih.regexp_eatTerm = function (e) { + return this.regexp_eatAssertion(e) + ? (e.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(e) && e.switchU && e.raise('Invalid quantifier'), !0) + : !!(e.switchU ? this.regexp_eatAtom(e) : this.regexp_eatExtendedAtom(e)) && (this.regexp_eatQuantifier(e), !0) + }), + (Ih.regexp_eatAssertion = function (e) { + var t = e.pos + if (((e.lastAssertionIsQuantifiable = !1), e.eat(94) || e.eat(36))) return !0 + if (e.eat(92)) { + if (e.eat(66) || e.eat(98)) return !0 + e.pos = t + } + if (e.eat(40) && e.eat(63)) { + var s = !1 + if ((this.options.ecmaVersion >= 9 && (s = e.eat(60)), e.eat(61) || e.eat(33))) + return this.regexp_disjunction(e), e.eat(41) || e.raise('Unterminated group'), (e.lastAssertionIsQuantifiable = !s), !0 + } + return (e.pos = t), !1 + }), + (Ih.regexp_eatQuantifier = function (e, t) { + return void 0 === t && (t = !1), !!this.regexp_eatQuantifierPrefix(e, t) && (e.eat(63), !0) + }), + (Ih.regexp_eatQuantifierPrefix = function (e, t) { + return e.eat(42) || e.eat(43) || e.eat(63) || this.regexp_eatBracedQuantifier(e, t) + }), + (Ih.regexp_eatBracedQuantifier = function (e, t) { + var s = e.pos + if (e.eat(123)) { + var i = 0, + n = -1 + if (this.regexp_eatDecimalDigits(e) && ((i = e.lastIntValue), e.eat(44) && this.regexp_eatDecimalDigits(e) && (n = e.lastIntValue), e.eat(125))) + return -1 !== n && n < i && !t && e.raise('numbers out of order in {} quantifier'), !0 + e.switchU && !t && e.raise('Incomplete quantifier'), (e.pos = s) + } + return !1 + }), + (Ih.regexp_eatAtom = function (e) { + return ( + this.regexp_eatPatternCharacters(e) || + e.eat(46) || + this.regexp_eatReverseSolidusAtomEscape(e) || + this.regexp_eatCharacterClass(e) || + this.regexp_eatUncapturingGroup(e) || + this.regexp_eatCapturingGroup(e) + ) + }), + (Ih.regexp_eatReverseSolidusAtomEscape = function (e) { + var t = e.pos + if (e.eat(92)) { + if (this.regexp_eatAtomEscape(e)) return !0 + e.pos = t + } + return !1 + }), + (Ih.regexp_eatUncapturingGroup = function (e) { + var t = e.pos + if (e.eat(40)) { + if (e.eat(63) && e.eat(58)) { + if ((this.regexp_disjunction(e), e.eat(41))) return !0 + e.raise('Unterminated group') + } + e.pos = t + } + return !1 + }), + (Ih.regexp_eatCapturingGroup = function (e) { + if (e.eat(40)) { + if ((this.options.ecmaVersion >= 9 ? this.regexp_groupSpecifier(e) : 63 === e.current() && e.raise('Invalid group'), this.regexp_disjunction(e), e.eat(41))) + return (e.numCapturingParens += 1), !0 + e.raise('Unterminated group') + } + return !1 + }), + (Ih.regexp_eatExtendedAtom = function (e) { + return ( + e.eat(46) || + this.regexp_eatReverseSolidusAtomEscape(e) || + this.regexp_eatCharacterClass(e) || + this.regexp_eatUncapturingGroup(e) || + this.regexp_eatCapturingGroup(e) || + this.regexp_eatInvalidBracedQuantifier(e) || + this.regexp_eatExtendedPatternCharacter(e) + ) + }), + (Ih.regexp_eatInvalidBracedQuantifier = function (e) { + return this.regexp_eatBracedQuantifier(e, !0) && e.raise('Nothing to repeat'), !1 + }), + (Ih.regexp_eatSyntaxCharacter = function (e) { + var t = e.current() + return !!Ph(t) && ((e.lastIntValue = t), e.advance(), !0) + }), + (Ih.regexp_eatPatternCharacters = function (e) { + for (var t = e.pos, s = 0; -1 !== (s = e.current()) && !Ph(s); ) e.advance() + return e.pos !== t + }), + (Ih.regexp_eatExtendedPatternCharacter = function (e) { + var t = e.current() + return !(-1 === t || 36 === t || (t >= 40 && t <= 43) || 46 === t || 63 === t || 91 === t || 94 === t || 124 === t) && (e.advance(), !0) + }), + (Ih.regexp_groupSpecifier = function (e) { + if (e.eat(63)) { + if (this.regexp_eatGroupName(e)) return -1 !== e.groupNames.indexOf(e.lastStringValue) && e.raise('Duplicate capture group name'), void e.groupNames.push(e.lastStringValue) + e.raise('Invalid group') + } + }), + (Ih.regexp_eatGroupName = function (e) { + if (((e.lastStringValue = ''), e.eat(60))) { + if (this.regexp_eatRegExpIdentifierName(e) && e.eat(62)) return !0 + e.raise('Invalid capture group name') + } + return !1 + }), + (Ih.regexp_eatRegExpIdentifierName = function (e) { + if (((e.lastStringValue = ''), this.regexp_eatRegExpIdentifierStart(e))) { + for (e.lastStringValue += Pc(e.lastIntValue); this.regexp_eatRegExpIdentifierPart(e); ) e.lastStringValue += Pc(e.lastIntValue) + return !0 + } + return !1 + }), + (Ih.regexp_eatRegExpIdentifierStart = function (e) { + var t = e.pos, + s = this.options.ecmaVersion >= 11, + i = e.current(s) + return ( + e.advance(s), + 92 === i && this.regexp_eatRegExpUnicodeEscapeSequence(e, s) && (i = e.lastIntValue), + (function (e) { + return oc(e, !0) || 36 === e || 95 === e + })(i) + ? ((e.lastIntValue = i), !0) + : ((e.pos = t), !1) + ) + }), + (Ih.regexp_eatRegExpIdentifierPart = function (e) { + var t = e.pos, + s = this.options.ecmaVersion >= 11, + i = e.current(s) + return ( + e.advance(s), + 92 === i && this.regexp_eatRegExpUnicodeEscapeSequence(e, s) && (i = e.lastIntValue), + (function (e) { + return ac(e, !0) || 36 === e || 95 === e || 8204 === e || 8205 === e + })(i) + ? ((e.lastIntValue = i), !0) + : ((e.pos = t), !1) + ) + }), + (Ih.regexp_eatAtomEscape = function (e) { + return ( + !!(this.regexp_eatBackReference(e) || this.regexp_eatCharacterClassEscape(e) || this.regexp_eatCharacterEscape(e) || (e.switchN && this.regexp_eatKGroupName(e))) || + (e.switchU && (99 === e.current() && e.raise('Invalid unicode escape'), e.raise('Invalid escape')), !1) + ) + }), + (Ih.regexp_eatBackReference = function (e) { + var t = e.pos + if (this.regexp_eatDecimalEscape(e)) { + var s = e.lastIntValue + if (e.switchU) return s > e.maxBackReference && (e.maxBackReference = s), !0 + if (s <= e.numCapturingParens) return !0 + e.pos = t + } + return !1 + }), + (Ih.regexp_eatKGroupName = function (e) { + if (e.eat(107)) { + if (this.regexp_eatGroupName(e)) return e.backReferenceNames.push(e.lastStringValue), !0 + e.raise('Invalid named reference') + } + return !1 + }), + (Ih.regexp_eatCharacterEscape = function (e) { + return ( + this.regexp_eatControlEscape(e) || + this.regexp_eatCControlLetter(e) || + this.regexp_eatZero(e) || + this.regexp_eatHexEscapeSequence(e) || + this.regexp_eatRegExpUnicodeEscapeSequence(e, !1) || + (!e.switchU && this.regexp_eatLegacyOctalEscapeSequence(e)) || + this.regexp_eatIdentityEscape(e) + ) + }), + (Ih.regexp_eatCControlLetter = function (e) { + var t = e.pos + if (e.eat(99)) { + if (this.regexp_eatControlLetter(e)) return !0 + e.pos = t + } + return !1 + }), + (Ih.regexp_eatZero = function (e) { + return 48 === e.current() && !_h(e.lookahead()) && ((e.lastIntValue = 0), e.advance(), !0) + }), + (Ih.regexp_eatControlEscape = function (e) { + var t = e.current() + return 116 === t + ? ((e.lastIntValue = 9), e.advance(), !0) + : 110 === t + ? ((e.lastIntValue = 10), e.advance(), !0) + : 118 === t + ? ((e.lastIntValue = 11), e.advance(), !0) + : 102 === t + ? ((e.lastIntValue = 12), e.advance(), !0) + : 114 === t && ((e.lastIntValue = 13), e.advance(), !0) + }), + (Ih.regexp_eatControlLetter = function (e) { + var t = e.current() + return !!Ch(t) && ((e.lastIntValue = t % 32), e.advance(), !0) + }), + (Ih.regexp_eatRegExpUnicodeEscapeSequence = function (e, t) { + void 0 === t && (t = !1) + var s, + i = e.pos, + n = t || e.switchU + if (e.eat(117)) { + if (this.regexp_eatFixedHexDigits(e, 4)) { + var r = e.lastIntValue + if (n && r >= 55296 && r <= 56319) { + var o = e.pos + if (e.eat(92) && e.eat(117) && this.regexp_eatFixedHexDigits(e, 4)) { + var a = e.lastIntValue + if (a >= 56320 && a <= 57343) return (e.lastIntValue = 1024 * (r - 55296) + (a - 56320) + 65536), !0 + } + ;(e.pos = o), (e.lastIntValue = r) + } + return !0 + } + if (n && e.eat(123) && this.regexp_eatHexDigits(e) && e.eat(125) && (s = e.lastIntValue) >= 0 && s <= 1114111) return !0 + n && e.raise('Invalid unicode escape'), (e.pos = i) + } + return !1 + }), + (Ih.regexp_eatIdentityEscape = function (e) { + if (e.switchU) return !!this.regexp_eatSyntaxCharacter(e) || (!!e.eat(47) && ((e.lastIntValue = 47), !0)) + var t = e.current() + return !(99 === t || (e.switchN && 107 === t)) && ((e.lastIntValue = t), e.advance(), !0) + }), + (Ih.regexp_eatDecimalEscape = function (e) { + e.lastIntValue = 0 + var t = e.current() + if (t >= 49 && t <= 57) { + do { + ;(e.lastIntValue = 10 * e.lastIntValue + (t - 48)), e.advance() + } while ((t = e.current()) >= 48 && t <= 57) + return !0 + } + return !1 + }) +function $h(e) { + return Ch(e) || 95 === e +} +function Nh(e) { + return $h(e) || _h(e) +} +function _h(e) { + return e >= 48 && e <= 57 +} +function Rh(e) { + return (e >= 48 && e <= 57) || (e >= 65 && e <= 70) || (e >= 97 && e <= 102) +} +function Mh(e) { + return e >= 65 && e <= 70 ? e - 65 + 10 : e >= 97 && e <= 102 ? e - 97 + 10 : e - 48 +} +function Oh(e) { + return e >= 48 && e <= 55 +} +;(Ih.regexp_eatCharacterClassEscape = function (e) { + var t = e.current() + if ( + (function (e) { + return 100 === e || 68 === e || 115 === e || 83 === e || 119 === e || 87 === e + })(t) + ) + return (e.lastIntValue = -1), e.advance(), 1 + var s = !1 + if (e.switchU && this.options.ecmaVersion >= 9 && ((s = 80 === t) || 112 === t)) { + var i + if (((e.lastIntValue = -1), e.advance(), e.eat(123) && (i = this.regexp_eatUnicodePropertyValueExpression(e)) && e.eat(125))) return s && 2 === i && e.raise('Invalid property name'), i + e.raise('Invalid property name') + } + return 0 +}), + (Ih.regexp_eatUnicodePropertyValueExpression = function (e) { + var t = e.pos + if (this.regexp_eatUnicodePropertyName(e) && e.eat(61)) { + var s = e.lastStringValue + if (this.regexp_eatUnicodePropertyValue(e)) { + var i = e.lastStringValue + return this.regexp_validateUnicodePropertyNameAndValue(e, s, i), 1 + } + } + if (((e.pos = t), this.regexp_eatLoneUnicodePropertyNameOrValue(e))) { + var n = e.lastStringValue + return this.regexp_validateUnicodePropertyNameOrValue(e, n) + } + return 0 + }), + (Ih.regexp_validateUnicodePropertyNameAndValue = function (e, t, s) { + kc(e.unicodeProperties.nonBinary, t) || e.raise('Invalid property name'), e.unicodeProperties.nonBinary[t].test(s) || e.raise('Invalid property value') + }), + (Ih.regexp_validateUnicodePropertyNameOrValue = function (e, t) { + return e.unicodeProperties.binary.test(t) ? 1 : e.switchV && e.unicodeProperties.binaryOfStrings.test(t) ? 2 : void e.raise('Invalid property name') + }), + (Ih.regexp_eatUnicodePropertyName = function (e) { + var t = 0 + for (e.lastStringValue = ''; $h((t = e.current())); ) (e.lastStringValue += Pc(t)), e.advance() + return '' !== e.lastStringValue + }), + (Ih.regexp_eatUnicodePropertyValue = function (e) { + var t = 0 + for (e.lastStringValue = ''; Nh((t = e.current())); ) (e.lastStringValue += Pc(t)), e.advance() + return '' !== e.lastStringValue + }), + (Ih.regexp_eatLoneUnicodePropertyNameOrValue = function (e) { + return this.regexp_eatUnicodePropertyValue(e) + }), + (Ih.regexp_eatCharacterClass = function (e) { + if (e.eat(91)) { + var t = e.eat(94), + s = this.regexp_classContents(e) + return e.eat(93) || e.raise('Unterminated character class'), t && 2 === s && e.raise('Negated character class may contain strings'), !0 + } + return !1 + }), + (Ih.regexp_classContents = function (e) { + return 93 === e.current() ? 1 : e.switchV ? this.regexp_classSetExpression(e) : (this.regexp_nonEmptyClassRanges(e), 1) + }), + (Ih.regexp_nonEmptyClassRanges = function (e) { + for (; this.regexp_eatClassAtom(e); ) { + var t = e.lastIntValue + if (e.eat(45) && this.regexp_eatClassAtom(e)) { + var s = e.lastIntValue + !e.switchU || (-1 !== t && -1 !== s) || e.raise('Invalid character class'), -1 !== t && -1 !== s && t > s && e.raise('Range out of order in character class') + } + } + }), + (Ih.regexp_eatClassAtom = function (e) { + var t = e.pos + if (e.eat(92)) { + if (this.regexp_eatClassEscape(e)) return !0 + if (e.switchU) { + var s = e.current() + ;(99 === s || Oh(s)) && e.raise('Invalid class escape'), e.raise('Invalid escape') + } + e.pos = t + } + var i = e.current() + return 93 !== i && ((e.lastIntValue = i), e.advance(), !0) + }), + (Ih.regexp_eatClassEscape = function (e) { + var t = e.pos + if (e.eat(98)) return (e.lastIntValue = 8), !0 + if (e.switchU && e.eat(45)) return (e.lastIntValue = 45), !0 + if (!e.switchU && e.eat(99)) { + if (this.regexp_eatClassControlLetter(e)) return !0 + e.pos = t + } + return this.regexp_eatCharacterClassEscape(e) || this.regexp_eatCharacterEscape(e) + }), + (Ih.regexp_classSetExpression = function (e) { + var t, + s = 1 + if (this.regexp_eatClassSetRange(e)); + else if ((t = this.regexp_eatClassSetOperand(e))) { + 2 === t && (s = 2) + for (var i = e.pos; e.eatChars([38, 38]); ) 38 !== e.current() && (t = this.regexp_eatClassSetOperand(e)) ? 2 !== t && (s = 1) : e.raise('Invalid character in character class') + if (i !== e.pos) return s + for (; e.eatChars([45, 45]); ) this.regexp_eatClassSetOperand(e) || e.raise('Invalid character in character class') + if (i !== e.pos) return s + } else e.raise('Invalid character in character class') + for (;;) + if (!this.regexp_eatClassSetRange(e)) { + if (!(t = this.regexp_eatClassSetOperand(e))) return s + 2 === t && (s = 2) + } + }), + (Ih.regexp_eatClassSetRange = function (e) { + var t = e.pos + if (this.regexp_eatClassSetCharacter(e)) { + var s = e.lastIntValue + if (e.eat(45) && this.regexp_eatClassSetCharacter(e)) { + var i = e.lastIntValue + return -1 !== s && -1 !== i && s > i && e.raise('Range out of order in character class'), !0 + } + e.pos = t + } + return !1 + }), + (Ih.regexp_eatClassSetOperand = function (e) { + return this.regexp_eatClassSetCharacter(e) ? 1 : this.regexp_eatClassStringDisjunction(e) || this.regexp_eatNestedClass(e) + }), + (Ih.regexp_eatNestedClass = function (e) { + var t = e.pos + if (e.eat(91)) { + var s = e.eat(94), + i = this.regexp_classContents(e) + if (e.eat(93)) return s && 2 === i && e.raise('Negated character class may contain strings'), i + e.pos = t + } + if (e.eat(92)) { + var n = this.regexp_eatCharacterClassEscape(e) + if (n) return n + e.pos = t + } + return null + }), + (Ih.regexp_eatClassStringDisjunction = function (e) { + var t = e.pos + if (e.eatChars([92, 113])) { + if (e.eat(123)) { + var s = this.regexp_classStringDisjunctionContents(e) + if (e.eat(125)) return s + } else e.raise('Invalid escape') + e.pos = t + } + return null + }), + (Ih.regexp_classStringDisjunctionContents = function (e) { + for (var t = this.regexp_classString(e); e.eat(124); ) 2 === this.regexp_classString(e) && (t = 2) + return t + }), + (Ih.regexp_classString = function (e) { + for (var t = 0; this.regexp_eatClassSetCharacter(e); ) t++ + return 1 === t ? 1 : 2 + }), + (Ih.regexp_eatClassSetCharacter = function (e) { + var t = e.pos + if (e.eat(92)) return !(!this.regexp_eatCharacterEscape(e) && !this.regexp_eatClassSetReservedPunctuator(e)) || (e.eat(98) ? ((e.lastIntValue = 8), !0) : ((e.pos = t), !1)) + var s = e.current() + return ( + !( + s < 0 || + (s === e.lookahead() && + (function (e) { + return 33 === e || (e >= 35 && e <= 38) || (e >= 42 && e <= 44) || 46 === e || (e >= 58 && e <= 64) || 94 === e || 96 === e || 126 === e + })(s)) + ) && + !(function (e) { + return 40 === e || 41 === e || 45 === e || 47 === e || (e >= 91 && e <= 93) || (e >= 123 && e <= 125) + })(s) && + (e.advance(), (e.lastIntValue = s), !0) + ) + }), + (Ih.regexp_eatClassSetReservedPunctuator = function (e) { + var t = e.current() + return ( + !!(function (e) { + return 33 === e || 35 === e || 37 === e || 38 === e || 44 === e || 45 === e || (e >= 58 && e <= 62) || 64 === e || 96 === e || 126 === e + })(t) && ((e.lastIntValue = t), e.advance(), !0) + ) + }), + (Ih.regexp_eatClassControlLetter = function (e) { + var t = e.current() + return !(!_h(t) && 95 !== t) && ((e.lastIntValue = t % 32), e.advance(), !0) + }), + (Ih.regexp_eatHexEscapeSequence = function (e) { + var t = e.pos + if (e.eat(120)) { + if (this.regexp_eatFixedHexDigits(e, 2)) return !0 + e.switchU && e.raise('Invalid escape'), (e.pos = t) + } + return !1 + }), + (Ih.regexp_eatDecimalDigits = function (e) { + var t = e.pos, + s = 0 + for (e.lastIntValue = 0; _h((s = e.current())); ) (e.lastIntValue = 10 * e.lastIntValue + (s - 48)), e.advance() + return e.pos !== t + }), + (Ih.regexp_eatHexDigits = function (e) { + var t = e.pos, + s = 0 + for (e.lastIntValue = 0; Rh((s = e.current())); ) (e.lastIntValue = 16 * e.lastIntValue + Mh(s)), e.advance() + return e.pos !== t + }), + (Ih.regexp_eatLegacyOctalEscapeSequence = function (e) { + if (this.regexp_eatOctalDigit(e)) { + var t = e.lastIntValue + if (this.regexp_eatOctalDigit(e)) { + var s = e.lastIntValue + t <= 3 && this.regexp_eatOctalDigit(e) ? (e.lastIntValue = 64 * t + 8 * s + e.lastIntValue) : (e.lastIntValue = 8 * t + s) + } else e.lastIntValue = t + return !0 + } + return !1 + }), + (Ih.regexp_eatOctalDigit = function (e) { + var t = e.current() + return Oh(t) ? ((e.lastIntValue = t - 48), e.advance(), !0) : ((e.lastIntValue = 0), !1) + }), + (Ih.regexp_eatFixedHexDigits = function (e, t) { + var s = e.pos + e.lastIntValue = 0 + for (var i = 0; i < t; ++i) { + var n = e.current() + if (!Rh(n)) return (e.pos = s), !1 + ;(e.lastIntValue = 16 * e.lastIntValue + Mh(n)), e.advance() + } + return !0 + }) +var Dh = function (e) { + ;(this.type = e.type), + (this.value = e.value), + (this.start = e.start), + (this.end = e.end), + e.options.locations && (this.loc = new Nc(e, e.startLoc, e.endLoc)), + e.options.ranges && (this.range = [e.start, e.end]) + }, + Lh = Tc.prototype +function Th(e) { + return 'function' != typeof BigInt ? null : BigInt(e.replace(/_/g, '')) +} +;(Lh.next = function (e) { + !e && this.type.keyword && this.containsEsc && this.raiseRecoverable(this.start, 'Escape sequence in keyword ' + this.type.keyword), + this.options.onToken && this.options.onToken(new Dh(this)), + (this.lastTokEnd = this.end), + (this.lastTokStart = this.start), + (this.lastTokEndLoc = this.endLoc), + (this.lastTokStartLoc = this.startLoc), + this.nextToken() +}), + (Lh.getToken = function () { + return this.next(), new Dh(this) + }), + 'undefined' != typeof Symbol && + (Lh[Symbol.iterator] = function () { + var e = this + return { + next: function () { + var t = e.getToken() + return { done: t.type === fc.eof, value: t } + } + } + }), + (Lh.nextToken = function () { + var e = this.curContext() + return ( + (e && e.preserveSpace) || this.skipSpace(), + (this.start = this.pos), + this.options.locations && (this.startLoc = this.curPosition()), + this.pos >= this.input.length ? this.finishToken(fc.eof) : e.override ? e.override(this) : void this.readToken(this.fullCharCodeAtPos()) + ) + }), + (Lh.readToken = function (e) { + return oc(e, this.options.ecmaVersion >= 6) || 92 === e ? this.readWord() : this.getTokenFromCode(e) + }), + (Lh.fullCharCodeAtPos = function () { + var e = this.input.charCodeAt(this.pos) + if (e <= 55295 || e >= 56320) return e + var t = this.input.charCodeAt(this.pos + 1) + return t <= 56319 || t >= 57344 ? e : (e << 10) + t - 56613888 + }), + (Lh.skipBlockComment = function () { + var e = this.options.onComment && this.curPosition(), + t = this.pos, + s = this.input.indexOf('*/', (this.pos += 2)) + if ((-1 === s && this.raise(this.pos - 2, 'Unterminated comment'), (this.pos = s + 2), this.options.locations)) + for (var i = void 0, n = t; (i = xc(this.input, n, this.pos)) > -1; ) ++this.curLine, (n = this.lineStart = i) + this.options.onComment && this.options.onComment(!0, this.input.slice(t + 2, s), t, this.pos, e, this.curPosition()) + }), + (Lh.skipLineComment = function (e) { + for (var t = this.pos, s = this.options.onComment && this.curPosition(), i = this.input.charCodeAt((this.pos += e)); this.pos < this.input.length && !yc(i); ) i = this.input.charCodeAt(++this.pos) + this.options.onComment && this.options.onComment(!1, this.input.slice(t + e, this.pos), t, this.pos, s, this.curPosition()) + }), + (Lh.skipSpace = function () { + e: for (; this.pos < this.input.length; ) { + var e = this.input.charCodeAt(this.pos) + switch (e) { + case 32: + case 160: + ++this.pos + break + case 13: + 10 === this.input.charCodeAt(this.pos + 1) && ++this.pos + case 10: + case 8232: + case 8233: + ++this.pos, this.options.locations && (++this.curLine, (this.lineStart = this.pos)) + break + case 47: + switch (this.input.charCodeAt(this.pos + 1)) { + case 42: + this.skipBlockComment() + break + case 47: + this.skipLineComment(2) + break + default: + break e + } + break + default: + if (!((e > 8 && e < 14) || (e >= 5760 && Ec.test(String.fromCharCode(e))))) break e + ++this.pos + } + } + }), + (Lh.finishToken = function (e, t) { + ;(this.end = this.pos), this.options.locations && (this.endLoc = this.curPosition()) + var s = this.type + ;(this.type = e), (this.value = t), this.updateContext(s) + }), + (Lh.readToken_dot = function () { + var e = this.input.charCodeAt(this.pos + 1) + if (e >= 48 && e <= 57) return this.readNumber(!0) + var t = this.input.charCodeAt(this.pos + 2) + return this.options.ecmaVersion >= 6 && 46 === e && 46 === t ? ((this.pos += 3), this.finishToken(fc.ellipsis)) : (++this.pos, this.finishToken(fc.dot)) + }), + (Lh.readToken_slash = function () { + var e = this.input.charCodeAt(this.pos + 1) + return this.exprAllowed ? (++this.pos, this.readRegexp()) : 61 === e ? this.finishOp(fc.assign, 2) : this.finishOp(fc.slash, 1) + }), + (Lh.readToken_mult_modulo_exp = function (e) { + var t = this.input.charCodeAt(this.pos + 1), + s = 1, + i = 42 === e ? fc.star : fc.modulo + return ( + this.options.ecmaVersion >= 7 && 42 === e && 42 === t && (++s, (i = fc.starstar), (t = this.input.charCodeAt(this.pos + 2))), 61 === t ? this.finishOp(fc.assign, s + 1) : this.finishOp(i, s) + ) + }), + (Lh.readToken_pipe_amp = function (e) { + var t = this.input.charCodeAt(this.pos + 1) + if (t === e) { + if (this.options.ecmaVersion >= 12) if (61 === this.input.charCodeAt(this.pos + 2)) return this.finishOp(fc.assign, 3) + return this.finishOp(124 === e ? fc.logicalOR : fc.logicalAND, 2) + } + return 61 === t ? this.finishOp(fc.assign, 2) : this.finishOp(124 === e ? fc.bitwiseOR : fc.bitwiseAND, 1) + }), + (Lh.readToken_caret = function () { + return 61 === this.input.charCodeAt(this.pos + 1) ? this.finishOp(fc.assign, 2) : this.finishOp(fc.bitwiseXOR, 1) + }), + (Lh.readToken_plus_min = function (e) { + var t = this.input.charCodeAt(this.pos + 1) + return t === e + ? 45 !== t || this.inModule || 62 !== this.input.charCodeAt(this.pos + 2) || (0 !== this.lastTokEnd && !mc.test(this.input.slice(this.lastTokEnd, this.pos))) + ? this.finishOp(fc.incDec, 2) + : (this.skipLineComment(3), this.skipSpace(), this.nextToken()) + : 61 === t + ? this.finishOp(fc.assign, 2) + : this.finishOp(fc.plusMin, 1) + }), + (Lh.readToken_lt_gt = function (e) { + var t = this.input.charCodeAt(this.pos + 1), + s = 1 + return t === e + ? ((s = 62 === e && 62 === this.input.charCodeAt(this.pos + 2) ? 3 : 2), 61 === this.input.charCodeAt(this.pos + s) ? this.finishOp(fc.assign, s + 1) : this.finishOp(fc.bitShift, s)) + : 33 !== t || 60 !== e || this.inModule || 45 !== this.input.charCodeAt(this.pos + 2) || 45 !== this.input.charCodeAt(this.pos + 3) + ? (61 === t && (s = 2), this.finishOp(fc.relational, s)) + : (this.skipLineComment(4), this.skipSpace(), this.nextToken()) + }), + (Lh.readToken_eq_excl = function (e) { + var t = this.input.charCodeAt(this.pos + 1) + return 61 === t + ? this.finishOp(fc.equality, 61 === this.input.charCodeAt(this.pos + 2) ? 3 : 2) + : 61 === e && 62 === t && this.options.ecmaVersion >= 6 + ? ((this.pos += 2), this.finishToken(fc.arrow)) + : this.finishOp(61 === e ? fc.eq : fc.prefix, 1) + }), + (Lh.readToken_question = function () { + var e = this.options.ecmaVersion + if (e >= 11) { + var t = this.input.charCodeAt(this.pos + 1) + if (46 === t) { + var s = this.input.charCodeAt(this.pos + 2) + if (s < 48 || s > 57) return this.finishOp(fc.questionDot, 2) + } + if (63 === t) { + if (e >= 12) if (61 === this.input.charCodeAt(this.pos + 2)) return this.finishOp(fc.assign, 3) + return this.finishOp(fc.coalesce, 2) + } + } + return this.finishOp(fc.question, 1) + }), + (Lh.readToken_numberSign = function () { + var e = 35 + if (this.options.ecmaVersion >= 13 && (++this.pos, oc((e = this.fullCharCodeAtPos()), !0) || 92 === e)) return this.finishToken(fc.privateId, this.readWord1()) + this.raise(this.pos, "Unexpected character '" + Pc(e) + "'") + }), + (Lh.getTokenFromCode = function (e) { + switch (e) { + case 46: + return this.readToken_dot() + case 40: + return ++this.pos, this.finishToken(fc.parenL) + case 41: + return ++this.pos, this.finishToken(fc.parenR) + case 59: + return ++this.pos, this.finishToken(fc.semi) + case 44: + return ++this.pos, this.finishToken(fc.comma) + case 91: + return ++this.pos, this.finishToken(fc.bracketL) + case 93: + return ++this.pos, this.finishToken(fc.bracketR) + case 123: + return ++this.pos, this.finishToken(fc.braceL) + case 125: + return ++this.pos, this.finishToken(fc.braceR) + case 58: + return ++this.pos, this.finishToken(fc.colon) + case 96: + if (this.options.ecmaVersion < 6) break + return ++this.pos, this.finishToken(fc.backQuote) + case 48: + var t = this.input.charCodeAt(this.pos + 1) + if (120 === t || 88 === t) return this.readRadixNumber(16) + if (this.options.ecmaVersion >= 6) { + if (111 === t || 79 === t) return this.readRadixNumber(8) + if (98 === t || 66 === t) return this.readRadixNumber(2) + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + return this.readNumber(!1) + case 34: + case 39: + return this.readString(e) + case 47: + return this.readToken_slash() + case 37: + case 42: + return this.readToken_mult_modulo_exp(e) + case 124: + case 38: + return this.readToken_pipe_amp(e) + case 94: + return this.readToken_caret() + case 43: + case 45: + return this.readToken_plus_min(e) + case 60: + case 62: + return this.readToken_lt_gt(e) + case 61: + case 33: + return this.readToken_eq_excl(e) + case 63: + return this.readToken_question() + case 126: + return this.finishOp(fc.prefix, 1) + case 35: + return this.readToken_numberSign() + } + this.raise(this.pos, "Unexpected character '" + Pc(e) + "'") + }), + (Lh.finishOp = function (e, t) { + var s = this.input.slice(this.pos, this.pos + t) + return (this.pos += t), this.finishToken(e, s) + }), + (Lh.readRegexp = function () { + for (var e, t, s = this.pos; ; ) { + this.pos >= this.input.length && this.raise(s, 'Unterminated regular expression') + var i = this.input.charAt(this.pos) + if ((mc.test(i) && this.raise(s, 'Unterminated regular expression'), e)) e = !1 + else { + if ('[' === i) t = !0 + else if (']' === i && t) t = !1 + else if ('/' === i && !t) break + e = '\\' === i + } + ++this.pos + } + var n = this.input.slice(s, this.pos) + ++this.pos + var r = this.pos, + o = this.readWord1() + this.containsEsc && this.unexpected(r) + var a = this.regexpState || (this.regexpState = new wh(this)) + a.reset(s, n, o), this.validateRegExpFlags(a), this.validateRegExpPattern(a) + var l = null + try { + l = new RegExp(n, o) + } catch (e) {} + return this.finishToken(fc.regexp, { pattern: n, flags: o, value: l }) + }), + (Lh.readInt = function (e, t, s) { + for ( + var i = this.options.ecmaVersion >= 12 && void 0 === t, n = s && 48 === this.input.charCodeAt(this.pos), r = this.pos, o = 0, a = 0, l = 0, c = null == t ? 1 / 0 : t; + l < c; + ++l, ++this.pos + ) { + var h = this.input.charCodeAt(this.pos), + u = void 0 + if (i && 95 === h) + n && this.raiseRecoverable(this.pos, 'Numeric separator is not allowed in legacy octal numeric literals'), + 95 === a && this.raiseRecoverable(this.pos, 'Numeric separator must be exactly one underscore'), + 0 === l && this.raiseRecoverable(this.pos, 'Numeric separator is not allowed at the first of digits'), + (a = h) + else { + if ((u = h >= 97 ? h - 97 + 10 : h >= 65 ? h - 65 + 10 : h >= 48 && h <= 57 ? h - 48 : 1 / 0) >= e) break + ;(a = h), (o = o * e + u) + } + } + return i && 95 === a && this.raiseRecoverable(this.pos - 1, 'Numeric separator is not allowed at the last of digits'), this.pos === r || (null != t && this.pos - r !== t) ? null : o + }), + (Lh.readRadixNumber = function (e) { + var t = this.pos + this.pos += 2 + var s = this.readInt(e) + return ( + null == s && this.raise(this.start + 2, 'Expected number in radix ' + e), + this.options.ecmaVersion >= 11 && 110 === this.input.charCodeAt(this.pos) + ? ((s = Th(this.input.slice(t, this.pos))), ++this.pos) + : oc(this.fullCharCodeAtPos()) && this.raise(this.pos, 'Identifier directly after number'), + this.finishToken(fc.num, s) + ) + }), + (Lh.readNumber = function (e) { + var t = this.pos + e || null !== this.readInt(10, void 0, !0) || this.raise(t, 'Invalid number') + var s = this.pos - t >= 2 && 48 === this.input.charCodeAt(t) + s && this.strict && this.raise(t, 'Invalid number') + var i = this.input.charCodeAt(this.pos) + if (!s && !e && this.options.ecmaVersion >= 11 && 110 === i) { + var n = Th(this.input.slice(t, this.pos)) + return ++this.pos, oc(this.fullCharCodeAtPos()) && this.raise(this.pos, 'Identifier directly after number'), this.finishToken(fc.num, n) + } + s && /[89]/.test(this.input.slice(t, this.pos)) && (s = !1), + 46 !== i || s || (++this.pos, this.readInt(10), (i = this.input.charCodeAt(this.pos))), + (69 !== i && 101 !== i) || s || ((43 !== (i = this.input.charCodeAt(++this.pos)) && 45 !== i) || ++this.pos, null === this.readInt(10) && this.raise(t, 'Invalid number')), + oc(this.fullCharCodeAtPos()) && this.raise(this.pos, 'Identifier directly after number') + var r, + o = ((r = this.input.slice(t, this.pos)), s ? parseInt(r, 8) : parseFloat(r.replace(/_/g, ''))) + return this.finishToken(fc.num, o) + }), + (Lh.readCodePoint = function () { + var e + if (123 === this.input.charCodeAt(this.pos)) { + this.options.ecmaVersion < 6 && this.unexpected() + var t = ++this.pos + ;(e = this.readHexChar(this.input.indexOf('}', this.pos) - this.pos)), ++this.pos, e > 1114111 && this.invalidStringToken(t, 'Code point out of bounds') + } else e = this.readHexChar(4) + return e + }), + (Lh.readString = function (e) { + for (var t = '', s = ++this.pos; ; ) { + this.pos >= this.input.length && this.raise(this.start, 'Unterminated string constant') + var i = this.input.charCodeAt(this.pos) + if (i === e) break + 92 === i + ? ((t += this.input.slice(s, this.pos)), (t += this.readEscapedChar(!1)), (s = this.pos)) + : 8232 === i || 8233 === i + ? (this.options.ecmaVersion < 10 && this.raise(this.start, 'Unterminated string constant'), ++this.pos, this.options.locations && (this.curLine++, (this.lineStart = this.pos))) + : (yc(i) && this.raise(this.start, 'Unterminated string constant'), ++this.pos) + } + return (t += this.input.slice(s, this.pos++)), this.finishToken(fc.string, t) + }) +var Vh = {} +;(Lh.tryReadTemplateToken = function () { + this.inTemplateElement = !0 + try { + this.readTmplToken() + } catch (e) { + if (e !== Vh) throw e + this.readInvalidTemplateToken() + } + this.inTemplateElement = !1 +}), + (Lh.invalidStringToken = function (e, t) { + if (this.inTemplateElement && this.options.ecmaVersion >= 9) throw Vh + this.raise(e, t) + }), + (Lh.readTmplToken = function () { + for (var e = '', t = this.pos; ; ) { + this.pos >= this.input.length && this.raise(this.start, 'Unterminated template') + var s = this.input.charCodeAt(this.pos) + if (96 === s || (36 === s && 123 === this.input.charCodeAt(this.pos + 1))) + return this.pos !== this.start || (this.type !== fc.template && this.type !== fc.invalidTemplate) + ? ((e += this.input.slice(t, this.pos)), this.finishToken(fc.template, e)) + : 36 === s + ? ((this.pos += 2), this.finishToken(fc.dollarBraceL)) + : (++this.pos, this.finishToken(fc.backQuote)) + if (92 === s) (e += this.input.slice(t, this.pos)), (e += this.readEscapedChar(!0)), (t = this.pos) + else if (yc(s)) { + switch (((e += this.input.slice(t, this.pos)), ++this.pos, s)) { + case 13: + 10 === this.input.charCodeAt(this.pos) && ++this.pos + case 10: + e += '\n' + break + default: + e += String.fromCharCode(s) + } + this.options.locations && (++this.curLine, (this.lineStart = this.pos)), (t = this.pos) + } else ++this.pos + } + }), + (Lh.readInvalidTemplateToken = function () { + for (; this.pos < this.input.length; this.pos++) + switch (this.input[this.pos]) { + case '\\': + ++this.pos + break + case '$': + if ('{' !== this.input[this.pos + 1]) break + case '`': + return this.finishToken(fc.invalidTemplate, this.input.slice(this.start, this.pos)) + } + this.raise(this.start, 'Unterminated template') + }), + (Lh.readEscapedChar = function (e) { + var t = this.input.charCodeAt(++this.pos) + switch ((++this.pos, t)) { + case 110: + return '\n' + case 114: + return '\r' + case 120: + return String.fromCharCode(this.readHexChar(2)) + case 117: + return Pc(this.readCodePoint()) + case 116: + return '\t' + case 98: + return '\b' + case 118: + return '\v' + case 102: + return '\f' + case 13: + 10 === this.input.charCodeAt(this.pos) && ++this.pos + case 10: + return this.options.locations && ((this.lineStart = this.pos), ++this.curLine), '' + case 56: + case 57: + if ((this.strict && this.invalidStringToken(this.pos - 1, 'Invalid escape sequence'), e)) { + var s = this.pos - 1 + this.invalidStringToken(s, 'Invalid escape sequence in template string') + } + default: + if (t >= 48 && t <= 55) { + var i = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0], + n = parseInt(i, 8) + return ( + n > 255 && ((i = i.slice(0, -1)), (n = parseInt(i, 8))), + (this.pos += i.length - 1), + (t = this.input.charCodeAt(this.pos)), + ('0' === i && 56 !== t && 57 !== t) || (!this.strict && !e) || this.invalidStringToken(this.pos - 1 - i.length, e ? 'Octal literal in template string' : 'Octal literal in strict mode'), + String.fromCharCode(n) + ) + } + return yc(t) ? '' : String.fromCharCode(t) + } + }), + (Lh.readHexChar = function (e) { + var t = this.pos, + s = this.readInt(16, e) + return null === s && this.invalidStringToken(t, 'Bad character escape sequence'), s + }), + (Lh.readWord1 = function () { + this.containsEsc = !1 + for (var e = '', t = !0, s = this.pos, i = this.options.ecmaVersion >= 6; this.pos < this.input.length; ) { + var n = this.fullCharCodeAtPos() + if (ac(n, i)) this.pos += n <= 65535 ? 1 : 2 + else { + if (92 !== n) break + ;(this.containsEsc = !0), (e += this.input.slice(s, this.pos)) + var r = this.pos + 117 !== this.input.charCodeAt(++this.pos) && this.invalidStringToken(this.pos, 'Expecting Unicode escape sequence \\uXXXX'), ++this.pos + var o = this.readCodePoint() + ;(t ? oc : ac)(o, i) || this.invalidStringToken(r, 'Invalid Unicode escape'), (e += Pc(o)), (s = this.pos) + } + t = !1 + } + return e + this.input.slice(s, this.pos) + }), + (Lh.readWord = function () { + var e = this.readWord1(), + t = fc.name + return this.keywords.test(e) && (t = dc[e]), this.finishToken(t, e) + }) +var Bh = '8.10.0' +Tc.acorn = { + Parser: Tc, + version: Bh, + defaultOptions: Rc, + Position: $c, + SourceLocation: Nc, + getLineInfo: _c, + Node: oh, + TokenType: lc, + tokTypes: fc, + keywordTypes: dc, + TokContext: Qc, + tokContexts: Zc, + isIdentifierChar: ac, + isIdentifierStart: oc, + Token: Dh, + isNewLine: yc, + lineBreak: mc, + lineBreakG: gc, + nonASCIIwhitespace: Ec +} +var zh = Object.freeze({ + __proto__: null, + Node: oh, + Parser: Tc, + Position: $c, + SourceLocation: Nc, + TokContext: Qc, + Token: Dh, + TokenType: lc, + defaultOptions: Rc, + getLineInfo: _c, + isIdentifierChar: ac, + isIdentifierStart: oc, + isNewLine: yc, + keywordTypes: dc, + lineBreak: mc, + lineBreakG: gc, + nonASCIIwhitespace: Ec, + parse: function (e, t) { + return Tc.parse(e, t) + }, + parseExpressionAt: function (e, t, s) { + return Tc.parseExpressionAt(e, t, s) + }, + tokContexts: Zc, + tokTypes: fc, + tokenizer: function (e, t) { + return Tc.tokenizer(e, t) + }, + version: Bh +}) +const Fh = (e) => () => + Qe( + (function (e) { + return { + code: 'NO_FS_IN_BROWSER', + message: `Cannot access the file system (via "${e}") when using the browser build of Rollup. Make sure you supply a plugin with custom resolveId and load hooks to Rollup.`, + url: De('plugin-development/#a-simple-example') + } + })(e) + ), + jh = Fh('fs.mkdir'), + Uh = Fh('fs.readFile'), + Gh = Fh('fs.writeFile') +async function Wh(e, t, s, i, n, r, o, a, l) { + const c = await (function (e, t, s, i, n, r, o, a) { + let l = null, + c = null + if (n) { + l = new Set() + for (const s of n) e === s.source && t === s.importer && l.add(s.plugin) + c = (e, t) => ({ ...e, resolve: (e, s, { assertions: r, custom: o, isEntry: a, skipSelf: l } = me) => i(e, s, o, a, r || ge, l ? [...n, { importer: s, plugin: t, source: e }] : n) }) + } + return s.hookFirstAndGetPlugin('resolveId', [e, t, { assertions: a, custom: r, isEntry: o }], c, l) + })(e, t, i, n, r, o, a, l) + return null == c ? Fh('path.resolve')() : c[0] +} +const qh = 'at position ', + Hh = 'at output position ' +const Kh = { delete: () => !1, get() {}, has: () => !1, set() {} } +function Yh(e) { + return e.startsWith(qh) || e.startsWith(Hh) + ? Qe({ code: tt, message: 'A plugin is trying to use the Rollup cache but is not declaring a plugin name or cacheKey.' }) + : Qe({ + code: at, + message: `The plugin name ${e} is being used twice in the same build. Plugin names must be distinct or provide a cacheKey (please post an issue to the plugin if you are a plugin user).` + }) +} +const Xh = (e, t, s = tu) => { + const { onwarn: i, onLog: n } = e, + r = Qh(s, i) + if (n) { + const e = we[t] + return (t, s) => + n(t, Zh(s), (t, s) => { + if ('error' === t) return Qe(Jh(s)) + we[t] >= e && r(t, Jh(s)) + }) + } + return r + }, + Qh = (e, t) => + t + ? (s, i) => { + s === Ae ? t(Zh(i), (t) => e(Ae, Jh(t))) : e(s, i) + } + : e, + Zh = (e) => (Object.defineProperty(e, 'toString', { value: () => eu(e), writable: !0 }), e), + Jh = (e) => ('string' == typeof e ? { message: e } : 'function' == typeof e ? Jh(e()) : e), + eu = (e) => { + let t = '' + return e.plugin && (t += `(${e.plugin} plugin) `), e.loc && (t += `${V(e.loc.file)} (${e.loc.line}:${e.loc.column}) `), t + e.message + }, + tu = (e, t) => { + const s = eu(t) + switch (e) { + case Ae: + return console.warn(s) + case Ie: + return console.debug(s) + default: + return console.info(s) + } + } +function su(e, t, s, i, n = /$./) { + const r = new Set(t), + o = Object.keys(e).filter((e) => !(r.has(e) || n.test(e))) + o.length > 0 && + i( + Ae, + (function (e, t, s) { + return { code: $t, message: `Unknown ${e}: ${t.join(', ')}. Allowed options: ${s.join(', ')}` } + })(s, o, [...r].sort()) + ) +} +const iu = { + recommended: { + annotations: !0, + correctVarValueBeforeDeclaration: !1, + manualPureFunctions: ye, + moduleSideEffects: () => !0, + propertyReadSideEffects: !0, + tryCatchDeoptimization: !0, + unknownGlobalSideEffects: !1 + }, + safest: { + annotations: !0, + correctVarValueBeforeDeclaration: !0, + manualPureFunctions: ye, + moduleSideEffects: () => !0, + propertyReadSideEffects: !0, + tryCatchDeoptimization: !0, + unknownGlobalSideEffects: !0 + }, + smallest: { + annotations: !0, + correctVarValueBeforeDeclaration: !1, + manualPureFunctions: ye, + moduleSideEffects: () => !1, + propertyReadSideEffects: !1, + tryCatchDeoptimization: !1, + unknownGlobalSideEffects: !1 + } + }, + nu = { + es2015: { arrowFunctions: !0, constBindings: !0, objectShorthand: !0, reservedNamesAsProps: !0, symbols: !0 }, + es5: { arrowFunctions: !1, constBindings: !1, objectShorthand: !1, reservedNamesAsProps: !0, symbols: !1 } + }, + ru = (e, t, s, i, n) => { + const r = e?.preset + if (r) { + const n = t[r] + if (n) return { ...n, ...e } + Qe(jt(`${s}.preset`, i, `valid values are ${Oe(Object.keys(t))}`, r)) + } + return ((e, t, s, i) => (n) => { + if ('string' == typeof n) { + const r = e[n] + if (r) return r + Qe(jt(t, s, `valid values are ${i}${Oe(Object.keys(e))}. You can also supply an object for more fine-grained control`, n)) + } + return ((e) => (e && 'object' == typeof e ? e : {}))(n) + })( + t, + s, + i, + n + )(e) + }, + ou = async (e) => + ( + await (async function (e) { + do { + e = (await Promise.all(e)).flat(1 / 0) + } while (e.some((e) => e?.then)) + return e + })([e]) + ).filter(Boolean) +async function au(e, t, s, i) { + const n = t.id, + r = [] + let o = null === e.map ? null : Ao(e.map) + const a = e.code + let c = e.ast + const h = [], + u = [] + let d = !1 + const p = () => (d = !0) + let f = '', + m = e.code + const g = (e) => (t, s) => { + ;(t = Jh(t)), s && Ze(t, s, m, n), (t.id = n), (t.hook = 'transform'), e(t) + } + let x + try { + x = await s.hookReduceArg0( + 'transform', + [m, n], + function (e, s, n) { + let o, a + if ('string' == typeof s) o = s + else { + if (!s || 'object' != typeof s) return e + if ((t.updateOptions(s), null == s.code)) + return ( + (s.map || s.ast) && + i( + Ae, + (function (e) { + return { code: kt, message: `The plugin "${e}" returned a "map" or "ast" without returning a "code". This will be ignored.` } + })(n.name) + ), + e + ) + ;({ code: o, map: a, ast: c } = s) + } + return null !== a && r.push(Ao('string' == typeof a ? JSON.parse(a) : a) || { missing: !0, plugin: n.name }), (m = o), o + }, + (e, t) => { + return ( + (f = t.name), + { + ...e, + addWatchFile(t) { + h.push(t), e.addWatchFile(t) + }, + cache: d ? e.cache : ((c = e.cache), (x = p), { delete: (e) => (x(), c.delete(e)), get: (e) => (x(), c.get(e)), has: (e) => (x(), c.has(e)), set: (e, t) => (x(), c.set(e, t)) }), + debug: g(e.debug), + emitFile: (e) => (u.push(e), s.emitFile(e)), + error: (t, s) => ('string' == typeof t && (t = { message: t }), s && Ze(t, s, m, n), (t.id = n), (t.hook = 'transform'), e.error(t)), + getCombinedSourcemap() { + const e = (function (e, t, s, i, n) { + return 0 === i.length ? s : Ao({ version: 3, ...rl(e, t, s, i, nl(n)).traceMappings() }) + })(n, a, o, r, i) + if (!e) { + return new y(a).generateMap({ hires: !0, includeContent: !0, source: n }) + } + return o !== e && ((o = e), (r.length = 0)), new l({ ...e, file: null, sourcesContent: e.sourcesContent }) + }, + info: g(e.info), + setAssetSource() { + return this.error({ code: gt, message: 'setAssetSource cannot be called in transform for caching reasons. Use emitFile with a source, or call setAssetSource in another hook.' }) + }, + warn: g(e.warn) + } + ) + var c, x + } + ) + } catch (e) { + return Qe(qt(e, f, { hook: 'transform', id: n })) + } + return !d && u.length > 0 && (t.transformFiles = u), { ast: c, code: x, customTransformCache: d, originalCode: a, originalSourcemap: o, sourcemapChain: r, transformDependencies: h } +} +const lu = 'resolveDependencies' +class cu { + constructor(e, t, s, i) { + ;(this.graph = e), + (this.modulesById = t), + (this.options = s), + (this.pluginDriver = i), + (this.implicitEntryModules = new Set()), + (this.indexedEntryModules = []), + (this.latestLoadModulesPromise = Promise.resolve()), + (this.moduleLoadPromises = new Map()), + (this.modulesWithLoadedDependencies = new Set()), + (this.nextChunkNamePriority = 0), + (this.nextEntryModuleIndex = 0), + (this.resolveId = async (e, t, s, i, n, r = null) => + this.getResolvedIdWithDefaults( + this.getNormalizedResolvedIdWithoutDefaults( + !this.options.external(e, t, !1) && (await Wh(e, t, this.options.preserveSymlinks, this.pluginDriver, this.resolveId, r, s, 'boolean' == typeof i ? i : !t, n)), + t, + e + ), + n + )), + (this.hasModuleSideEffects = s.treeshake ? s.treeshake.moduleSideEffects : () => !0) + } + async addAdditionalModules(e, t) { + const s = this.extendLoadModulesPromise(Promise.all(e.map((e) => this.loadEntryModule(e, !1, void 0, null, t)))) + return await this.awaitLoadModulesPromise(), s + } + async addEntryModules(e, t) { + const s = this.nextEntryModuleIndex + this.nextEntryModuleIndex += e.length + const i = this.nextChunkNamePriority + this.nextChunkNamePriority += e.length + const n = await this.extendLoadModulesPromise( + Promise.all(e.map(({ id: e, importer: t }) => this.loadEntryModule(e, !0, t, null))).then((n) => { + for (const [r, o] of n.entries()) { + ;(o.isUserDefinedEntryPoint = o.isUserDefinedEntryPoint || t), uu(o, e[r], t, i + r) + const n = this.indexedEntryModules.find((e) => e.module === o) + n ? (n.index = Math.min(n.index, s + r)) : this.indexedEntryModules.push({ index: s + r, module: o }) + } + return this.indexedEntryModules.sort(({ index: e }, { index: t }) => (e > t ? 1 : -1)), n + }) + ) + return await this.awaitLoadModulesPromise(), { entryModules: this.indexedEntryModules.map(({ module: e }) => e), implicitEntryModules: [...this.implicitEntryModules], newEntryModules: n } + } + async emitChunk({ fileName: e, id: t, importer: s, name: i, implicitlyLoadedAfterOneOf: n, preserveSignature: r }) { + const o = { fileName: e || null, id: t, importer: s, name: i || null }, + a = n ? await this.addEntryWithImplicitDependants(o, n) : (await this.addEntryModules([o], !1)).newEntryModules[0] + return null != r && (a.preserveSignature = r), a + } + async preloadModule(e) { + return (await this.fetchModule(this.getResolvedIdWithDefaults(e, ge), void 0, !1, !e.resolveDependencies || lu)).info + } + addEntryWithImplicitDependants(e, t) { + const s = this.nextChunkNamePriority++ + return this.extendLoadModulesPromise( + this.loadEntryModule(e.id, !1, e.importer, null).then(async (i) => { + if ((uu(i, e, !1, s), !i.info.isEntry)) { + this.implicitEntryModules.add(i) + const s = await Promise.all(t.map((t) => this.loadEntryModule(t, !1, e.importer, i.id))) + for (const e of s) i.implicitlyLoadedAfter.add(e) + for (const e of i.implicitlyLoadedAfter) e.implicitlyLoadedBefore.add(i) + } + return i + }) + ) + } + async addModuleSource(e, t, s) { + let i + try { + i = await this.graph.fileOperationQueue.run(async () => (await this.pluginDriver.hookFirst('load', [e])) ?? (await Uh(e, 'utf8'))) + } catch (s) { + let i = `Could not load ${e}` + throw (t && (i += ` (imported by ${V(t)})`), (i += `: ${s.message}`), (s.message = i), s) + } + const n = + 'string' == typeof i + ? { code: i } + : null != i && 'object' == typeof i && 'string' == typeof i.code + ? i + : Qe( + (function (e) { + return { code: 'BAD_LOADER', message: `Error loading "${V(e)}": plugin load hook should return a string, a { code, map } object, or nothing/null.` } + })(e) + ), + r = this.graph.cachedModules.get(e) + if ( + !r || + r.customTransformCache || + r.originalCode !== n.code || + (await this.pluginDriver.hookFirst('shouldTransformCachedModule', [ + { ast: r.ast, code: r.code, id: r.id, meta: r.meta, moduleSideEffects: r.moduleSideEffects, resolvedSources: r.resolvedIds, syntheticNamedExports: r.syntheticNamedExports } + ])) + ) + s.updateOptions(n), s.setSource(await au(n, s, this.pluginDriver, this.options.onLog)) + else { + if (r.transformFiles) for (const e of r.transformFiles) this.pluginDriver.emitFile(e) + s.setSource(r) + } + } + async awaitLoadModulesPromise() { + let e + do { + ;(e = this.latestLoadModulesPromise), await e + } while (e !== this.latestLoadModulesPromise) + } + extendLoadModulesPromise(e) { + return (this.latestLoadModulesPromise = Promise.all([e, this.latestLoadModulesPromise])), this.latestLoadModulesPromise.catch(() => {}), e + } + async fetchDynamicDependencies(e, t) { + const s = await Promise.all( + t.map((t) => t.then(async ([t, s]) => (null === s ? null : 'string' == typeof s ? ((t.resolution = s), null) : (t.resolution = await this.fetchResolvedDependency(V(s.id), e.id, s))))) + ) + for (const t of s) t && (e.dynamicDependencies.add(t), t.dynamicImporters.push(e.id)) + } + async fetchModule({ assertions: e, id: t, meta: s, moduleSideEffects: i, syntheticNamedExports: n }, r, o, a) { + const l = this.modulesById.get(t) + if (l instanceof jo) return r && wo(e, l.info.assertions) && this.options.onLog(Ae, Bt(l.info.assertions, e, t, r)), await this.handleExistingModule(l, o, a), l + if (l instanceof Jt) + return Qe({ + code: 'EXTERNAL_MODULES_CANNOT_BE_TRANSFORMED_TO_MODULES', + message: `${l.id} is resolved as a module now, but it was an external module before. Please check whether there are conflicts in your Rollup options "external" and "manualChunks", manualChunks cannot include external modules.` + }) + const c = new jo(this.graph, t, this.options, o, i, n, s, e) + this.modulesById.set(t, c), (this.graph.watchFiles[t] = !0) + const h = this.addModuleSource(t, r, c).then(() => [this.getResolveStaticDependencyPromises(c), this.getResolveDynamicImportPromises(c), u]), + u = pu(h).then(() => this.pluginDriver.hookParallel('moduleParsed', [c.info])) + u.catch(() => {}), this.moduleLoadPromises.set(c, h) + const d = await h + return a ? a === lu && (await u) : await this.fetchModuleDependencies(c, ...d), c + } + async fetchModuleDependencies(e, t, s, i) { + this.modulesWithLoadedDependencies.has(e) || + (this.modulesWithLoadedDependencies.add(e), await Promise.all([this.fetchStaticDependencies(e, t), this.fetchDynamicDependencies(e, s)]), e.linkImports(), await i) + } + fetchResolvedDependency(e, t, s) { + if (s.external) { + const { assertions: i, external: n, id: r, moduleSideEffects: o, meta: a } = s + let l = this.modulesById.get(r) + if (l) { + if (!(l instanceof Jt)) + return Qe( + (function (e, t) { + return { code: 'INVALID_EXTERNAL_ID', message: `"${e}" is imported as an external by "${V(t)}", but is already an existing non-external module id.` } + })(e, t) + ) + wo(l.info.assertions, i) && this.options.onLog(Ae, Bt(l.info.assertions, i, e, t)) + } else (l = new Jt(this.options, r, o, a, 'absolute' !== n && I(r), i)), this.modulesById.set(r, l) + return Promise.resolve(l) + } + return this.fetchModule(s, t, !1, !1) + } + async fetchStaticDependencies(e, t) { + for (const s of await Promise.all(t.map((t) => t.then(([t, s]) => this.fetchResolvedDependency(t, e.id, s))))) e.dependencies.add(s), s.importers.push(e.id) + if (!this.options.treeshake || 'no-treeshake' === e.info.moduleSideEffects) for (const t of e.dependencies) t instanceof jo && (t.importedFromNotTreeshaken = !0) + } + getNormalizedResolvedIdWithoutDefaults(e, t, s) { + const { makeAbsoluteExternalsRelative: i } = this.options + if (e) { + if ('object' == typeof e) { + const n = e.external || this.options.external(e.id, t, !0) + return { ...e, external: n && ('relative' === n || !I(e.id) || (!0 === n && du(e.id, s, i)) || 'absolute') } + } + const n = this.options.external(e, t, !0) + return { external: n && (du(e, s, i) || 'absolute'), id: n && i ? hu(e, t) : e } + } + const n = i ? hu(s, t) : s + return !1 === e || this.options.external(n, t, !0) ? { external: du(n, s, i) || 'absolute', id: n } : null + } + getResolveDynamicImportPromises(e) { + return e.dynamicImports.map(async (t) => { + const s = await this.resolveDynamicImport( + e, + 'string' == typeof t.argument ? t.argument : t.argument.esTreeNode, + e.id, + (function (e) { + const t = e.arguments?.[0]?.properties.find((e) => 'assert' === Io(e))?.value + if (!t) return ge + const s = t.properties + .map((e) => { + const t = Io(e) + return 'string' == typeof t && 'string' == typeof e.value.value ? [t, e.value.value] : null + }) + .filter((e) => !!e) + return s.length > 0 ? Object.fromEntries(s) : ge + })(t.node) + ) + return s && 'object' == typeof s && (t.id = s.id), [t, s] + }) + } + getResolveStaticDependencyPromises(e) { + return Array.from(e.sourcesWithAssertions, async ([t, s]) => [t, (e.resolvedIds[t] = e.resolvedIds[t] || this.handleInvalidResolvedId(await this.resolveId(t, e.id, ge, !1, s), t, e.id, s))]) + } + getResolvedIdWithDefaults(e, t) { + if (!e) return null + const s = e.external || !1 + return { + assertions: e.assertions || t, + external: s, + id: e.id, + meta: e.meta || {}, + moduleSideEffects: e.moduleSideEffects ?? this.hasModuleSideEffects(e.id, !!s), + resolvedBy: e.resolvedBy ?? 'rollup', + syntheticNamedExports: e.syntheticNamedExports ?? !1 + } + } + async handleExistingModule(e, t, s) { + const i = this.moduleLoadPromises.get(e) + if (s) return s === lu ? pu(i) : i + if (t) { + ;(e.info.isEntry = !0), this.implicitEntryModules.delete(e) + for (const t of e.implicitlyLoadedAfter) t.implicitlyLoadedBefore.delete(e) + e.implicitlyLoadedAfter.clear() + } + return this.fetchModuleDependencies(e, ...(await i)) + } + handleInvalidResolvedId(e, t, s, i) { + return null === e + ? w(t) + ? Qe( + (function (e, t) { + return { code: _t, exporter: e, id: t, message: `Could not resolve "${e}" from "${V(t)}"` } + })(t, s) + ) + : (this.options.onLog( + Ae, + (function (e, t) { + return { + code: _t, + exporter: e, + id: t, + message: `"${e}" is imported by "${V(t)}", but could not be resolved – treating it as an external dependency.`, + url: De('troubleshooting/#warning-treating-module-as-external-dependency') + } + })(t, s) + ), + { assertions: i, external: !0, id: t, meta: {}, moduleSideEffects: this.hasModuleSideEffects(t, !0), resolvedBy: 'rollup', syntheticNamedExports: !1 }) + : (e.external && + e.syntheticNamedExports && + this.options.onLog( + Ae, + (function (e, t) { + return { code: 'EXTERNAL_SYNTHETIC_EXPORTS', exporter: e, message: `External "${e}" cannot have "syntheticNamedExports" enabled (imported by "${V(t)}").` } + })(t, s) + ), + e) + } + async loadEntryModule(e, t, s, i, n = !1) { + const r = await Wh(e, s, this.options.preserveSymlinks, this.pluginDriver, this.resolveId, null, ge, !0, ge) + if (null == r) + return Qe( + null === i + ? (function (e) { + return { code: Nt, message: `Could not resolve entry module "${V(e)}".` } + })(e) + : (function (e, t) { + return { code: Et, message: `Module "${V(e)}" that should be implicitly loaded before "${V(t)}" could not be resolved.` } + })(e, i) + ) + const o = 'object' == typeof r && r.external + return !1 === r || o + ? Qe( + null === i + ? o && n + ? { + code: 'EXTERNAL_MODULES_CANNOT_BE_INCLUDED_IN_MANUAL_CHUNKS', + message: `"${e}" cannot be included in manualChunks because it is resolved as an external module by the "external" option or plugins.` + } + : (function (e) { + return { code: Nt, message: `Entry module "${V(e)}" cannot be external.` } + })(e) + : (function (e, t) { + return { code: Et, message: `Module "${V(e)}" that should be implicitly loaded before "${V(t)}" cannot be external.` } + })(e, i) + ) + : this.fetchModule(this.getResolvedIdWithDefaults('object' == typeof r ? r : { id: r }, ge), void 0, t, !1) + } + async resolveDynamicImport(e, t, s, i) { + const n = await this.pluginDriver.hookFirst('resolveDynamicImport', [t, s, { assertions: i }]) + if ('string' != typeof t) return 'string' == typeof n ? n : n ? this.getResolvedIdWithDefaults(n, i) : null + if (null == n) { + const n = e.resolvedIds[t] + return n ? (wo(n.assertions, i) && this.options.onLog(Ae, Bt(n.assertions, i, t, s)), n) : (e.resolvedIds[t] = this.handleInvalidResolvedId(await this.resolveId(t, e.id, ge, !1, i), t, e.id, i)) + } + return this.handleInvalidResolvedId(this.getResolvedIdWithDefaults(this.getNormalizedResolvedIdWithoutDefaults(n, s, t), i), t, s, i) + } +} +function hu(e, t) { + return w(e) ? (t ? R(t, '..', e) : R(e)) : e +} +function uu(e, { fileName: t, name: s }, i, n) { + if (null !== t) e.chunkFileNames.add(t) + else if (null !== s) { + let t = 0 + for (; e.chunkNames[t]?.priority < n; ) t++ + e.chunkNames.splice(t, 0, { isUserDefined: i, name: s, priority: n }) + } +} +function du(e, t, s) { + return !0 === s || ('ifRelativeSource' === s && w(t)) || !I(e) +} +async function pu(e) { + const [t, s] = await e + return Promise.all([...t, ...s]) +} +class fu extends Ti { + constructor() { + super(), (this.parent = null), this.variables.set('undefined', new co()) + } + findVariable(e) { + let t = this.variables.get(e) + return t || ((t = new ln(e)), this.variables.set(e, t)), t + } +} +function mu(e) { + return Gl().update(e).digest('hex') +} +function gu(e, t, s, i, n) { + const r = i.sanitizeFileName(e || 'asset') + return Ma( + Ra('function' == typeof i.assetFileNames ? i.assetFileNames({ name: e, source: t, type: 'asset' }) : i.assetFileNames, 'output.assetFileNames', { + ext: () => N(r).slice(1), + extname: () => N(r), + hash: (e) => s.slice(0, Math.max(0, e || 8)), + name: () => r.slice(0, Math.max(0, r.length - N(r).length)) + }), + n + ) +} +function yu(e, { bundle: t }, s) { + t[Na].has(e.toLowerCase()) + ? s( + Ae, + (function (e) { + return { code: lt, message: `The emitted file "${e}" overwrites a previously emitted file of the same name.` } + })(e) + ) + : (t[e] = _a) +} +const xu = new Set(['chunk', 'asset', 'prebuilt-chunk']) +function Eu(e, t, s) { + if (!('string' == typeof e || e instanceof Uint8Array)) { + const e = t.fileName || t.name || s + return Qe(Xt(`Could not set source for ${'string' == typeof e ? `asset "${e}"` : 'unnamed asset'}, asset source needs to be a string, Uint8Array or Buffer.`)) + } + return e +} +function bu(e, t) { + return 'string' != typeof e.fileName + ? Qe( + ((s = e.name || t), + { + code: st, + message: `Plugin error - Unable to get file name for asset "${s}". Ensure that the source is set and that generate is called first. If you reference assets via import.meta.ROLLUP_FILE_URL_, you need to either have set their source after "renderStart" or need to provide an explicit "fileName" when emitting them.` + }) + ) + : e.fileName + var s +} +function vu(e, t) { + return e.fileName + ? e.fileName + : t + ? t.get(e.module).getFileName() + : Qe( + ((s = e.fileName || e.name), + { code: nt, message: `Plugin error - Unable to get file name for emitted chunk "${s}". You can only get file names once chunks have been generated after the "renderStart" hook.` }) + ) + var s +} +class Su { + constructor(e, t, s) { + ;(this.graph = e), + (this.options = t), + (this.facadeChunkByModule = null), + (this.nextIdBase = 1), + (this.output = null), + (this.outputFileEmitters = []), + (this.emitFile = (e) => + (function (e) { + return Boolean(e && xu.has(e.type)) + })(e) + ? 'prebuilt-chunk' === e.type + ? this.emitPrebuiltChunk(e) + : (function (e) { + const t = e.fileName || e.name + return !t || ('string' == typeof t && !B(t)) + })(e) + ? 'chunk' === e.type + ? this.emitChunk(e) + : this.emitAsset(e) + : Qe(Xt(`The "fileName" or "name" properties of emitted chunks and assets must be strings that are neither absolute nor relative paths, received "${e.fileName || e.name}".`)) + : Qe(Xt(`Emitted files must be of type "asset", "chunk" or "prebuilt-chunk", received "${e && e.type}".`))), + (this.finaliseAssets = () => { + for (const [e, t] of this.filesByReferenceId) + if ('asset' === t.type && 'string' != typeof t.fileName) return Qe({ code: 'ASSET_SOURCE_MISSING', message: `Plugin error creating asset "${t.name || e}" - no asset source set.` }) + }), + (this.getFileName = (e) => { + const t = this.filesByReferenceId.get(e) + return t + ? 'chunk' === t.type + ? vu(t, this.facadeChunkByModule) + : 'prebuilt-chunk' === t.type + ? t.fileName + : bu(t, e) + : Qe({ code: 'FILE_NOT_FOUND', message: `Plugin error - Unable to get file name for unknown file "${e}".` }) + }), + (this.setAssetSource = (e, t) => { + const s = this.filesByReferenceId.get(e) + if (!s) return Qe({ code: 'ASSET_NOT_FOUND', message: `Plugin error - Unable to set the source for unknown asset "${e}".` }) + if ('asset' !== s.type) return Qe(Xt(`Asset sources can only be set for emitted assets but "${e}" is an emitted chunk.`)) + if (void 0 !== s.source) return Qe({ code: 'ASSET_SOURCE_ALREADY_SET', message: `Unable to set the source for asset "${s.name || e}", source already set.` }) + const i = Eu(t, s, e) + if (this.output) this.finalizeAdditionalAsset(s, i, this.output) + else { + s.source = i + for (const e of this.outputFileEmitters) e.finalizeAdditionalAsset(s, i, e.output) + } + }), + (this.setChunkInformation = (e) => { + this.facadeChunkByModule = e + }), + (this.setOutputBundle = (e, t) => { + const s = (this.output = { bundle: e, fileNamesBySource: new Map(), outputOptions: t }) + for (const e of this.filesByReferenceId.values()) e.fileName && yu(e.fileName, s, this.options.onLog) + const i = new Map() + for (const e of this.filesByReferenceId.values()) + if ('asset' === e.type && void 0 !== e.source) + if (e.fileName) this.finalizeAdditionalAsset(e, e.source, s) + else { + U(i, mu(e.source), () => []).push(e) + } + else 'prebuilt-chunk' === e.type && (this.output.bundle[e.fileName] = this.createPrebuiltChunk(e)) + for (const [e, t] of i) this.finalizeAssetsWithSameSource(t, e, s) + }), + (this.filesByReferenceId = s ? new Map(s.filesByReferenceId) : new Map()), + s?.addOutputFileEmitter(this) + } + addOutputFileEmitter(e) { + this.outputFileEmitters.push(e) + } + assignReferenceId(e, t) { + let s = t + do { + s = Gl().update(s).digest('hex').slice(0, 8) + } while (this.filesByReferenceId.has(s) || this.outputFileEmitters.some(({ filesByReferenceId: e }) => e.has(s))) + ;(e.referenceId = s), this.filesByReferenceId.set(s, e) + for (const { filesByReferenceId: t } of this.outputFileEmitters) t.set(s, e) + return s + } + createPrebuiltChunk(e) { + return { + code: e.code, + dynamicImports: [], + exports: e.exports || [], + facadeModuleId: null, + fileName: e.fileName, + implicitlyLoadedBefore: [], + importedBindings: {}, + imports: [], + isDynamicEntry: !1, + isEntry: !1, + isImplicitEntry: !1, + map: e.map || null, + moduleIds: [], + modules: {}, + name: e.fileName, + preliminaryFileName: e.fileName, + referencedFiles: [], + sourcemapFileName: e.sourcemapFileName || null, + type: 'chunk' + } + } + emitAsset(e) { + const t = void 0 === e.source ? void 0 : Eu(e.source, e, null), + s = { fileName: e.fileName, name: e.name, needsCodeReference: !!e.needsCodeReference, referenceId: '', source: t, type: 'asset' }, + i = this.assignReferenceId(s, e.fileName || e.name || String(this.nextIdBase++)) + if (this.output) this.emitAssetWithReferenceId(s, this.output) + else for (const e of this.outputFileEmitters) e.emitAssetWithReferenceId(s, e.output) + return i + } + emitAssetWithReferenceId(e, t) { + const { fileName: s, source: i } = e + s && yu(s, t, this.options.onLog), void 0 !== i && this.finalizeAdditionalAsset(e, i, t) + } + emitChunk(e) { + if (this.graph.phase > bo.LOAD_AND_PARSE) return Qe({ code: mt, message: 'Cannot emit chunks after module loading has finished.' }) + if ('string' != typeof e.id) return Qe(Xt(`Emitted chunks need to have a valid string id, received "${e.id}"`)) + const t = { fileName: e.fileName, module: null, name: e.name || e.id, referenceId: '', type: 'chunk' } + return ( + this.graph.moduleLoader + .emitChunk(e) + .then((e) => (t.module = e)) + .catch(() => {}), + this.assignReferenceId(t, e.id) + ) + } + emitPrebuiltChunk(e) { + if ('string' != typeof e.code) return Qe(Xt(`Emitted prebuilt chunks need to have a valid string code, received "${e.code}".`)) + if ('string' != typeof e.fileName || B(e.fileName)) + return Qe(Xt(`The "fileName" property of emitted prebuilt chunks must be strings that are neither absolute nor relative paths, received "${e.fileName}".`)) + const t = { code: e.code, exports: e.exports, fileName: e.fileName, map: e.map, referenceId: '', type: 'prebuilt-chunk' }, + s = this.assignReferenceId(t, t.fileName) + return this.output && (this.output.bundle[t.fileName] = this.createPrebuiltChunk(t)), s + } + finalizeAdditionalAsset(e, t, { bundle: s, fileNamesBySource: i, outputOptions: n }) { + let { fileName: r, needsCodeReference: o, referenceId: a } = e + if (!r) { + const o = mu(t) + ;(r = i.get(o)), r || ((r = gu(e.name, t, o, n, s)), i.set(o, r)) + } + const l = { ...e, fileName: r, source: t } + this.filesByReferenceId.set(a, l) + const c = s[r] + 'asset' === c?.type ? c.needsCodeReference && (c.needsCodeReference = o) : (s[r] = { fileName: r, name: e.name, needsCodeReference: o, source: t, type: 'asset' }) + } + finalizeAssetsWithSameSource(e, t, { bundle: s, fileNamesBySource: i, outputOptions: n }) { + let r, + o = '', + a = !0 + for (const i of e) { + a && (a = i.needsCodeReference) + const e = gu(i.name, i.source, t, n, s) + ;(!o || e.length < o.length || (e.length === o.length && e < o)) && ((o = e), (r = i)) + } + i.set(t, o) + for (const t of e) { + const e = { ...t, fileName: o } + this.filesByReferenceId.set(t.referenceId, e) + } + s[o] = { fileName: o, name: r.name, needsCodeReference: a, source: r.source, type: 'asset' } + } +} +function Au(e, t, s, i, n) { + return we[e] < we[n] + ? Ui + : (n, r) => { + null != r && s(Ae, { code: dt, message: `Plugin "${i}" tried to add a file position to a log or warning. This is only supported in the "transform" hook at the moment and will be ignored.` }), + (n = Jh(n)).code && !n.pluginCode && (n.pluginCode = n.code), + (n.code = t), + (n.plugin = i), + s(e, n) + } +} +function ku(t, s, i, n, r, o) { + const { logLevel: a, onLog: l } = n + let c, + h = !0 + if (('string' != typeof t.cacheKey && (t.name.startsWith(qh) || t.name.startsWith(Hh) || o.has(t.name) ? (h = !1) : o.add(t.name)), s)) + if (h) { + const e = t.cacheKey || t.name + ;(d = s[e] || (s[e] = Object.create(null))), + (c = { + delete: (e) => delete d[e], + get(e) { + const t = d[e] + if (t) return (t[0] = 0), t[1] + }, + has(e) { + const t = d[e] + return !!t && ((t[0] = 0), !0) + }, + set(e, t) { + d[e] = [0, t] + } + }) + } else (u = t.name), (c = { delete: () => Yh(u), get: () => Yh(u), has: () => Yh(u), set: () => Yh(u) }) + else c = Kh + var u, d + return { + addWatchFile(e) { + if (i.phase >= bo.GENERATE) return this.error({ code: mt, message: 'Cannot call "addWatchFile" after the build has finished.' }) + i.watchFiles[e] = !0 + }, + cache: c, + debug: Au(Ie, 'PLUGIN_LOG', l, t.name, a), + emitFile: r.emitFile.bind(r), + error: (e) => Qe(qt(Jh(e), t.name)), + getFileName: r.getFileName, + getModuleIds: () => i.modulesById.keys(), + getModuleInfo: i.getModuleInfo, + getWatchFiles: () => Object.keys(i.watchFiles), + info: Au(ke, 'PLUGIN_LOG', l, t.name, a), + load: (e) => i.moduleLoader.preloadModule(e), + meta: { rollupVersion: e, watchMode: i.watchMode }, + get moduleIds() { + const e = i.modulesById.keys() + return (function* () { + Qt( + `Accessing "this.moduleIds" on the plugin context by plugin ${t.name} is deprecated. The "this.getModuleIds" plugin context function should be used instead.`, + 'plugin-development/#this-getmoduleids', + !0, + n, + t.name + ), + yield* e + })() + }, + parse: i.contextParse.bind(i), + resolve: (e, s, { assertions: n, custom: r, isEntry: o, skipSelf: a } = me) => i.moduleLoader.resolveId(e, s, r, o, n || ge, a ? [{ importer: s, plugin: t, source: e }] : null), + setAssetSource: r.setAssetSource, + warn: Au(Ae, 'PLUGIN_WARNING', l, t.name, a) + } +} +const Iu = Object.keys({ + buildEnd: 1, + buildStart: 1, + closeBundle: 1, + closeWatcher: 1, + load: 1, + moduleParsed: 1, + onLog: 1, + options: 1, + resolveDynamicImport: 1, + resolveId: 1, + shouldTransformCachedModule: 1, + transform: 1, + watchChange: 1 +}) +class wu { + constructor(e, t, s, i, n) { + ;(this.graph = e), + (this.options = t), + (this.pluginCache = i), + (this.sortedPlugins = new Map()), + (this.unfulfilledActions = new Set()), + (this.fileEmitter = new Su(e, t, n && n.fileEmitter)), + (this.emitFile = this.fileEmitter.emitFile.bind(this.fileEmitter)), + (this.getFileName = this.fileEmitter.getFileName.bind(this.fileEmitter)), + (this.finaliseAssets = this.fileEmitter.finaliseAssets.bind(this.fileEmitter)), + (this.setChunkInformation = this.fileEmitter.setChunkInformation.bind(this.fileEmitter)), + (this.setOutputBundle = this.fileEmitter.setOutputBundle.bind(this.fileEmitter)), + (this.plugins = [...(n ? n.plugins : []), ...s]) + const r = new Set() + if (((this.pluginContexts = new Map(this.plugins.map((s) => [s, ku(s, i, e, t, this.fileEmitter, r)]))), n)) + for (const e of s) + for (const s of Iu) + s in e && + t.onLog( + Ae, + ((o = e.name), + { + code: 'INPUT_HOOK_IN_OUTPUT_PLUGIN', + message: `The "${s}" hook used by the output plugin ${o} is a build time hook and will not be run for that plugin. Either this plugin cannot be used as an output plugin, or it should have an option to configure it as an output plugin.` + }) + ) + var o + } + createOutputPluginDriver(e) { + return new wu(this.graph, this.options, e, this.pluginCache, this) + } + getUnfulfilledHookActions() { + return this.unfulfilledActions + } + hookFirst(e, t, s, i) { + return this.hookFirstAndGetPlugin(e, t, s, i).then((e) => e && e[0]) + } + async hookFirstAndGetPlugin(e, t, s, i) { + for (const n of this.getSortedPlugins(e)) { + if (i?.has(n)) continue + const r = await this.runHook(e, t, n, s) + if (null != r) return [r, n] + } + return null + } + hookFirstSync(e, t, s) { + for (const i of this.getSortedPlugins(e)) { + const n = this.runHookSync(e, t, i, s) + if (null != n) return n + } + return null + } + async hookParallel(e, t, s) { + const i = [] + for (const n of this.getSortedPlugins(e)) n[e].sequential ? (await Promise.all(i), (i.length = 0), await this.runHook(e, t, n, s)) : i.push(this.runHook(e, t, n, s)) + await Promise.all(i) + } + hookReduceArg0(e, [t, ...s], i, n) { + let r = Promise.resolve(t) + for (const t of this.getSortedPlugins(e)) r = r.then((r) => this.runHook(e, [r, ...s], t, n).then((e) => i.call(this.pluginContexts.get(t), r, e, t))) + return r + } + hookReduceArg0Sync(e, [t, ...s], i, n) { + for (const r of this.getSortedPlugins(e)) { + const o = [t, ...s], + a = this.runHookSync(e, o, r, n) + t = i.call(this.pluginContexts.get(r), t, a, r) + } + return t + } + async hookReduceValue(e, t, s, i) { + const n = [], + r = [] + for (const t of this.getSortedPlugins(e, $u)) t[e].sequential ? (n.push(...(await Promise.all(r))), (r.length = 0), n.push(await this.runHook(e, s, t))) : r.push(this.runHook(e, s, t)) + return n.push(...(await Promise.all(r))), n.reduce(i, await t) + } + hookReduceValueSync(e, t, s, i, n) { + let r = t + for (const t of this.getSortedPlugins(e)) { + const o = this.runHookSync(e, s, t, n) + r = i.call(this.pluginContexts.get(t), r, o, t) + } + return r + } + hookSeq(e, t, s) { + let i = Promise.resolve() + for (const n of this.getSortedPlugins(e)) i = i.then(() => this.runHook(e, t, n, s)) + return i.then(Nu) + } + getSortedPlugins(e, t) { + return U(this.sortedPlugins, e, () => Pu(e, this.plugins, t)) + } + runHook(e, t, s, i) { + const n = s[e], + r = 'object' == typeof n ? n.handler : n + let o = this.pluginContexts.get(s) + i && (o = i(o, s)) + let a = null + return Promise.resolve() + .then(() => { + if ('function' != typeof r) return r + const i = r.apply(o, t) + return i?.then ? ((a = [s.name, e, t]), this.unfulfilledActions.add(a), Promise.resolve(i).then((e) => (this.unfulfilledActions.delete(a), e))) : i + }) + .catch((t) => (null !== a && this.unfulfilledActions.delete(a), Qe(qt(t, s.name, { hook: e })))) + } + runHookSync(e, t, s, i) { + const n = s[e], + r = 'object' == typeof n ? n.handler : n + let o = this.pluginContexts.get(s) + i && (o = i(o, s)) + try { + return r.apply(o, t) + } catch (t) { + return Qe(qt(t, s.name, { hook: e })) + } + } +} +function Pu(e, t, s = Cu) { + const i = [], + n = [], + r = [] + for (const o of t) { + const t = o[e] + if (t) { + if ('object' == typeof t) { + if ((s(t.handler, e, o), 'pre' === t.order)) { + i.push(o) + continue + } + if ('post' === t.order) { + r.push(o) + continue + } + } else s(t, e, o) + n.push(o) + } + } + return [...i, ...n, ...r] +} +function Cu(e, t, s) { + 'function' != typeof e && + Qe( + (function (e, t) { + return { code: ft, hook: e, message: `Error running plugin hook "${e}" for plugin "${t}", expected a function hook or an object with a "handler" function.`, plugin: t } + })(t, s.name) + ) +} +function $u(e, t, s) { + if ('string' != typeof e && 'function' != typeof e) + return Qe( + (function (e, t) { + return { code: ft, hook: e, message: `Error running plugin hook "${e}" for plugin "${t}", expected a string, a function hook or an object with a "handler" string or function.`, plugin: t } + })(t, s.name) + ) +} +function Nu() {} +class _u { + constructor(e) { + ;(this.maxParallel = e), (this.queue = []), (this.workerCount = 0) + } + run(e) { + return new Promise((t, s) => { + this.queue.push({ reject: s, resolve: t, task: e }), this.work() + }) + } + async work() { + if (this.workerCount >= this.maxParallel) return + let e + for (this.workerCount++; (e = this.queue.shift()); ) { + const { reject: t, resolve: s, task: i } = e + try { + s(await i()) + } catch (e) { + t(e) + } + } + this.workerCount-- + } +} +class Ru { + constructor(e, t) { + if ( + ((this.options = e), + (this.astLru = (function (e) { + var t, + s, + i, + n = e || 1 + function r(e, r) { + ++t > n && ((i = s), o(1), ++t), (s[e] = r) + } + function o(e) { + ;(t = 0), (s = Object.create(null)), e || (i = Object.create(null)) + } + return ( + o(), + { + clear: o, + has: function (e) { + return void 0 !== s[e] || void 0 !== i[e] + }, + get: function (e) { + var t = s[e] + return void 0 !== t ? t : void 0 !== (t = i[e]) ? (r(e, t), t) : void 0 + }, + set: function (e, t) { + void 0 !== s[e] ? (s[e] = t) : r(e, t) + } + } + ) + })(5)), + (this.cachedModules = new Map()), + (this.deoptimizationTracker = new te()), + (this.entryModules = []), + (this.modulesById = new Map()), + (this.needsTreeshakingPass = !1), + (this.phase = bo.LOAD_AND_PARSE), + (this.scope = new fu()), + (this.watchFiles = Object.create(null)), + (this.watchMode = !1), + (this.externalModules = []), + (this.implicitEntryModules = []), + (this.modules = []), + (this.getModuleInfo = (e) => { + const t = this.modulesById.get(e) + return t ? t.info : null + }), + !1 !== e.cache) + ) { + if (e.cache?.modules) for (const t of e.cache.modules) this.cachedModules.set(t.id, t) + this.pluginCache = e.cache?.plugins || Object.create(null) + for (const e in this.pluginCache) { + const t = this.pluginCache[e] + for (const e of Object.values(t)) e[0]++ + } + } + if (t) { + this.watchMode = !0 + const e = (...e) => this.pluginDriver.hookParallel('watchChange', e), + s = () => this.pluginDriver.hookParallel('closeWatcher', []) + t.onCurrentRun('change', e), t.onCurrentRun('close', s) + } + ;(this.pluginDriver = new wu(this, e, e.plugins, this.pluginCache)), + (this.acornParser = Tc.extend(...e.acornInjectPlugins)), + (this.moduleLoader = new cu(this, this.modulesById, this.options, this.pluginDriver)), + (this.fileOperationQueue = new _u(e.maxParallelFileOps)), + (this.pureFunctions = (({ treeshake: e }) => { + const t = Object.create(null) + for (const s of e ? e.manualPureFunctions : []) { + let e = t + for (const t of s.split('.')) e = e[t] || (e[t] = Object.create(null)) + e[ji] = !0 + } + return t + })(e)) + } + async build() { + Oo('generate module graph', 2), + await this.generateModuleGraph(), + Do('generate module graph', 2), + Oo('sort and bind modules', 2), + (this.phase = bo.ANALYSE), + this.sortModules(), + Do('sort and bind modules', 2), + Oo('mark included statements', 2), + this.includeStatements(), + Do('mark included statements', 2), + (this.phase = bo.GENERATE) + } + contextParse(e, t = {}) { + const s = t.onComment, + i = [] + t.onComment = s && 'function' == typeof s ? (e, n, r, o, ...a) => (i.push({ end: o, start: r, type: e ? 'Block' : 'Line', value: n }), s.call(t, e, n, r, o, ...a)) : i + const n = this.acornParser.parse(e, { ...this.options.acorn, ...t }) + return ( + 'object' == typeof s && s.push(...i), + (t.onComment = s), + (function (e, t, s) { + const i = [], + n = [] + for (const t of e) { + for (const [e, s] of Xs) s.test(t.value) && i.push({ ...t, annotationType: e }) + js.test(t.value) && n.push(t) + } + for (const e of n) Qs(t, e, !1) + Ws(t, { annotationIndex: 0, annotations: i, code: s }) + })(i, n, e), + n + ) + } + getCache() { + for (const e in this.pluginCache) { + const t = this.pluginCache[e] + let s = !0 + for (const [e, i] of Object.entries(t)) i[0] >= this.options.experimentalCacheExpiry ? delete t[e] : (s = !1) + s && delete this.pluginCache[e] + } + return { modules: this.modules.map((e) => e.toJSON()), plugins: this.pluginCache } + } + async generateModuleGraph() { + var e + if ( + (({ entryModules: this.entryModules, implicitEntryModules: this.implicitEntryModules } = await this.moduleLoader.addEntryModules( + ((e = this.options.input), + Array.isArray(e) + ? e.map((e) => ({ fileName: null, id: e, implicitlyLoadedAfter: [], importer: void 0, name: null })) + : Object.entries(e).map(([e, t]) => ({ fileName: null, id: t, implicitlyLoadedAfter: [], importer: void 0, name: e }))), + !0 + )), + 0 === this.entryModules.length) + ) + throw new Error('You must supply options.input to rollup') + for (const e of this.modulesById.values()) e instanceof jo ? this.modules.push(e) : this.externalModules.push(e) + } + includeStatements() { + const e = [...this.entryModules, ...this.implicitEntryModules] + for (const t of e) Vo(t) + if (this.options.treeshake) { + let t = 1 + do { + Oo(`treeshaking pass ${t}`, 3), (this.needsTreeshakingPass = !1) + for (const e of this.modules) e.isExecuted && ('no-treeshake' === e.info.moduleSideEffects ? e.includeAllInBundle() : e.include()) + if (1 === t) for (const t of e) !1 !== t.preserveSignature && (t.includeAllExports(!1), (this.needsTreeshakingPass = !0)) + Do('treeshaking pass ' + t++, 3) + } while (this.needsTreeshakingPass) + } else for (const e of this.modules) e.includeAllInBundle() + for (const e of this.externalModules) e.warnUnusedImports() + for (const e of this.implicitEntryModules) for (const t of e.implicitlyLoadedAfter) t.info.isEntry || t.isIncluded() || Qe(Gt(t)) + } + sortModules() { + const { orderedModules: e, cyclePaths: t } = (function (e) { + let t = 0 + const s = [], + i = new Set(), + n = new Set(), + r = new Map(), + o = [], + a = (e) => { + if (e instanceof jo) { + for (const t of e.dependencies) r.has(t) ? i.has(t) || s.push(Ja(t, e, r)) : (r.set(t, e), a(t)) + for (const t of e.implicitlyLoadedBefore) n.add(t) + for (const { resolution: t } of e.dynamicImports) t instanceof jo && n.add(t) + o.push(e) + } + ;(e.execIndex = t++), i.add(e) + } + for (const t of e) r.has(t) || (r.set(t, null), a(t)) + for (const e of n) r.has(e) || (r.set(e, null), a(e)) + return { cyclePaths: s, orderedModules: o } + })(this.entryModules) + for (const e of t) this.options.onLog(Ae, Lt(e)) + this.modules = e + for (const e of this.modules) e.bindReferences() + this.warnForMissingExports() + } + warnForMissingExports() { + for (const e of this.modules) for (const t of e.importDescriptions.values()) '*' === t.name || t.module.getVariableForExportName(t.name)[0] || e.log(Ae, Ut(t.name, e.id, t.module.id), t.start) + } +} +function Mu(e, t) { + return t() +} +function Ou(t, s, i, n) { + t = Pu('onLog', t) + const r = we[n], + o = (n, a, l = xe) => { + if (!(we[n] < r)) { + for (const s of t) { + if (l.has(s)) continue + const { onLog: t } = s, + c = (e) => (we[e] < r ? Ui : (t) => o(e, Jh(t), new Set(l).add(s))) + if (!1 === ('handler' in t ? t.handler : t).call({ debug: c(Ie), error: (e) => Qe(Jh(e)), info: c(ke), meta: { rollupVersion: e, watchMode: i }, warn: c(Ae) }, n, a)) return + } + s(n, a) + } + } + return o +} +const Du = '{'.charCodeAt(0), + Lu = ' '.charCodeAt(0), + Tu = 'assert' +function Vu(e) { + const t = e.acorn || zh, + { tokTypes: s, TokenType: i } = t + return class extends e { + constructor(...e) { + super(...e), (this.assertToken = new i(Tu)) + } + _codeAt(e) { + return this.input.charCodeAt(e) + } + _eat(e) { + this.type !== e && this.unexpected(), this.next() + } + readToken(e) { + let t = 0 + for (; t < 6; t++) if (this._codeAt(this.pos + t) !== Tu.charCodeAt(t)) return super.readToken(e) + for (; this._codeAt(this.pos + t) !== Du; t++) if (this._codeAt(this.pos + t) !== Lu) return super.readToken(e) + return '{' === this.type.label ? super.readToken(e) : ((this.pos += 6), this.finishToken(this.assertToken)) + } + parseDynamicImport(e) { + if ((this.next(), (e.source = this.parseMaybeAssign()), this.eat(s.comma))) { + const t = this.parseObj(!1) + e.arguments = [t] + } + return this._eat(s.parenR), this.finishNode(e, 'ImportExpression') + } + parseExport(e, t) { + if ((this.next(), this.eat(s.star))) { + if ( + (this.options.ecmaVersion >= 11 && (this.eatContextual('as') ? ((e.exported = this.parseIdent(!0)), this.checkExport(t, e.exported.name, this.lastTokStart)) : (e.exported = null)), + this.expectContextual('from'), + this.type !== s.string && this.unexpected(), + (e.source = this.parseExprAtom()), + this.type === this.assertToken || this.type === s._with) + ) { + this.next() + const t = this.parseImportAssertions() + t && (e.assertions = t) + } + return this.semicolon(), this.finishNode(e, 'ExportAllDeclaration') + } + if (this.eat(s._default)) { + var i + if ((this.checkExport(t, 'default', this.lastTokStart), this.type === s._function || (i = this.isAsyncFunction()))) { + var n = this.startNode() + this.next(), i && this.next(), (e.declaration = this.parseFunction(n, 5, !1, i)) + } else if (this.type === s._class) { + var r = this.startNode() + e.declaration = this.parseClass(r, 'nullableID') + } else (e.declaration = this.parseMaybeAssign()), this.semicolon() + return this.finishNode(e, 'ExportDefaultDeclaration') + } + if (this.shouldParseExportStatement()) + (e.declaration = this.parseStatement(null)), + 'VariableDeclaration' === e.declaration.type ? this.checkVariableExport(t, e.declaration.declarations) : this.checkExport(t, e.declaration.id.name, e.declaration.id.start), + (e.specifiers = []), + (e.source = null) + else { + if (((e.declaration = null), (e.specifiers = this.parseExportSpecifiers(t)), this.eatContextual('from'))) { + if ((this.type !== s.string && this.unexpected(), (e.source = this.parseExprAtom()), this.type === this.assertToken || this.type === s._with)) { + this.next() + const t = this.parseImportAssertions() + t && (e.assertions = t) + } + } else { + for (var o = 0, a = e.specifiers; o < a.length; o += 1) { + var l = a[o] + this.checkUnreserved(l.local), this.checkLocalExport(l.local) + } + e.source = null + } + this.semicolon() + } + return this.finishNode(e, 'ExportNamedDeclaration') + } + parseImport(e) { + if ( + (this.next(), + this.type === s.string + ? ((e.specifiers = []), (e.source = this.parseExprAtom())) + : ((e.specifiers = this.parseImportSpecifiers()), this.expectContextual('from'), (e.source = this.type === s.string ? this.parseExprAtom() : this.unexpected())), + this.type === this.assertToken || this.type == s._with) + ) { + this.next() + const t = this.parseImportAssertions() + t && (e.assertions = t) + } + return this.semicolon(), this.finishNode(e, 'ImportDeclaration') + } + parseImportAssertions() { + this._eat(s.braceL) + const e = this.parseAssertEntries() + return this._eat(s.braceR), e + } + parseAssertEntries() { + const e = [], + t = new Set() + do { + if (this.type === s.braceR) break + const i = this.startNode() + let n + ;(n = this.type === s.string ? this.parseLiteral(this.value) : this.parseIdent(!0)), + this.next(), + (i.key = n), + t.has(i.key.name) && this.raise(this.pos, 'Duplicated key in assertions'), + t.add(i.key.name), + this.type !== s.string && this.raise(this.pos, 'Only string is supported as an assertion value'), + (i.value = this.parseLiteral(this.value)), + e.push(this.finishNode(i, 'ImportAttribute')) + } while (this.eat(s.comma)) + return e + } + } +} +function Bu(e) { + return Array.isArray(e) ? e.filter(Boolean) : e ? [e] : [] +} +const zu = (e) => ({ ecmaVersion: 'latest', sourceType: 'module', ...e.acorn }), + Fu = (e) => [Vu, ...Bu(e.acornInjectPlugins)], + ju = (e) => (!0 === e.cache ? void 0 : e.cache?.cache || e.cache), + Uu = (e) => { + if (!0 === e) return () => !0 + if ('function' == typeof e) return (t, ...s) => (!t.startsWith('\0') && e(t, ...s)) || !1 + if (e) { + const t = new Set(), + s = [] + for (const i of Bu(e)) i instanceof RegExp ? s.push(i) : t.add(i) + return (e, ...i) => t.has(e) || s.some((t) => t.test(e)) + } + return () => !1 + }, + Gu = (e, t, s) => { + const i = e.inlineDynamicImports + return i && Zt('The "inlineDynamicImports" option is deprecated. Use the "output.inlineDynamicImports" option instead.', We, !0, t, s), i + }, + Wu = (e) => { + const t = e.input + return null == t ? [] : 'string' == typeof t ? [t] : t + }, + qu = (e, t, s) => { + const i = e.manualChunks + return i && Zt('The "manualChunks" option is deprecated. Use the "output.manualChunks" option instead.', He, !0, t, s), i + }, + Hu = (e, t, s) => { + const i = e.maxParallelFileReads + 'number' == typeof i && Zt('The "maxParallelFileReads" option is deprecated. Use the "maxParallelFileOps" option instead.', 'configuration-options/#maxparallelfileops', !0, t, s) + const n = e.maxParallelFileOps ?? i + return 'number' == typeof n ? (n <= 0 ? 1 / 0 : n) : 20 + }, + Ku = (e, t) => { + const s = e.moduleContext + if ('function' == typeof s) return (e) => s(e) ?? t + if (s) { + const e = Object.create(null) + for (const [t, i] of Object.entries(s)) e[R(t)] = i + return (s) => e[s] ?? t + } + return () => t + }, + Yu = (e, t, s) => { + const i = e.preserveModules + return i && Zt('The "preserveModules" option is deprecated. Use the "output.preserveModules" option instead.', 'configuration-options/#output-preservemodules', !0, t, s), i + }, + Xu = (e) => { + if (!1 === e.treeshake) return !1 + const t = ru(e.treeshake, iu, 'treeshake', 'configuration-options/#treeshake', 'false, true, ') + return { + annotations: !1 !== t.annotations, + correctVarValueBeforeDeclaration: !0 === t.correctVarValueBeforeDeclaration, + manualPureFunctions: t.manualPureFunctions ?? ye, + moduleSideEffects: Qu(t.moduleSideEffects), + propertyReadSideEffects: 'always' === t.propertyReadSideEffects ? 'always' : !1 !== t.propertyReadSideEffects, + tryCatchDeoptimization: !1 !== t.tryCatchDeoptimization, + unknownGlobalSideEffects: !1 !== t.unknownGlobalSideEffects + } + }, + Qu = (e) => { + if ('boolean' == typeof e) return () => e + if ('no-external' === e) return (e, t) => !t + if ('function' == typeof e) return (t, s) => !!t.startsWith('\0') || !1 !== e(t, s) + if (Array.isArray(e)) { + const t = new Set(e) + return (e) => t.has(e) + } + return e && Qe(jt('treeshake.moduleSideEffects', 'configuration-options/#treeshake-modulesideeffects', 'please use one of false, "no-external", a function or an array')), () => !0 + }, + Zu = /[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g, + Ju = /^[a-z]:/i +function ed(e) { + const t = Ju.exec(e), + s = t ? t[0] : '' + return s + e.slice(s.length).replace(Zu, '_') +} +const td = (e, t, s) => { + const { file: i } = e + if ('string' == typeof i) { + if (t) return Qe(jt('output.file', Be, 'you must set "output.dir" instead of "output.file" when using the "output.preserveModules" option')) + if (!Array.isArray(s.input)) return Qe(jt('output.file', Be, 'you must set "output.dir" instead of "output.file" when providing named inputs')) + } + return i + }, + sd = (e) => { + const t = e.format + switch (t) { + case void 0: + case 'es': + case 'esm': + case 'module': + return 'es' + case 'cjs': + case 'commonjs': + return 'cjs' + case 'system': + case 'systemjs': + return 'system' + case 'amd': + case 'iife': + case 'umd': + return t + default: + return Qe(jt('output.format', je, 'Valid values are "amd", "cjs", "system", "es", "iife" or "umd"', t)) + } + }, + id = (e, t) => { + const s = (e.inlineDynamicImports ?? t.inlineDynamicImports) || !1, + { input: i } = t + return s && (Array.isArray(i) ? i : Object.keys(i)).length > 1 ? Qe(jt('output.inlineDynamicImports', We, 'multiple inputs are not supported when "output.inlineDynamicImports" is true')) : s + }, + nd = (e, t, s) => { + const i = (e.preserveModules ?? s.preserveModules) || !1 + if (i) { + if (t) return Qe(jt('output.inlineDynamicImports', We, 'this option is not supported for "output.preserveModules"')) + if (!1 === s.preserveEntrySignatures) + return Qe(jt('preserveEntrySignatures', 'configuration-options/#preserveentrysignatures', 'setting this option to false is not supported for "output.preserveModules"')) + } + return i + }, + rd = (e, t) => { + const s = e.preferConst + return ( + null != s && + Qt('The "output.preferConst" option is deprecated. Use the "output.generatedCode.constBindings" option instead.', 'configuration-options/#output-generatedcode-constbindings', !0, t), + !!s + ) + }, + od = (e) => { + const { preserveModulesRoot: t } = e + if (null != t) return R(t) + }, + ad = (e) => { + const t = { autoId: !1, basePath: '', define: 'define', forceJsExtensionForImports: !1, ...e.amd } + return (t.autoId || t.basePath) && t.id + ? Qe(jt('output.amd.id', Ve, 'this option cannot be used together with "output.amd.autoId"/"output.amd.basePath"')) + : t.basePath && !t.autoId + ? Qe(jt('output.amd.basePath', 'configuration-options/#output-amd-basepath', 'this option only works with "output.amd.autoId"')) + : t.autoId + ? { autoId: !0, basePath: t.basePath, define: t.define, forceJsExtensionForImports: t.forceJsExtensionForImports } + : { autoId: !1, define: t.define, forceJsExtensionForImports: t.forceJsExtensionForImports, id: t.id } + }, + ld = (e, t) => { + const s = e[t] + return 'function' == typeof s ? s : () => s || '' + }, + cd = (e, t) => { + const { dir: s } = e + return 'string' == typeof s && 'string' == typeof t ? Qe(jt('output.dir', Be, 'you must set either "output.file" for a single-file build or "output.dir" when generating multiple chunks')) : s + }, + hd = (e, t, s) => { + const i = e.dynamicImportFunction + return ( + i && + (Qt('The "output.dynamicImportFunction" option is deprecated. Use the "renderDynamicImport" plugin hook instead.', 'plugin-development/#renderdynamicimport', !0, t), + 'es' !== s && t.onLog(Ae, jt('output.dynamicImportFunction', 'configuration-options/#output-dynamicimportfunction', 'this option is ignored for formats other than "es"'))), + i + ) + }, + ud = (e, t) => { + const s = e.entryFileNames + return null == s && t.add('entryFileNames'), s ?? '[name].js' + } +function dd(e, t) { + const s = e.experimentalDeepDynamicChunkOptimization + return ( + null != s && Qt('The "output.experimentalDeepDynamicChunkOptimization" option is deprecated as Rollup always runs the full chunking algorithm now. The option should be removed.', Ue, !0, t), + s || !1 + ) +} +function pd(e, t) { + const s = e.exports + if (null == s) t.add('exports') + else if (!['default', 'named', 'none', 'auto'].includes(s)) + return Qe({ code: ut, message: `"output.exports" must be "default", "named", "none", "auto", or left unspecified (defaults to "auto"), received "${s}".`, url: De(ze) }) + return s || 'auto' +} +const fd = (e, t) => { + const s = ru(e.generatedCode, nu, 'output.generatedCode', 'configuration-options/#output-generatedcode', '') + return { + arrowFunctions: !0 === s.arrowFunctions, + constBindings: !0 === s.constBindings || t, + objectShorthand: !0 === s.objectShorthand, + reservedNamesAsProps: !1 !== s.reservedNamesAsProps, + symbols: !0 === s.symbols + } + }, + md = (e, t) => { + if (t) return '' + const s = e.indent + return !1 === s ? '' : s ?? !0 + }, + gd = new Set(['compat', 'auto', 'esModule', 'default', 'defaultOnly']), + yd = (e) => { + const t = e.interop + if ('function' == typeof t) { + const e = Object.create(null) + let s = null + return (i) => (null === i ? s || xd((s = t(i))) : i in e ? e[i] : xd((e[i] = t(i)))) + } + return void 0 === t ? () => 'default' : () => xd(t) + }, + xd = (e) => (gd.has(e) ? e : Qe(jt('output.interop', qe, `use one of ${Array.from(gd, (e) => JSON.stringify(e)).join(', ')}`, e))), + Ed = (e, t, s, i) => { + const n = e.manualChunks || i.manualChunks + if (n) { + if (t) return Qe(jt('output.manualChunks', He, 'this option is not supported for "output.inlineDynamicImports"')) + if (s) return Qe(jt('output.manualChunks', He, 'this option is not supported for "output.preserveModules"')) + } + return n || {} + }, + bd = (e, t, s) => e.minifyInternalExports ?? (s || 'es' === t || 'system' === t), + vd = (e, t, s) => { + const i = e.namespaceToStringTag + return null != i + ? (Qt('The "output.namespaceToStringTag" option is deprecated. Use the "output.generatedCode.symbols" option instead.', 'configuration-options/#output-generatedcode-symbols', !0, s), i) + : t.symbols || !1 + }, + Sd = (e, t) => { + const s = e.sourcemapFileNames + return null == s && t.add('sourcemapFileNames'), s + }, + Ad = (e) => { + const { sourcemapBaseUrl: t } = e + if (t) + return (function (e) { + try { + new URL(e) + } catch { + return !1 + } + return !0 + })(t) + ? (s = t).endsWith('/') + ? s + : s + '/' + : Qe(jt('output.sourcemapBaseUrl', 'configuration-options/#output-sourcemapbaseurl', `must be a valid URL, received ${JSON.stringify(t)}`)) + var s + } +function kd(t) { + return (async function (t, s) { + const { options: i, unsetOptions: n } = await (async function (t, s) { + if (!t) throw new Error('You must supply an options object to rollup') + const i = await (async function (t, s) { + const i = Pu('options', await ou(t.plugins)), + n = t.logLevel || ke, + r = Ou(i, Xh(t, n), s, n) + for (const o of i) { + const { name: i, options: a } = o, + l = 'handler' in a ? a.handler : a, + c = await l.call( + { + debug: Au(Ie, 'PLUGIN_LOG', r, i, n), + error: (e) => Qe(qt(Jh(e), i, { hook: 'onLog' })), + info: Au(ke, 'PLUGIN_LOG', r, i, n), + meta: { rollupVersion: e, watchMode: s }, + warn: Au(Ae, 'PLUGIN_WARNING', r, i, n) + }, + t + ) + c && (t = c) + } + return t + })(t, s), + { options: n, unsetOptions: r } = await (async function (e, t) { + const s = new Set(), + i = e.context ?? 'undefined', + n = await ou(e.plugins), + r = e.logLevel || ke, + o = Ou(n, Xh(e, r), t, r), + a = e.strictDeprecations || !1, + l = Hu(e, o, a), + c = { + acorn: zu(e), + acornInjectPlugins: Fu(e), + cache: ju(e), + context: i, + experimentalCacheExpiry: e.experimentalCacheExpiry ?? 10, + experimentalLogSideEffects: e.experimentalLogSideEffects || !1, + external: Uu(e.external), + inlineDynamicImports: Gu(e, o, a), + input: Wu(e), + logLevel: r, + makeAbsoluteExternalsRelative: e.makeAbsoluteExternalsRelative ?? 'ifRelativeSource', + manualChunks: qu(e, o, a), + maxParallelFileOps: l, + maxParallelFileReads: l, + moduleContext: Ku(e, i), + onLog: o, + onwarn: (e) => o(Ae, e), + perf: e.perf || !1, + plugins: n, + preserveEntrySignatures: e.preserveEntrySignatures ?? 'exports-only', + preserveModules: Yu(e, o, a), + preserveSymlinks: e.preserveSymlinks || !1, + shimMissingExports: e.shimMissingExports || !1, + strictDeprecations: a, + treeshake: Xu(e) + } + return su(e, [...Object.keys(c), 'watch'], 'input options', o, /^(output)$/), { options: c, unsetOptions: s } + })(i, s) + return Id(n.plugins, qh), { options: n, unsetOptions: r } + })(t, null !== s) + !(function (e) { + e.perf ? (($o = new Map()), (Oo = _o), (Do = Ro), (e.plugins = e.plugins.map(To))) : ((Oo = Ui), (Do = Ui)) + })(i) + const r = new Ru(i, s), + o = !1 !== t.cache + t.cache && ((i.cache = void 0), (t.cache = void 0)) + Oo('BUILD', 1), + await Mu(r.pluginDriver, async () => { + try { + Oo('initialize', 2), await r.pluginDriver.hookParallel('buildStart', [i]), Do('initialize', 2), await r.build() + } catch (e) { + const t = Object.keys(r.watchFiles) + throw (t.length > 0 && (e.watchFiles = t), await r.pluginDriver.hookParallel('buildEnd', [e]), await r.pluginDriver.hookParallel('closeBundle', []), e) + } + await r.pluginDriver.hookParallel('buildEnd', []) + }), + Do('BUILD', 1) + const a = { + cache: o ? r.getCache() : void 0, + async close() { + a.closed || ((a.closed = !0), await r.pluginDriver.hookParallel('closeBundle', [])) + }, + closed: !1, + generate: async (e) => (a.closed ? Qe(Mt()) : wd(!1, i, n, e, r)), + watchFiles: Object.keys(r.watchFiles), + write: async (e) => (a.closed ? Qe(Mt()) : wd(!0, i, n, e, r)) + } + i.perf && (a.getTimings = Mo) + return a + })(t, null) +} +function Id(e, t) { + for (const [s, i] of e.entries()) i.name || (i.name = `${t}${s + 1}`) +} +async function wd(e, t, s, i, n) { + const { + options: r, + outputPluginDriver: o, + unsetOptions: a + } = await (async function (e, t, s, i) { + if (!e) throw new Error('You must supply an options object') + const n = await ou(e.plugins) + Id(n, Hh) + const r = t.createOutputPluginDriver(n) + return { ...(await Pd(s, i, e, r)), outputPluginDriver: r } + })(i, n.pluginDriver, t, s) + return Mu(0, async () => { + const s = new Kl(r, a, t, o, n), + i = await s.generate(e) + if (e) { + if ((Oo('WRITE', 1), !r.dir && !r.file)) return Qe({ code: St, message: 'You must specify "output.file" or "output.dir" for the build.', url: De(Be) }) + await Promise.all( + Object.values(i).map((e) => + n.fileOperationQueue.run(() => + (async function (e, t) { + const s = R(t.dir || $(t.file), e.fileName) + return await jh($(s), { recursive: !0 }), Gh(s, 'asset' === e.type ? e.source : e.code) + })(e, r) + ) + ) + ), + await o.hookParallel('writeBundle', [r, i]), + Do('WRITE', 1) + } + return ( + (l = i), + { + output: Object.values(l) + .filter((e) => Object.keys(e).length > 0) + .sort((e, t) => $d(e) - $d(t)) + } + ) + var l + }) +} +function Pd(e, t, s, i) { + return (async function (e, t, s) { + const i = new Set(s), + n = e.compact || !1, + r = sd(e), + o = id(e, t), + a = nd(e, o, t), + l = td(e, a, t), + c = rd(e, t), + h = fd(e, c), + u = { + amd: ad(e), + assetFileNames: e.assetFileNames ?? 'assets/[name]-[hash][extname]', + banner: ld(e, 'banner'), + chunkFileNames: e.chunkFileNames ?? '[name]-[hash].js', + compact: n, + dir: cd(e, l), + dynamicImportFunction: hd(e, t, r), + dynamicImportInCjs: e.dynamicImportInCjs ?? !0, + entryFileNames: ud(e, i), + esModule: e.esModule ?? 'if-default-prop', + experimentalDeepDynamicChunkOptimization: dd(e, t), + experimentalMinChunkSize: e.experimentalMinChunkSize ?? 1, + exports: pd(e, i), + extend: e.extend || !1, + externalImportAssertions: e.externalImportAssertions ?? !0, + externalLiveBindings: e.externalLiveBindings ?? !0, + file: l, + footer: ld(e, 'footer'), + format: r, + freeze: e.freeze ?? !0, + generatedCode: h, + globals: e.globals || {}, + hoistTransitiveImports: e.hoistTransitiveImports ?? !0, + indent: md(e, n), + inlineDynamicImports: o, + interop: yd(e), + intro: ld(e, 'intro'), + manualChunks: Ed(e, o, a, t), + minifyInternalExports: bd(e, r, n), + name: e.name, + namespaceToStringTag: vd(e, h, t), + noConflict: e.noConflict || !1, + outro: ld(e, 'outro'), + paths: e.paths || {}, + plugins: await ou(e.plugins), + preferConst: c, + preserveModules: a, + preserveModulesRoot: od(e), + sanitizeFileName: 'function' == typeof e.sanitizeFileName ? e.sanitizeFileName : !1 === e.sanitizeFileName ? (e) => e : ed, + sourcemap: e.sourcemap || !1, + sourcemapBaseUrl: Ad(e), + sourcemapExcludeSources: e.sourcemapExcludeSources || !1, + sourcemapFile: e.sourcemapFile, + sourcemapFileNames: Sd(e, i), + sourcemapIgnoreList: 'function' == typeof e.sourcemapIgnoreList ? e.sourcemapIgnoreList : !1 === e.sourcemapIgnoreList ? () => !1 : (e) => e.includes('node_modules'), + sourcemapPathTransform: e.sourcemapPathTransform, + strict: e.strict ?? !0, + systemNullSetters: e.systemNullSetters ?? !0, + validate: e.validate || !1 + } + return su(e, Object.keys(u), 'output options', t.onLog), { options: u, unsetOptions: i } + })( + i.hookReduceArg0Sync( + 'outputOptions', + [s], + (e, t) => t || e, + (e) => { + const t = () => e.error({ code: it, message: 'Cannot emit files or set asset sources in the "outputOptions" hook, use the "renderStart" hook instead.' }) + return { ...e, emitFile: t, setAssetSource: t } + } + ), + e, + t + ) +} +var Cd +function $d(e) { + return 'asset' === e.type ? Cd.ASSET : e.isEntry ? Cd.ENTRY_CHUNK : Cd.SECONDARY_CHUNK +} +function Nd(e) { + return e +} +!(function (e) { + ;(e[(e.ENTRY_CHUNK = 0)] = 'ENTRY_CHUNK'), (e[(e.SECONDARY_CHUNK = 1)] = 'SECONDARY_CHUNK'), (e[(e.ASSET = 2)] = 'ASSET') +})(Cd || (Cd = {})) +export { e as VERSION, Nd as defineConfig, kd as rollup } diff --git a/src/compiler/processors.js b/src/compiler/processors.js index f45c12590..04f8d60a8 100644 --- a/src/compiler/processors.js +++ b/src/compiler/processors.js @@ -1,136 +1,136 @@ -import _ from 'lodash-es'; -import PromiseWorker from 'promise-worker'; -import { get } from 'svelte/store'; -import { site } from '@primocms/builder'; -import { locale } from '@primocms/builder'; -import rollupWorker from './workers/rollup.worker.js?worker'; -import postCSSWorker from './workers/postcss.worker.js?worker'; +import _ from 'lodash-es' +import PromiseWorker from 'promise-worker' +import { get } from 'svelte/store' +// import { render } from 'svelte/server' +// import { render } from './lib/svelte-5/server/index.js' +import { site } from '$lib/builder/stores/data' +import { locale } from '$lib/builder/stores/app' +import rollupWorker from './workers/rollup.worker.js?worker' +import postCSSWorker from './workers/postcss.worker.js?worker' -const postcss_worker = new PromiseWorker(new postCSSWorker()); -const rollup_worker = new PromiseWorker(new rollupWorker()); +const postcss_worker = new PromiseWorker(new postCSSWorker()) +const rollup_worker = new PromiseWorker(new rollupWorker()) -const COMPILED_COMPONENTS_CACHE = new Map(); +const COMPILED_COMPONENTS_CACHE = new Map() /** * Compiles and renders a given component or page, caching the result. * @async * @param {Object} options - The options for rendering. * @param {Object|Object[]} options.component - The component(s) to be rendered. Can be a single component or an array of components for a page. + * @param {{ code: string, data: Object }} options.head * @param {boolean} [options.buildStatic=true] - Indicates whether to build the component statically or not. * @param {string} [options.format='esm'] - The module format to use, such as 'esm' for ES Modules. + * @param {boolean} [options.dev_mode=false] - Whether Svelte should be compiled in dev mode (i.e. attaches LOC for inspecting) or not * @returns {Promise} Returns a payload containing the rendered HTML, CSS, JS, and other relevant data. * @throws {Error} Throws an error if the compilation or rendering fails. */ -export async function html({ component, buildStatic = true, format = 'esm' }) { - let cache_key; +export async function html({ component, head, buildStatic = true, format = 'esm', dev_mode = false }) { + let cache_key if (!buildStatic) { cache_key = JSON.stringify({ component, format - }); + }) if (COMPILED_COMPONENTS_CACHE.has(cache_key)) { - return COMPILED_COMPONENTS_CACHE.get(cache_key); + return COMPILED_COMPONENTS_CACHE.get(cache_key) } } - const compile_page = Array.isArray(component); + const compile_page = Array.isArray(component) - let res; + let res try { - const has_js = compile_page ? component.some((s) => s.js) : !!component.js; + const has_js = compile_page ? component.some((s) => s.js) : !!component.js res = await rollup_worker.postMessage({ - component, + component: _.cloneDeep(component), + head, hydrated: buildStatic && has_js, buildStatic, format, - site: get(site), - locale: get(locale) - }); + dev_mode + }) } catch (e) { - console.log('error', e); + console.log('error', e) res = { error: e.toString() - }; + } } - let payload; + let payload if (!res) { payload = { html: '

could not render

' - }; - res = {}; + } + res = {} } else if (res.error) { - console.error(res.error); payload = { error: escapeHtml(res.error) - }; + } function escapeHtml(unsafe) { - return unsafe - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); + return unsafe.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''') } } else if (buildStatic) { - const blob = new Blob([res.ssr], { type: 'text/javascript' }); - const url = URL.createObjectURL(blob); - const { default: App } = await import(url /* @vite-ignore */); - URL.revokeObjectURL(url); + const blob = new Blob([res.ssr], { type: 'text/javascript' }) + const url = URL.createObjectURL(blob) + const { default: App } = await import(/* @vite-ignore */ url) + URL.revokeObjectURL(url) - let component_data; + let component_data if (compile_page) { // get the component data for the page component_data = component.reduce((accumulator, item, i) => { if (!_.isEmpty(item.data)) { - accumulator[`component_${i}_props`] = item.data; + accumulator[`component_${i}_props`] = item.data } - return accumulator; - }, {}); + return accumulator + }, {}) + component_data.head_props = head.data } else { - component_data = component.data; + component_data = component.data } - const rendered = App.render(component_data); + const rendered = App.render(component_data) + // const rendered = render(App, { props: component_data }) payload = { head: rendered.head, html: rendered.html, css: rendered.css.code, js: res.dom - }; + } } else { payload = { js: res.dom - }; + } } if (!buildStatic) { - COMPILED_COMPONENTS_CACHE.set(cache_key, payload); + COMPILED_COMPONENTS_CACHE.set(cache_key, payload) } - return payload; + return payload } -const cssMap = new Map(); +const cssMap = new Map() export async function css(raw) { // return { // css: '' // } if (cssMap.has(raw)) { - return { css: cssMap.get(raw) }; + return { css: cssMap.get(raw) } } const processed = await postcss_worker.postMessage({ css: raw - }); + }) if (processed.message) { return { error: processed.message - }; + } } - cssMap.set(raw, processed); + cssMap.set(raw, processed) return { css: processed - }; + } } diff --git a/src/compiler/workers/rollup.worker.js b/src/compiler/workers/rollup.worker.js index da6c9148b..1b3eadcff 100644 --- a/src/compiler/workers/rollup.worker.js +++ b/src/compiler/workers/rollup.worker.js @@ -1,4 +1,4 @@ -import { rollup } from '@rollup/browser' +import { rollup } from '../lib/rollup-browser.min.js' import svelteWorker from './svelte.worker?worker' import PromiseWorker from 'promise-worker' import registerPromiseWorker from 'promise-worker/register' @@ -14,7 +14,7 @@ const sveltePromiseWorker = new PromiseWorker(new svelteWorker()) const CDN_URL = 'https://cdn.jsdelivr.net/npm' // or 'https://unpkg.com' registerPromiseWorker(rollup_worker) -async function rollup_worker({ component, hydrated, buildStatic = true, format = 'esm' }) { +async function rollup_worker({ component, head, hydrated, buildStatic = true, format = 'esm', dev_mode = false }) { const final = { ssr: '', dom: '', @@ -23,17 +23,27 @@ async function rollup_worker({ component, hydrated, buildStatic = true, format = const component_lookup = new Map() - const Svelte_Component_Code = (component, is_single = true) => { + const App_Wrapper = (components, head) => { + const field_keys = Object.entries(head.data).filter((field) => field[0]) + return ` + + ${head.code} + + + ${components + .map((component, i) => ` \n`) + .join('')} + ` + } + + const Component = (component) => { let { html, css, js, data } = component - const data_as_variables = is_single - ? Object.entries(data) - .filter((field) => field[0]) - .map((field) => `export let ${field[0]};`) - .join(`\n`) - : Object.entries(data) - .filter((field) => field[0]) - .map((field) => `let ${field[0]} = props['${field[0]}'];`) - .join(`\n`) // Move outside the encompassing
to prevent 'can't nest' error if (html.includes(' field[0]) + + // html must come first for LoC (inspector) to work return `\ + ${html} - ${css ? `` : ``} - ${html}` + ${css ? `` : ``}` } - function generate_lookup(component) { + function generate_lookup(component, head) { if (Array.isArray(component)) { // build page (sections as components) component.forEach((section, i) => { - const code = Svelte_Component_Code(section, false) + const code = Component(section) component_lookup.set(`./Component_${i}.svelte`, code) }) component_lookup.set( `./App.svelte`, - ` - - ${component - .map((section, i) => { - return ` \n` - }) - .join('')} - ` + App_Wrapper(component, head) ) } else { // build individual component - const code = Svelte_Component_Code(component) - component_lookup.set(`./App.svelte`, code) + const app_code = Component(component) + component_lookup.set(`./App.svelte`, app_code) } } - generate_lookup(component) + generate_lookup(component, head) if (buildStatic) { const bundle = await compile({ @@ -92,7 +93,8 @@ async function rollup_worker({ component, hydrated, buildStatic = true, format = const output = (await bundle.generate({ format })).output[0].code final.ssr = output } else { - const bundle = await compile() + const bundle = await compile({ dev: dev_mode }) + const output = (await bundle.generate({ format })).output[0].code final.dom = output } @@ -200,18 +202,21 @@ async function rollup_worker({ component, hydrated, buildStatic = true, format = code, svelteOptions }) + return res.code + + // TODO: reinstate warnings, pass along to UI instead of throwing - const warnings = res.warnings - .filter((w) => !w.message.startsWith(`Component has unused export`)) - .filter((w) => !w.message.startsWith(`A11y: element should have an alt attribute`)) - .filter((w) => w.code !== `a11y-missing-content`) - .filter((w) => !w.message.startsWith(`Unused CSS selector`)) // TODO: reinstate - if (warnings[0]) { - final.error = warnings[0].message - return '' - } else { - return res.code - } + // const warnings = res.warnings + // .filter((w) => !w.message.startsWith(`Component has unused export`)) + // .filter((w) => !w.message.startsWith(`A11y: element should have an alt attribute`)) + // .filter((w) => w.code !== `a11y-missing-content`) + // .filter((w) => !w.message.startsWith(`Unused CSS selector`)) // TODO: reinstate + // if (warnings[0]) { + // final.error = warnings[0].message + // return '' + // } else { + // return res.code + // } } catch (e) { final.error = e.toString() return '' diff --git a/src/compiler/workers/svelte.worker.js b/src/compiler/workers/svelte.worker.js index 2ef0b7ea9..a64c37b41 100644 --- a/src/compiler/workers/svelte.worker.js +++ b/src/compiler/workers/svelte.worker.js @@ -1,10 +1,12 @@ import registerPromiseWorker from 'promise-worker/register' +// import { compile as svelte_compile } from '../lib/svelte-5/compiler/index.js' +// import { compile as svelte_compile } from 'svelte/compiler' import { compile as svelte_compile } from '../lib/svelte-compiler.min.js' registerPromiseWorker(async function ({ code, svelteOptions }) { - const res = svelte_compile(code, svelteOptions) - return { - code: res?.js?.code, - warnings: res.warnings.map((w) => ({ message: w.message, code: w.code })), - } + const res = svelte_compile(code, svelteOptions) + return { + code: res?.js?.code, + warnings: res.warnings.map((w) => ({ message: w.message, code: w.code })) + } }) diff --git a/src/hooks.server.js b/src/hooks.server.js index a987a7c7f..4f86f3794 100644 --- a/src/hooks.server.js +++ b/src/hooks.server.js @@ -1,62 +1,52 @@ import '$lib/supabase' -import supabase_admin from '$lib/supabase/admin' -import { createSupabaseServerClient } from '@supabase/auth-helpers-sveltekit' import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_PUBLIC_KEY } from '$env/static/public' +import { createSupabaseServerClient } from '@supabase/auth-helpers-sveltekit' +import { redirect } from '@sveltejs/kit' /** @type {import('@sveltejs/kit').Handle} */ export async function handle({ resolve, event }) { - event.locals.supabase = createSupabaseServerClient({ - supabaseUrl: PUBLIC_SUPABASE_URL, - supabaseKey: PUBLIC_SUPABASE_PUBLIC_KEY, - event, - }) - - event.locals.getSession = async () => { - const { - data: { session }, - } = await event.locals.supabase.auth.getSession() - return session - } - - const response = await resolve(event, { - filterSerializedResponseHeaders(name) { - return name === 'content-range' - }, - }) - - const is_preview = event.url.searchParams.has('preview') - if (is_preview) { - // retrieve site and page from db - const [{data:site}, {data:page}] = await Promise.all([ - supabase_admin.from('sites').select('id, url').eq('url', event.params.site).single(), - supabase_admin.from('pages').select('id, url, site!inner(*)').match({ - url: event.params.page || 'index', - 'site.url': event.params.site - }).single() - ]) - - if (!site || !page) return new Response('no page found') - - const {data:file} = await supabase_admin.storage.from('sites').download(`${site.id}/${page.id}/index.html`) - - return new Response(file || 'no preview found', { - headers: { - 'Content-Type': 'text/html;charset=UTF-8', - 'Access-Control-Allow-Origin': '*', - }, - }) - } - - if(event.request.method === 'OPTIONS') { - return new Response(null, { - headers: { - 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, DELETE', - 'Access-Control-Allow-Origin': '*', - } - }); - } - - response.headers.set('Access-Control-Allow-Origin', '*'); - - return response; -}; \ No newline at end of file + if (event.url.pathname.startsWith('/_symbols')) { + return new Response('', { + headers: { 'Content-Type': 'text/javascript' } + }) + } + + event.locals.supabase = createSupabaseServerClient({ + supabaseUrl: PUBLIC_SUPABASE_URL, + supabaseKey: PUBLIC_SUPABASE_PUBLIC_KEY, + event + }) + + event.locals.getSession = async () => { + const { + data: { session } + } = await event.locals.supabase.auth.getSession() + return session + } + + const session = await event.locals.getSession() + if (!session && !event.url.pathname.includes('/auth')) { + redirect(303, '/auth') + } else if (session && event.url.pathname === '/') { + redirect(303, '/dashboard') + } + + const response = await resolve(event, { + filterSerializedResponseHeaders(name) { + return name === 'content-range' + } + }) + + // console.log(event.request.method) + if (event.request.method === 'OPTIONS') { + return new Response(null, { + headers: { + 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, DELETE', + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Headers': 'Content-Type, Accept' // Specify allowed headers + } + }) + } + + return response +} diff --git a/src/lib/actions.js b/src/lib/actions.js index 9f10a5dd0..03d4559d4 100644 --- a/src/lib/actions.js +++ b/src/lib/actions.js @@ -1,110 +1,846 @@ -import supabase from '$lib/supabase' -import { getFiles } from '$lib/supabase/storage' +import supabase from './supabase/core' +import { page } from '$app/stores' +import { get } from 'svelte/store' +import * as actions from '$lib/builder/actions/active_site' +import * as factories from '$lib/builder/factories' +import _ from 'lodash-es' import axios from 'axios' -import { invalidate } from '$app/navigation' +import scramble_ids from '../scramble_ids' +import * as helpers from '$lib/builder/actions/_helpers' +import * as db_utils from '$lib/builder/actions/_db_utils' +import * as code_generators from '$lib/builder/code_generators' +import { processCode } from '$lib/builder/utils' +import { get_content_with_synced_values } from '$lib/builder/stores/helpers' +import { v4 as uuidv4 } from 'uuid' +import {remap_entry_and_field_items} from '$lib/builder/actions/_db_utils' + +/** + * Deletes a site group from the database + * @param {string} group_id - The ID of the site group to delete + * @returns {Promise} + */ +export async function delete_site_group(group_id) { + await supabase.from('site_groups').delete().eq('id', group_id) +} + +/** + * Adds a site to a site group + * @param {string} site_id - The ID of the site to add + * @param {string} group_id - The ID of the group to add the site to + * @returns {Promise} + */ +export async function add_site_to_group(site_id, group_id) { + await supabase.from('sites').update({ group: group_id }).eq('id', site_id) +} + +/** + * Removes a site from a site group + * @param {string} site_id - The ID of the site to remove from its group + * @returns {Promise} + */ +export async function remove_site_from_group(site_id) { + await supabase.from('sites').update({ group: null }).eq('id', site_id) +} + +/** + * Renames a site group + * @param {string} group_id - The ID of the site group to rename + * @param {string} new_name - The new name for the site group + * @returns {Promise} + */ +export async function rename_site_group(group_id, new_name) { + await supabase.from('site_groups').update({ name: new_name }).eq('id', group_id) +} + +/** + * Creates a new site group + * @param {string} name - The name of the site group to create + * @returns {Promise} + */ +export async function create_site_group(name) { + await supabase.from('site_groups').insert({ name, owner: get(page).data.user.id }) +} + +/** + * Moves a library symbol to a different group + * @param {string} symbol_id - The ID of the library symbol to move + * @param {string} new_group_id - The ID of the group to move the symbol to + * @returns {Promise} + */ +export async function move_library_symbol(symbol_id, new_group_id) { + await supabase.from('library_symbols').update({ group: new_group_id }).eq('id', symbol_id) +} + + +/** + * Deletes a library symbol group + * @param {string} group_id - The ID of the library symbol group to delete + * @returns {Promise} + */ +export async function delete_library_symbol_group(group_id) { + await supabase.from('library_symbol_groups').delete().eq('id', group_id) +} + +/** + * Renames a library symbol group + * @param {string} group_id - The ID of the library symbol group to rename + * @param {string} new_name - The new name for the library symbol group + * @returns {Promise} + */ +export async function rename_library_symbol_group(group_id, new_name) { + await supabase.from('library_symbol_groups').update({ name: new_name }).eq('id', group_id) +} + + +/** + * Creates a new library symbol group + * @param {string} name - The name of the library symbol group to create + * @returns {Promise} + */ +export async function create_library_symbol_group(name) { + await supabase.from('library_symbol_groups').insert({ name, owner: get(page).data.user.id }) +} + +/** + * Adds a marketplace starter to the user's library + * @param {Object} starter - The starter object containing name, code, entries, and fields + * @param {string} starter.name - The name of the starter + * @param {string} starter.code - The code for the starter + * @param {Array} starter.entries - The entries data for the starter + * @param {Array} starter.fields - The fields data for the starter + * @param {string} preview - The HTML preview content for the starter + * @returns {Promise} + */ +export async function add_marketplace_starter_to_library(starter, preview) { + const new_starter_id = uuidv4() + remap_entry_and_field_items({ entries: starter.entries, fields: starter.fields }) + + const symbol_res = await supabase.from('library_symbols').insert({ id: new_starter_id, name: starter.name, code: starter.code, index: 0, owner: get(page).data.user.id }) + if (symbol_res.error) { + console.log('Failed to insert site', { symbol_res, starter }) + throw new Error('Failed to insert site') + } + + const fields_res = await supabase.from('fields').insert(starter.fields.map(f => ({ ...f, library_symbol: new_starter_id }))) + if (fields_res.error) { + console.log('Failed to insert fields', { fields_res, fields: starter.fields }) + throw new Error('Failed to insert fields') + } + + const entries_res = await supabase.from('entries').insert(starter.entries.map(f => ({ ...f, library_symbol: new_starter_id }))) + if (entries_res.error) { + console.log('Failed to insert entries', { entries_res, entries: starter.entries }) + throw new Error('Failed to insert entries') + } + + const storage_res = await supabase.storage.from('sites').upload(`${new_starter_id}/preview.html`, preview) + console.log({storage_res}) +} + +/** + * Adds a marketplace symbol to the user's library + * @param {Object} options - The options object + * @param {Object} options.symbol - The symbol object containing name, code, entries, and fields + * @param {string} options.symbol.name - The name of the symbol + * @param {string} options.symbol.code - The code for the symbol + * @param {Array} options.symbol.entries - The entries data for the symbol + * @param {Array} options.symbol.fields - The fields data for the symbol + * @param {string} options.preview - The HTML preview content for the symbol + * @param {string} options.group_id - The ID of the library group to add the symbol to + * @returns {Promise} + */ +export async function add_marketplace_symbol_to_library({symbol, preview, group_id}) { + const new_symbol_id = uuidv4() + remap_entry_and_field_items({ entries: symbol.entries, fields: symbol.fields }) + + const symbol_res = await supabase.from('library_symbols').insert({ id: new_symbol_id, name: symbol.name, code: symbol.code, index: 0, group: group_id, owner: get(page).data.user.id }) + if (symbol_res.error) { + console.log('Failed to insert site', { symbol_res, symbol }) + throw new Error('Failed to insert site') + } + + const fields_res = await supabase.from('fields').insert(symbol.fields.map(f => ({ ...f, library_symbol: new_symbol_id }))) + if (fields_res.error) { + console.log('Failed to insert fields', { fields_res, fields: symbol.fields }) + throw new Error('Failed to insert fields') + } + + const entries_res = await supabase.from('entries').insert(symbol.entries.map(f => ({ ...f, library_symbol: new_symbol_id }))) + if (entries_res.error) { + console.log('Failed to insert entries', { entries_res, entries: symbol.entries }) + throw new Error('Failed to insert entries') + } + + const storage_res = await supabase.storage.from('symbols').upload(`${new_symbol_id}/preview.html`, preview) + console.log({storage_res}) +} + +/** + * Renames a library symbol + * @param {string} id - The ID of the symbol to rename + * @param {string} new_name - The new name for the symbol + * @returns {Promise} + */ +export async function rename_library_symbol(id, new_name) { + await supabase.from('library_symbols').update({ name: new_name }).eq('id', id) +} + +/** + * Creates a new library symbol + * @param {Object} options - The symbol creation options + * @param {string} [options.name=''] - The name of the symbol + * @param {Object} options.code - The symbol code (html, css, js) + * @param {Object} options.content - The symbol's content + * @param {Array} options.content.entries - Array of entry objects + * @param {Array} options.content.fields - Array of field objects + * @param {string} options.preview - The preview HTML + * @param {string} options.group - The group ID this symbol belongs to + * @returns {Promise} + */ +export async function create_library_symbol({ name = '', code, content, preview, group }) { + const symbol_id = uuidv4() + const changes = { + entries: db_utils.generate_entry_changes([], content.entries), + fields: db_utils.generate_field_changes([], content.fields) + } + await Promise.all([ + (async() => { + let library_symbols_res = await supabase.from('library_symbols').insert({ id: symbol_id, code, name: name, index: 0, group, owner: get(page).data.user.id }).select().single() + if (library_symbols_res.error) { + console.log('Failed to insert symbols', library_symbols_res) + throw new Error('Failed to insert symbols') + } + + // DB: save Symbol fields + await helpers.handle_field_changes_new(changes.fields, { + library_symbol: symbol_id + }) + + // DB: save Symbol entries + await helpers.handle_content_changes_new(changes.entries, { + library_symbol: symbol_id + }) + })(), + supabase.storage.from('symbols').upload(`${symbol_id}/preview.html`, preview) + ]) +} + +/** + * Saves changes to an existing library symbol + * @param {string} id - The ID of the symbol to update + * @param {Object} options - The update options + * @param {Object} options.code - The symbol code (html, css, js) + * @param {Object} options.content - The symbol data with original and updated values + * @param {Object} options.content.original - The original symbol content + * @param {Array} options.content.original.entries - Array of original entry objects + * @param {Array} options.content.original.fields - Array of original field objects + * @param {Object} options.content.updated - The updated symbol content + * @param {Array} options.content.updated.entries - Array of updated entry objects + * @param {Array} options.content.updated.fields - Array of updated field objects + * @param {string} options.preview - The preview HTML + * @returns {Promise} + */ +export async function save_library_symbol(id, { code, content, preview }) { + + const content_changes = db_utils.generate_entry_changes(content.original.entries, content.updated.entries) + const field_changes = db_utils.generate_field_changes(content.original.fields, content.updated.fields) + + // DB: save block code if changed + await supabase.from('library_symbols').update({ code }).eq('id', id) + + // DB: save Symbol fields + await helpers.handle_field_changes_new(field_changes, { + library_symbol: id + }) + + // DB: save Symbol entries + await helpers.handle_content_changes_new(content_changes, { + library_symbol: id + }) + + await supabase.storage.from('symbols').upload(`${id}/preview.html`, preview, { upsert: true }) +} + +/** + * Deletes a library symbol from the database + * @param {string} symbol_id - The ID of the symbol to delete + * @returns {Promise} + * @throws {Error} If deletion fails + */ +export async function delete_library_symbol(symbol_id) { + const res = await supabase.from('library_symbols').delete().eq('id', symbol_id) + if (res.error) { + console.log('Failed to delete library symbol', res) + throw new Error('Failed to delete library symbol') + } +} + +/** + * Creates a new starter site + * @param {Object} options - The starter options + * @param {Object} options.details - Basic site details + * @param {string} options.details.name - Name of the site + * @param {string} options.details.description - Description of the site + * @param {string} options.preview - Preview HTML content + * @param {Object} [options.site_data] - Optional existing site data to use as template + * @returns {Promise} + */ +export async function create_starter({ details, preview, site_data = null }) { + + let starter_data + if (site_data) { + site_data.site.name = details.name + site_data.site.description = details.description + const scrambled = scramble_ids(site_data) + starter_data = prepare_data(scrambled) + } else { + const site_id = uuidv4() + const page_type_id = uuidv4() + const home_page_id = uuidv4() + const master_palette_id = uuidv4() + const empty_starter = { + site: { + id: site_id, + name: details.name, + code: { + head: '', + foot: '' + }, + design: { + heading_font: 'Open Sans', + body_font: 'Open Sans', + primary_color: '#864040', + radius: '0px', + shadow: "0.3px 0.5px 0.7px hsl(0deg 36% 56% / 0.34),0.4px 0.8px 1px -1.2px hsl(0deg 36% 56% / 0.34), 1px 2px 2.5px -2.5px hsl(0deg 36% 56% / 0.34)", + }, + entries: [], + fields: [] + }, + pages: [ + factories.Page({ + id: home_page_id, + index: 0, + name: "Home Page", + page_type: page_type_id, + owner_site: site_id + }) + ], + page_types: [ + factories.Page_Type({ + id: page_type_id, + name: "Default", + owner_site: site_id + }) + ], + sections: [ + factories.Section({ + id: master_palette_id, + page_type: page_type_id, + owner_site: site_id + }), + factories.Section({ + page: home_page_id, + master: master_palette_id, + owner_site: site_id + }) + ], + symbols: [] + } + starter_data = prepare_data(empty_starter) + } + + const { site, page_types, pages, symbols, sections, entries, fields } = starter_data + + site.is_starter = true + + try { + // Step 1: Insert starter + let res = await supabase.from('sites').insert({ ...site, owner: get(page).data.user.id }) + if (res.error) { + console.log('Failed to insert site', { res, site }) + throw new Error('Failed to insert site') + } + + // Step 2: Insert page_types and symbols + res = await Promise.all([ + supabase.from('page_types').insert(page_types), + supabase.from('symbols').insert(symbols) + ]) + if (res.some(r => r.error)) { + console.log('Failed to insert page_types or symbols', { res, page_types, symbols }) + throw new Error('Failed to insert page_types or symbols') + } + + // Step 3: Insert pages + res = await supabase.from('pages').insert(pages) + if (res.error) { + console.log('Failed to insert pages', { res, pages }) + throw new Error('Failed to insert pages') + } + + // Step 4: Insert sections + res = await supabase.from('sections').insert(sections) + if (res.error) { + console.log('Failed to insert sections', { res, sections }) + throw new Error('Failed to insert sections') + } + + // Step 5: Insert fields + res = await supabase.from('fields').insert(fields) + if (res.error) { + console.log('Failed to insert fields', { res, fields }) + throw new Error('Failed to insert fields') + } + + // Step 6: Insert entries + res = await supabase.from('entries').insert(entries) + if (res.error) { + console.log('Failed to insert entries', { res, entries }) + throw new Error('Failed to insert entries') + } + + // Handle preview upload + await supabase.storage.from('sites').upload(`${site.id}/preview.html`, preview) + + console.log('Site created successfully') + } catch (e) { + console.error('SOMETHING WENT WRONG', e) + // TODO: Implement rollback logic to delete inserted items if an error occurs + } +} export const sites = { - create: async (data, preview = null) => { - await supabase.from('sites').insert(data.site) - - // create symbols and root pages - const { pages, symbols, sections } = data - const home_page = pages.find((page) => page.url === 'index') - const root_pages = pages.filter( - (page) => page.parent === null && page.id !== home_page.id - ) - const child_pages = pages.filter((page) => page.parent !== null) - - // create home page first (to ensure it appears first) - await supabase.from('pages').insert(home_page) - - await Promise.all([ - supabase.from('symbols').insert(symbols), - supabase.from('pages').insert(root_pages), - ]) - - // upload preview to supabase storage - if (preview) { - await supabase.storage - .from('sites') - .upload(`${data.site.id}/preview.html`, preview) - } - - // create child pages (dependant on parent page IDs) - await supabase.from('pages').insert(child_pages) - - // create sections (dependant on page IDs) - await supabase.from('sections').insert(sections) - }, - update: async (id, props) => { - await supabase.from('sites').update(props).eq('id', id) - }, - delete: async (site, { delete_repo, delete_files }) => { - const [{ data: pages }, { data: sections }, { data: symbols }] = - await Promise.all([ - supabase - .from('pages') - .select('id, url, name, code, fields, content, site, parent') - .filter('site', 'eq', site.id), - supabase - .from('sections') - .select('id, content, page!inner(id, site), symbol, index') - .filter('page.site', 'eq', site.id), - supabase - .from('symbols') - .select('id, name, code, fields, content, site') - .filter('site', 'eq', site.id), - ]) - - // Backup site - const backup_json = JSON.stringify({ - site, - pages, - sections: sections.map((section) => ({ - ...section, - page: section.page.id, - })), - symbols, - version: 2, - }) - - await supabase.storage - .from('sites') - .upload(`backups/${site.url}-${site.id}.json`, backup_json) - - if (sections) { - await Promise.all( - sections.map((section) => - supabase.from('sections').delete().eq('id', section.id) - ) - ) - } - - await Promise.all([ - supabase.from('pages').delete().eq('site', site.id), - supabase.from('symbols').delete().eq('site', site.id), - supabase.from('invitations').delete().eq('site', site.id), - supabase.from('collaborators').delete().eq('site', site.id), - ]) - - if (delete_files) { - let siteFiles = await getFiles('sites', site.id) - if (siteFiles.length) - await supabase.storage.from('sites').remove(siteFiles) - - let imageFiles = await getFiles('images', site.id) - if (imageFiles.length) - await supabase.storage.from('images').remove(imageFiles) - } - if (delete_repo) { - const repo_deleted = await axios.post('/api/deploy/delete', { site }) - if (!repo_deleted) { - alert( - `Could not delete repo. Ensure Personal Access Token has the 'delete_repo' permission` - ) - } - } - await supabase.from('sites').delete().eq('id', site.id) - invalidate('app:data') - }, + create: async ({ starter_id, starter_data, details, preview, group }) => { + + + const uploaded_data = starter_id ? await fetch_site_data(starter_id) : starter_data + uploaded_data.site.name = details.name + uploaded_data.site.design = _.cloneDeep(details.design) + + const scrambled = scramble_ids(uploaded_data) + const files = await build_site_bundle(scrambled) + const prepared_data = prepare_data(scrambled) + + const { site, page_types, pages, symbols, sections, entries, fields } = prepared_data + + try { + // Step 1: Insert site + let res = await supabase.from('sites').insert({ ...site, group, owner: get(page).data.user.id }) + if (res.error) { + console.log('Failed to insert site', { res, site }) + throw new Error('Failed to insert site') + } + + // Step 2: Insert page_types and symbols + res = await Promise.all([ + supabase.from('page_types').insert(page_types), + supabase.from('symbols').insert(symbols) + ]) + if (res.some(r => r.error)) { + console.log('Failed to insert page_types or symbols', { res, page_types, symbols }) + throw new Error('Failed to insert page_types or symbols') + } + + // Step 3: Insert pages + res = await supabase.from('pages').insert(pages) + if (res.error) { + console.log('Failed to insert pages', { res, pages }) + throw new Error('Failed to insert pages') + } + + // Step 4: Insert sections + res = await supabase.from('sections').insert(sections) + if (res.error) { + console.log('Failed to insert sections', { res, sections }) + throw new Error('Failed to insert sections') + } + + // Step 5: Insert fields + res = await supabase.from('fields').insert(fields) + if (res.error) { + console.log('Failed to insert fields', { res, fields }) + throw new Error('Failed to insert fields') + } + + // Step 6: Insert entries + res = await supabase.from('entries').insert(entries) + if (res.error) { + console.log('Failed to insert entries', { res, entries }) + throw new Error('Failed to insert entries') + } + + // Handle preview upload + if (preview) { + await supabase.storage.from('sites').upload(`${site.id}/preview.html`, preview) + } + + // create distribution + const dist_res = await axios.post('/api/deploy/initial-deployment', {files, site_id: site.id, domain_name: site.domain_name}) + console.log({dist_res}) + + console.log('Site created successfully') + } catch (e) { + console.error('SOMETHING WENT WRONG', e) + // TODO: Implement rollback logic to delete inserted items if an error occurs + } + }, + update: async (site_id, props) => { + await supabase.from('sites').update(props).eq('id', site_id) + }, + move: async (site_id, new_group_id) => { + await supabase.from('sites').update({ group: new_group_id }).eq('id', site_id) + }, + delete: async (site_id, delete_deployment = false) => { + await supabase.from('sites').delete().eq('id', site_id) + if (delete_deployment) { + await axios.delete(`/api/deploy/delete-deployment?site_id=${site_id}`) + } + }, + deploy: async (site_id, custom_domain = null) => { + + const site_data = await fetch_site_data(site_id) + + // const scrambled = scramble_ids(site_data) + const files = await build_site_bundle(site_data) + const prepared_data = prepare_data(site_data) + + const { site } = prepared_data + + try { + // create distribution + const dist_res = await axios.post('/api/deploy/initial-deployment', {files, site_id: site.id, domain_name: site.domain_name}) + console.log({dist_res}) + + console.log('Site created successfully') + } catch (e) { + console.error('SOMETHING WENT WRONG', e) + // TODO: Implement rollback logic to delete inserted items if an error occurs + } + } } + +export async function fetch_site_data(site_id) { + const { data, error } = await supabase + .from('sites') + .select(` + id, + name, + code, + design, + fields!fields_site_fkey(*), + entries!entries_site_fkey(*), + page_types( + *, + fields(*), + entries(*), + sections(*, entries(*)), + pages( + *, + entries(*), + sections(*, entries(*)) + ) + ), + symbols( + *, + fields(*), + entries(*) + ) + `) + .eq('id', site_id) + .single() + + console.log({error, data}) + + if (!data) { + throw new Error('Could not find site') + } + + const site_data = { + site: _.omit(data, ['pages', 'page_types', 'symbols', 'sections']), + pages: data.page_types.flatMap(pt => pt.pages.map(p => _.omit(p, ['sections']))), + page_types: data.page_types.map(pt => _.omit(pt, ['pages', 'sections'])), + symbols: data.symbols, + sections: data.page_types.flatMap(pt => [ ...pt.sections, ...pt.pages.flatMap(p => p.sections)]) + } + + return site_data +} + +function prepare_data(data) { + + // Prepare data while maintaining relationships + const site = _.omit(data.site, ['entries', 'fields']) + const page_types = data.page_types.map((pt) => _.omit(pt, ['sections', 'entries', 'fields'])) + const pages = data.pages.map((page) => _.omit(page, ['entries'])) + const sections = data.sections.map((section) => _.omit(section, ['entries'])) + const symbols = data.symbols.map((symbol) => _.omit(symbol, ['entries', 'fields'])) + const sorted_fields = sort_fields_by_hierarchy([...data.site.fields, ...data.page_types.flatMap((pt) => pt.fields), ...data.symbols.flatMap((s) => s.fields)]) + const sorted_entries = sort_entries_by_hierarchy([ + ...data.site.entries, + ...data.page_types.flatMap((pt) => pt.entries), + ...data.pages.flatMap((p) => p.entries), + ...data.sections.flatMap((s) => s.entries), + ...data.symbols.flatMap((s) => s.entries) + ]) + + return { + site, + page_types: page_types.map(pt => ({ ...pt, owner_site: site.id })), + pages: sort_pages_by_hierarchy(pages).map(page => ({ ...page, owner_site: site.id })), + sections: sort_sections_by_hierarchy(sections).map(s => ({ ...s, owner_site: site.id })), + symbols: symbols.map(s => ({ ...s, owner_site: site.id })), + fields: sorted_fields.map(f => ({ ...f, owner_site: site.id })), + entries: sorted_entries.map(e => ({ ...e, owner_site: site.id })) + } + + function sort_pages_by_hierarchy(pages) { + const page_map = new Map(pages.map(page => [page.id, page])) + const sorted = [] + const visited = new Set() + const temp_visited = new Set() + + function dfs(page_id) { + if (temp_visited.has(page_id)) { + throw new Error('Circular dependency detected in pages') + } + if (visited.has(page_id)) return + + temp_visited.add(page_id) + const page = page_map.get(page_id) + + if (page.parent && page_map.has(page.parent)) { + dfs(page.parent) + } + + temp_visited.delete(page_id) + visited.add(page_id) + sorted.push(page) + } + + for (const page of pages) { + if (!visited.has(page.id)) { + dfs(page.id) + } + } + + return sorted + } + + function sort_sections_by_hierarchy(sections) { + const section_map = new Map(sections.map(section => [section.id, section])) + const sorted = [] + const visited = new Set() + const temp_visited = new Set() + + function dfs(section_id) { + if (temp_visited.has(section_id)) { + throw new Error('Circular dependency detected in sections') + } + if (visited.has(section_id)) return + + temp_visited.add(section_id) + const section = section_map.get(section_id) + + if (section.master && section_map.has(section.master)) { + dfs(section.master) + } + if (section.palette && section_map.has(section.palette)) { + dfs(section.palette) + } + + temp_visited.delete(section_id) + visited.add(section_id) + sorted.push(section) + } + + for (const section of sections) { + if (!visited.has(section.id)) { + dfs(section.id) + } + } + + return sorted + } + + function sort_fields_by_hierarchy(fields) { + const field_map = new Map(fields.map(field => [field.id, field])) + const sorted = [] + const visited = new Set() + const temp_visited = new Set() + + function dfs(field_id) { + if (temp_visited.has(field_id)) { + throw new Error('Circular dependency detected in fields') + } + if (visited.has(field_id)) return + + temp_visited.add(field_id) + const field = field_map.get(field_id) + + if (field.parent && field_map.has(field.parent)) { + dfs(field.parent) + } + if (field.options?.source && field_map.has(field.options.source)) { + dfs(field.options.source) + } + // Note: options.page_type is not a field ID, so we don't need to sort based on it + + temp_visited.delete(field_id) + visited.add(field_id) + sorted.push(field) + } + + for (const field of fields) { + if (!visited.has(field.id)) { + dfs(field.id) + } + } + + return sorted + } + + function sort_entries_by_hierarchy(entries) { + const entry_map = new Map(entries.map(entry => [entry.id, entry])) + const sorted = [] + const visited = new Set() + const temp_visited = new Set() + + function dfs(entry_id) { + if (temp_visited.has(entry_id)) { + throw new Error('Circular dependency detected in entries') + } + if (visited.has(entry_id)) return + + temp_visited.add(entry_id) + const entry = entry_map.get(entry_id) + + if (entry.parent && entry_map.has(entry.parent)) { + dfs(entry.parent) + } + + temp_visited.delete(entry_id) + visited.add(entry_id) + sorted.push(entry) + } + + for (const entry of entries) { + if (!visited.has(entry.id)) { + dfs(entry.id) + } + } + + return sorted + } + +} + +async function build_site_bundle({ pages, symbols, site, page_types, sections }) { + + const page_files = await Promise.all( + pages.map((page) => build_page_tree(page)) + ) + + const symbol_files = await Promise.all(symbols.filter((s) => s.code.js).map((symbol) => build_symbol_tree(symbol))) + + return _.flattenDeep([...symbol_files, ...page_files.flat()]) + + async function build_symbol_tree(symbol) { + const data = get_content_with_synced_values({ + entries: symbol.entries, + fields: symbol.fields, + site, + // page, + pages, + page_types + }) + const res = await processCode({ + component: { + html: symbol.code.html, + css: symbol.code.css, + js: symbol.code.js, + data: data['en'] + } + }) + + if (res.error) { + throw Error(`Error processing symbol: ${symbol.name}`) + } + const date = new Intl.DateTimeFormat('en-US', { + year: 'numeric', + month: 'long', + day: 'numeric' + }).format(new Date()) + return { + path: '_symbols/' + symbol.id + '.js', + content: `// ${symbol.name} - Updated ${date}\n\n` + res.js + } + } + + async function build_page_tree(page) { + const page_type = page_types.find((pt) => pt.id === page.page_type) + const page_sections = sections.filter((s) => s.page === page.id) + + function get_full_path(page, path = page?.slug || '') { + const parent = pages.find(p => p.id === page.parent) + if (!parent) return path + + return get_full_path(parent, parent.slug + '/' + path) + } + + // order sections + let ordered_sections = [] + + // get mastered sections + const mastered_sections = page_sections.filter((s) => s.master).map(section => { + const section_master = sections.find(s => s.id === section.master) + return { + ...section, + master: section_master + } + }) + + // @ts-ignore + for (const section of mastered_sections.sort((a, b) => a.master.index - b.master.index)) { + // if has symbol, add like normal + if (section.master?.symbol) { + ordered_sections.push({ + ...section, + index: section.master.index + }) + } + + // if is master palette, insert palette sections, ordered by index + if (!section.master?.symbol) { + const palette_sections = page_sections.filter((s) => s.palette).sort((a, b) => a.index - b.index) + ordered_sections.push(...palette_sections) + } + } + + // then sort by index and flatten + const { html } = await code_generators.page_html({ + site, + page: { + ...page, + page_type + }, + page_sections: ordered_sections, + page_symbols: symbols, + page_list: pages, + page_types + }) + + let path + if (page.slug === '') { + path = `index.html` + } else { + path = `${get_full_path(page)}/index.html` + } + + return { + path, + content: html + } + } + +} + diff --git a/src/lib/assets/logodark.svg b/src/lib/assets/logodark.svg index e3db11b13..4ad20807e 100644 --- a/src/lib/assets/logodark.svg +++ b/src/lib/assets/logodark.svg @@ -1,26 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/src/lib/assets/reset.css b/src/lib/assets/reset.css deleted file mode 100644 index d181bf753..000000000 --- a/src/lib/assets/reset.css +++ /dev/null @@ -1,69 +0,0 @@ -.primo-reset { - @tailwind base; - direction: ltr; - color-scheme: dark; -} - -button, -a { - cursor: pointer; -} - -body { - margin: 0; -} - -.primo-input { -appearance: none; -border: 0; -background-color: transparent; -font-size: inherit; -background: var(--color-white); -padding: 0.5rem 0.75rem; -width: 100%; - -/* &:focus { - box-shadow: 0 0 0 1px var(--color-primored); - border: 0; -} - -&:placeholder { - color: var(--color-gray-5); -} */ -} - -.primo-modal { - color: var(--color-gray-1); - /* background: var(--color-gray-9); */ - padding: 1rem; - border-radius: var(--primo-border-radius); - margin: 0 auto; - width: 100vw; -} - -.primo-heading-xl { -margin-bottom: 0.5rem; -font-size: 1.25rem; -line-height: 1.75rem; -font-weight: 700; -} - -.primo-heading-lg { -margin-bottom: 0.25rem; -font-size: 1.1rem; -line-height: 1.5rem; -font-weight: 700; -} - -.sr-only { -position: absolute; -width: 1px; -height: 1px; -padding: 0; -margin: -1px; -overflow: hidden; -clip: rect(0, 0, 0, 0); -white-space: nowrap; -border-width: 0; -} - diff --git a/src/lib/assets/server-logo.svg b/src/lib/assets/server-logo.svg index a519bfb50..4491aa3ef 100644 --- a/src/lib/assets/server-logo.svg +++ b/src/lib/assets/server-logo.svg @@ -1,26 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + diff --git a/src/lib/builder/Primo.svelte b/src/lib/builder/Primo.svelte new file mode 100644 index 000000000..0cfe6d5a8 --- /dev/null +++ b/src/lib/builder/Primo.svelte @@ -0,0 +1,252 @@ + tag code + let previous + $effect.pre(() => { + if (_.isEqual(previous, { head: $siteCode.head, design: $siteDesign })) return + compile_component_head(`${site_design_css($siteDesign) + $siteCode.head}`).then((generated_code) => { + $site_html = generated_code + previous = _.cloneDeep({ head: $siteCode.head, design: $siteDesign }) + }) + }) + + // reset site html to avoid issues when navigating to new site + onDestroy(() => { + $site_html = null + }) + + async function compile_component_head(html) { + const compiled = await processCode({ + component: { + html, + css: '', + js: '', + data: get_site_data({}) + } + }) + if (!compiled.error) { + return compiled.head + } else return '' + } + + +
+ + {@render toolbar?.()} + + + { + if (size < 10) { + showing_sidebar = false + sidebar_pane.resize(2) + } else { + showing_sidebar = true + } + }} + > + {#if showing_sidebar} + {#if data.page_type} + + {:else} + + {/if} + {:else if !$onMobile} +
+ +
+ {/if} +
+ + {#if showing_sidebar} + + + + {/if} + + + {@render children?.()} + +
+
+ + + {@const SvelteComponent = activeModal} + + + + + + diff --git a/src/lib/builder/actions/_db_helpers.js b/src/lib/builder/actions/_db_helpers.js new file mode 100644 index 000000000..f571bf9a5 --- /dev/null +++ b/src/lib/builder/actions/_db_helpers.js @@ -0,0 +1,37 @@ +import { supabase } from '$lib/supabase' +import {get_on_page_symbol_sections} from '../stores/helpers' + +export async function get_off_page_sibling_sections(section_id, symbol_id) { + const on_page_sibling_ids = get_on_page_symbol_sections(symbol_id).map(s => s.id) + const excluded_section_ids = [...on_page_sibling_ids, section_id] + let [{ data: direct_block_instances}, { data: indirect_block_instances}] = await Promise.all([ + supabase + .from('sections') + .select('*, entries(*)') + .eq('symbol', symbol_id) + .not('id', 'in', `(${excluded_section_ids.join(',')})`), + supabase.from('sections').select('*, entries(*), master!inner(symbol)').eq('master.symbol', symbol_id) + ]) + + return [ ...(direct_block_instances || []), ...(indirect_block_instances || [])].map(section => ({ + ...section, + entries: section.entries || [] + })) +} + +export async function get_symbol_sections(symbol_id) { + const on_page_sibling_ids = get_on_page_symbol_sections(symbol_id).map(s => s.id) + let [{ data: direct_block_instances }, { data: indirect_block_instances }] = await Promise.all([ + supabase + .from('sections') + .select('*, entries(*), symbol') + .eq('symbol', symbol_id) + .not('id', 'in', `(${Object.keys(on_page_sibling_ids).join(',')})`), + supabase.from('sections').select('*, entries(*), master!inner(symbol)').eq('master.symbol', symbol_id) + ]) + + return [...(direct_block_instances || []), ...(indirect_block_instances || [])].map(section => ({ + ...section, + entries: section.entries || [] + })) +} \ No newline at end of file diff --git a/src/lib/builder/actions/_db_utils.js b/src/lib/builder/actions/_db_utils.js new file mode 100644 index 000000000..0328d66dc --- /dev/null +++ b/src/lib/builder/actions/_db_utils.js @@ -0,0 +1,705 @@ +import { v4 as uuidv4 } from 'uuid' +import _ from 'lodash-es' +import * as helpers from './_helpers' + +export function sort_by_hierarchy(items, dependency = 'parent') { + const item_map = new Map(items.map(entry => [entry.id, entry])) + const sorted = [] + const visited = new Set() + const temp_visited = new Set() + + function dfs(item_id) { + if (temp_visited.has(item_id)) { + throw new Error('Circular dependency detected') + } + if (visited.has(item_id)) return + + temp_visited.add(item_id) + const item = item_map.get(item_id) + + if (item[dependency] && item_map.has(item[dependency])) { + dfs(item[dependency]) + } + + temp_visited.delete(item_id) + visited.add(item_id) + sorted.push(item) + } + + for (const item of items) { + if (!visited.has(item.id)) { + dfs(item.id) + } + } + + return sorted +} + +export function remap_entry_ids(entries, return_map = false) { + const id_map = {} + + function generate_new_id(item) { + id_map[item.id] = uuidv4() + } + + function get_id(old_id) { + return id_map[old_id] || old_id + } + + // First pass: generate new IDs for all items + entries.forEach(generate_new_id) + + function remap_entry(entry) { + const new_entry = _.cloneDeep(entry) + new_entry.id = get_id(entry.id) + new_entry.parent = get_id(entry.parent) + return new_entry + } + + // Second pass: update all references + const new_entries = entries.map(remap_entry) + + return return_map ? [ new_entries, id_map ] : new_entries +} + +export function remap_ids({ pages, sections }) { + const id_map = new Map() + + function generate_new_id(old_id) { + if (!old_id) return null + if (!id_map.has(old_id)) { + id_map.set(old_id, uuidv4()) + } + return id_map.get(old_id) + } + + function get_id(old_id) { + return id_map.get(old_id) || old_id + } + + // First pass: generate new IDs for all items + function generate_ids(item) { + generate_new_id(item.id) + if (item.fields) { + item.fields.forEach(field => generate_new_id(field.id)) + } + if (item.entries) { + item.entries.forEach(entry => generate_new_id(entry.id)) + } + } + + // [site, ...page_types, ...symbols, ...pages, ...sections].forEach(generate_ids) + [...pages, ...sections].forEach(generate_ids) + + // Second pass: update all references + function scramble_item(item) { + const new_item = _.cloneDeep(item) + new_item.id = get_id(item.id) + + // if (new_item.fields) { + // new_item.fields = new_item.fields.map(field => scramble_field(field)) + // } + + if (new_item.entries) { + new_item.entries = new_item.entries.map(entry => scramble_entry(entry)) + } + + return new_item + } + + function scramble_page_type(page_type) { + const new_page_type = scramble_item(page_type) + new_page_type.site = get_id(page_type.site) + return new_page_type + } + + function scramble_page(page) { + const new_page = scramble_item(page) + new_page.page_type = get_id(page.page_type) + new_page.parent = get_id(page.parent) + return new_page + } + + function scramble_section(section) { + const new_section = scramble_item(section) + new_section.symbol = get_id(section.symbol) + new_section.palette = get_id(section.palette) + new_section.master = get_id(section.master) + new_section.page = get_id(section.page) + new_section.page_type = get_id(section.page_type) + return new_section + } + + // function scramble_field(field) { + // const new_field = _.cloneDeep(field) + // new_field.id = get_id(field.id) + + // if (new_field.parent) { + // new_field.parent = get_id(new_field.parent) + // } + // if (new_field.options?.source) { + // new_field.options.source = get_id(new_field.options.source) + // } + // if (new_field.options?.page_type) { + // new_field.options.page_type = get_id(new_field.options.page_type) + // } + // if (new_field.source) { + // new_field.source = get_id(new_field.source) + // } + + // // Add these new references + // new_field.symbol = get_id(field.symbol) + // new_field.page_type = get_id(field.page_type) + // new_field.site = get_id(field.site) + + // return new_field + // } + + function scramble_entry(entry) { + const new_entry = _.cloneDeep(entry) + new_entry.id = get_id(entry.id) + // new_entry.field = get_id(entry.field) + new_entry.parent = get_id(entry.parent) + + if (new_entry.metadata?.page) { + new_entry.metadata.page = get_id(new_entry.metadata.page) + } + + // Add these new references + new_entry.page = get_id(entry.page) + new_entry.page_type = get_id(entry.page_type) + new_entry.symbol = get_id(entry.symbol) + new_entry.section = get_id(entry.section) + new_entry.site = get_id(entry.site) + + return new_entry + } + + function scramble_symbol(symbol) { + const new_symbol = scramble_item(symbol) + new_symbol.site = get_id(symbol.site) + new_symbol.page_types = symbol.page_types.map(get_id) + return new_symbol + } + + // const new_site = scramble_item(site) + // const new_page_types = page_types.map(scramble_page_type) + // const new_symbols = symbols.map(scramble_symbol) + const new_pages = pages.map(scramble_page) + const new_sections = sections.map(scramble_section) + + return { + // site: new_site, + // page_types: new_page_types, + // symbols: new_symbols, + pages: new_pages, + sections: new_sections, + _map: id_map + } +} + +export function generate_inverted_content([ field_changes, original_fields ], entry_list) { + const restored_fields = _.cloneDeep(original_fields) + + const insertions = [] + const updates = [] + const deletions = [] + + for (const change of field_changes) { + if (change.action === 'insert') { + deletions.push({ + id: change.id + }) + } else if (change.action === 'update') { + const original_field = original_fields.find((f) => f.id === change.id) + const original_field_properties = _.pick(original_field, _.keys(change.data)) + updates.push({ + id: change.id, + data: original_field_properties + }) + } else if (change.action === 'delete') { + const original_field = original_fields.find((f) => f.id === change.id) + insertions.push({ ...original_field }) + } + } + + // remap insertion IDs + const [remapped_insertions, field_id_map] = remap_entry_ids(insertions, true) + + // remap ID on restored field + for (const insertion of insertions) { + const new_id = field_id_map[insertion.id] + const parent = field_id_map[insertion.parent] || insertion.parent + + const field = _.find(restored_fields, ['id', insertion.id]) + field.id = new_id + field.parent = parent + } + + const inverted_field_changes = [ + ...sort_by_hierarchy(remapped_insertions).map(item => ({ + action: 'insert', + data: item + })), + ...updates.map(item => ({ + action: 'update', + id: item.id, + data: item.data + })), + ...deletions.map(item => ({ + action: 'delete', + id: item.id + })) + ] + + // handle entries + const inverted_entry_changes = [] + const restored_entries = [] + for (const [ changes, entries ] of entry_list) { + const original_entries = _.cloneDeep(entries) + + const insertions = [] + const updates = [] + const deletions = [] + + for (const change of changes) { + if (change.action === 'insert') { + deletions.push({ + id: change.id + }) + } else if (change.action === 'update') { + const original_entry = entries.find((f) => f.id === change.id) + const original_entry_properties = _.pick(original_entry, _.keys(change.data)) + updates.push({ + id: change.id, + data: original_entry_properties + }) + } else if (change.action === 'delete') { + const original_entry = entries.find((f) => f.id === change.id) + insertions.push({ ...original_entry }) + } + } + + // remap insertion IDs + const [remapped_insertions, id_map] = remap_entry_ids(insertions, true) + + // remap ID on restored field + for (const insertion of insertions) { + const new_id = id_map[insertion.id] + const parent = id_map[insertion.parent] || insertion.parent + const field = field_id_map[insertion.field] || insertion.field + + const entry = _.find(original_entries, ['id', insertion.id]) + entry.id = new_id + entry.parent = parent + entry.field = field + } + + inverted_entry_changes.push([ + ...sort_by_hierarchy(remapped_insertions).map(item => ({ + action: 'insert', + data: item + })), + ...updates.map(item => ({ + action: 'update', + id: item.id, + data: item.data + })), + ...deletions.map(item => ({ + action: 'delete', + id: item.id + })) + ]) + + restored_entries.push(original_entries) + } + + return { + changes: { + fields: inverted_field_changes, + entries: inverted_entry_changes + }, + items: { + fields: restored_fields, + entries: restored_entries + } + } + + // return [ inverted_changes, restored_fields ] +} + +export function generate_inverted_field_changes(changes, original_fields) { + const restored_fields = _.cloneDeep(original_fields) + + let insertions = [] + const updates = [] + const deletions = [] + + for (const change of changes) { + if (change.action === 'insert') { + deletions.push({ + id: change.id + }) + } else if (change.action === 'update') { + const original_field = original_fields.find((f) => f.id === change.id) + const original_field_properties = _.pick(original_field, _.keys(change.data)) + updates.push({ + id: change.id, + data: original_field_properties + }) + } else if (change.action === 'delete') { + const original_field = original_fields.find((f) => f.id === change.id) + insertions.push(original_field) + } + } + + // remap insertion IDs + const [remapped_insertions, id_map] = remap_entry_ids(insertions, true) + + // remap ID on restored field + for (const insertion of insertions) { + const new_id = id_map[insertion.id] + _.find(restored_fields, ['id', insertion.id]).id = new_id + } + + const inverted_changes = [ + ...sort_by_hierarchy(remapped_insertions).map(item => ({ + action: 'insert', + data: item + })), + ...updates.map(item => ({ + action: 'update', + id: item.id, + data: item.data + })), + ...deletions.map(item => ({ + action: 'delete', + id: item.id + })) + ] + + return { + changes: inverted_changes, + fields: restored_fields, + map: id_map + } +} + +export function generate_inverted_entry_changes(changes, original_entries, field_map) { + const restored_entries = _.cloneDeep(original_entries) + + let insertions = [] + const updates = [] + const deletions = [] + + for (const change of changes) { + if (change.action === 'insert') { + deletions.push({ + id: change.id + }) + } else if (change.action === 'update') { + const original_entry = original_entries.find((f) => f.id === change.id) + const original_entry_properties = _.pick(original_entry, _.keys(change.data)) + updates.push({ + id: change.id, + data: original_entry_properties + }) + } else if (change.action === 'delete') { + const original_entry = original_entries.find((f) => f.id === change.id) + insertions.push(original_entry) + } + } + + // remap insertion IDs + const [remapped_insertions, id_map] = remap_entry_ids(insertions, true) + + // remap ID on restored field + for (const insertion of insertions) { + const new_id = id_map[insertion.id] + _.find(restored_entries, ['id', insertion.id]).id = new_id + } + + const inverted_changes = [ + ...sort_by_hierarchy(remapped_insertions).map(item => ({ + action: 'insert', + data: item + })), + ...updates.map(item => ({ + action: 'update', + id: item.id, + data: item.data + })), + ...deletions.map(item => ({ + action: 'delete', + id: item.id + })) + ] + + + + return { + changes: helpers.update_entry_changes_with_new_field_ids(inverted_changes, field_map), + entries: helpers.update_entries_with_new_field_ids(restored_entries, field_map) + } +} + +export function generate_inverted_changes(changes, original_items) { + const restored_fields = _.cloneDeep(original_items) + + let insertions = [] + const updates = [] + const deletions = [] + + for (const change of changes) { + if (change.action === 'insert') { + deletions.push({ + id: change.id + }) + } else if (change.action === 'update') { + const original_field = original_items.find((f) => f.id === change.id) + const original_field_properties = _.pick(original_field, _.keys(change.data)) + updates.push({ + id: change.id, + data: original_field_properties + }) + } else if (change.action === 'delete') { + const original_field = original_items.find((f) => f.id === change.id) + insertions.push(original_field) + } + } + + // remap insertion IDs + const [remapped_insertions, id_map] = remap_entry_ids(insertions, true) + + // remap ID on restored field + for (const insertion of insertions) { + const new_id = id_map[insertion.id] + _.find(restored_fields, ['id', insertion.id]).id = new_id + } + + const inverted_changes = [ + ...sort_by_hierarchy(remapped_insertions).map(item => ({ + action: 'insert', + data: item + })), + ...updates.map(item => ({ + action: 'update', + id: item.id, + data: item.data + })), + ...deletions.map(item => ({ + action: 'delete', + id: item.id + })) + ] + + return [ inverted_changes, restored_fields ] +} + +export function remap_entries_and_fields({changes, items}) { + // loop through changes + // for inserted items, remap ID and remap ID on matching entry + + const fields_to_remap = _.cloneDeep(changes.fields.filter(c => c.action === 'insert').map(c => c.data)) + const field_map = remap_entry_ids(fields_to_remap, true)[1] + + for (const unmapped_field of fields_to_remap) { + const new_id = field_map[unmapped_field.id] + const new_parent_id = field_map[unmapped_field.parent] || unmapped_field.parent + const new_conditional_field_id = field_map[unmapped_field.options?.condition?.field] || unmapped_field.options?.condition?.field + + const change = _.find(changes.fields, ['id', unmapped_field.id]) + change.id = new_id + change.data.id = new_id + change.data.parent = new_parent_id + change.data.options = change.data.options?.condition ? { + ...change.data.options, + condition: { + ...change.data.options.condition, + field: new_conditional_field_id + } + } : change.data.options + + changes.entries + .filter(change => change.data?.field === unmapped_field.id) + .forEach(change => change.data.field = new_id) + + const field = _.find(items.fields, ['id', unmapped_field.id]) + field.id = new_id + field.parent = new_parent_id + field.options.condition = { + ...field.options.condition, + field: new_conditional_field_id + } + + items.entries + .filter(entry => entry.field === unmapped_field.id) + .forEach(entry => entry.field = new_id) + } + + const entries_to_remap = _.cloneDeep(changes.entries.filter(c => c.action === 'insert').map(c => c.data)) + const entry_map = remap_entry_ids(entries_to_remap, true)[1] + + for (const unmapped_entry of entries_to_remap) { + const new_id = entry_map[unmapped_entry.id] + const new_parent_id = entry_map[unmapped_entry.parent] || unmapped_entry.parent + + const change = _.find(changes.entries, ['id', unmapped_entry.id]) + change.id = new_id + change.data.id = new_id + change.data.parent = new_parent_id + + const entry = _.find(items.entries, ['id', unmapped_entry.id]) + entry.id = new_id + entry.parent = new_parent_id + } +} + +export function remap_entry_and_field_items({ fields, entries }) { + // loop through changes + // for inserted items, remap ID and remap ID on matching entry + + const fields_to_remap = _.cloneDeep(fields) + const field_map = remap_entry_ids(fields, true)[1] + + for (const unmapped_field of fields_to_remap) { + const new_id = field_map[unmapped_field.id] + const new_parent_id = field_map[unmapped_field.parent] || unmapped_field.parent + + const field = _.find(fields, ['id', unmapped_field.id]) + field.id = new_id + field.parent = new_parent_id + entries + .filter(entry => entry.field === unmapped_field.id) + .forEach(entry => entry.field = new_id) + } + + const entries_to_remap = _.cloneDeep(entries) + const entry_map = remap_entry_ids(entries_to_remap, true)[1] + + for (const unmapped_entry of entries_to_remap) { + const new_id = entry_map[unmapped_entry.id] + const new_parent_id = entry_map[unmapped_entry.parent] || unmapped_entry.parent + + const entry = _.find(entries, ['id', unmapped_entry.id]) + entry.id = new_id + entry.parent = new_parent_id + } +} + + +/** + * Generates a list of entry changes by comparing original and updated entries + * + * @param {import('$lib').Entry[]} original_entries - The original array of entries + * @param {import('$lib').Entry[]} updated_entries - The updated array of entries + * @returns {{ action: string, id: string, data?: object }[]} Array of change objects + */ +export function generate_entry_changes(original_entries, updated_entries) { + + const inserts = [] + const updates = [] + const deletions = [] + + // Handle deletions + original_entries.forEach(original => { + if (!updated_entries.find(updated => updated.id === original.id)) { + deletions.push({ action: 'delete', id: original.id }) + } + }) + + // Handle inserts and updates + updated_entries.forEach(updated => { + const original = original_entries.find(o => o.id === updated.id) + if (!original) { + inserts.push({ action: 'insert', id: updated.id, data: _.cloneDeep(updated) }) + } else if (!_.isEqual(original, updated)) { + updates.push({ + action: 'update', + id: updated.id, + data: _.cloneDeep(_.omitBy(updated, (v, k) => _.isEqual(original[k], v))) + }) + } + }) + + // Sort inserts by hierarchy so parents come before children + const sorted_inserts = sort_by_hierarchy( + inserts.map(insert => insert.data) + ).map(data => ({ + action: 'insert', + id: data.id, + data + })) + + // Combine all changes in the correct order: deletions, updates, sorted inserts + return [ + ...deletions, // deletions + ...updates, + ...sorted_inserts + ] +} + + +/** + * Generates a list of entry changes by comparing original and updated entries + * + * @param {import('$lib').Field[]} original_fields - The original array of entries + * @param {import('$lib').Field[]} updated_fields - The updated array of entries + * @returns {{ action: string, id: string, data?: object }[]} Array of change objects + */ +export function generate_field_changes(original_fields, updated_fields) { + + // Collect inserts and updates + const inserts = [] + const updates = [] + const deletions = [] + + // Handle deletions - keep as is since we want to delete children before parents + original_fields.forEach(original => { + if (!updated_fields.find(updated => updated.id === original.id)) { + deletions.push({ + action: 'delete', + id: original.id + }) + } + }) + + updated_fields.forEach(updated => { + const original = original_fields.find(o => o.id === updated.id) + + if (!original) { + inserts.push({ + action: 'insert', + id: updated.id, + data: _.cloneDeep(updated) + }) + } else { + const comparable_original = _.omit(original, ['id']) + const comparable_updated = _.omit(updated, ['id']) + + if (!_.isEqual(comparable_original, comparable_updated)) { + updates.push({ + action: 'update', + id: updated.id, + data: _.cloneDeep(_.omitBy(comparable_updated, (v, k) => _.isEqual(comparable_original[k], v))) + }) + } + } + }) + + // Sort inserts by hierarchy so parents come before children + const sorted_inserts = sort_by_hierarchy( + inserts.map(insert => insert.data) + ).map(data => ({ + action: 'insert', + id: data.id, + data + })) + + // Combine all changes in the correct order: deletions, updates, sorted inserts + return [ + ...deletions, // deletions + ...updates, + ...sorted_inserts + ] +} \ No newline at end of file diff --git a/src/lib/builder/actions/_helpers.js b/src/lib/builder/actions/_helpers.js new file mode 100644 index 000000000..1699c20d9 --- /dev/null +++ b/src/lib/builder/actions/_helpers.js @@ -0,0 +1,927 @@ +import { dataChanged } from '$lib/builder/database' +import {get} from 'svelte/store' +import _ from 'lodash-es' +import { createUniqueID, get_empty_value } from '$lib/builder/utils' +import { sort_by_hierarchy, remap_entry_ids } from './_db_utils' +import { Content_Row } from '$lib/builder/factories' +import {get_on_page_symbol_sections} from '$lib/builder/stores/helpers' +import {page} from '$app/stores' + +// TODO: put DB HELPERS in a separate file + +// DB HELPERS +export async function handle_inverse_field_changes(inverse_field_changes, args = {}) { + const field_db_ids = await handle_field_changes(inverse_field_changes, args) + + // Create an object that connects the original DBID to the new DBID, using original_to_temp_content_ids as the bridge + const original_to_new_field_db_ids = {} + + // Map field IDs from temporary ID to DBID + Object.entries(inverse_field_changes.original_to_temp_field_ids).forEach(([original_id, temp_id]) => { + const db_id = field_db_ids[temp_id] + if (db_id) { + original_to_new_field_db_ids[original_id] = db_id + } + }) + + return original_to_new_field_db_ids +} + +export async function reverse_field_changes(field_changes, original_fields, args = {}) { + // recreated deleted fields, then return an object which maps the original field's DBID to the recreated field's DBID + const original_to_temp_field_ids = {} + const original_to_new_field_db_ids = {} + + const inverse_field_changes = generate_inverse_field_changes() + const field_db_ids = await handle_field_changes(inverse_field_changes, args) + + // Map field IDs + Object.entries(original_to_temp_field_ids).forEach(([original_id, temp_id]) => { + const db_id = field_db_ids[temp_id] + if (db_id) { + original_to_new_field_db_ids[original_id] = db_id + } + }) + + return original_to_new_field_db_ids + + function generate_inverse_field_changes() { + const new_field_ids = field_changes + .filter((change) => change.action === 'delete') + .reduce((acc, change) => { + acc[change.id] = createUniqueID() + return acc + }, {}) + return field_changes.map((change) => { + if (change.action === 'insert') { + return { + action: 'delete', + id: change.id + } + } else if (change.action === 'update') { + const original_field = original_fields.find((f) => f.id === change.id) + const original_field_properties = _.pick(original_field, _.keys(change.data)) + return { + action: 'update', + id: change.id, + data: original_field_properties + } + } else if (change.action === 'delete') { + const original_field = original_fields.find((f) => f.id === change.id) + const new_id = new_field_ids[original_field.id] + const new_parent_id = new_field_ids[original_field.parent] + original_to_temp_field_ids[change.id] = new_id + return { + action: 'insert', + id: new_id, + data: { + ...original_field, + ...(new_parent_id ? { parent: new_parent_id } : {}) + } + } + } + }) + } +} + +export async function reverse_content_changes(content_changes, original_entries, inverse_field_db_ids = {}, args = {}) { + // recreated deleted fields, then return an object which maps the original field's DBID to the recreated field's DBID + const original_to_temp_content_ids = {} + const original_to_new_content_db_ids = {} + + const inverse_content_changes = generate_inverse_content_changes() + const content_db_ids = await handle_content_changes(inverse_content_changes, inverse_field_db_ids, args) + + // Map field IDs + Object.entries(original_to_temp_content_ids).forEach(([original_id, temp_id]) => { + const db_id = content_db_ids[temp_id] + if (db_id) { + original_to_new_content_db_ids[original_id] = db_id + } + }) + + return original_to_new_content_db_ids + + function generate_inverse_content_changes() { + const new_content_ids = content_changes + .filter((change) => change.action === 'delete') + .reduce((acc, change) => { + acc[change.id] = createUniqueID() + return acc + }, {}) + return content_changes.map((change) => { + if (change.action === 'insert') { + return { + action: 'delete', + id: change.id + } + } else if (change.action === 'update') { + const original_entry = original_entries.find((f) => f.id === change.id) + const original_entry_properties = _.pick(original_entry, _.keys(change.data)) + return { + action: 'update', + id: change.id, + data: original_entry_properties + } + } else if (change.action === 'delete') { + const original_entry = original_entries.find((f) => f.id === change.id) + const new_id = new_content_ids[original_entry.id] + const new_parent_id = new_content_ids[original_entry.parent] + const new_field_id = inverse_field_db_ids[original_entry.field] + original_to_temp_content_ids[change.id] = new_id + return { + action: 'insert', + id: new_id, + data: { + ...original_entry, + ...(new_parent_id ? { parent: new_parent_id } : {}), + ...(new_field_id ? { field: new_field_id } : {}) + } + } + } + }) + } +} + +export async function handle_field_changes_new(changes, args = {}) { + + const insertions = changes.filter((c) => c.action === 'insert').reduce((acc, change) => [ ...acc, { ...change.data, ...args } ], []) + const updates_and_deletions = changes.filter((c) => c.action === 'update' || c.action === 'delete') + + if (insertions.length > 0) { + await dataChanged({ + table: 'fields', + action: 'insert', + data: sort_by_hierarchy(insertions) + }) + } + + await Promise.all( + updates_and_deletions.map(async change => { + if (change.action === 'update') { + await dataChanged({ + table: 'fields', + action: 'update', + data: { + ...change.data, + ...args + }, + id: change.id + }) + } else if (change.action === 'delete') { + await dataChanged({ + table: 'fields', + action: 'delete', + id: change.id + }) + } + }) + ) +} + +export async function handle_content_changes_new(changes, args = {}) { + // do all insertions first, send in one insert batch + const insertions = changes.filter((c) => c.action === 'insert').reduce((acc, change) => [ ...acc, { ...change.data, ...args } ], []) + const updates_and_deletions = changes.filter((c) => c.action === 'update' || c.action === 'delete') + + if (insertions.length > 0) { + // first, insert new entries + await dataChanged({ + table: 'entries', + action: 'insert', + data: sort_by_hierarchy(insertions) + }) + } + + // then do everything else, referencing new ids and existing ids + await Promise.all( + updates_and_deletions.map(async change => { + if (change.action === 'update') { + await dataChanged({ + table: 'entries', + action: 'update', + data: { + ...change.data, + ...args + }, + }) + } else if (change.action === 'delete') { + await dataChanged({ + table: 'entries', + action: 'delete', + id: change.id + }) + } + }) + ) +} + +export async function handle_field_changes(changes, args = {}) { + // do all insertions first, send in one insert batch + const insertions = changes.filter((c) => c.action === 'insert').map((c) => ({ ...c, data: { ...c.data, ...args } })) + const updates = changes.filter((c) => c.action === 'update') + const deletions = changes.filter((c) => c.action === 'delete') + + const field_db_ids = _.chain(insertions).keyBy('id').value() + + if (insertions.length > 0) { + // first, insert new fields + + await dataChanged({ + table: 'fields', + action: 'insert', + data: insertions.map((change) => _.omit(change.data, ['id', 'parent', 'options'])) + }).then((res) => { + res.forEach(({ id: db_id }, i) => { + const og_id = insertions[i].id + field_db_ids[og_id] = db_id + }) + }) + + // then, update the field parents + await Promise.all( + insertions + // .filter((c) => c.data.parent) + .filter((c) => c.data.parent || c.data.options.condition?.field) + .map(async ({ id, data }) => { + const updated_data = { options: data.options } + // const parent_db_id = field_db_ids[data.parent] || data.parent + if (data.parent) { + updated_data.parent = field_db_ids[data.parent] || data.parent + } + if (data.options?.condition?.field) { + updated_data.options.condition.field = field_db_ids[data.options.condition.field] || data.options.condition.field + } + await dataChanged({ + table: 'fields', + action: 'update', + id: field_db_ids[id], + data: updated_data + }) + }) + ) + } + + // then do everything else, referencing new ids and existing ids + await Promise.all([ + ...updates.map(async ({ id, data }) => { + const updated_data = _.cloneDeep(data) + if (data.parent) { + updated_data.parent = field_db_ids[data.parent] || data.parent + } + if (data.options?.condition?.field) { + updated_data.options.condition.field = field_db_ids[data.condition?.field] || data.options.condition.field + } + await dataChanged({ + table: 'fields', + action: 'update', + id, + data: updated_data + }) + }), + ...deletions.map(async ({ id }) => + dataChanged({ + table: 'fields', + action: 'delete', + id + }) + ) + ]) + + return field_db_ids +} + +export async function handle_content_changes(changes, field_db_ids = {}, args = {}) { + // do all insertions first, send in one insert batch + const insertions = changes.filter((c) => c.action === 'insert').map((c) => ({ ...c, data: { ...c.data, ...args } })) + const updates = changes.filter((c) => c.action === 'update') + const deletions = changes.filter((c) => c.action === 'delete') + + const content_db_ids = _.chain(insertions).keyBy('id').value() + + if (insertions.length > 0) { + // first, insert new entries + + await dataChanged({ + table: 'entries', + action: 'insert', + data: insertions.map((change) => { + const omitted_props = ['id'] + const has_field_db_id_to_update = field_db_ids[change.data.field] + if (has_field_db_id_to_update) omitted_props.push('field') + const has_parent_db_id_to_update = content_db_ids[change.data.parent] + if (has_parent_db_id_to_update) omitted_props.push('parent') + return _.omit(change.data, omitted_props) + }) + }).then((res) => { + res.forEach(({ id: db_id }, i) => { + const og_id = insertions[i].id + content_db_ids[og_id] = db_id + }) + }) + + // then, update the entries' field & parent + await Promise.all( + insertions + .filter(({ data }) => { + const has_db_id_to_update = content_db_ids[data.parent] || field_db_ids[data.field] + return has_db_id_to_update + }) + .map(async ({ id, data }) => { + const parent_db_id = content_db_ids[data.parent] + const field_db_id = field_db_ids[data.field] + await dataChanged({ + table: 'entries', + action: 'update', + id: content_db_ids[id], + data: { + ...(parent_db_id ? { parent: parent_db_id } : {}), + ...(field_db_id ? { field: field_db_id } : {}) + } + }) + }) + ) + } + + // then do everything else, referencing new ids and existing ids + await Promise.all([ + ...updates.map(async ({ action, id, data }) => { + const parent_db_id = content_db_ids[data.parent] || data.parent + const field_db_id = field_db_ids[data.field] || data.field + await dataChanged({ + table: 'entries', + action, + id, + data: { + ...data, + ...(parent_db_id ? { parent: parent_db_id } : {}), + ...(field_db_id ? { field: field_db_id } : {}) + } + }) + }), + ...deletions.map(async ({ id }) => + dataChanged({ + table: 'entries', + action: 'delete', + id + }) + ) + ]) + + return content_db_ids +} + +// HELPERS +/** + * Gets all ancestor items for a given item by recursively traversing parent relationships + * + * @param {Object} item - The item to find ancestors for + * @param {Array} all_items - Array of all possible items to search through + * @param {string} item.parent - ID of the item's parent + * @param {string} item.id - ID of the item + * @returns {Array} Array of ancestor items, ordered from immediate parent to most distant ancestor + */ +export function get_ancestors(item, all_items) { + const parent = all_items.find((e) => e.id === item.parent) + return parent ? [parent, ...get_ancestors(parent, all_items)] : [] +} + +export function get_entry_field({ entry, entries, fields }) { + return fields.find((field) => { + if (entry.field) { + return field.id === entry.field + } else { + const parent_entry = entries.find((e) => e.id === entry.parent) + return field.id === parent_entry?.field + } + }) +} + + +/** + * Generates pages entry changes based on page type field changes. + * + * @param {Object} params - The parameters for generating changes. + * @param {Array} params.page_entries - The current entries of the page. + * @param {Array} params.field_changes - The changes made to the fields. + * @param {Array} params.original_fields - The original fields before changes. + * @param {Array} params.updated_fields - The updated fields after changes. + * @returns {Object} An object containing the generated changes and updated entries. + * @property {Array} changes - The generated changes to be applied to the section entries. + * @property {Array} entries - The updated section entries after applying the changes. + */ +export function sync_page_content_with_field_changes({ page_entries, field_changes, original_fields, updated_fields }) { + const new_fields = field_changes.filter((c) => c.action === 'insert').map((c) => c.data) + + function get_entry_field({ entry, entries, fields }) { + return fields.find((field) => { + if (entry.field) { + return field.id === entry.field + } else { + const parent_entry = entries.find((e) => e.id === entry.parent) + return field.id === parent_entry?.field + } + }) + } + + const deleted_page_entries = [] + const modified_page_entries = [] + const unmodified_page_entries = [] + for (const section_entry of page_entries) { + const entry_field = get_entry_field({ entry: section_entry, entries: page_entries, fields: updated_fields }) + + // if entry belongs to a field that no longer exists, delete it + if (!entry_field) { + deleted_page_entries.push(section_entry) + continue + } + + // TEST: delete container entries when their field type has changed + // if entry field type has changed, modify and clear its value + const original_field = get_entry_field({ entry: section_entry, entries: page_entries, fields: original_fields }) + if (original_field && original_field.type !== entry_field.type) { + const modified_entry = { + ...section_entry, + value: get_empty_value(entry_field) + } + modified_page_entries.push(modified_entry) + continue + } + + // keep all other entries + unmodified_page_entries.push(section_entry) + } + + // create new symbol entries based on new fields + // we do this instead of looping through updated symbol entries because: + // - we don't want to add new repeater container entries, or their children (i.e. empty entries) + // - we don't want to add orphaned entries, in the case where we're adding a new child field to an existing repeater field and the section doesn't have any repeater container entries + const new_page_entries = [] + for (const new_field of new_fields) { + // if new field is the descendent of a new repeater field, don't add any entries + const has_ancestor_repeater = get_ancestors(new_field, new_fields).some((f) => f.type === 'repeater') + if (has_ancestor_repeater) { + continue + } + + // handle new root-level field (including groups) + if (!new_field.parent) { + const new_entry = Content_Row({ value: get_empty_value(new_field), field: new_field.id }) + new_page_entries.push(new_entry) + } + + // handle repeater child + // if new field's parent matches the field of one or more existing section repeater containers, create and add an entry for each container + const existing_section_entry_parent_containers = unmodified_page_entries.filter((section_entry) => { + const is_container = section_entry.index !== null + const parent_entry = unmodified_page_entries.find((e) => e.id === section_entry.parent) + return is_container && parent_entry.field === new_field.parent + }) + if (existing_section_entry_parent_containers.length > 0) { + const new_entries = existing_section_entry_parent_containers.map((container) => { + return Content_Row({ value: get_empty_value(new_field), parent: container.id, field: new_field.id }) + }) + new_page_entries.push(...new_entries) + continue + } + + // handle group child - check both existing and newly created group entries + const parent_group_entry = [...unmodified_page_entries, ...new_page_entries].find((section_entry) => { + return section_entry.field && section_entry.field === new_field.parent + }) + if (parent_group_entry) { + const new_entry = Content_Row({ value: get_empty_value(new_field), parent: parent_group_entry.id, field: new_field.id }) + new_page_entries.push(new_entry) + continue + } + } + + const page_entry_insertions = new_page_entries.map((entry) => ({ + action: 'insert', + id: entry.id, + data: _.cloneDeep(entry) + })) + + const page_entry_updates = modified_page_entries.map((entry) => ({ + action: 'update', + id: entry.id, + data: { value: entry.value } + })) + + const page_entry_deletions = deleted_page_entries.map((entry) => ({ + action: 'delete', + id: entry.id + })) + + const all_changes = [...page_entry_deletions, ...page_entry_updates, ...page_entry_insertions] + + const updated_entries = [...unmodified_page_entries, ...modified_page_entries, ...new_page_entries] + + return { + changes: all_changes, + entries: updated_entries + } +} + +/** + * Generates section entries changes based on symbol changes. + * + * @param {Object} params - The parameters for generating changes. + * @param {Array} params.section_entries - The current entries of the section. + * @param {Array} params.field_changes - The changes made to the fields. + * @param {Array} params.original_fields - The original fields before changes. + * @param {Array} params.updated_fields - The updated fields after changes. + * @returns {Object} An object containing the generated changes and updated entries. + * @property {Array} changes - The generated changes to be applied to the section entries. + * @property {Array} entries - The updated section entries after applying the changes. + */ +export function sync_section_content_with_field_changes({ section_entries, field_changes, original_fields, updated_fields }) { + const new_fields = field_changes.filter((c) => c.action === 'insert').map((c) => c.data) + + function get_entry_field({ entry, entries, fields }) { + return fields.find((field) => { + if (entry.field) { + return field.id === entry.field + } else { + const parent_entry = entries.find((e) => e.id === entry.parent) + return field.id === parent_entry?.field + } + }) + } + + const deleted_section_entries = [] + const modified_section_entries = [] + const unmodified_section_entries = [] + for (const section_entry of section_entries) { + const entry_field = get_entry_field({ entry: section_entry, entries: section_entries, fields: updated_fields }) + + // if entry belongs to a field that no longer exists, delete it + if (!entry_field) { + deleted_section_entries.push(section_entry) + continue + } + + // TEST: delete container entries when their field type has changed + // if entry field type has changed, modify and clear its value + const original_field = get_entry_field({ entry: section_entry, entries: section_entries, fields: original_fields }) + if (original_field && original_field.type !== entry_field.type) { + const modified_entry = { + ...section_entry, + value: get_empty_value(entry_field) + } + modified_section_entries.push(modified_entry) + continue + } + + // keep all other entries + unmodified_section_entries.push(section_entry) + } + + // create new symbol entries based on new fields + // we do this instead of looping through updated symbol entries because: + // - we don't want to add new repeater container entries, or their children (i.e. empty entries) + // - we don't want to add orphaned entries, in the case where we're adding a new child field to an existing repeater field and the section doesn't have any repeater container entries + const new_section_entries = [] + for (const new_field of new_fields) { + // if new field is the descendent of a new repeater field, don't add any entries + const has_ancestor_repeater = get_ancestors(new_field, new_fields).some((f) => f.type === 'repeater') + if (has_ancestor_repeater) { + continue + } + + // handle new root-level field (including groups) + if (!new_field.parent) { + const new_entry = Content_Row({ value: get_empty_value(new_field), field: new_field.id }) + new_section_entries.push(new_entry) + } + + // handle repeater child + // if new field's parent matches the field of one or more existing section repeater containers, create and add an entry for each container + const existing_section_entry_parent_containers = unmodified_section_entries.filter((section_entry) => { + const is_container = section_entry.index !== null + const parent_entry = unmodified_section_entries.find((e) => e.id === section_entry.parent) + return is_container && parent_entry.field === new_field.parent + }) + if (existing_section_entry_parent_containers.length > 0) { + const new_entries = existing_section_entry_parent_containers.map((container) => { + return Content_Row({ value: get_empty_value(new_field), parent: container.id, field: new_field.id }) + }) + new_section_entries.push(...new_entries) + continue + } + + // handle group child - check both existing and newly created group entries + const parent_group_entry = [...unmodified_section_entries, ...new_section_entries].find((section_entry) => { + return section_entry.field && section_entry.field === new_field.parent + }) + if (parent_group_entry) { + const new_entry = Content_Row({ value: get_empty_value(new_field), parent: parent_group_entry.id, field: new_field.id }) + new_section_entries.push(new_entry) + continue + } + } + + const section_content_insertions = new_section_entries.map((entry) => ({ + action: 'insert', + id: entry.id, + data: _.cloneDeep(entry) + })) + + const section_content_updates = modified_section_entries.map((entry) => ({ + action: 'update', + id: entry.id, + data: { value: entry.value } + })) + + const section_content_deletions = deleted_section_entries.map((entry) => ({ + action: 'delete', + id: entry.id + })) + + const all_changes = [...section_content_deletions, ...section_content_updates, ...section_content_insertions] + + const updated_entries = [...unmodified_section_entries, ...modified_section_entries, ...new_section_entries] + + return { + changes: all_changes, + entries: updated_entries + } +} + +/** + * Generates changes for symbol entries based on updates to section entries and fields. + * + * @param {Object} params - The parameters for generating symbol entries changes. + * @param {Array} params.original_symbol_entries - The original entries of the symbol. + * @param {Array} params.original_symbol_fields - The original fields of the symbol. + * @param {Array} params.updated_section_entries - The updated entries of the section. + * @param {Array} params.section_content_changes - The changes made to the section entries. + * @param {Array} params.updated_symbol_fields - The updated fields of the symbol. + * @param {Array} params.field_changes - The changes made to the fields. + * @returns {Object} An object containing the changes to be applied to the symbol entries. + */ +export function sync_symbol_content_with_section_changes({ original_symbol_entries, original_symbol_fields, updated_section_entries, section_content_changes, updated_symbol_fields, field_changes }) { + const new_section_entries = section_content_changes.filter((c) => c.action === 'insert').map((c) => c.data) + const new_fields = field_changes.filter((c) => c.action === 'insert').map((c) => c.data) + + const unmodified_symbol_entries = [] + const deleted_symbol_entries = [] + const modified_symbol_entries = [] + + for (const symbol_entry of original_symbol_entries) { + const updated_field = get_entry_field({ entry: symbol_entry, entries: original_symbol_entries, fields: updated_symbol_fields }) + + // if entry belongs to a field that no longer exists, delete it + if (!updated_field) { + deleted_symbol_entries.push(symbol_entry) + continue + } + + // if entry field type has changed, modify and clear its value + const original_field = get_entry_field({ entry: symbol_entry, entries: original_symbol_entries, fields: original_symbol_fields }) + if (original_field.type !== updated_field.type) { + // delete container entries when their field type has changed + if (original_field.type === 'repeater' && symbol_entry.index !== null) { + deleted_symbol_entries.push(symbol_entry) + continue + } + const modified_entry = { + ...symbol_entry, + value: get_empty_value(updated_field) + } + modified_symbol_entries.push(modified_entry) + continue + } + + // keep all other entries + unmodified_symbol_entries.push(symbol_entry) + } + + const remaining_symbol_entries = [...unmodified_symbol_entries, ...modified_symbol_entries] + + let new_symbol_entries = [] + for (const section_entry of new_section_entries) { + const new_field = get_entry_field({ entry: section_entry, entries: new_section_entries, fields: new_fields }) + + // don't include entries belonging to an existing field + if (!new_field) continue + + // include all root-level entries and descendents of new root-level entries + const root_ancestor_is_new = get_ancestors(new_field, new_fields).some((field) => !field.parent) + if (!new_field.parent || root_ancestor_is_new) { + new_symbol_entries.push(_.cloneDeep(section_entry)) + continue + } + + // handle existing repeater children + const section_entry_parent = updated_section_entries.find((e) => e.id === section_entry.parent) + const section_entry_parent_field = get_entry_field({ entry: section_entry_parent, entries: updated_section_entries, fields: updated_symbol_fields }) + const existing_symbol_entry_parent_container = remaining_symbol_entries.find((symbol_entry) => { + const field = get_entry_field({ entry: symbol_entry, entries: remaining_symbol_entries, fields: updated_symbol_fields }) + const fields_match = field.id === section_entry_parent_field.id + const indeces_match = section_entry_parent.index === symbol_entry.index + return fields_match && indeces_match + }) + if (existing_symbol_entry_parent_container) { + new_symbol_entries.push({ ...section_entry, parent: existing_symbol_entry_parent_container.id }) + continue + } + + // handle existing group child + const existing_symbol_entry_parent_group_entry = remaining_symbol_entries.find((symbol_entry) => { + return symbol_entry.field && symbol_entry.field === new_field.parent + }) + if (existing_symbol_entry_parent_group_entry) { + const new_entry = Content_Row({ value: get_empty_value(new_field), parent: existing_symbol_entry_parent_group_entry.id, field: new_field.id }) + new_symbol_entries.push(new_entry) + continue + } + } + + // Ensure no symbol containers are missing children + const existing_symbol_repeater_entries = remaining_symbol_entries.filter((entry) => entry.index !== null) + for (const container_entry of existing_symbol_repeater_entries) { + const field = get_entry_field({ entry: container_entry, entries: remaining_symbol_entries, fields: updated_symbol_fields }) + + // Skip to the next container entry if it already has the new child entries + const has_existing_child_entries = new_symbol_entries.some((entry) => entry.parent === container_entry.id) + if (has_existing_child_entries) { + continue + } + + // Create a new entry for each missing child + const child_fields = new_fields.filter((f) => f.parent === field.id) + for (const child_field of child_fields) { + const new_symbol_container_child_entry = Content_Row({ + field: child_field.id, + parent: container_entry.id, + value: get_empty_value(child_field) + }) + new_symbol_entries.push(new_symbol_container_child_entry) + } + } + + // remap IDs to avoid conflicts with original section entries + new_symbol_entries = remap_entry_ids(new_symbol_entries) + + const symbol_content_insertions = new_symbol_entries.map((entry) => ({ + action: 'insert', + id: entry.id, + data: _.cloneDeep(entry) + })) + + const symbol_content_updates = modified_symbol_entries.map((entry) => ({ + action: 'update', + id: entry.id, + data: { value: entry.value } + })) + + const symbol_content_deletions = deleted_symbol_entries.map((entry) => ({ + action: 'delete', + id: entry.id + })) + + return { + changes: [...symbol_content_deletions, ...symbol_content_updates, ...symbol_content_insertions], + entries: [...remaining_symbol_entries, ...new_symbol_entries] + } +} + + +export function generate_sibling_section_changes({section_id = '', symbol_id, field_changes, original_fields, updated_fields}, sibling_sections = get_on_page_symbol_sections(symbol_id)) { + + const all_original_siblings = sibling_sections + .filter((s) => s.id !== section_id) + .map((s) => ({ id: s.id, entries: s.entries })) + + return all_original_siblings.map(({ id, entries }) => { + const { changes, entries:updated_entries } = sync_section_content_with_field_changes({ + section_entries: entries, + field_changes, + original_fields, + updated_fields + }) + + return { + id, + changes, + entries: updated_entries + } + }) +} + +/** + * Updates field changes with new IDs. + * + * @param {Array} changes - The array of field changes. + * @param {Object} field_db_ids - An object mapping original field IDs to database IDs. + * @returns {Array} The updated array of field changes with new IDs. + */ +export function update_field_changes_with_new_ids(changes, field_db_ids) { + return changes.map(({ action, id, data }) => { + // if (action !== 'insert') return { action, id, data } + // keep this for inverted changes (which need to update for deleting recreated rows) + const db_id = field_db_ids[id] || id + const parent_db_id = field_db_ids[data?.parent] || data?.parent + return { + action, + id: db_id, + data: { + ...data, + ...(parent_db_id ? { parent: parent_db_id } : {}), + id: db_id + } + } + }) +} + +/** + * Updates entries changes with new IDs. + * + * @param {Array} changes - The array of entries changes. + * @param {Object} content_db_ids - An object mapping original entries IDs to database IDs. + * @param {Object} field_db_ids - An object mapping original field IDs to database IDs. + * @returns {Array} The updated array of entries changes with new IDs. + */ +export function update_content_changes_with_new_ids(changes, content_db_ids, field_db_ids = {}) { + return changes.map(({ action, id, data }) => { + // if (action !== 'insert') return { action, id, data } + // keep this for inverted changes (which need to update for deleting recreated rows) + const db_id = content_db_ids[id] || id + const parent_db_id = content_db_ids[data?.parent] || data?.parent + const field_db_id = field_db_ids[data?.field] || data?.field + return { + action, + id: db_id, + data: { + ...data, + ...(parent_db_id ? { parent: parent_db_id } : {}), + ...(field_db_id ? { field: field_db_id } : {}), + id: db_id + } + } + }) +} + +/** + * Updates entries with new IDs. + * + * This function takes an array of entries entries and updates their IDs, parent IDs, and field IDs + * based on the provided mapping objects. It's useful for synchronizing entries data with database IDs + * after operations that may have changed these IDs. + * + * @param {Array} entries - The array of entries entries to update. + * @param {Object | {}} content_db_ids - An object mapping original entries IDs to database IDs. + * @param {Object | {}} field_db_ids - An object mapping original field IDs to database IDs. + * @returns {Array} The updated array of entries entries with new IDs. + */ +export function update_content_with_new_ids(entries, content_db_ids, field_db_ids = {}) { + return entries.map((entry) => ({ + ...entry, + id: content_db_ids[entry.id] || entry.id, + parent: content_db_ids[entry.parent] || entry.parent, + field: field_db_ids[entry.field] || entry.field + })) +} + + + +export function update_entry_changes_with_new_field_ids(changes, field_id_map) { + return changes.map(({ action, id, data }) => { + const field_id = field_id_map[data?.field] || data?.field + return { + action, + id, + data: { + ...data, + ...(field_id ? { field: field_id } : {}), + } + } + }) +} + +export function update_entries_with_new_field_ids(entries, field_id_map) { + return entries.map((entry) => ({ + ...entry, + field: field_id_map[entry.field] || entry.field + })) +} + +/** + * Updates fields with new IDs. + * + * This function takes an array of field objects and updates their IDs and parent IDs + * based on the provided mapping object. It's useful for synchronizing field data with database IDs + * after operations that may have changed these IDs. + * + * @param {Array} fields - The array of field objects to update. + * @param {Object | Object} field_db_ids - An object mapping original field IDs to database IDs. + * @returns {Array} The updated array of field objects with new IDs. + */ +export function update_fields_with_new_ids(fields, field_db_ids) { + return fields.map((field) => ({ + ...field, + id: field_db_ids[field.id] || field.id, + parent: field_db_ids[field.parent] || field.parent + })) +} diff --git a/src/lib/builder/actions/_storage_helpers.js b/src/lib/builder/actions/_storage_helpers.js new file mode 100644 index 000000000..50ce1ffc9 --- /dev/null +++ b/src/lib/builder/actions/_storage_helpers.js @@ -0,0 +1,220 @@ +import { get } from 'svelte/store' +import { storageChanged } from '$lib/builder/database' +import site from '$lib/builder/stores/data/site' +import pages from '$lib/builder/stores/data/pages' +import sections from '$lib/builder/stores/data/sections' +// import symbols from '$lib/builder/stores/data/symbols' +import active_page from '$lib/builder/stores/data/page' +import * as code_generators from '$lib/builder/code_generators' +import { processCode } from '$lib/builder/utils' +import { get_content_with_synced_values } from '$lib/builder/stores/helpers' +import _ from 'lodash-es' +import {supabase} from '$lib/supabase' + +export async function update_page_file(update_all = false) { + const all_pages = get(pages) + if (update_all) { + await Promise.all( + all_pages.map(async (page) => { + const { data = [] } = await supabase.from('sections').select('*, page, entries(*), master(id, symbol, index)').match({ page: page.id }).order('index', { ascending: true }) + await generate_and_upload_page(page, data) + }) + ) + } else { + const page = get(active_page) + await generate_and_upload_page(page, get(sections)) + } + + // let json_path + // if (page.slug === '') { + // json_path = `page.json` + // } else { + // json_path = `${get_full_path(page, all_pages)}/page.json` + // } + + // const page_data = { + // id: page.id, + // data: transform_content({ fields: page.page_type.fields, entries: page.entries }).en, + // sections: ordered_sections.map(section => { + // const symbol = get(symbols).find(symbol => symbol.id === section.symbol) + // console.log({symbol, symbols: get(symbols)}) + // const data = transform_content({ fields: symbol.fields, entries: section.entries }).en + // return { id: section.id, data, _meta: { symbol: symbol.id} } + // }) + // } + + // const page_json = JSON.stringify(page_data) + // const json_file = new File([page_json], 'page.json', { type: 'application/json' }); + // await storageChanged({ + // action: 'upload', + // key: json_path, + // file: json_file + // }) + +} + +export async function update_symbol_file(symbol) { + await Promise.all([ + (async () => { + const data = get_content_with_synced_values({ + entries: symbol.entries, + fields: symbol.fields + }) + const res = await processCode({ + component: { + html: symbol.code.html, + css: symbol.code.css, + js: symbol.code.js, + data: data['en'] + } + }) + + if (res.error) { + console.warn('Error processing symbol', symbol.name) + } + const date = new Intl.DateTimeFormat('en-US', { + year: 'numeric', + month: 'long', + day: 'numeric' + }).format(new Date()) + + const path = '_symbols/' + symbol.id + '.js' + const content = `// ${symbol.name} - Updated ${date}\n\n` + res.js + + const blob = new Blob([content], { type: 'application/javascript' }); + const file = new File([blob], 'index.html', { type: 'application/javascript' }); + + await storageChanged({ + action: 'upload', + key: path, + file + }) + })(), + (async () => { + const { data: direct_sections } = await supabase + .from('sections') + .select('page(id)') + .eq('symbol', symbol.id) + .not('page', 'is', null) + + // Get sections that use the symbol via master + const { data: master_sections } = await supabase + .from('sections') + .select('page(id), master!inner(symbol)') + .eq('master.symbol', symbol.id) + .not('page', 'is', null) + + const sections_using_symbol = [...(direct_sections || []), ...(master_sections || [])] + const pages_to_rebuild = _.uniqBy(sections_using_symbol.map(s => s.page), 'id').filter(p => p.id !== get(active_page).id).map(page => { + const page_data = get(pages).find(p => p.id === page.id) + return page_data + }) + await Promise.all( + pages_to_rebuild.map(async (page) => { + const { data = [] } = await supabase.from('sections').select('*, page, entries(*), master(id, symbol, index)').match({ page: page.id }).order('index', { ascending: true }) + await generate_and_upload_page(page, data) + }) + ) + })() + ]) +} + +export async function update_sitemap() { + const {custom_domain} = get(site) + if (!custom_domain) return + + const all_pages = get(pages) + const base_url = `https://${custom_domain}` + + const sitemap_entries = all_pages.map(page => { + let url = base_url + const page_path = get_full_path(page, all_pages) + if (page.slug !== '') { + url += `/${page_path}` + } + return ` + + ${url} + ` + }).join('') + + const sitemap_content = ` + +${sitemap_entries} +` + + const file = new File([sitemap_content], 'sitemap.xml', { type: 'application/xml; charset=utf-8' }) + + await storageChanged({ + action: 'upload', + key: 'sitemap.xml', + file + }) +} + + +function get_full_path(page, pages, path = page?.slug || '') { + const parent = pages.find(p => p.id === page.parent) + if (!parent) return path + + return get_full_path(parent, pages, parent.slug + '/' + path) +} + + + + +async function generate_and_upload_page(page, page_sections) { + const all_pages = get(pages) + + // order sections + let ordered_sections = [] + + // get mastered sections + const mastered_sections = page_sections.filter((s) => s.master) + + // @ts-ignore + for (const section of mastered_sections.sort((a, b) => a.master.index - b.master.index)) { + // if has symbol, add like normal + if (section.master?.symbol) { + ordered_sections.push({ + ...section, + index: section.master.index + }) + } + + // if is master palette, insert palette sections, ordered by index + if (!section.master?.symbol) { + const palette_sections = page_sections.filter((s) => s.palette).sort((a, b) => a.index - b.index) + // palette_sections.index = page_sections.master.index + ordered_sections.push(...palette_sections) + } + } + + // then sort by index and flatten + + const { html } = await code_generators.page_html({ + page, + page_sections: ordered_sections + }) + + let path + if (page.slug === '') { + path = `index.html` + } else { + path = `${get_full_path(page, all_pages)}/index.html` + } + + const file = new File([html], 'index.html', { type: 'text/html; charset=utf-8' }); + + await storageChanged({ + action: 'upload', + key: path, + file + }) + + // save site preview + if (page.slug === '') { + const { data, error } = await supabase.storage.from('sites').upload(`${get(site).id}/preview.html`, file, { upsert: true }) + } + +} \ No newline at end of file diff --git a/src/lib/builder/actions/active_site.js b/src/lib/builder/actions/active_site.js new file mode 100644 index 000000000..5cb0e6267 --- /dev/null +++ b/src/lib/builder/actions/active_site.js @@ -0,0 +1,78 @@ +import _ from 'lodash-es' +import { dataChanged } from '$lib/builder/database' +import { site, update as update_site } from '$lib/builder/stores/data/site' +import { get } from 'svelte/store' +import { page } from '$app/stores' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { handle_content_changes, handle_field_changes } from './_helpers' +import {update_page_file} from '$lib/builder/actions/_storage_helpers' +import * as db_utils from './_db_utils' + +export async function update_site_code_and_content({ code, entries, fields }) { + const original_site = _.cloneDeep(get(stores.site)) + + const code_changed = !_.isEqual(original_site.code, code) + let content_changes = db_utils.generate_entry_changes(original_site.entries, entries) + let fields_changes = db_utils.generate_field_changes(original_site.fields, fields) + + // ensure each entry has site property to prevent bugs in SectionEditor when working w/ site entries + const updated_entries = entries.map(e => ({ ...e, site: get(site).id })) + + update_site({ code, entries: updated_entries, fields }) + + const field_db_ids = await handle_field_changes(fields_changes, { site: get(site).id }) + const content_db_ids = await handle_content_changes(content_changes, field_db_ids, { + site: get(site).id + }) + + // STORE: update local felds w/ field_db_ids & local entries w/ content_db_ids + update_site({ + fields: get(site).fields.map((f) => ({ + ...f, + id: field_db_ids[f.id] || f.id, + parent: field_db_ids[f.parent] || f.parent + })), + entries: get(site).entries.map((e) => ({ + ...e, + id: content_db_ids[e.id] || e.id, + parent: content_db_ids[e.parent] || e.parent, + field: field_db_ids[e.field] || e.field + })) + }) + + if (code_changed) { + await dataChanged({ + table: 'sites', + action: 'update', + id: get(site).id, + data: { code } + }) + } + + // STORE: update sections to trigger on-page update for any data fields in use + stores.sections.update((s) => s) + + if (content_changes.length > 0 || code_changed) { + update_page_file(true) + } + + // TODO: handle undo + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // } + // }) +} + +export default { + update: async (props) => { + update_site(props) + await dataChanged({ + table: 'sites', + action: 'update', + data: props, + id: get(page).data.site.id + }) + } +} diff --git a/src/lib/builder/actions/languages.js b/src/lib/builder/actions/languages.js new file mode 100644 index 000000000..84dca69c4 --- /dev/null +++ b/src/lib/builder/actions/languages.js @@ -0,0 +1,296 @@ +import _ from 'lodash-es' +import { get } from 'svelte/store' +import { locale } from '$lib/builder/stores/app/misc' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { content as site_content, site } from '$lib/builder/stores/data/site' +import { dataChanged } from '$lib/builder/database' + +export async function add_language(key) { + await update_timeline({ + doing: async () => { + site_content.update((s) => ({ + ...s, + [key]: s['en'] + })) + + stores.pages.update((store) => + store.map((page) => ({ + ...page, + content: { + ...page.content, + [key]: page.content['en'] + } + })) + ) + + stores.symbols.update((store) => + store.map((symbol) => ({ + ...symbol, + content: { + ...symbol.content, + [key]: symbol.content['en'] + } + })) + ) + + stores.sections.update((store) => + store.map((section) => ({ + ...section, + content: { + ...section.content, + [key]: section.content['en'] + } + })) + ) + + // add language to page, site, and sections content + await Promise.all([ + await dataChanged({ + table: 'sites', + action: 'update', + id: get(site)['id'], + data: { + content: { + ...get(site).content, + [key]: get(site).content['en'] + } + } + }), + ...get(stores.symbols).map(async (symbol) => { + await dataChanged({ + table: 'symbols', + action: 'update', + id: symbol.id, + data: { + content: { + ...symbol.content, + [key]: symbol.content['en'] + } + } + }) + }), + ...get(stores.pages).map(async (page) => { + await dataChanged({ + table: 'sections', + action: 'select', + match: { page: page.id }, + order: ['index', { ascending: true }] + }).then(async (all_sections) => { + all_sections.map(async (section) => { + await dataChanged({ + table: 'sections', + action: 'update', + id: section.id, + data: { + content: { + ...section.content, + [key]: section.content['en'] + } + } + }) + }) + }), + await dataChanged({ + table: 'pages', + action: 'update', + id: page.id, + data: { + content: { + ...page.content, + [key]: page.content['en'] + } + } + }) + }) + ]) + }, + undoing: async () => { + locale.set('en') + + site_content.update((s) => { + delete s[key] + return s + }) + + stores.pages.update((store) => + store.map((page) => { + delete page.content[key] + return page + }) + ) + + stores.sections.update((store) => + store.map((section) => { + delete section.content[key] + return section + }) + ) + + stores.symbols.update((store) => + store.map((symbol) => { + delete symbol.content[key] + return symbol + }) + ) + + await Promise.all([ + await dataChanged({ + table: 'sites', + action: 'update', + id: get(site)['id'], + data: { + content: get(site_content) + } + }), + ...get(stores.sections).map(async (section) => { + await dataChanged({ + table: 'sections', + action: 'update', + id: section.id, + data: { + content: section.content + } + }) + }), + ...get(stores.pages).map(async (page) => { + await dataChanged({ + table: 'sections', + action: 'select', + match: { page: page.id }, + order: ['index', { ascending: true }] + }).then(async (all_sections) => { + all_sections.map(async (section) => { + delete section.content[key] + await dataChanged({ + table: 'sections', + action: 'update', + id: section.id, + data: { + content: section.content + } + }) + }) + }) + + await dataChanged({ + table: 'pages', + action: 'update', + id: page.id, + data: { + content: page.content + } + }) + }) + ]) + } + }) +} + +export async function delete_language(key) { + locale.set('en') + + const original = { + site_content: _.cloneDeep(get(site_content)), + pages: _.cloneDeep(get(stores.pages)), + sections: _.cloneDeep(get(stores.sections)), + symbols: _.cloneDeep(get(stores.symbols)) + } + + update_timeline({ + doing: async () => { + site_content.update((s) => { + delete s[key] + return s + }) + + stores.pages.update((store) => + store.map((page) => { + delete page.content[key] + return page + }) + ) + + stores.sections.update((store) => + store.map((section) => { + delete section.content[key] + return section + }) + ) + + stores.symbols.update((store) => + store.map((symbol) => { + delete symbol.content[key] + return symbol + }) + ) + + await Promise.all([ + await dataChanged({ + table: 'sites', + action: 'update', + id: get(site)['id'], + data: { + content: get(site_content) + } + }), + ...get(stores.sections).map(async (section) => { + await dataChanged({ + table: 'sections', + action: 'update', + id: section.id, + data: { + content: section.content + } + }) + }), + ...get(stores.pages).map(async (page) => { + await dataChanged({ + table: 'pages', + action: 'update', + id: page.id, + data: { + content: page.content + } + }) + }) + ]) + }, + undoing: async () => { + site_content.set(original.site_content) + stores.pages.set(original.pages) + stores.sections.set(original.sections) + stores.symbols.set(original.symbols) + + await Promise.all([ + await dataChanged({ + table: 'sites', + action: 'update', + id: get(site)['id'], + data: { + content: get(site_content) + } + }), + await dataChanged({ + table: 'sections', + action: 'upsert', + data: get(stores.sections).map((section) => ({ + id: section.id, + content: section.content + })) + }), + await dataChanged({ + table: 'pages', + action: 'upsert', + data: get(stores.pages).map((page) => ({ + id: page.id, + content: page.content + })) + }) + ]) + } + }) +} + +export async function set_language(loc) { + locale.set(loc) +} diff --git a/src/lib/builder/actions/misc.js b/src/lib/builder/actions/misc.js new file mode 100644 index 000000000..f25fff13a --- /dev/null +++ b/src/lib/builder/actions/misc.js @@ -0,0 +1,19 @@ +import { get } from 'svelte/store' +import { timeline } from '$lib/builder/stores/data' +import _ from 'lodash-es' + + +// TIMELINE + +/** @returns {void} */ +export function undo_change() { + const { current } = get(timeline) + current?.undoing(current.data) + timeline.undo() +} + +/** @returns {void} */ +export function redo_change() { + const { data, doing } = timeline.redo() + doing(data) +} diff --git a/src/lib/builder/actions/page_types.js b/src/lib/builder/actions/page_types.js new file mode 100644 index 000000000..62488eea6 --- /dev/null +++ b/src/lib/builder/actions/page_types.js @@ -0,0 +1,348 @@ +import { cloneDeep } from 'lodash-es' +import _ from 'lodash-es' +import { get } from 'svelte/store' +import { goto } from '$app/navigation' +import active_page_store from '$lib/builder/stores/data/page' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { site } from '$lib/builder/stores/data/site' +import { dataChanged } from '$lib/builder/database' +import { Section, Page_Type } from '$lib/builder/factories' +import { handle_field_changes, handle_content_changes } from './_helpers' +import * as db_utils from './_db_utils' +import * as helpers from '$lib/builder/actions/_helpers' + +export default { + /** @param {{ id: string, name: string, color: string, icon: string }} pt_options */ + create: async (pt_options) => { + // const original_pages = cloneDeep(get(stores.pages)) + + const new_page_type = Page_Type({ + ...pt_options, + owner_site: get(site)['id'] + }) + + await dataChanged({ + table: 'page_types', + action: 'insert', + data: _.omit(new_page_type, ['entries', 'fields']) + }) + + stores.page_types.update((store) => [...store, new_page_type]) + + // insert block-drop-zone section (i.e. section w/o symbol) + await dataChanged({ + table: 'sections', + action: 'insert', + data: { + page_type: new_page_type.id, + index: 0 + } + }) + + // TODO: reinstate undo/redo + + // let db_id + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // // TODO: test + // stores.pages.set(original_pages) + // await dataChanged({ table: 'page_types', action: 'delete', id: db_id }) + // } + // }) + // return db_id + }, + delete: async (page_type_id) => { + const original_page_types = cloneDeep(get(stores.page_types)) + const updated_page_types = original_page_types.filter((page_type) => page_type.id !== page_type_id) + stores.page_types.set(updated_page_types) + await dataChanged({ table: 'page_types', action: 'delete', id: page_type_id }) + + // Go to home page if active page is deleted + if (get(active_page_store).id === page_type_id) { + await goto(`/${get(site)['url']}`) + } + + // TODO: reinstate undo/redo + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // stores.page_types.set(original_page_types) + // await dataChanged({ table: 'page_types', action: 'insert', data: deleted_page_types }) + // await dataChanged({ table: 'sections', action: 'insert', data: deleted_sections }) + // } + // }) + }, + update: async (page_id, obj) => { + const current_page_types = cloneDeep(get(stores.page_types)) + const updated_page_types = current_page_types.map((page) => (page.id === page_id ? { ...page, ...obj } : page)) + stores.page_types.set(updated_page_types) + stores.page_type.update((store) => ({ ...store, ...obj })) + await dataChanged({ table: 'page_types', action: 'update', id: page_id, data: obj }) + + // TODO: reinstate undo/redo + + // const original_page = cloneDeep(get(stores.page_types).find((page) => page.id === page_id)) + // const current_page_types = cloneDeep(get(stores.page_types)) + // const updated_page_types = current_page_types.map((page) => (page.id === page_id ? { ...page, ...obj } : page)) + // stores.page_types.set(updated_page_types) + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // stores.page_types.set(current_page_types) + // await dataChanged({ + // table: 'page_types', + // action: 'update', + // id: page_id, + // data: original_page + // }) + // } + // }) + } +} + + +export const update_page_type_entries = { + store: async function (updated_entries) { + stores.page_type.update((store) => ({ ...store, entries: updated_entries })) + + // refresh sections on page to fetch updated page entries from source + stores.sections.update((store) => store) + }, + db: async function (original_entries, updated_entries) { + const changes = db_utils.generate_entry_changes(original_entries, updated_entries) + const page_type_id = get(stores.page_type).id + + await helpers.handle_content_changes_new(changes, { + page_type: page_type_id + }) + } +} + +export async function update_page_type({ entries, fields }) { + const original_page_type = _.cloneDeep(get(stores.page_type)) + const page_type_id = get(stores.page_type).id + + const changes = { + entries: db_utils.generate_entry_changes(original_page_type.entries, entries), + fields: db_utils.generate_field_changes(original_page_type.fields, fields), + } + + db_utils.remap_entries_and_fields({ + changes: { + fields: changes.fields, + entries: changes.entries + }, + items: { + fields, + entries + } + }) + + stores.page_type.update((store) => ({ ...store, entries, fields })) + + await helpers.handle_field_changes_new(changes.fields, { page_type: page_type_id }) + await helpers.handle_content_changes_new(changes.entries, { + page_type: page_type_id + }) + + // DB: update page type instances + const pages_of_type = await dataChanged({ + table: 'pages', + action: 'select', + data: 'id, entries(*)', + match: { page_type: page_type_id } + }) + + // modify entries for pages instances + await Promise.all(pages_of_type.map(async ({ id: page_id, entries }) => { + const synced = helpers.sync_page_content_with_field_changes({ + page_entries: entries, + field_changes: changes.fields, + original_fields: original_page_type.fields, + updated_fields: fields + }) + await helpers.handle_content_changes_new(synced.changes, { page: page_id }) + })) + +} + +// toggle symbol in page type +export async function toggle_symbol({ symbol_id, page_type_id, toggled }) { + const existing_symbol = get(stores.symbols).find((s) => s.id === symbol_id) + const existing_symbol_page_types = existing_symbol.page_types || [] + const with_page_type = [...existing_symbol_page_types, page_type_id] + const without_page_type = existing_symbol_page_types.filter((pt) => pt !== page_type_id) + await dataChanged({ + table: 'symbols', + action: 'update', + id: symbol_id, + data: { + page_types: toggled ? with_page_type : without_page_type + } + }) + + // const existing_symbol = get(stores.symbols).find((s) => s.id === symbol_id) + // const existing_symbol_page_types = existing_symbol.page_types || [] + // const with_page_type = [...existing_symbol_page_types, page_type_id] + // const without_page_type = existing_symbol_page_types.filter((pt) => pt !== page_type_id) + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // await dataChanged({ + // table: 'symbols', + // action: 'update', + // id: symbol_id, + // data: { + // page_types: toggled ? null : page_type_id + // } + // }) + // } + // }) +} + +export async function delete_page_type_section(section_id) { + const updated_sections = get(stores.sections) + .filter((s) => s.id !== section_id) + .map((s, i) => ({ ...s, index: i })) + stores.sections.set(updated_sections) + + await dataChanged({ + table: 'sections', + action: 'delete', + id: section_id + }) + + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // // TODO + // } + // }) +} + +export async function add_page_type_section(symbol, position) { + const page_type_id = get(stores.page_type).id + const original_sections = _.cloneDeep(get(stores.sections)).sort((a, b) => a.index - b.index) + + // DB: insert section tied to page type + const new_section_db_id = await dataChanged({ + table: 'sections', + action: 'insert', + data: { + index: position, + symbol: symbol.id, + page_type: page_type_id + } + }) + + let new_section = Section({ + index: position, + page_type: page_type_id, + symbol: symbol.id, + entries: symbol.entries.map((entry) => ({ + ...entry, + symbol: null, + section: new_section_db_id + })) + }) + + const updated_sections = [...original_sections.slice(0, position), new_section, ...original_sections.slice(position)].map((section, i) => ({ ...section, index: i })) + + // set DB ID on new section + // _.find(updated_sections, { id: new_section.id }).id = new_section_db_id + + // STORE: add new section with update indeces + stores.sections.set(updated_sections) + + // DB: insert entries tied to new section + const new_section_content_db_ids = await handle_content_changes( + symbol.entries.map((e) => ({ action: 'insert', id: e.id, data: _.omit(e, ['symbol']) })), + [], + { section: new_section_db_id } + ) + + // STORE: update section entries ids + stores.sections.update((store) => + store.map((section) => + section.id === new_section.id + ? { + ...section, + id: new_section_db_id, + entries: section.entries.map((entry, i) => ({ + ...entry, + id: new_section_content_db_ids[entry.id], + parent: new_section_content_db_ids[entry.parent] + })) + } + : section + ) + ) + + // DB: fetch page type instances + const page_instances = await dataChanged({ + table: 'pages', + action: 'select', + data: 'id', + match: { page_type: page_type_id } + }) + + // DB: add new section to each page type instance + const instance_section_ids = await dataChanged({ + table: 'sections', + action: 'insert', + data: page_instances.map((page) => ({ + master: new_section_db_id, + page: page.id + })) + }).then((rows) => rows.map((r) => r.id)) + + // DB: add entries entries for each page type instance section + // note we can't pass all changes to handle_content_changes because of duplicate entries IDs + await Promise.all( + instance_section_ids.map((instance_section_id) => + handle_content_changes( + symbol.entries.map((entry) => ({ + action: 'insert', + id: entry.id, + data: { + ..._.omit(entry, ['symbol']), + section: instance_section_id + } + })) + ) + ) + ) + + // update indeces of sibling sections + await Promise.all( + get(stores.sections).map((s) => + dataChanged({ + table: 'sections', + action: 'update', + id: s.id, + data: { index: s.index } + }) + ) + ) + + // TODO: undo + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // // stores.sections.set(original_sections) + // // await dataChanged({ table: 'sections', action: 'delete', id: new_section.id }) + // // await dataChanged({ + // // table: 'sections', + // // action: 'upsert', + // // data: original_sections + // // }) + // } + // }) +} diff --git a/src/lib/builder/actions/pages.js b/src/lib/builder/actions/pages.js new file mode 100644 index 000000000..820833705 --- /dev/null +++ b/src/lib/builder/actions/pages.js @@ -0,0 +1,223 @@ +import _, { cloneDeep } from 'lodash-es' +import { get } from 'svelte/store' +import { goto } from '$app/navigation' +import {Page, Content_Row, Section} from '$lib/builder/factories' +import active_page_store from '$lib/builder/stores/data/page' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { site } from '$lib/builder/stores/data/site' +import { dataChanged } from '$lib/builder/database' +import { get_ancestors } from './_helpers' +import {update_sitemap} from './_storage_helpers' +import * as db_utils from './_db_utils' +import {remap_entry_ids, remap_ids, sort_by_hierarchy} from './_db_utils' + +export const update_page_entries = { + store: async function (entries) { + active_page_store.update(store => ({ + ...store, + entries + })) + + // refresh sections on page to fetch updated page entries from source + stores.sections.update((store) => store) + }, + db: async function (original_entries, updated_entries) { + const changes = db_utils.generate_entry_changes(original_entries, updated_entries) + // TODO: use handle_content_changes to handle repeater item creation? + for (const { action, id, data } of changes) { + await dataChanged({ + table: 'entries', + action, + id, + data: { ...data, page: get(active_page_store).id } + }) + } + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // // TODO: do the inverse + // } + // }) + } +} + +export default { + /** @param {import('$lib').Page} page_args */ + create: async (page_args) => { + + let new_page_id + const original_pages = get(stores.pages) + + await update_timeline({ + doing: async () => { + const new_page = Page(page_args) + new_page_id = new_page.id + + // STORE: create new page + stores.pages.update((store) => [...store, new_page]) + + // Get page type entries & sections to add to page + const [ page_type_entries, page_type_sections ] = await Promise.all([ + dataChanged({ + table: 'entries', + action: 'select', + data: '*', + match: { page_type: new_page.page_type } + }), + dataChanged({ + table: 'sections', + action: 'select', + data: '*, entries(*)', + match: { page_type: new_page.page_type } + }) + ]) + + const new_page_entries = remap_entry_ids(page_type_entries).map(e => ({ ...e, page_type: null, page: new_page.id })) + const new_page_sections = page_type_sections.map(s => { + const new_section = Section({ page_type: null, page: new_page.id, master: s.id, index: s.index }) + new_section.entries = remap_entry_ids(s.entries).map(e => ({ ...e, section: new_section.id })) + return new_section + }) + + // DB: save page, mastered sections, and entries + await dataChanged({ + table: 'pages', + action: 'insert', + data: _.omit(new_page, ['entries']) + }) + await dataChanged({ + table: 'sections', + action: 'insert', + data: new_page_sections?.map(s => _.omit(s, ['entries'])) + }) + await dataChanged({ + table: 'entries', + action: 'insert', + data: [ ...sort_by_hierarchy(new_page_entries), ...sort_by_hierarchy(new_page_sections.flatMap(s => s.entries)) ] + }) + + update_sitemap() + }, + undoing: async () => { + stores.pages.set(original_pages) + await dataChanged({ table: 'pages', action: 'delete', id: new_page_id }) + update_sitemap() + } + }) + }, + delete: async (page) => { + let deleted_page_id = page.id + let deleted_pages + let deleted_sections + + await update_timeline({ + doing: async () => { + const original_pages = cloneDeep(get(stores.pages)) + + // keep deleted pages + deleted_pages = original_pages.filter((p) => p.id === deleted_page_id || get_ancestors(p, original_pages).find(i => i.id === deleted_page_id)) + + // STORE: delete page & children + const updated_pages = original_pages.filter((p) => !deleted_pages.find(dp => dp.id === p.id)) + stores.pages.set(updated_pages) + + // keep deleted sections + deleted_sections = await Promise.all( + deleted_pages.map(page => dataChanged({ + table: 'sections', + action: 'select', + data: '*, entries(*)', + match: { page: page.id } + })) + ).then(arr => arr.flat()) + + // DB: delete pages + await dataChanged({ table: 'pages', action: 'delete', id: deleted_page_id }) // will cascade-delete children, section, and entries + + // Go to home page if active page is deleted + if (deleted_pages.some(p => p.id === get(active_page_store).id)) { + await goto(`/${get(site)['id']}`) + } + update_sitemap() + }, + undoing: async () => { + const recreated = remap_ids({ pages: deleted_pages, sections: deleted_sections }) + deleted_page_id = recreated._map.get(deleted_page_id) + const recreated_pages = recreated.pages.map(s => _.omit(s, ['entries'])) + const recreated_sections = recreated.sections.map(s => _.omit(s, ['entries'])) + const recreated_entries = [ + ...recreated.pages.flatMap(p => p.entries), + ...recreated.sections.flatMap(s => s.entries) + ] + + // STORE: restore page and children + stores.pages.update(store => [...store, ...recreated.pages]) + + // DB: insert deleted page and children + await dataChanged({ table: 'pages', action: 'insert', data: sort_by_hierarchy(recreated_pages) }) + await dataChanged({ table: 'sections', action: 'insert', data: sort_by_hierarchy(recreated_sections, 'palette') }) + await dataChanged({ table: 'entries', action: 'insert', data: sort_by_hierarchy(recreated_entries) }) + + update_sitemap() + } + }) + }, + update: async (page_id, obj) => { + const original_page = cloneDeep(get(stores.pages).find((page) => page.id === page_id)) + const current_pages = cloneDeep(get(stores.pages)) + const updated_pages = current_pages.map((page) => (page.id === page_id ? { ...page, ...obj } : page)) + stores.pages.set(updated_pages) + + stores.pages.set(updated_pages) + await dataChanged({ table: 'pages', action: 'update', id: page_id, data: obj }) + + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // stores.pages.set(current_pages) + // await dataChanged({ table: 'pages', action: 'update', id: page_id, data: original_page }) + // } + // }) + }, + rearrange: async (page, new_position) => { + const original_pages = _.cloneDeep(get(stores.pages)) + + const updated_pages = _.cloneDeep(get(stores.pages)) + + // select siblings (could be root level) + const siblings = original_pages.filter((p) => p.parent === page.parent && p.id !== page.id).sort((a, b) => a.index - b.index) + + // update siblings & self w/ new indeces + const updated_children = [...siblings.slice(0, new_position), page, ...siblings.slice(new_position)].map((p, i) => ({ ...p, index: i })) + + // set updated pages w/ updated indeces + for (const child of updated_children) { + updated_pages.find((p) => p.id === child.id)['index'] = child.index + } + + stores.pages.set(updated_pages) + + // update sibling page indeces + await Promise.all( + updated_children.map((page) => + dataChanged({ + table: 'pages', + action: 'update', + id: page.id, + data: { index: page.index } + }) + ) + ) + + // await update_timeline({ + // doing: async () => { + // }, + // undoing: async () => { + // stores.pages.set(current_pages) + // await dataChanged({ table: 'pages', action: 'update', id: page_id, data: original_page }) + // } + // }) + } +} diff --git a/src/lib/builder/actions/sections.js b/src/lib/builder/actions/sections.js new file mode 100644 index 000000000..c2fab8984 --- /dev/null +++ b/src/lib/builder/actions/sections.js @@ -0,0 +1,661 @@ +import _ from 'lodash-es' +import { get } from 'svelte/store' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { update as update_site } from '$lib/builder/stores/data/site' +import { dataChanged } from '$lib/builder/database' +import { swap_array_item_index } from '$lib/builder/utilities' +import { get_symbol, get_section } from '$lib/builder/stores/helpers' +import * as helpers from '$lib/builder/actions/_helpers' +import * as db_helpers from '$lib/builder/actions/_db_helpers' +import * as db_utils from '$lib/builder/actions/_db_utils' +import { update_page_file, update_symbol_file } from './_storage_helpers' +import { Section } from '$lib/builder/factories' +import active_page_store from '$lib/builder/stores/data/page' + +export async function add_section_to_palette({ palette_id, symbol, position }) { + let new_section_db_id + await update_timeline({ + doing: async () => { + // const new_section = await create_section({ + // index: position, + // symbol_id: symbol.id, + // palette_id, + // page_id: get(active_page_store).id, + // entries: symbol.entries + // }) + // await insert_palette_section(new_section) + // new_section_db_id = new_section.id + new_section_db_id = await create_and_insert_section({ + index: position, + symbol_id: symbol.id, + palette_id, + page_id: get(active_page_store).id, + entries: symbol.entries + }) + update_page_file() + }, + undoing: async () => { + await delete_palette_section(new_section_db_id) + update_page_file() + } + }) + return new_section_db_id +} + +export async function delete_section_from_palette(section_id) { + let section_to_delete = section_id + const original_section = get_section(section_id) + + await update_timeline({ + doing: async () => { + await delete_palette_section(section_to_delete) + update_page_file() + }, + undoing: async () => { + section_to_delete = await create_and_insert_section({ + index: original_section.index, + symbol_id: original_section.symbol, + palette_id: original_section.palette, + page_id: original_section.page, + entries: original_section.entries + }) + update_page_file() + } + }) +} + +export async function move_section(block_being_moved, to) { + const block_being_replaced = _.find(get(stores.sections), ['index', to]) + const original_sections = _.cloneDeep(get(stores.sections)) + const updated_sections = swap_array_item_index(original_sections, block_being_moved.index, to).map((section) => { + if (section.id === block_being_moved.id) { + return { + ...section, + index: to + } + } else if (section.id === block_being_replaced?.id) { + return { + ...section, + index: block_being_moved.index + } + } else return section + }) + + await update_timeline({ + doing: async () => { + stores.sections.set(updated_sections) + if (!block_being_replaced) return + await Promise.all([ + dataChanged({ + table: 'sections', + action: 'update', + id: block_being_replaced.id, + data: { index: block_being_moved.index } + }), + dataChanged({ + table: 'sections', + action: 'update', + id: block_being_moved.id, + data: { index: to } + }) + ]) + update_page_file() + }, + undoing: async () => { + stores.sections.set(original_sections) + await Promise.all([ + dataChanged({ + table: 'sections', + action: 'update', + id: block_being_replaced.id, + data: { index: block_being_replaced.index } + }), + dataChanged({ + table: 'sections', + action: 'update', + id: block_being_moved.id, + data: { index: block_being_moved.index } + }) + ]) + update_page_file() + } + }) +} + +/** + * Updates a section with new data, syncronizes symbol updates, and applies changes + * + * @async + * @param {string} section_id - The ID of the section to update. + * @param {Object} options - The options for updating the section. + * @param {Object} options.updated_data - The updated data for the section. + * @param {Object} options.changes - The changes to apply to the section. + * @returns {Promise} + */ +export async function update_section(section_id, { updated_data, build_page = true }) { + const original_section = get_section(section_id) + let original_section_entries = _.cloneDeep(original_section.entries) + + const updated_section_entries = _.cloneDeep(updated_data.entries.filter(e => !e.page && !e.site && !e.page_type)) + + const original_symbol = get_symbol(original_section.symbol || original_section.master?.symbol) + + // Page entries + let original_page_entries = _.cloneDeep(get(active_page_store).entries) + let updated_page_entries = _.cloneDeep(updated_data.entries.filter(e => e.page)) + + // Site entries + let original_site_entries = _.cloneDeep(get(stores.site).entries) + let updated_site_entries = _.cloneDeep(updated_data.entries.filter(e => e.site)) + + + const changes = _.cloneDeep({ + section_entries: db_utils.generate_entry_changes(original_section.entries, updated_section_entries), + symbol_fields: db_utils.generate_field_changes(original_symbol.fields, updated_data.fields), + page_entries: db_utils.generate_entry_changes(original_page_entries, updated_page_entries), + site_entries: db_utils.generate_entry_changes(original_site_entries, updated_site_entries) + }) + + let { entries: updated_symbol_entries } = helpers.sync_symbol_content_with_section_changes({ + original_symbol_entries: original_symbol.entries, + original_symbol_fields: original_symbol.fields, + updated_section_entries, + updated_symbol_fields: updated_data.fields, + section_content_changes: changes.section_entries, + field_changes: changes.symbol_fields + }) + + let symbol_content_changes = db_utils.generate_entry_changes(original_symbol.entries, updated_symbol_entries) + + let section_content_changes = changes.section_entries + let symbol_field_changes = _.cloneDeep(changes.symbol_fields) + let updated_symbol_fields = _.cloneDeep(updated_data.fields) + + let page_content_changes = _.cloneDeep(changes.page_entries) + let site_content_changes = _.cloneDeep(changes.site_entries) + + // TODO: Page Type entries changes + let original_page_type_entries = _.cloneDeep(get(active_page_store).entries) + let updated_page_type_entries = _.cloneDeep(updated_data.entries.filter(e => e.page)) + // let page_type_content_changes = _.cloneDeep(changes.entries.filter(c => c.dynamic === 'page-type')) + + // Symbol + const symbol_id = original_section.symbol || original_section.master?.symbol + const updated_symbol_code = updated_data.code + + let local_sibling_sections = helpers.generate_sibling_section_changes({ + section_id, + symbol_id, + field_changes: symbol_field_changes, + original_fields: original_symbol.fields, + updated_fields: updated_symbol_fields + }) + let foreign_sibling_sections = [] // fetch and assign below to avoid delay + + + await update_timeline({ + doing: async () => { + + // remap IDs for new items (necessary to refresh IDs when doing() after undoing()) + db_utils.remap_entries_and_fields({ + changes: { + fields: symbol_field_changes, + entries: [...section_content_changes, ...symbol_content_changes, ...local_sibling_sections.flatMap(s => s.changes)] + }, + items: { + fields: updated_symbol_fields, + entries: [...updated_section_entries, ...updated_symbol_entries, ...local_sibling_sections.flatMap(s => s.entries)] + } + }) + + if (page_content_changes.length > 0) { + db_utils.remap_entries_and_fields({ + changes: { + fields: [], + entries: page_content_changes + }, + items: { + fields: [], + entries: updated_page_entries + } + }) + } + if (site_content_changes.length > 0) { + db_utils.remap_entries_and_fields({ + changes: { + fields: [], + entries: site_content_changes + }, + items: { + fields: [], + entries: updated_site_entries + } + }) + } + + // STORE: update Section entries + store_actions.update_section(section_id, { entries: updated_section_entries }) + + // STORE: update sibling Sections entries + local_sibling_sections.forEach(({ id, entries }) => { + store_actions.update_section(id, { entries }) + }) + + // STORE: update Site entries + if (site_content_changes.length > 0) { + update_site({ entries: updated_site_entries }) + } + + // STORE: update Page entries + if (page_content_changes.length > 0) { + active_page_store.update(store => ({ + ...store, + entries: updated_page_entries + })) + } + + // STORE: update Symbol code, fields & entries + store_actions.update_symbol(symbol_id, { + fields: updated_symbol_fields, + entries: updated_symbol_entries, + code: updated_symbol_code + }) + + // DB: save Symbol code if changed + if (!_.isEqual(original_symbol.code, updated_symbol_code)) { + await db_actions.update_symbol(symbol_id, { code: updated_symbol_code }) + update_symbol_file(get(stores.symbols).find(s => s.id === symbol_id)) + } + + // DB: save Symbol fields + await helpers.handle_field_changes_new(symbol_field_changes, { + symbol: symbol_id + }) + + // DB: save Section, Symbol, Site, and Page entries + await Promise.all([ + helpers.handle_content_changes_new(section_content_changes, { + section: section_id + }), + helpers.handle_content_changes_new(symbol_content_changes, { + symbol: symbol_id + }), + helpers.handle_content_changes_new(site_content_changes, { site: get(stores.site).id}), + helpers.handle_content_changes_new(page_content_changes, { page: get(active_page_store).id}) + ]) + + + // DB: Update sibling Sections (only relevant is symbol entries have changes) + if (symbol_content_changes.length > 0) { + await Promise.all( + local_sibling_sections.map(({ id, changes }) => + helpers.handle_content_changes_new(changes, { + section: id + }) + ) + ) + + const fetched_foreign_sibling_sections = await db_helpers.get_off_page_sibling_sections(section_id, symbol_id) + foreign_sibling_sections = helpers.generate_sibling_section_changes({ + section_id, + symbol_id, + field_changes: symbol_field_changes, + original_fields: original_symbol.fields, + updated_fields: updated_symbol_fields + }, fetched_foreign_sibling_sections) + + await Promise.all( + foreign_sibling_sections.map(({ id, changes }) => + helpers.handle_content_changes_new(changes, { + section: id + }) + ) + ) + } + + if (build_page) { + update_page_file(site_content_changes.length > 0) + } + }, + undoing: async () => { + // Generate inverted changes + const [ inverted_section_entry_changes, restored_section_entries ] = db_utils.generate_inverted_changes(section_content_changes, original_section_entries) + + const inverted_siblings = local_sibling_sections.map(sibling => { + const [inverted_sibling_entry_changes, restored_sibling_entries] = db_utils.generate_inverted_changes(sibling.changes, sibling.entries) + return { id: sibling.id, changes: inverted_sibling_entry_changes, entries: restored_sibling_entries} + }) + + const [ inverted_field_changes, restored_fields ] = db_utils.generate_inverted_changes(symbol_field_changes, original_symbol.fields) + const [ inverted_symbol_entry_changes, restored_symbol_entries ] = db_utils.generate_inverted_changes(symbol_content_changes, original_symbol.entries) + const [ inverted_site_entry_changes, restored_site_entries ] = db_utils.generate_inverted_changes(site_content_changes, original_site_entries) + const [ inverted_page_entry_changes, restored_page_entries ] = db_utils.generate_inverted_changes(page_content_changes, original_page_entries) + + // STORE: restore section entries + store_actions.update_section(section_id, { entries: original_section_entries }) + + // STORE: restore on-page section entries + inverted_siblings.forEach(sibling => + store_actions.update_section(sibling.id, { entries: sibling.entries }) + ) + + // STORE: restore symbol fields, entries, and code + store_actions.update_symbol(symbol_id, { + fields: restored_fields, + entries: restored_symbol_entries, + code: original_symbol.code + }) + + // STORE: restore Site entries + update_site({ entries: restored_site_entries }) + + // STORE: restore Page entries + active_page_store.update(store => ({ + ...store, + entries: restored_page_entries + })) + + // DB: restore symbol code if changed + if (!_.isEqual(original_symbol.code, updated_data.code)) { + update_symbol_file(get(stores.symbols).find(s => s.id === symbol_id)) + db_actions.update_symbol(original_symbol.id, { code: original_symbol.code }) + } + + // DB: restore symbol fields + await helpers.handle_field_changes_new(inverted_field_changes, { symbol: symbol_id }) + + // DB: revert section, sibling, symbol, page, and site entry changes + await Promise.all([ + helpers.handle_content_changes_new(inverted_section_entry_changes, { section: section_id }), + ...inverted_siblings.map(sibling => + helpers.handle_content_changes_new(sibling.changes, { section: sibling.id }), + ), + helpers.handle_content_changes_new(inverted_symbol_entry_changes, { symbol: symbol_id }), + helpers.handle_content_changes_new(inverted_site_entry_changes, { site: get(stores.site).id }), + helpers.handle_content_changes_new(inverted_page_entry_changes, { page: get(active_page_store).id }) + ]) + + // DB: Reverse foreign sibling section changes + if (inverted_symbol_entry_changes.length > 0) { + await Promise.all( + foreign_sibling_sections.map(async ({ id, changes, entries }) => { + const [ inverted_sibling_entry_changes ] = db_utils.generate_inverted_changes(changes, entries) + await helpers.handle_content_changes_new(inverted_sibling_entry_changes, { + section: id + }) + }) + ) + } + + // restore original fields and entries (necessary for doing() w/ recreated items w/ new IDs) + original_symbol.fields = restored_fields + original_symbol.entries = restored_symbol_entries + original_section_entries = restored_section_entries + original_site_entries = restored_site_entries + original_page_entries = restored_page_entries + + if (build_page) { + update_page_file(site_content_changes.length > 0) + } + } + }) +} + +// extract symbol/instance entries from updated section entries +export async function update_section_entries({ id, value }) { + const original_sections = _.cloneDeep(get(stores.sections)) + const updated_sections = _.cloneDeep( + original_sections.map((section) => { + const relevant_entry = section.entries.find((e) => e.id === id) + if (relevant_entry) { + const updated_entry = { ...relevant_entry, value } + const updated_entries = section.entries.map((e) => (e.id === id ? updated_entry : e)) + return { ...section, entries: updated_entries } + } else return section + }) + ) + stores.sections.set(updated_sections) + + // DB + await dataChanged({ + table: 'entries', + action: 'update', + id, + data: { value } + }) + update_page_file() +} + +////////////////////////////////// +// HELPERS /////////////////////// +////////////////////////////////// + +/** + * Inserts a new section into the database and returns its ID. + * + * @param {Object} params + * @param {number} params.index - The index of the new section. + * @param {string} params.symbol_id - The ID of the symbol associated with the section. + * @param {string} params.palette_id - The ID of the palette the section belongs to. + * @param {Array} params.entries - The entries of the section. + * @param {string} params.page_id - The ID of the page the section belongs to. + * @returns {Promise} The newly inserted section's ID. + */ +async function create_and_insert_section({ index, symbol_id, palette_id, entries, page_id }) { + // create new section object + const new_section = Section({ + index, + page: page_id, + palette: palette_id, + symbol: symbol_id, + entries: db_utils.remap_entry_ids(entries) + }) + + // STORE: set updated sections + const original_sections = _.cloneDeep(get(stores.sections)) + const original_palette_sections = original_sections.filter((s) => s.palette === new_section.palette).sort((a, b) => a.index - b.index) + const updated_palette_sections = [...original_palette_sections.slice(0, new_section.index), new_section, ...original_palette_sections.slice(new_section.index)].map((s, i) => ({ ...s, index: i })) + const updated_sections = original_sections.flatMap((section) => { + if (section.palette) { + const updated_palette_section = updated_palette_sections.find((s) => s.id === section.id) + return updated_palette_section + } else return section + }) + updated_sections.push(new_section) + stores.sections.set(updated_sections) + + // DB: insert new section + await dataChanged({ + table: 'sections', + action: 'insert', + data: _.omit(new_section, ['entries']) + }) + + // DB: insert section entries + await dataChanged({ + table: 'entries', + action: 'insert', + data: new_section.entries.map(e => ({ ...e, symbol: null, section: new_section.id })) + }) + + // DB: update palette section indeces + await Promise.all( + updated_palette_sections.map((s) => + dataChanged({ + table: 'sections', + action: 'update', + id: s.id, + data: { index: s.index } + }) + ) + ) + + return new_section.id +} + + + +/** + * Inserts a new section into the database and returns its ID. + * + * @param {Object} params + * @param {number} params.index - The index of the new section. + * @param {string} params.symbol_id - The ID of the symbol associated with the section. + * @param {string} params.palette_id - The ID of the palette the section belongs to. + * @param {Array} params.entries - The entries of the section. + * @param {string} params.page_id - The ID of the page the section belongs to. + * @returns {Promise} The newly inserted section. + */ +async function create_section({ index, symbol_id, palette_id, entries, page_id }) { + // create new section object + const new_section = Section({ + index, + page: page_id, + palette: palette_id, + symbol: symbol_id, + entries // will update w/ DBIDs + }) + + // DB: insert new section + const new_section_db_id = await dataChanged({ + table: 'sections', + action: 'insert', + data: _.pick(new_section, ['index', 'symbol', 'palette', 'page']) + }) + new_section.id = new_section_db_id + + // DB: insert entries entries + const content_db_ids = await helpers.handle_content_changes( + entries.map((data) => ({ + action: 'insert', + id: data.id, + data: { + ..._.omit(data, ['symbol']), + section: new_section_db_id + } + })), + [] + ) + new_section.entries = new_section.entries.map((row) => ({ + ...row, + id: content_db_ids[row.id], + parent: content_db_ids[row.parent] + })) + + return new_section +} + +/** + * Inserts a new section into the palette and updates the indices of existing sections. + * + * @param {Object} section - The new section to be inserted. + * @param {string} section.id - The ID of the new section. + * @param {number} section.index - The index where the new section should be inserted. + * @param {string} section.palette - The ID of the palette where the section should be inserted. + * @returns {Promise} + */ +async function insert_palette_section(section) { + // insert new_section to page sections at given index, set other indeces accordingly + const original_sections = _.cloneDeep(get(stores.sections)) + const original_palette_sections = original_sections.filter((s) => s.palette === section.palette).sort((a, b) => a.index - b.index) + + const updated_palette_sections = [...original_palette_sections.slice(0, section.index), section, ...original_palette_sections.slice(section.index)].map((s, i) => ({ ...s, index: i })) + const updated_sections = original_sections.flatMap((section) => { + if (section.palette) { + const updated_palette_section = updated_palette_sections.find((s) => s.id === section.id) + return updated_palette_section + } else return section + }) + updated_sections.push(section) + + // STORE: set updated sections + stores.sections.set(updated_sections) + + // DB: update palette section indeces + await Promise.all( + updated_palette_sections.map((s) => + dataChanged({ + table: 'sections', + action: 'update', + id: s.id, + data: { index: s.index } + }) + ) + ) +} + +async function delete_palette_section(section_id) { + const original_sections = _.cloneDeep(get(stores.sections)) + + const new_palette_sections = original_sections + .filter((s) => s.palette) + .filter((s) => s.id !== section_id) + .map((s, i) => ({ ...s, index: i })) + + const new_sections = original_sections + .map((section) => { + const updated_palette_section = new_palette_sections.find((s) => s.id === section.id) + return updated_palette_section || section + }) + .filter((section) => section.id !== section_id) + + stores.sections.set(new_sections) + await dataChanged({ table: 'sections', action: 'delete', id: section_id }) + await Promise.all( + new_palette_sections.map((s) => + dataChanged({ + table: 'sections', + action: 'update', + id: s.id, + data: { index: s.index } + }) + ) + ) +} + +// DB ACTIONS +const db_actions = { + update_symbol: async (symbol_id, updated_symbol_props) => { + await dataChanged({ + table: 'symbols', + action: 'update', + id: symbol_id, + data: updated_symbol_props + }) + } +} + +// STORE ACTIONS +const store_actions = { + /** + * Updates a section in the sections store. + * + * @param {string} section_id - The ID of the section to update. + * @param {Object} updated_section_props - An object containing the properties to update. + * @returns {void} + */ + update_section: (section_id, updated_section_props) => { + stores.sections.update((store) => + store.map((section) => { + if (section.id === section_id) { + return { + ...section, + ...updated_section_props + } + } else return section + }) + ) + }, + update_symbol: (symbol_id, updated_symbol_props) => { + stores.symbols.update((store) => + store.map((symbol) => { + if (symbol.id === symbol_id) { + return { + ...symbol, + ...updated_symbol_props + } + } else return symbol + }) + ) + } +} diff --git a/src/lib/builder/actions/symbols.js b/src/lib/builder/actions/symbols.js new file mode 100644 index 000000000..18ad40ec6 --- /dev/null +++ b/src/lib/builder/actions/symbols.js @@ -0,0 +1,457 @@ +import { cloneDeep } from 'lodash-es' +import _ from 'lodash-es' +import {v4 as uuid} from 'uuid' +import { get } from 'svelte/store' +import stores, { update_timeline } from '$lib/builder/stores/data' +import { site } from '$lib/builder/stores/data/site' +import { dataChanged } from '$lib/builder/database' +import * as helpers from './_helpers' +import * as db_helpers from '$lib/builder/actions/_db_helpers' +import * as db_utils from './_db_utils' +import { Symbol } from '$lib/builder/factories' +import { update_page_file, update_symbol_file } from './_storage_helpers' +import { get_on_page_symbol_sections } from '$lib/builder/stores/helpers' +import { remap_entries_and_fields } from './_db_utils' + +/** + * Adds a block to the site. + * + * @param {Object} options + * @param {Object} options.symbol - The symbol object representing the block to be added. + * @param {number} options.index - The index at which to insert the block. + * @returns {Promise} + */ +export async function add_block_to_site({ symbol, index }) { + let created_symbol_db_id + + await update_timeline({ + doing: async () => { + const new_block = await create_block({ + name: symbol.name, + code: symbol.code, + entries: symbol.entries.filter(e => !e.page && !e.site), + fields: symbol.fields, + index + }) + created_symbol_db_id = new_block.id + + await insert_block(new_block) + }, + undoing: async () => { + await delete_block(created_symbol_db_id) + } + }) +} + +export async function delete_block_from_site(block) { + let active_block_id = block.id + await update_timeline({ + doing: async () => { + await delete_block(active_block_id) + update_page_file() + }, + undoing: async () => { + const new_block = await create_block({ + name: block.name, + code: block.code, + index: block.index, + entries: block.entries, + fields: block.fields + }) + active_block_id = new_block.id + + await insert_block(new_block) + update_page_file() + } + }) +} + + +export async function add_multiple_symbols(symbols) { + let created_symbol_db_id + + await update_timeline({ + doing: async () => { + + const remapped_symbols = symbols.map(symbol => { + const new_id = uuid() + const remapped_symbol = _.cloneDeep({ + ...symbol, + id: new_id + }) + db_utils.remap_entry_and_field_items({ + fields: remapped_symbol.fields, + entries: remapped_symbol.entries + }) + return { + ...remapped_symbol, + index: 0, + id: new_id, + } + }) + + stores.symbols.update(store => [...store, ...remapped_symbols]) + + await dataChanged({ + table: 'symbols', + action: 'insert', + data: remapped_symbols.map(s => _.omit(s, ['entries', 'fields'])) + }) + + + const fields = remapped_symbols.flatMap(s => s.fields.map(f => ({ ...f, symbol: s.id, library_symbol: null }))) + const entries = remapped_symbols.flatMap(s => s.entries.map(e => ({ ...e, symbol: s.id, library_symbol: null }))) + + await dataChanged({ + table: 'fields', + action: 'insert', + data:fields + }) + await dataChanged({ + table: 'entries', + action: 'insert', + data:entries + }) + }, + undoing: async () => { + await delete_block(created_symbol_db_id) + } + }) +} + + + +/** + * Updates a block with new data and handles changes to its fields and entries. + * This function also synchronizes entries changes across all instances of the block (section siblings), + * and updates the data with database IDs in both the doing() and undoing() methods. + * + * @async + * @param {Object} params - The parameters for updating the block. + * @param {Object} params.block - The original block object to be updated. + * @param {Object} params.updated_data - The new data to update the block with. + * @param {string} params.updated_data.code - The updated code for the block. + * @param {Array} params.updated_data.fields - The updated fields for the block. + * @param {Array} params.updated_data.entries - The updated entries for the block. + * @returns {Promise} + * + * @description + * In the doing() method: + * - Updates the block's code in the database if changed. + * - Handles field and entries changes, updating the database and obtaining new database IDs. + * - Updates `updated_fields`, `updated_entries`, and changes with the new database IDs. + * - Synchronizes changes across all instances of the block (i.e. section siblings). + * + * In the undoing() method: + * - Reverts changes made in the doing() method. + * - Recreates deleted fields and entries, obtaining new database IDs. + * - Updates the reverted data and intial changes with the new database IDs so. + * + * This ensures that all data is consistent with the database state in both forward and backward operations. + * Especially when deleting entries/fields, since they're recreated in undoing() and need to be refereced correctly in doing() + */ +export async function update_block({ block, updated_data }) { + + const original_code = block.code + let original_fields = _.cloneDeep(block.fields) + let original_entries = _.cloneDeep(block.entries) + + const updated_code = updated_data.code + let updated_fields = _.cloneDeep(updated_data.fields) + let updated_entries = _.cloneDeep(updated_data.entries.filter(e => !e.site && !e.page && !e.page_type)) + + let content_changes = db_utils.generate_entry_changes(original_entries, updated_entries) + let field_changes = db_utils.generate_field_changes(original_fields, updated_fields) + + const local_sections = helpers.generate_sibling_section_changes({ symbol_id: block.id, field_changes, original_fields, updated_fields }) + let foreign_sections = [] // fetch and assign below to avoid delay + + await update_timeline({ + doing: async () => { + + // remap IDs for new items (necessary to refresh IDs when doing() after undoing()) + db_utils.remap_entries_and_fields({ + changes: { + fields: field_changes, + entries: [...content_changes, ...local_sections.flatMap(s => s.changes)] + }, + items: { + fields: updated_fields, + entries: [...updated_entries, ...local_sections.flatMap(s => s.entries)] + } + }) + + // STORE: update code, symbol fields & entries locally w/ DB IDs + store_actions.update_symbol(block.id, { + fields: updated_fields, + entries: updated_entries, + code: updated_code + }) + + // STORE: update on-page sections' entries + for (const { id, entries } of local_sections) { + store_actions.update_section(id, { entries }) + } + + // DB: save block code if changed + if (!_.isEqual(original_code, updated_code)) { + await db_actions.update_block(block.id, { code: updated_code }) + } + + // DB: save Symbol fields + await helpers.handle_field_changes_new(field_changes, { + symbol: block.id + }) + + // DB: save Symbol entries + await helpers.handle_content_changes_new(content_changes, { + symbol: block.id + }) + + // DB: update Symbol Sections + if (content_changes.length > 0) { + await Promise.all( + local_sections.map(({ id, changes }) => + helpers.handle_content_changes_new(changes, { + section: id + }) + ) + ) + + const fetched_foreign_sections = await db_helpers.get_symbol_sections(block.id) + foreign_sections = helpers.generate_sibling_section_changes({ + symbol_id: block.id, + field_changes: field_changes, + original_fields, + updated_fields + }, fetched_foreign_sections) + + await Promise.all( + foreign_sections.map(({ id, changes }) => + helpers.handle_content_changes_new(changes, { + section: id + }) + ) + ) + } + + update_symbol_file(get(stores.symbols).find(s => s.id === block.id)) + }, + undoing: async () => { + + // DOING: this is too complicated, just replace it with what I was doing before: + // use generate_inverse_changes, return the id_map for the fields, and pass it to subsequent generate_inverse_changes/content + + + const { changes:inverted_field_changes, fields:restored_fields, map } = db_utils.generate_inverted_field_changes(field_changes, original_fields) + + const { changes:inverted_entry_changes, entries:restored_entries } = db_utils.generate_inverted_entry_changes(content_changes, original_entries, map) + const all_inverted_local_section_entries = local_sections.map(({ changes, entries }) => db_utils.generate_inverted_entry_changes(changes, entries, map)) + const all_inverted_foreign_section_entries = foreign_sections.map(({ changes, entries }) => db_utils.generate_inverted_entry_changes(changes, entries, map)) + + // STORE: update the local sections w/ the original and recreated items + all_inverted_local_section_entries.forEach((entries, i) => { + const section_id = local_sections[i].id + store_actions.update_section(section_id, { entries }) + }) + + + // STORE: update symbol code, fields, and entries + store_actions.update_symbol(block.id, { + fields: restored_fields, + entries: restored_entries, + code: original_code + }) + + + // DB: restore symbol code + if (!_.isEqual(original_code, updated_code)) { + db_actions.update_block(block.id, { code: original_code }) + } + + // DB: restore symbol fields + await helpers.handle_field_changes_new(inverted_field_changes, { symbol: block.id }) + + + // DB: revert Symbol and Sections entry changes + await Promise.all([ + helpers.handle_content_changes_new(inverted_entry_changes, { symbol: block.id }), + ...all_inverted_local_section_entries.map((section, i) => { + const section_id = local_sections[i].id + return helpers.handle_content_changes_new(section.changes, { section: section_id }) + }), + ]) + + + // DB: Reverse foreign sibling section changes + if (inverted_entry_changes.length > 0) { + await Promise.all( + all_inverted_foreign_section_entries.map(async ({ changes, entries }, i) => { + const section_id = foreign_sections[i].id + const [ inverted_sibling_entry_changes ] = db_utils.generate_inverted_changes(changes, entries) + await helpers.handle_content_changes_new(inverted_sibling_entry_changes, { + section: section_id + }) + }) + ) + } + + original_fields = restored_fields + original_entries = restored_entries + + update_symbol_file(get(stores.symbols).find(s => s.id === block.id)) + } + }) +} + +export async function rename_block({ block, name }) { + await update_timeline({ + doing: async () => { + store_actions.update_symbol(block.id, { name }) + db_actions.update_block(block.id, { name }) + }, + undoing: async () => { + store_actions.update_symbol(block.id, { name }) + db_actions.update_block(block.id, { name: block.name }) + } + }) +} + +export async function move_block(block_being_moved, new_position) { + const original_symbols = cloneDeep(get(stores.symbols)) + const blocks_without_block_being_moved = cloneDeep(get(stores.symbols)).filter((s) => s.id !== block_being_moved.id) + const updated_blocks = [...blocks_without_block_being_moved.slice(0, new_position), block_being_moved, ...blocks_without_block_being_moved.slice(new_position)].map((s, i) => ({ ...s, index: i })) + + await update_timeline({ + doing: async () => { + stores.symbols.set(updated_blocks) + await Promise.all([updated_blocks.map((block) => db_actions.update_block(block.id, { index: block.index }))]) + }, + undoing: async () => { + stores.symbols.set(original_symbols) + await Promise.all([original_symbols.map((block) => db_actions.update_block(block.id, { index: block.index }))]) + } + }) +} + +// HELPERS +async function create_block({ name = '', code, entries, fields, index }) { + const insertions = { + entries: entries.map((e) => ({ action: 'insert', id: e.id, data: e })), + fields: fields.map((e) => ({ action: 'insert', id: e.id, data: e })) + } + + // DB: insert symbol with entries & fields + const created_symbol_db_id = await dataChanged({ + table: 'symbols', + action: 'insert', + data: { + name, + code, + index, + owner_site: get(site).id + } + }) + + const field_db_ids = await helpers.handle_field_changes(insertions.fields, { symbol: created_symbol_db_id }) + const content_db_ids = await helpers.handle_content_changes(insertions.entries, field_db_ids, { symbol: created_symbol_db_id }) + + const new_block = Symbol({ + id: created_symbol_db_id, + name, + code, + index, + entries: entries.map((entry) => ({ + ...entry, + id: content_db_ids[entry.id], + parent: content_db_ids[entry.parent], + field: field_db_ids[entry.field] + })), + fields: fields.map((field) => ({ + ...field, + id: field_db_ids[field.id], + parent: field_db_ids[field.parent] + })) + }) + + return new_block +} + +async function insert_block(block) { + const original_blocks = _.cloneDeep(get(stores.symbols)) + const updated_blocks = [...original_blocks.slice(0, block.index), block, ...original_blocks.slice(block.index)].map((s, i) => ({ ...s, index: i })) + + // STORE: set updated blocks + stores.symbols.set(updated_blocks) + + // DB: update palette section indeces + await Promise.all(updated_blocks.map((s) => db_actions.update_block(s.id, { index: s.index }))) +} + +async function delete_block(block_id) { + const original_blocks = _.cloneDeep(get(stores.symbols)) + const new_blocks = original_blocks + .filter((block) => block.id !== block_id) + .map((block, i) => ({ + ...block, + index: i + })) + + stores.symbols.set(new_blocks) + await dataChanged({ table: 'symbols', action: 'delete', id: block_id }) + await Promise.all(new_blocks.map((s) => db_actions.update_block(s.id, { index: s.index }))) +} + +// DB ACTIONS +const db_actions = { + update_block: async (block_id, updated_block_props) => { + await dataChanged({ + table: 'symbols', + action: 'update', + id: block_id, + data: updated_block_props + }) + } +} + +// STORE ACTIONS +const store_actions = { + /** + * Updates a section in the sections store. + * + * @param {string} section_id - The ID of the section to update. + * @param {Object} updated_section_props - An object containing the properties to update. + * @returns {void} + */ + update_section: (section_id, updated_section_props) => { + stores.sections.update((store) => + store.map((section) => { + if (section.id === section_id) { + return { + ...section, + ...updated_section_props + } + } else return section + }) + ) + }, + /** + * Updates a symbol in the symbols store. + * + * @param {string} symbol_id - The ID of the symbol to update. + * @param {Object} updated_symbol_props - An object containing the properties to update. + * @returns {void} + */ + update_symbol: (symbol_id, updated_symbol_props) => { + stores.symbols.update((store) => + store.map((symbol) => { + if (symbol.id === symbol_id) { + return { + ...symbol, + ...updated_symbol_props + } + } else return symbol + }) + ) + } +} diff --git a/src/lib/builder/code_generators.js b/src/lib/builder/code_generators.js new file mode 100644 index 000000000..5cefe5948 --- /dev/null +++ b/src/lib/builder/code_generators.js @@ -0,0 +1,186 @@ +import { find as _find, chain as _chain, flattenDeep as _flattenDeep } from 'lodash-es' +import _ from 'lodash-es' +import { get } from 'svelte/store' +import { processors } from './component.js' +import stores from './stores/data' +import { site as activeSite } from './stores/data/site.js' +import sections from './stores/data/sections.js' +import symbols from './stores/data/symbols.js' +import pages from './stores/data/pages.js' +import active_page from './stores/data/page.js' +import { get_content_with_synced_values, get_page_data, get_site_data } from './stores/helpers.js' +import { design_tokens } from './constants.js' + +export async function block_html({ code, data }) { + const { html, css: postcss, js } = code + // @ts-ignore + const { css, error } = await processors.css(postcss || '') + const res = await processors.html({ + component: { html, css, js, data } + }) + return res +} + +/** + * @param {{ + * page?: import('$lib').Page + * site?: import('$lib').Site + * page_sections?: import('$lib').Section[] + * page_symbols?: import('$lib').Symbol[] + * page_list?: import('$lib').Page[] + * page_types?: import('$lib').Page_Type[] + * locale?: string + * no_js?: boolean + * }} details + * @returns {Promise<{ html: string, js: string}>} + * */ +export async function page_html({ page = get(active_page), site = get(activeSite), page_sections = get(sections), page_symbols = get(symbols), page_list = get(pages), page_types = get(stores.page_types), locale = 'en', no_js = false }) { + const page_type = _.isObject(page.page_type) ? page.page_type : page_types.find(pt => pt.id === page.page_type) + const hydratable_symbols_on_page = page_symbols.filter((s) => s.code.js && page_sections.some((section) => section.symbol === s.id || section.master?.symbol === s.id)) + const head = { + code: site_design_css(site.design) + site.code.head + page_type?.code.head, + data: get_page_data({ page, page_type, site, loc: locale }) + } + const component = await Promise.all([ + ...page_sections + .filter((s) => s.symbol || s.master?.symbol) + .sort((a, b) => { + const a_palette_index = a.palette ? page_sections.find(s => s.id === a.palette)?.index : null + const b_palette_index = b.palette ? page_sections.find(s => s.id === b.palette)?.index : null + + const a_master_index = a.master?.index || null + const b_master_index = b.master?.index || null + + if (a_palette_index !== null && b_palette_index !== null) { + // @ts-ignore + return a.index - b.index + } else if (a_palette_index !== null && b_master_index !== null) { + // @ts-ignore + return a_palette_index - b_master_index + } else if (a_master_index !== null && b_palette_index !== null) { + // @ts-ignore + return a_master_index - b_palette_index + } else if (a_master_index !== null && b_master_index !== null) { + return a_master_index - b_master_index + } + + // Otherwise compare regular indices + return a.index - b.index; + }) + .map(async (section) => { + // @ts-ignore + const symbol = page_symbols.find((symbol) => symbol.id === (section.symbol || section.master.symbol)) + // @ts-ignore + const { html, css: postcss, js } = symbol.code + + const data = get_content_with_synced_values({ + entries: section.entries, + // @ts-ignore + fields: symbol.fields, + page, + site, + pages: page_list, + page_types + })[locale] + + // @ts-ignore + const { css, error } = await processors.css(postcss || '') + return { + html: ` +
+ ${html} +
`, + js, + css, + data + } + }), + (async () => { + const data = get_site_data({ site, loc: locale }) + return { + html: site.code.foot, + css: ``, + js: ``, + data + } + })() + ]) + + + const res = await processors.html({ + component, + head, + locale + }) + + const final = `\ + + + + + ${res.head} + + + + ${res.html} + ${no_js ? `` : ``} + + + ` + + return { + html: final, + js: res.js + } + + // fetch module to hydrate component, include hydration data + function fetch_modules(symbols) { + return symbols + .map( + (symbol) => ` + import('/_symbols/${symbol.id}.js') + .then(({default:App}) => { + ${page_sections + .filter((section) => section.symbol === symbol.id || section.master?.symbol === symbol.id) + .map((section) => { + const instance_content = get_content_with_synced_values({ + entries: section.entries, + fields: symbol.fields, + page, + site, + pages: page_list, + page_types + })[locale] + return ` + new App({ + target: document.querySelector('#section-${section.id}'), + hydrate: true, + props: ${JSON.stringify(instance_content)} + }) + ` + }) + .join('\n')} + }) + .catch(e => console.error(e)); + ` + ) + .join('\n') + } +} + +export function site_design_css(values) { + return ` + + + + ` +} diff --git a/src/lib/builder/component.js b/src/lib/builder/component.js new file mode 100644 index 000000000..c8cb6d273 --- /dev/null +++ b/src/lib/builder/component.js @@ -0,0 +1,53 @@ +const compilers = {} + +let checked = 0 + +export const processors = { + html: async (raw, data) => { + return await new Promise((resolve) => { + checkIfRegistered() + async function checkIfRegistered() { + const compiler = compilers['html'] + if (compiler) { + const res = await compiler(raw) + resolve(res) + } else { + checked++ + if (checked < 100) { + setTimeout(checkIfRegistered, 100) + } + } + } + }) + }, + css: async (raw, data) => { + return await new Promise((resolve) => { + checkIfRegistered() + async function checkIfRegistered() { + const compiler = compilers['css'] + + if (compiler) { + const res = await compiler(raw) + + resolve(res) + } else { + checked++ + if (checked < 100) { + setTimeout(checkIfRegistered, 100) + } + } + } + }) + }, + js: async (raw, options) => { + const final = raw + return final + } +} + +export function registerProcessors(fns) { + for (const [lang, processor] of Object.entries(fns)) { + compilers[lang] = processor + // processors[lang] = processor + } +} diff --git a/src/lib/builder/components/CodeEditor/CodeMirror.svelte b/src/lib/builder/components/CodeEditor/CodeMirror.svelte new file mode 100644 index 000000000..f8b6d3017 --- /dev/null +++ b/src/lib/builder/components/CodeEditor/CodeMirror.svelte @@ -0,0 +1,349 @@ + + + + + { + // Editor.setSize(null, editorNode.clientHeight) + }} +/> + +
+
+
+ + diff --git a/src/lib/builder/components/CodeEditor/extensions.ts b/src/lib/builder/components/CodeEditor/extensions.ts new file mode 100644 index 000000000..f4251d756 --- /dev/null +++ b/src/lib/builder/components/CodeEditor/extensions.ts @@ -0,0 +1,11 @@ +import { css } from "@codemirror/lang-css" +import { javascript } from "@codemirror/lang-javascript" +import { svelte } from "@replit/codemirror-lang-svelte"; + +export function getLanguage(mode) { + return { + 'html': svelte(), + 'css': css(), + 'javascript': javascript() + }[mode] +} \ No newline at end of file diff --git a/src/lib/builder/components/CodeEditor/extensions/autocomplete.js b/src/lib/builder/components/CodeEditor/extensions/autocomplete.js new file mode 100644 index 000000000..5d24ac8e7 --- /dev/null +++ b/src/lib/builder/components/CodeEditor/extensions/autocomplete.js @@ -0,0 +1,147 @@ +import {svelteLanguage} from '@replit/codemirror-lang-svelte' +import { cssLanguage } from "@codemirror/lang-css" +import { snippetCompletion } from '@codemirror/autocomplete' +import _ from 'lodash-es'; + +const Completion_Label = (value) => { + if (Array.isArray(value)) { + return `[ ${typeof(value[0])} ]` + } else if (_.isObject(value)) { + return '{ ' + Object.entries(value).map(([ key, value ]) => `${key}:${typeof(value)}`).join(', ') + ' }' + } else { + return typeof(value) + } +} + +function svelteCompletions(data) { + const completions = [ + snippetCompletion('{#if ${true}}\n\t${Shown if true}\n{:else}\n\t${Shown if false}\n{/if', { + label: "{#if}", + type: "text", + detail: "Conditionally render a block of content", + }), + snippetCompletion('{#each ${["one", "two"]} as ${item}}\n\t${\{item\\}}\n{/each', { + label: "{#each}", + type: "text", + detail: "Loop over array or Repeater items" + }), + snippetCompletion('{#await ${promise}}\n\t${promise is pending}\n{:then ${value}}\n\t${promise was fullfilled}\n{:catch ${error}}\n\t${promise was rejected}\n{/await', { + label: "{#await}", + type: "text", + detail: "Show content depending on the states of a Promise" + }), + snippetCompletion('{#key ${"value"}}\n\tthis will re-render when "value" changes\n{/key', { + label: "{#key}", + type: "text", + detail: "Re-render a block when a value changes" + }), + snippetCompletion('{@html ${"

content

"}', { + label: "{@html}", type: "text", detail: "Render HTML from a Markdown field" + }), + snippetCompletion('{@debug ${variable}', { + label: "{@debug}", + type: "text", + detail: "Log a variable's value" + }), + snippetCompletion('{@const ${variable = "foo"}', { + label: "{@const}", + type: "text", + detail: "Define a local constant" + }), + ] + return svelteLanguage.data.of({ + autocomplete: (context) => { + const word = context.matchBefore(/\S*/) + + // Svelte blocks + if ((word.text.includes('{#') || word.text.includes('{@'))) { + const position = (word.text.indexOf('{#') !== - 1 ? word.text.indexOf('{#') : word.text.indexOf('{@')) + return { + from: word.from + position, + options: completions + } + } + + // Field values + if (word.text.includes('{')) { + // matches child field values + const position = word.text.indexOf('{') + + if (word.text.includes('.')) { + const options = Object.entries(data).filter(([key, value]) => (_.isObject(value) && !Array.isArray(value))).map(([key, value]) => { + const child_options = Object.entries(value).map(([child_key, child_value]) => ({ + label: `${key}.${child_key}`, + type: 'variable', + detail: Completion_Label(child_value) + })) + return child_options + }) + return { + from: word.from + position + 1, + options: _.flattenDeep(options) + } + } + + // matches root-level fields + return { + from: word.from + position + 1, // offset for bracket + options: [ + ...Object.entries(data).map(([key, value]) => ({ + label: key, + type: 'variable', + detail: Completion_Label(value) + })), + { + label: '{#block}', + apply: '#', + type: 'text', + detail: 'each, if, key, await', + boost: -1 + }, + { + label: '{@tag}', + apply: '@', + type: 'text', + detail: 'html, const, debug', + boost: -2 + } + ] + } + } + } + }) +} + + +function cssCompletions(list = []) { + const variables = list.map(item => item.substring(0, item.length)) + return cssLanguage.data.of({ + autocomplete: (context) => { + const word = context.matchBefore(/\S*/) + if (!word.text.startsWith('var(')) return null + return { + from: word.from, + options: variables.map(item => ({ + label: `var(${item})`, + type: "text", + apply: `var(${item}` + })) + } + } + }) +} + +export function updateCompletions(Editor, variables, compartment) { + Editor.dispatch({ + effects: compartment.reconfigure(cssCompletions(variables)) + }) +} + +export function extract_css_variables(css) { + return css.match(/--\S*:/gm) || [] +} + +export { + cssCompletions, + svelteCompletions +} \ No newline at end of file diff --git a/src/lib/builder/components/CodeEditor/extensions/inspector.ts b/src/lib/builder/components/CodeEditor/extensions/inspector.ts new file mode 100644 index 000000000..fdd54007a --- /dev/null +++ b/src/lib/builder/components/CodeEditor/extensions/inspector.ts @@ -0,0 +1,61 @@ +import { EditorView, Decoration } from '@codemirror/view'; +import type { DecorationSet } from '@codemirror/view' +import { StateEffect, StateField } from '@codemirror/state'; + +const addUnderline = StateEffect.define<{ from: number, to: number }>() + +const underlineField = StateField.define({ + create() { + return Decoration.none + }, + update(underlines, tr) { + underlines = underlines.map(tr.changes) + for (let e of tr.effects) if (e.is(addUnderline)) { + underlines = underlines.update({ + add: [underlineMark.range(e.value.from, e.value.from)], + filter: (f, t, value) => { + if (value.spec.class === 'cm-highlight') return false + else return true + }, + }) + } + return underlines + }, + provide: f => EditorView.decorations.from(f) +}) + +const underlineMark = Decoration.line({ class: "cm-highlight" }) + +const underlineTheme = EditorView.baseTheme({ + ".cm-highlight": { background: "#333" } +}) + +export default function highlight_active_line(Editor, loc) { + if (!loc) return + let activeLine + for (let { from, to } of Editor.visibleRanges) { + for (let pos = from; pos <= to;) { + let line = Editor.state.doc.lineAt(pos) + if (line.number === (loc.line) && line.from !== line.to) { + activeLine = line + break; + } else { + pos = line.to + 1 + } + } + } + + if (activeLine) { + highlightLine(Editor, activeLine); + } + + function highlightLine(view: EditorView, line) { + let effects: StateEffect[] = [addUnderline.of({ from: line.from, to: line.to })] + if (!effects.length) return false + + if (!view.state.field(underlineField, false)) + effects.push(StateEffect.appendConfig.of([underlineField, underlineTheme])) + view.dispatch({ effects }) + return true + } +} diff --git a/src/lib/builder/components/CodeEditor/theme.ts b/src/lib/builder/components/CodeEditor/theme.ts new file mode 100644 index 000000000..9f53c0aa2 --- /dev/null +++ b/src/lib/builder/components/CodeEditor/theme.ts @@ -0,0 +1,182 @@ +import { EditorView } from "@codemirror/view" +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language" +import { tags as t } from "@lezer/highlight" + +// Using https://github.com/one-dark/vscode-one-dark-theme/ as reference for the colors + +const chalky = "#e5c07b", + coral = "#e06c75", + cyan = "#56b6c2", + invalid = "#ffffff", + ivory = "#abb2bf", + stone = "#7d8799", // Brightened compared to original to increase contrast + malibu = "#61afef", + sage = "#98c379", + whiskey = "#d19a66", + violet = "#c678dd", + darkBackground = "#21252b", + highlightBackground = "#2c313a", + background = "rgb(30,30,30)", + tooltipBackground = "#353a42", + selection = "#333", + cursor = "white" + +/// The editor theme styles for One Dark. +export const oneDarkTheme = EditorView.theme({ + "&": { + color: ivory, + backgroundColor: background + }, + + '.cm-line': { + fontFamily: `'Fira Code'`, + }, + + ".cm-content": { + caretColor: cursor + }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: cursor }, + // ".cm-activeLine": { backgroundColor: highlightBackground }, + + "&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": { + backgroundColor: selection, + }, + + ".cm-panels": { backgroundColor: darkBackground, color: ivory }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: "#72a1ff59", + outline: "1px solid #457dff" + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: "#6199ff2f" + }, + + ".cm-selectionMatch": { backgroundColor: "#aafe661a" }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: "#bad0f847", + outline: "1px solid #515a6b" + }, + + ".cm-gutters": { + backgroundColor: background, + color: stone, + border: "none" + }, + + ".cm-activeLineGutter": { + backgroundColor: highlightBackground + }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: "#ddd" + }, + + ".cm-tooltip": { + border: "none", + backgroundColor: tooltipBackground + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent" + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: tooltipBackground, + borderBottomColor: tooltipBackground + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + backgroundColor: highlightBackground, + color: ivory + } + } +}, { dark: true }) + +/// The highlighting style for code in the One Dark theme. +export const oneDarkHighlightStyle = HighlightStyle.define([ + { + tag: t.keyword, + color: violet + }, + { + tag: [t.name, t.deleted, t.character, t.propertyName, t.macroName], + color: coral + }, + { + tag: [t.function(t.variableName), t.labelName], + color: malibu + }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: whiskey + }, + { + tag: [t.definition(t.name), t.separator], + color: ivory + }, + { + tag: [t.typeName, t.className, t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: chalky + }, + { + tag: [t.operator, t.operatorKeyword, t.url, t.escape, t.regexp, t.link, t.special(t.string)], + color: cyan + }, + { + tag: [t.meta, t.comment], + color: stone + }, + { + tag: t.strong, + fontWeight: "bold" + }, + { + tag: t.emphasis, + fontStyle: "italic" + }, + { + tag: t.strikethrough, + textDecoration: "line-through" + }, + { + tag: t.link, + color: stone, + textDecoration: "underline" + }, + { + tag: t.heading, + fontWeight: "bold", + color: coral + }, + { + tag: [t.atom, t.bool, t.special(t.variableName)], + color: whiskey + }, + { + tag: [t.processingInstruction, t.string, t.inserted], + color: sage + }, + { + tag: t.invalid, + color: invalid + }, +]) + +// workaround for introduced bug +// https://discuss.codemirror.net/t/highlighting-that-seems-ignored-in-cm6/4320/17 +const fn0 = oneDarkHighlightStyle.style; +// noinspection JSConstantReassignment +oneDarkHighlightStyle.style = tags => fn0(tags || []) + +export const ThemeHighlighting = syntaxHighlighting(oneDarkHighlightStyle) + +/// Extension to enable the One Dark theme (both the editor theme and +/// the highlight style). +const oneDark: Extension = [oneDarkTheme, syntaxHighlighting(oneDarkHighlightStyle)] +export default oneDark \ No newline at end of file diff --git a/src/lib/builder/components/ComponentPreview.svelte b/src/lib/builder/components/ComponentPreview.svelte new file mode 100644 index 000000000..2d9a188f9 --- /dev/null +++ b/src/lib/builder/components/ComponentPreview.svelte @@ -0,0 +1,495 @@ + + + + +
+ {#if compilation_error} +
+      {@html compilation_error}
+    
+ {/if} + + {#if consoleLog} +
+ +
+ {/if} +
+ {#if componentApp} + + {:else} + + {/if} +
+ {#if !hideControls} + + {/if} +
+ + + + diff --git a/src/lib/builder/components/Content.svelte b/src/lib/builder/components/Content.svelte new file mode 100644 index 000000000..cb17a18d2 --- /dev/null +++ b/src/lib/builder/components/Content.svelte @@ -0,0 +1,267 @@ + + +
+ {#each fields.filter((f) => !f.parent).sort((a, b) => a.index - b.index) as field} + {@const content_entry = entries.find((r) => r.field === field.id)} + + {@const Field_Component = get_component(field)} + {@const is_visible = check_condition(field) && belongs_to_current_page_type(field)} + {@const is_valid = (field.key || field.type === 'info') && Field_Component} + {@const has_child_fields = field.type === 'repeater' || field.type === 'group'} + {#if field.source && is_valid && is_visible} + {#await get_source_content(field)} + ft.id === field.type)?.icon}> +
+ +
+
+ {:then fetched_entry} + ft.id === field.type)?.icon}> +
+ { + // TODO: handle edit for linked field entries + + // attach entry id for nested 'input' dispatches + const row_id = detail.id || fetched_entry.id + const data = detail.data || detail + + const updated_content = entries.map((row) => (row.id === row_id ? { ...row, ...data } : row)) + + dispatch_update({ + entries: updated_content + }) + }} + /> +
+
+ {/await} + {:else if is_valid && is_visible} + ft.id === field.type)?.icon} pill={field.is_static ? 'Static' : null} {minimal}> +
+ add_repeater_item(detail)} + on:remove={({ detail }) => remove_repeater_item(detail)} + on:move={({ detail }) => move_repeater_item(detail)} + oninput={(detail) => { + // attach entry id for nested 'input' dispatches + const row_id = detail.id || content_entry.id + const data = detail.data || detail + + const updated_content = entries.map((row) => (row.id === row_id ? { ...row, ...data } : row)) + + dispatch_update({ + entries: updated_content + }) + }} + /> +
+
+ {:else if is_visible} +

Field requires a key

+ {/if} + {:else} +

+ {#if $userRole === 'DEV'} + When you create fields, they'll be editable from here + {:else} + When the site developer creates fields, they'll be editable from here + {/if} +

+ {/each} +
+ + diff --git a/src/lib/builder/components/Fields/Condition.svelte b/src/lib/builder/components/Fields/Condition.svelte new file mode 100644 index 000000000..536fa7878 --- /dev/null +++ b/src/lib/builder/components/Fields/Condition.svelte @@ -0,0 +1,100 @@ + + +
+ Show if +
+ + { + let default_value = '' + const selected_field = comparable_fields.find((f) => f.id === field_id) + if (selected_field.type === 'select') { + default_value = selected_field.options.options[0]?.value + } else { + default_value = selected_field.value + } + dispatch_update({ field: field_id, value: default_value }) + }} + value={condition.field} + options={comparable_fields.map((f) => ({ + icon: $fieldTypes.find((t) => t.id === f.type).icon, + label: f.label, + value: f.id, + disabled: f.options.condition + }))} + /> + + dispatch_update({ comparison })} value={condition.comparison} options={comparisons} /> + + {#if field_to_compare?.type === 'select'} + dispatch_update({ value })} options={field_to_compare.options?.options || []} /> + {:else if field_to_compare?.type === 'switch'} + { + dispatch_update({ value: detail }) + }} + /> + {:else} + dispatch_update({ value })} /> + {/if} + + +
+
+ + diff --git a/src/lib/builder/components/Fields/FieldItem.svelte b/src/lib/builder/components/Fields/FieldItem.svelte new file mode 100644 index 000000000..50340f59e --- /dev/null +++ b/src/lib/builder/components/Fields/FieldItem.svelte @@ -0,0 +1,552 @@ + + +
+
+
+ ({ + icon: ft.icon, + value: ft.id, + label: ft.label + }))} + dividers={[1, 8, 10, 12]} + on:input={({ detail: field_type_id }) => { + console.log({ field_type_id }) + field_type_changed = true + selected_field_type_id = field_type_id + dispatch_update({ + type: field_type_id + }) + }} + placement="bottom-start" + /> + {#if collapsed} +
+ {#if $mod_key_held} + + + + {:else} + dispatch('move', { direction: 'up', field }) + }, + { + label: 'Move down', + icon: 'material-symbols:arrow-circle-down-outline', + on_click: () => dispatch('move', { direction: 'down', field }) + }, + ...(has_condition + ? [] + : [ + { + label: 'Set condition', + icon: 'mdi:hide', + disabled: !condition_enabled, + on_click: () => { + add_condition() + } + } + ]), + { + label: 'Duplicate', + icon: 'bxs:duplicate', + on_click: () => dispatch('duplicate', field) + }, + { + label: 'Delete', + icon: 'ic:outline-delete', + is_danger: true, + on_click: () => dispatch('delete', field) + } + ]} + placement="bottom-end" + /> + {/if} +
+ {/if} +
+ {#if minimal} + +
+ { + dispatch_update({ + options: { + ...field.options, + info: text + } + }) + }} + /> + {#if !collapsed} +
+ {#if $mod_key_held} + + + + {:else} + dispatch('move', { direction: 'up', field }) + }, + { + label: 'Move down', + icon: 'material-symbols:arrow-circle-down-outline', + on_click: () => dispatch('move', { direction: 'down', field }) + }, + ...(has_condition + ? [] + : [ + { + label: 'Add Condition', + icon: 'mdi:show', + on_click: () => { + add_condition() + } + } + ]), + { + label: 'Duplicate', + icon: 'bxs:duplicate', + on_click: () => dispatch('duplicate', field) + }, + { + label: 'Delete', + icon: 'ic:outline-delete', + is_danger: true, + on_click: () => dispatch('delete', field) + } + ]} + placement="bottom-end" + /> + {/if} +
+ {/if} +
+ {:else} + +
+ { + // only auto-set key and type on new fields + dispatch_update({ + label: text, + key: key_edited || !is_new_field ? field.key : validate_field_key(text), + type: field_type_changed || !is_new_field ? field.type : update_field_type(text) + }) + }} + on:blur={() => (is_new_field = false)} + /> +
+ +
+ { + key_edited = true + dispatch_update({ + key: validate_field_key(text) + }) + }} + /> + {#if !collapsed} +
+ {#if $mod_key_held} + + + + {:else} + dispatch('move', { direction: 'up', field }) + }, + { + label: 'Move down', + icon: 'material-symbols:arrow-circle-down-outline', + on_click: () => dispatch('move', { direction: 'down', field }) + }, + ...(has_condition + ? [] + : [ + { + label: 'Add Condition', + icon: 'mdi:show', + on_click: () => { + add_condition() + } + } + ]), + { + label: 'Duplicate', + icon: 'bxs:duplicate', + on_click: () => dispatch('duplicate', field) + }, + { + label: 'Delete', + icon: 'ic:outline-delete', + is_danger: true, + on_click: () => dispatch('delete', field) + } + ]} + placement="bottom-end" + /> + {/if} +
+ {/if} +
+ {/if} +
+ + + {#if has_subfields} +
+ {#each child_fields.sort((a, b) => a.index - b.index) as subfield (subfield.id)} + + {/each} + {#if field.type === 'repeater' || field.type === 'group'} + + {/if} +
+ {/if} +
+ + diff --git a/src/lib/builder/components/Fields/FieldsContent.svelte b/src/lib/builder/components/Fields/FieldsContent.svelte new file mode 100644 index 000000000..f998c8e36 --- /dev/null +++ b/src/lib/builder/components/Fields/FieldsContent.svelte @@ -0,0 +1,740 @@ + + +
+ {#each parent_fields.sort((a, b) => a.index - b.index) as field (field.id)} + {@const Field_Component = get_component(field)} + + {@const active_tab = $userRole === 'DEV' ? selected_tabs[field.id] : 'entry'} + {@const is_visible = check_condition(field)} +
+ + {#if $userRole === 'DEV'} +
+ + +
+ {/if} +
+ {#if active_tab === 'field'} +
+ duplicate_field(field)} + on:delete={({ detail: field }) => delete_field(field)} + on:createsubfield={({ detail: field }) => create_subfield(field)} + on:move={({ detail }) => move_field(detail)} + on:input={({ detail }) => update_field(detail)} + on:keydown + /> +
+ {:else if active_tab === 'entry'} + {#if is_visible} + {@const content_entry = get_content_entry(field)} + {@const is_dynamic_field_type = ['site-field', 'page-field'].includes(field.type)} + {@const source_entry = entries.find((e) => e.field === field.source)} + {@const source_field = [...$site.fields, ...$active_page.page_type.fields, ...$page_type.fields].find((f) => f.id === field.source)} + {#if is_dynamic_field_type && source_entry && source_field} + {@const dynamic_field_type = { 'page-field': 'page', 'site-field': 'site' }[field.type]} + {@const title = ['repeater', 'group'].includes(source_field.type) ? field.label : null} + {@const icon = title ? $fieldTypes.find((ft) => ft.id === source_field.type)?.icon : null} +
+ {#if dynamic_field_type === 'site'} + + Site Content + {:else if dynamic_field_type === 'page'} + + Page Content + {/if} +
+ + add_repeater_item({ ...detail, dynamic: dynamic_field_type })} + on:remove={({ detail }) => remove_repeater_item(detail, dynamic_field_type)} + on:move={({ detail }) => move_repeater_item(detail)} + oninput={(value) => { + dispatch_update({ + entries: value.entries, + content_changes: [{ action: 'update', id: value.id, data: value.data, dynamic: dynamic_field_type }] + }) + }} + /> + + {:else if content_entry} + {@const title = ['repeater', 'group'].includes(field.type) ? field.label : null} + {@const icon = title ? $fieldTypes.find((ft) => ft.id === field.type)?.icon : null} + + add_repeater_item(detail)} + on:remove={({ detail }) => remove_repeater_item(detail)} + on:move={({ detail }) => move_repeater_item(detail)} + oninput={(value) => { + // attach entry id for nested 'input' dispatches + const row_id = value.id || content_entry.id + const data = value.data || value + + const updated_entries = entries.map((row) => (row.id === row_id ? { ...row, ...data } : row)) + dispatch_update({ + entries: updated_entries, + content_changes: [{ action: 'update', id: row_id, data }] + }) + }} + /> + + {:else} + Field {field.id} is corrupted, should be deleted. + {/if} + {:else if !is_visible && $userRole === 'DEV'} +
+ + This field will be hidden from content editors +
+ {/if} + {/if} +
+
+ {/each} + {#if $userRole === 'DEV'} + + {/if} +
+ + diff --git a/src/lib/builder/components/Fields/PageField.svelte b/src/lib/builder/components/Fields/PageField.svelte new file mode 100644 index 000000000..ad1c06179 --- /dev/null +++ b/src/lib/builder/components/Fields/PageField.svelte @@ -0,0 +1,54 @@ + + +
+ {#if field_synced_with_other_page_type} +
+

+ Synced with {'{page_type}'}. Is hidden. Will fall back to other field. +

+
+ {:else} +
+ + { + selected_page_type = detail + dispatch('input', { ...field.options, page_type: detail }) + }} + label="Page Type" + value={selected_page_type} + fullwidth={true} + options={$page_types.map((page_type) => ({ + label: page_type.name, + value: page_type.id, + icon: page_type.icon + }))} + /> +
+ {/if} +
+ + diff --git a/src/lib/builder/components/Fields/PageFieldField.svelte b/src/lib/builder/components/Fields/PageFieldField.svelte new file mode 100644 index 000000000..130579051 --- /dev/null +++ b/src/lib/builder/components/Fields/PageFieldField.svelte @@ -0,0 +1,49 @@ + + +
+ {#if field_synced_with_other_page_type} +
+

+ Synced with {'{page_type}'}. Is hidden. Will fall back to other field. Delete. +

+
+ {:else} +
+ + { + dispatch('input', detail) + }} + label="Page Content" + value={field.source} + options={field_list.map((f) => ({ + label: f.label, + value: f.id, + icon: $fieldTypes.find((ft) => ft.id === f.type).icon + }))} + /> +
+ {/if} +
+ + diff --git a/src/lib/builder/components/Fields/PageListField.svelte b/src/lib/builder/components/Fields/PageListField.svelte new file mode 100644 index 000000000..6ee8dce04 --- /dev/null +++ b/src/lib/builder/components/Fields/PageListField.svelte @@ -0,0 +1,51 @@ + + +
+ {#if field_synced_with_other_page_type} +
+

+ Synced with {'{page_type}'}. Is hidden. Will fall back to other field. Delete. +

+
+ {:else} +
+ + { + selected_page_type = detail + oninput({ ...field.options, page_type: detail }) + }} + label="Page Type" + value={selected_page_type} + fullwidth={true} + options={$page_types.map((page_type) => ({ + label: page_type.name, + value: page_type.id, + icon: page_type.icon + }))} + /> +
+ {/if} +
+ + diff --git a/src/lib/builder/components/Fields/SelectField.svelte b/src/lib/builder/components/Fields/SelectField.svelte new file mode 100644 index 000000000..2490145e3 --- /dev/null +++ b/src/lib/builder/components/Fields/SelectField.svelte @@ -0,0 +1,188 @@ + + + +
+ {#if options} + {#each options as option, i} +
+
+ Icon + update_option({ ...option, icon }, i)} /> +
+ { + update_option( + { + ...option, + value: clicked_value_inputs.has(i) ? option.value : validateFieldKey(text), + label: text + }, + i + ) + }} + /> + clicked_value_inputs.add(i)} + oninput={(text) => { + update_option( + { + ...option, + value: text + }, + i + ) + }} + /> +
+ {#if i !== 0} + + {/if} + {#if i !== options.length - 1} + + {/if} + +
+
+ {/each} + {/if} + +
+ + diff --git a/src/lib/builder/components/Fields/SiteFieldField.svelte b/src/lib/builder/components/Fields/SiteFieldField.svelte new file mode 100644 index 000000000..27d693727 --- /dev/null +++ b/src/lib/builder/components/Fields/SiteFieldField.svelte @@ -0,0 +1,33 @@ + + +
+
+ + oninput(detail)} + label="Site Field" + value={field.source} + options={field_list.map((f) => ({ + label: f.label, + value: f.id, + icon: $fieldTypes.find((ft) => ft.id === f.type).icon + }))} + /> +
+
+ + diff --git a/src/lib/builder/components/IFrame.svelte b/src/lib/builder/components/IFrame.svelte new file mode 100644 index 000000000..ced2e9a05 --- /dev/null +++ b/src/lib/builder/components/IFrame.svelte @@ -0,0 +1,192 @@ + + + + +
+ {#if !iframeLoaded} +
+ +
+ {/if} +
+ {#if generated_srcdoc || srcdoc} + + {/if} +
+
+ + diff --git a/src/lib/builder/components/IconPicker.svelte b/src/lib/builder/components/IconPicker.svelte new file mode 100644 index 000000000..00a0d6210 --- /dev/null +++ b/src/lib/builder/components/IconPicker.svelte @@ -0,0 +1,244 @@ + + +
+
+ {#if variant === 'large'} + {#if svg_preview || icon} +
+ + {#if svg_preview} + {@html svg_preview} + {:else} + + {/if} +
+ {/if} +
{ + e.preventDefault() + search() + }} + > + + + {:else if variant === 'small'} + + {/if} +
+ {#if showing_popover} + + {/if} + {#if searched && variant === 'large'} +
+ + {#each icons as item} + + {:else} + + No icons found + + {/each} +
+ {/if} +
+ + diff --git a/src/lib/builder/components/Sidebar/PageType_Sidebar.svelte b/src/lib/builder/components/Sidebar/PageType_Sidebar.svelte new file mode 100644 index 000000000..d0b91d032 --- /dev/null +++ b/src/lib/builder/components/Sidebar/PageType_Sidebar.svelte @@ -0,0 +1,443 @@ + + + + + diff --git a/src/lib/builder/components/Sidebar/Page_Sidebar.svelte b/src/lib/builder/components/Sidebar/Page_Sidebar.svelte new file mode 100644 index 000000000..ebd705f74 --- /dev/null +++ b/src/lib/builder/components/Sidebar/Page_Sidebar.svelte @@ -0,0 +1,170 @@ + + + + + diff --git a/src/lib/builder/components/Sidebar/Sidebar_Symbol.svelte b/src/lib/builder/components/Sidebar/Sidebar_Symbol.svelte new file mode 100644 index 000000000..7a12e2b4c --- /dev/null +++ b/src/lib/builder/components/Sidebar/Sidebar_Symbol.svelte @@ -0,0 +1,313 @@ + + + + +

Rename Block

+

Enter a new name for your Block

+
{ + e.preventDefault() + save_rename() + }} + > + + + + + +
+
+
+ + + {:else} +
+ + Pages +
+ {/if} + {/snippet} + + +
+ {#if current_step === 'pages'} + + {:else} + + {/if} +
+ + diff --git a/src/lib/builder/views/modal/index.js b/src/lib/builder/views/modal/index.js new file mode 100644 index 000000000..215bb8dd7 --- /dev/null +++ b/src/lib/builder/views/modal/index.js @@ -0,0 +1,9 @@ +import SectionEditor from './SectionEditor/SectionEditor.svelte' +import BlockEditor from './BlockEditor.svelte' +import PageEditor from './PageEditor.svelte' +import SiteEditor from './SiteEditor/SiteEditor.svelte' +import SitePages from './SitePages/SitePages.svelte' +import Dialog from './Dialog.svelte' +import BlockPicker from './BlockPicker.svelte' + +export { SectionEditor, BlockEditor, PageEditor, SiteEditor, SitePages, Dialog, BlockPicker } diff --git a/src/lib/components/BlockPicker.svelte b/src/lib/components/BlockPicker.svelte new file mode 100644 index 000000000..78e8f3b85 --- /dev/null +++ b/src/lib/components/BlockPicker.svelte @@ -0,0 +1,119 @@ + + +
+ {#if !selected_group} +
+ {#each symbol_groups as group} + + {/each} +
+ {:else} + +
    + {#await fetch_symbols(selected_group) then symbols} + {#each symbols as symbol} +
  • + include_symbol(symbol)} {symbol} {site} {append} controls_enabled={false} /> +
  • + {/each} + {/await} +
+ {/if} +
+ + diff --git a/src/lib/components/CreateSite.svelte b/src/lib/components/CreateSite.svelte new file mode 100644 index 000000000..250fdca8a --- /dev/null +++ b/src/lib/components/CreateSite.svelte @@ -0,0 +1,218 @@ + + + + + + + + + Identity + + + + Design + + + + Starter + + + +
+ +
+ + +
+
+ + +
+
+ update_design_value(token, val)} /> +
+
+ {@html design_variables_css} +

{site_name || 'Welcome to Primo'}

+

We're happy you're here

+ +
+
+
+ + +
+
+

Choose a Starter

+ +
+ {#if $page.data.starters.length > 0} +
+
+ select_theme(detail)} append={design_variables_css} /> +
+
+ {#if preview} + + {/if} +
+
+ {:else} + + {/if} +
+
+
+
+ + + + diff --git a/src/lib/components/DashboardToolbar.svelte b/src/lib/components/DashboardToolbar.svelte index df04211fa..fbade9236 100644 --- a/src/lib/components/DashboardToolbar.svelte +++ b/src/lib/components/DashboardToolbar.svelte @@ -1,25 +1,39 @@
+
@@ -50,7 +64,7 @@ font-size: 14px; &:hover { - border-color: var(--primo-color-brand); + border-color: var(--weave-primary-color); } &.with-icon { diff --git a/src/lib/components/DropZone.svelte b/src/lib/components/DropZone.svelte new file mode 100644 index 000000000..4cbca286d --- /dev/null +++ b/src/lib/components/DropZone.svelte @@ -0,0 +1,83 @@ + + +
+ handleFiles(e.currentTarget.files)} accept=".json" /> + + {#if invalid} +
+ + File invalid. Click or drop to try again. +
+ {:else if file} +
+ + {file.name} + Click or drop to replace +
+ {:else} +
+ + Drop your site file here or click to browse + Accepts .json, .yaml files +
+ {/if} +
diff --git a/src/lib/components/EmptyState.svelte b/src/lib/components/EmptyState.svelte new file mode 100644 index 000000000..d85bf31fa --- /dev/null +++ b/src/lib/components/EmptyState.svelte @@ -0,0 +1,25 @@ + + +
+
+ +
+
+

{title}

+

+ {description} +

+
+ {#if link} + + {/if} +
diff --git a/src/lib/components/IconButton.svelte b/src/lib/components/IconButton.svelte index d8fef3f7f..b58af2db8 100644 --- a/src/lib/components/IconButton.svelte +++ b/src/lib/components/IconButton.svelte @@ -1,31 +1,36 @@ - diff --git a/src/lib/components/LibrarySymbolButton.svelte b/src/lib/components/LibrarySymbolButton.svelte new file mode 100644 index 000000000..61f256027 --- /dev/null +++ b/src/lib/components/LibrarySymbolButton.svelte @@ -0,0 +1,176 @@ + + +
+
+ + + diff --git a/src/lib/components/SiteThumbnail.svelte b/src/lib/components/SiteThumbnail.svelte index b89805e0a..942ec5d36 100644 --- a/src/lib/components/SiteThumbnail.svelte +++ b/src/lib/components/SiteThumbnail.svelte @@ -1,102 +1,201 @@ - - -
-
- {#if browser} -