diff --git a/.gitignore b/.gitignore index 25cfa93..bfc8e16 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .siteglide-config +.siteglide/alpha.json node_modules /marketplace_builder .env @@ -11,4 +12,6 @@ exported.json /tmp data-imported.json /test_zip -.vscode \ No newline at end of file +.vscode +gui/next/.svelte-kit +gui/next/node_modules diff --git a/.siteglide/alpha.json.example b/.siteglide/alpha.json.example new file mode 100644 index 0000000..4d4ac79 --- /dev/null +++ b/.siteglide/alpha.json.example @@ -0,0 +1,6 @@ +{ + "token": "npm_xxxxxxxx", + "registry": "https://registry.npmjs.org/", + "tag": "alpha", + "package": "@siteglide/siteglide-mcp" +} diff --git a/README.md b/README.md index 4a2f038..c104dad 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ Siteglide CLI is a tool that enables you to work on your project from your local editor and has similar behaviours to that of using FTP, in that you can sync up and pull down changes from your website. You will be required to use some terminal commands to use this feature. -For features and setup instructions, see our help documentation [here](https://developers.siteglide.com/introducing-siteglide-cli) +For features and setup instructions, see our help documentation [here](https://docs.siteglide.com/articles/1541403-introduction-to-the-command-line-interface-cli) -Our changelog can be found [here](https://developers.siteglide.com/cli-changelog) +Our changelog can be found [here](https://docs.siteglide.com/articles/4471977-cli-changelog) [![NPM version](https://img.shields.io/npm/v/@siteglide/siteglide-cli)](https://npmjs.org/package/@siteglide/siteglide-cli) [![NPM downloads](https://img.shields.io/npm/dt/@siteglide/siteglide-cli)](https://npmjs.org/package/@siteglide/siteglide-cli) diff --git a/gui/next/.gitignore b/gui/next/.gitignore new file mode 100644 index 0000000..2435e99 --- /dev/null +++ b/gui/next/.gitignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* +/test-results/ +/playwright-report/ +/playwright/.cache/ +/playwright/pos-cli-gui-qa/ diff --git a/gui/next/README.md b/gui/next/README.md new file mode 100644 index 0000000..853ba9c --- /dev/null +++ b/gui/next/README.md @@ -0,0 +1,127 @@ +pos-cli gui is an interface built to manage your platformOS instance and related data. + +## Tech stack +- [SvelteKit](https://kit.svelte.dev) as front-end framework +- [Vite](https://vitejs.dev) as a development environment +- [Playwright](https://playwright.dev) for end-to-end testing + +## Development +Prerequisites: [GIT](https://git-scm.com), [Node.js](https://nodejs.org/en), [pos-cli](https://github.com/mdyd-dev/pos-cli) installed and a [platformOS instance](https://documentation.platformos.com/get-started) configured. + +1. Clone the whole pos-cli repository to an empty folder: + + ```bash + git clone https://github.com/mdyd-dev/pos-cli.git + ``` +2. Navigate to the `gui/next` subfolder: + ```bash + cd gui/next + ``` +3. Install the dependencies: + ```bash + npm install + ``` + +### Run the development server +To run the dev server you just need to run the following command from `gui/next` directory +```bash +npm run dev +``` + +By default, it runs the server at [http://localhost:5173](http://localhost:5173) and you should be able to view the GUI under this URL. You need to leave the server running in the terminal. + +To test things out though, you would like to **connect to an instance** to have some test data appearing in the GUI. + +In a new terminal window, run `pos-cli gui serve [instance alias]` from the [authenticated directory](https://documentation.platformos.com/get-started/working-with-the-code-and-files/) where you have your test instance code. The same as you would normally use to run the GUI on daily development. + +### Make your changes +You can edit the source code at `gui/next` and while the development server is running, it will refresh the changes in the browser automatically. + +### Build the final code +Before publishing or testing the changes you will have to build the final package. + +To do that run the following in `gui/next` directory: + +```bash +npm run build +``` + +### Update and run the tests +When making changes and developing new functions, please make sure you will modify or add automated test scenarios placed in the `playwright` directory. + +The one rule to follow here is that each test scenario should be completely independent. You cannot rely on the previous tests to prepare any data as each test can be ran in parallel in a random order. The initial data is seeded using the public repository: https://github.com/Platform-OS/pos-cli-gui-qa + +#### Manually run tests + +To manually run the tests, you would require a test instance that has the testing code deployed and test data seeded. + +1. If not done previously, [install Playwright browsers](https://playwright.dev/docs/browsers) + ```bash + npx playwright install --with-deps + ``` +2. Clone the test repository to an empty folder: + ```bash + git clone https://github.com/Platform-OS/pos-cli-gui-qa.git + ``` +3. [Authenticate the directory](https://documentation.platformos.com/get-started/working-with-the-code-and-files/#authenticate-your-environment) to work with platformOS +4. Navigate to that directory and run the following to deploy the code: + ```bash + pos-cli deploy + ``` +5. If the instance data was previously modified, you would have to clean the data to start fresh + ```bash + pos-cli data clean + ``` +6. Seed the test data to the instance + ```bash + pos-cli data import --path seed/data.zip --zip + ``` +7. Build the production-ready code + ```bash + npm run build + ``` +8. Run the preview server + ```bash + npm run preview + ``` + +Finally, to run Playwright with an interface use the following command from `gui/next` directory: + +```bash +npx playwright test --ui +``` + +This will run the Playwright interface, where you can run previously available test scenarios and see your changes when modifying the `.spec.js` test files. + + +#### Use a script to run tests + +There is a Bash script prepared to run all the steps needed for automated testing. To use the script just run the following command from the `/gui/next` directory: + +```bash +sh sh playwright/run.sh +``` + +Keep in mind that, by default, it uses an shared instance so if more than one person is running the tests, it might fail. You can change the instance it uses by editing the script. + +The output would be a HTML report showing the tests results. + + +### Publish new version +When you are ready to publish the new GUI version: + +1. Merge from `master` to make sure that you have the latest changes to the rest of the code +2. Increase the `pos-cli` version number by running the following from **the parent directory**: + ```bash + npm version + ``` +3. Describe your changes in `CHANGELOG.md` +4. Commit and push your branch to GitHub, pass the review and merge to `master`. +5. Switch to `master` branch + ```bash + git checkout master + ``` +6. Publish the new package to npm (requires you having the permissions): + ```bash + npm publish + ``` diff --git a/gui/next/UPSTREAM.md b/gui/next/UPSTREAM.md new file mode 100644 index 0000000..ef02e67 --- /dev/null +++ b/gui/next/UPSTREAM.md @@ -0,0 +1,15 @@ +# gui/next upstream + +Vendored from `pos-cli` commit `b6c2948` (release 6.3.0). + +Siteglide deltas vs upstream: + +- Logs v1 poll interval: 7500ms (match `siteglide-cli logs`) +- Removed Logs v2 / Network routes and homepage tiles (discontinued upstream offering) +- Homepage and header include Database and Users; those views show a Siteglide Admin compatibility caution banner +- Branding: Siteglide titles, docs, portal, npm update check (`@siteglide/siteglide-cli`) + +Smoke (global test install): + +- Logs: pass +- Constants: pass diff --git a/gui/next/build/_app/env.js b/gui/next/build/_app/env.js new file mode 100644 index 0000000..f5427da --- /dev/null +++ b/gui/next/build/_app/env.js @@ -0,0 +1 @@ +export const env={} \ No newline at end of file diff --git a/gui/next/build/_app/immutable/assets/0.QmKtTD0U.css b/gui/next/build/_app/immutable/assets/0.QmKtTD0U.css new file mode 100644 index 0000000..d55538a --- /dev/null +++ b/gui/next/build/_app/immutable/assets/0.QmKtTD0U.css @@ -0,0 +1 @@ +*:where(:not(html,iframe,canvas,img,svg,video,audio):not(svg *,symbol *)){all:unset;display:revert}*,*:before,*:after{box-sizing:border-box}a,button{cursor:revert}ol,ul,menu{list-style:none}img{max-width:100%}table{border-collapse:collapse}input,textarea{-webkit-user-select:auto}input[type=radio]{all:revert}textarea{white-space:revert}meter{-webkit-appearance:revert;-moz-appearance:revert;appearance:revert}::placeholder{color:unset}:where([hidden]){display:none}:where([contenteditable]:not([contenteditable=false])){-moz-user-modify:read-write;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space;-webkit-user-select:auto}:where([draggable=true]){-webkit-user-drag:element}html{font-family:sans-serif}:root,::backdrop{--color-light-rgb-text: 74, 74, 74;--color-light-rgb-text-secondary: 146, 146, 146;--color-light-rgb-text-inverted: 255, 255, 255;--color-light-rgb-interaction: 25, 79, 144;--color-light-rgb-interaction-hover: 58, 141, 222;--color-light-rgb-interaction-active: 50, 130, 210;--color-light-rgb-frame: 221, 221, 221;--color-light-rgb-page: 255, 255, 255;--color-light-rgb-background: 245, 246, 252;--color-light-rgb-middleground: 235, 236, 242;--color-light-rgb-context: 53, 55, 57;--color-light-rgb-confirmation: 30, 142, 73;--color-light-rgb-danger: 199, 46, 46;--color-light-rgb-highlight: 250, 240, 211;--color-light-context-input-background: 87, 90, 92;--color-light-context-button-background: 28, 29, 30;--color-light-context-button-background-hover: 36, 42, 49;--color-light-context-button-text: 255, 255, 255;--color-dark-rgb-text: 208, 212, 218;--color-dark-rgb-text-secondary: 114, 148, 152;--colot-light-rgb-text-inverted: 0, 0, 0;--color-dark-rgb-interaction: 100, 180, 200;--color-dark-rgb-interaction-hover: 130, 210, 230;--color-dark-rgb-interaction-active: 115, 195, 215;--color-dark-rgb-frame: 47, 61, 76;--color-dark-rgb-page: 29, 40, 51;--color-dark-rgb-background: 19, 32, 45;--color-dark-rgb-middleground: 15, 25, 35;--color-dark-rgb-context: 21, 29, 38;--color-dark-rgb-confirmation: 30, 142, 73;--color-dark-rgb-danger: 221, 89, 89;--color-dark-rgb-highlight: 106, 62, 10;--color-dark-context-input-background: 87, 90, 92;--color-dark-context-button-background: 41, 48, 57;--color-dark-context-button-background-hover: 61, 68, 78;--color-dark-context-button-text: 255, 255, 255}:root,::backdrop{--color-rgb-text: var(--color-light-rgb-text);--color-rgb-text-secondary: var(--color-light-rgb-text-secondary);--color-rgb-text-inverted: var(--color-light-rgb-text-inverted);--color-rgb-interaction: var(--color-light-rgb-interaction);--color-rgb-interaction-hover: var(--color-light-rgb-interaction-hover);--color-rgb-interaction-active: var(--color-light-rgb-interaction-active);--color-rgb-frame: var(--color-light-rgb-frame);--color-rgb-page: var(--color-light-rgb-page);--color-rgb-background: var(--color-light-rgb-background);--color-rgb-middleground: var(--color-light-rgb-middleground);--color-rgb-context: var(--color-light-rgb-context);--color-rgb-confirmation: var(--color-light-rgb-confirmation);--color-rgb-danger: var(--color-light-rgb-danger);--color-rgb-highlight: var(--color-light-rgb-highlight);--color-rgb-context-input-background: var(--color-light-context-input-background);--color-rgb-context-button-background: var(--color-light-context-button-background);--color-rgb-context-button-background-hover: var(--color-light-context-button-background-hover);--color-rgb-context-button-text: var(--color-light-context-button-text)}@media (prefers-color-scheme: dark){:root,::backdrop{--color-rgb-text: var(--color-dark-rgb-text);--color-rgb-text-secondary: var(--color-dark-rgb-text-secondary);--color-rgb-text-inverted: var(--color-dark-rgb-text-inverted);--color-rgb-interaction: var(--color-dark-rgb-interaction);--color-rgb-interaction-hover: var(--color-dark-rgb-interaction-hover);--color-rgb-interaction-active: var(--color-dark-rgb-interaction-active);--color-rgb-frame: var(--color-dark-rgb-frame);--color-rgb-page: var(--color-dark-rgb-page);--color-rgb-background: var(--color-dark-rgb-background);--color-rgb-middleground: var(--color-dark-rgb-middleground);--color-rgb-context: var(--color-dark-rgb-context);--color-rgb-confirmation: var(--color-dark-rgb-confirmation);--color-rgb-danger: var(--color-dark-rgb-danger);--color-rgb-highlight: var(--color-dark-rgb-highlight);--color-rgb-context-input-background: var(--color-dark-context-input-background);--color-rgb-context-button-background: var(--color-dark-context-button-background);--color-rgb-context-button-background-hover: var(--color-dark-context-button-background-hover);--color-rgb-context-button-text: var(--color-dark-context-button-text)}}:root{--color-text: rgb(var(--color-rgb-text));--color-text-secondary: rgb(var(--color-rgb-text-secondary));--color-text-inverted: rgb(var(--color-rgb-text-inverted));--color-interaction: rgb(var(--color-rgb-interaction));--color-interaction-hover: rgb(var(--color-rgb-interaction-hover));--color-interaction-active: rgb(var(--color-rgb-interaction-active));--color-frame: rgb(var(--color-rgb-frame));--color-page: rgb(var(--color-rgb-page));--color-background: rgb(var(--color-rgb-background));--color-middleground: rgb(var(--color-rgb-middleground));--color-context: rgb(var(--color-rgb-context));--color-confirmation: rgb(var(--color-rgb-confirmation));--color-danger: rgb(var(--color-rgb-danger));--color-highlight: rgb(var(--color-rgb-highlight));--color-context-input-background: rgb(var(--color-rgb-context-input-background));--color-context-button-background: rgb(var(--color-rgb-context-button-background));--color-context-button-background-hover: rgb(var(--color-rgb-context-button-background-hover));--color-context-button-text: rgb(var(--color-rgb-context-button-text))}:root{--space-page: 2rem;--space-navigation: 1rem;--space-table: 1rem}:root{--font-normal: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"}:root{--easing-rapid: cubic-bezier(.075, .82, .165, 1)}body{height:100vh;display:grid;grid-template-rows:min-content 1fr;background-color:var(--color-page);text-rendering:optimizeLegibility;font-family:var(--font-normal);color:var(--color-text)}.content-context{background-color:var(--color-context);color:var(--color-text-inverted)}a{transition-property:color,background-color;transition-duration:.1s;transition-timing-function:ease-in-out}kbd{padding:.4em .2em;border-radius:.2em;background-color:var(--color-middleground);text-transform:uppercase;line-height:.6em;font-family:monospace}.definitions{display:grid;grid-template-columns:auto auto}.definitions dt,.definitions dd{padding-block:.7rem;display:flex;align-items:center}.definitions dt:not(:last-of-type),.definitions dd:not(:last-of-type){border-block-end:1px solid var(--color-background)}.definitions dt{padding-inline-end:1em;white-space:nowrap;color:var(--color-text-secondary)}.definitions dd{min-width:0;display:flex;justify-content:end;word-wrap:break-word;text-wrap:balance}.definitions dd>*{width:100%;display:block;word-wrap:break-word;text-align:end}.button{padding:.7rem 1rem;display:inline-flex;align-items:center;gap:.6em;border-radius:.5rem;background-color:var(--color-middleground);leading-trim:both;line-height:1em;color:var(--color-text);transition:all .1s linear}button:not(:disabled):not(.disabled){cursor:pointer}.button:not(.disabled):not(:disabled):hover{background-color:rgba(var(--color-rgb-interaction-hover),.2)}.button:focus-visible{box-shadow:0 0 1px 2px var(--color-interaction-hover)}.button.active{background-color:rgba(var(--color-rgb-interaction-hover),.1)}.content-context .button{background-color:var(--color-context-button-background);color:var(--color-context-button-text)}.content-context .button:hover{background-color:var(--color-context-button-background-hover)}.content-context .button:hover svg{color:currentColor}.button svg{width:18px;height:18px;margin-block:-.04rem;pointer-events:none}.button:not(:disabled):hover svg{color:var(--color-interaction)}.button:has(svg){padding-block:.64rem}.button:disabled svg{color:var(--color-text-secondary)}.button .label,button .label{position:absolute;left:-100vw}.combo{display:flex;gap:1px}.combo .button:first-of-type{border-radius:.5rem 0 0 .5rem}.combo .button:last-of-type{border-radius:0 .5rem .5rem 0}.button.compact{padding:.4rem}.button.danger{color:var(--color-danger)}.button.confirmation{background-color:rgba(var(--color-rgb-confirmation),.2);color:var(--color-confirmation)}.button.confirmation:hover{color:var(--color-confirmation)}.button.confirmation:hover svg{color:inherit}input[type=text],input[type=password],input[type=email],input[type=number],input[type=date],select,textarea{padding:.5rem 1rem;border-radius:.5rem;background-color:var(--color-middleground);transition-property:background-color,box-shadow,color;transition-duration:.1s;transition-timing-function:linear}.content-context select,.content-context input{background-color:var(--color-context-input-background)}textarea{padding:1rem}.content-context textarea{background-color:var(--color-context-input-background)}select{padding-inline-end:2.1em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-position:right .7em center;background-size:.7em}input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:0 0 1px 2px var(--color-interaction-hover)}input::placeholder,textarea::placeholder{color:var(--color-text-secondary)}.content-context input:disabled,.content-context select:disabled,.content-context textarea:disabled{color:rgba(var(--color-rgb-context-button-text),.6)}input[type=checkbox]{all:revert}header.svelte-uthxgc.svelte-uthxgc.svelte-uthxgc{max-width:100vw;padding-block:var(--space-navigation);position:sticky;top:0;z-index:100;border-bottom:1px solid var(--color-frame);background-color:var(--color-page)}.wrapper.svelte-uthxgc.svelte-uthxgc.svelte-uthxgc{min-width:0;width:100%;padding-inline:var(--space-page);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-navigation) var(--space-page)}.logo.svelte-uthxgc.svelte-uthxgc.svelte-uthxgc{min-width:0;min-height:2.5625rem;display:flex;align-items:center;gap:1rem}.logo.svelte-uthxgc .label.svelte-uthxgc.svelte-uthxgc{position:absolute;left:-100vw}.logo.svelte-uthxgc .sign.svelte-uthxgc.svelte-uthxgc{width:100%;min-width:2rem;max-width:3.125rem;transition:scale .2s var(--easing-rapid)}.logo.svelte-uthxgc .sign.svelte-uthxgc.svelte-uthxgc:hover,.logo.svelte-uthxgc:has(.logotype:hover) .sign.svelte-uthxgc.svelte-uthxgc{scale:1.1}.logo.svelte-uthxgc h1.svelte-uthxgc.svelte-uthxgc{min-width:2rem;display:flex;flex-direction:column}.logo.svelte-uthxgc .logotype.svelte-uthxgc.svelte-uthxgc{width:100%;max-width:120px;fill:var(--color-text);transition:fill .2s var(--easing-rapid)}.logo.svelte-uthxgc .logotype.svelte-uthxgc.svelte-uthxgc:hover,.logo.svelte-uthxgc:has(.sign:hover) .logotype.svelte-uthxgc.svelte-uthxgc{fill:color-mix(in srgb,var(--color-text),var(--color-text-secondary) 40%)}.logo.svelte-uthxgc .instance.svelte-uthxgc.svelte-uthxgc{max-width:260px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;color:var(--color-text-secondary);transition:font-size .2s ease-in-out}.logo.svelte-uthxgc .instance.offline.svelte-uthxgc.svelte-uthxgc{font-size:0;color:transparent}.logo.svelte-uthxgc .instance.svelte-uthxgc.svelte-uthxgc:hover{color:var(--color-interaction-hover)}ul.svelte-uthxgc.svelte-uthxgc.svelte-uthxgc{display:flex;gap:1rem}li.svelte-uthxgc a.svelte-uthxgc.svelte-uthxgc{padding:.8rem;display:flex;flex-direction:column;gap:.5rem;justify-items:center;align-items:center;position:relative;border-radius:1rem;background-color:var(--color-background);text-transform:uppercase;font-size:.9rem;color:var(--color-text-secondary);transition-property:background-color,border-radius;transition-duration:.1s,.2s;transition-timing-function:linear,cubic-bezier(.175,.885,.32,1.275)}@media (max-width: 525px){li.svelte-uthxgc a.svelte-uthxgc.svelte-uthxgc{padding:.5rem}}li.svelte-uthxgc a.svelte-uthxgc.svelte-uthxgc:hover{border-radius:1.2rem;background-color:var(--color-middleground)}li.svelte-uthxgc a.active.svelte-uthxgc.svelte-uthxgc{background-color:var(--color-middleground);color:var(--color-text)}nav.svelte-uthxgc .label.svelte-uthxgc.svelte-uthxgc{margin-block-start:.4rem;padding:.2rem .5rem;position:absolute;top:105%;right:0;left:auto;bottom:auto;opacity:0;border-radius:.2rem;background-color:var(--color-text);white-space:nowrap;font-weight:500;color:var(--color-page);transition:opacity .1s ease-in-out}nav.svelte-uthxgc .label.svelte-uthxgc.svelte-uthxgc:before{width:10px;height:6px;position:absolute;top:-6px;right:1.25rem;background-color:var(--color-text);clip-path:polygon(50% 0%,100% 100%,0% 100%);content:""}nav.svelte-uthxgc a.svelte-uthxgc:hover .label.svelte-uthxgc{opacity:1}.connectionIndicator.svelte-1cyr69k{display:flex;align-items:center;gap:1em}.connectionIndicator.svelte-1cyr69k:after{width:.8rem;height:.8rem;margin-inline-end:-.5em;display:block;position:relative;top:1px;border-radius:100%;background-color:var(--color-text-inverted);animation:svelte-1cyr69k-blink .7s ease-in-out;animation-iteration-count:infinite;content:""}@keyframes svelte-1cyr69k-blink{0%{opacity:.2}70%{opacity:1}}.container.svelte-fq192n{padding:1rem;display:flex;flex-direction:column;align-items:flex-start;position:fixed;top:100%;translate:0 var(--height);transition:translate .2s cubic-bezier(.175,.885,.32,1.275)}.notification.svelte-fq192n{margin-block-start:.5rem;padding:.7rem 2rem .8rem 1.5rem;display:flex;gap:1em;align-items:center;position:relative;border-radius:1rem;color:var(--color-text-inverted)}.success.svelte-fq192n{background-color:var(--color-confirmation)}.error.svelte-fq192n{background-color:var(--color-danger)}.info.svelte-fq192n{background-color:var(--color-context)}.disabled.svelte-fq192n{display:none}.notification.svelte-fq192n small{margin-block-start:.25em;display:block;font-size:.85em}.notification.svelte-fq192n code{padding-inline:.2em;border-radius:4px;background-color:var(--color-context);font-family:monospace;font-size:1.2em}button.svelte-fq192n{padding:.6em;margin:-.6em -1.5em -.6em 0;cursor:pointer;line-height:0}button.svelte-fq192n:hover{color:var(--color-highlight)} diff --git a/gui/next/build/_app/immutable/assets/10.PIDpwlWF.css b/gui/next/build/_app/immutable/assets/10.PIDpwlWF.css new file mode 100644 index 0000000..cb4cc71 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/10.PIDpwlWF.css @@ -0,0 +1 @@ +nav.svelte-9flr1b.svelte-9flr1b{width:100%;padding:1rem;display:flex;justify-content:space-between;align-items:center;position:sticky;top:82px;z-index:10;border-bottom:1px solid var(--color-frame);background-color:rgba(var(--color-rgb-background),.8);backdrop-filter:blur(17px);-webkit-backdrop-filter:blur(17px)}nav.svelte-9flr1b input.svelte-9flr1b{padding-inline-end:2rem}.clearFilter.svelte-9flr1b.svelte-9flr1b{padding:.5rem;position:relative;left:-2.3rem;cursor:pointer}.clearFilter.svelte-9flr1b .label.svelte-9flr1b{position:absolute;left:-100vw}.clearFilter.svelte-9flr1b.svelte-9flr1b:hover{color:var(--color-interaction)}.create.svelte-9flr1b.svelte-9flr1b{max-width:1150px;margin-inline:auto;margin-block-start:2rem;padding:1rem 3.6rem 1rem 5.2rem;border-radius:1rem;background-color:var(--color-background)}.create.svelte-9flr1b form.svelte-9flr1b{display:grid;grid-template-columns:.7fr 1fr auto;align-items:center;gap:1rem}.create.svelte-9flr1b input[name=name].svelte-9flr1b{font-family:monospace;font-size:1rem;font-weight:600}.create.svelte-9flr1b fieldset.svelte-9flr1b:last-of-type{margin-inline-start:.5em}.create.svelte-9flr1b label.svelte-9flr1b{margin-block-end:.4em;display:block}.create.svelte-9flr1b input.svelte-9flr1b{width:100%}.create.svelte-9flr1b .button.svelte-9flr1b{margin-inline-end:-1.6rem;align-self:end}ul.svelte-9flr1b.svelte-9flr1b{max-width:1100px;margin-inline:auto;margin-block-start:2rem;padding-inline:2rem}li.svelte-9flr1b.svelte-9flr1b{margin-block-end:1rem;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.2rem}li.hidden.svelte-9flr1b.svelte-9flr1b{display:none}.delete.svelte-9flr1b.svelte-9flr1b{opacity:0;transition:opacity .1s linear}li.svelte-9flr1b:hover .delete.svelte-9flr1b{opacity:1}.delete.svelte-9flr1b button.svelte-9flr1b{padding:.7rem;cursor:pointer;color:var(--color-danger)}.delete.svelte-9flr1b .label.svelte-9flr1b{position:absolute;left:-100vw}.edit.svelte-9flr1b.svelte-9flr1b{display:grid;grid-template-columns:.7fr 1fr auto;align-items:center;gap:1rem}.edit.svelte-9flr1b label.svelte-9flr1b{overflow:hidden;text-overflow:ellipsis;font-family:monospace;font-size:1rem;font-weight:600}@font-face{font-family:password;font-style:normal;font-weight:400;src:url(https://jsbin-user-assets.s3.amazonaws.com/rafaelcastrocouto/password.ttf);font-display:block}.edit.svelte-9flr1b input.svelte-9flr1b{width:100%;padding-inline-end:3rem;font-family:password;line-height:18px;letter-spacing:1px;color:var(--color-text-secondary)}.edit.svelte-9flr1b input.exposed.svelte-9flr1b{font-family:var(--font-normal);letter-spacing:0;color:var(--color-text)}.edit.svelte-9flr1b fieldset.svelte-9flr1b{position:relative}.edit.svelte-9flr1b .toggleExposition.svelte-9flr1b{display:flex;align-items:center;position:absolute;right:.5em;top:0;bottom:0;cursor:pointer;opacity:0;color:var(--color-text-secondary);transition:all .1s linear}.edit.svelte-9flr1b:hover .toggleExposition.svelte-9flr1b{opacity:1}.edit.svelte-9flr1b .toggleExposition.svelte-9flr1b:hover{color:var(--color-interaction)}.edit.svelte-9flr1b .toggleExposition .label.svelte-9flr1b{position:absolute;left:-100vw}.edit.svelte-9flr1b button[type=submit].svelte-9flr1b{opacity:0;transition:opacity .1s linear}.edit.svelte-9flr1b button.needed.svelte-9flr1b{opacity:1}.highlighted.svelte-9flr1b input.svelte-9flr1b{background-color:var(--color-highlight)} diff --git a/gui/next/build/_app/immutable/assets/12.EFLSpW2v.css b/gui/next/build/_app/immutable/assets/12.EFLSpW2v.css new file mode 100644 index 0000000..34b3eb5 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/12.EFLSpW2v.css @@ -0,0 +1 @@ +fieldset.svelte-y4u12o{display:flex;gap:2px;align-items:center}label.svelte-y4u12o{padding-inline-end:.5em}select[name=name].svelte-y4u12o{max-width:20ch;border-start-end-radius:0;border-end-end-radius:0;text-overflow:ellipsis}select[name=operation].svelte-y4u12o{border-radius:0}input[name=value].svelte-y4u12o{width:20ch;border-radius:0}select[name=value].svelte-y4u12o,select[name=minFilter].svelte-y4u12o,select[name=maxFilter].svelte-y4u12o,input[name=minFilterValue].svelte-y4u12o,input[name=maxFilterValue].svelte-y4u12o{border-radius:0}button[type=submit].svelte-y4u12o{border-start-start-radius:0;border-end-start-radius:0}[type=number].svelte-y4u12o{width:10ch}form.svelte-yzlk61.svelte-yzlk61{display:flex;gap:2px;position:relative}select[name=by].svelte-yzlk61.svelte-yzlk61{max-width:14ch;border-start-end-radius:0;border-end-end-radius:0;white-space:nowrap;text-overflow:ellipsis}select[name=order].svelte-yzlk61.svelte-yzlk61{width:50px;position:absolute;inset-inline-end:0;opacity:0;cursor:pointer;z-index:1;overflow:hidden;white-space:nowrap}label.svelte-yzlk61.svelte-yzlk61{position:relative;border-start-start-radius:0;border-end-start-radius:0}select.svelte-yzlk61:hover+label.svelte-yzlk61{background-color:rgba(var(--color-rgb-interaction-hover),.2)}select.svelte-yzlk61:focus-visible+label.svelte-yzlk61{box-shadow:0 0 1px 2px var(--color-interaction-hover)}i.svelte-ooaugn{color:var(--color-danger)}menu.svelte-1tht2a1.svelte-1tht2a1.svelte-1tht2a1{position:absolute;left:0;top:100%;z-index:20;overflow:hidden;border-radius:0 1rem 1rem;white-space:nowrap}menu.svelte-1tht2a1 li.svelte-1tht2a1+li.svelte-1tht2a1{border-block-start:1px solid var(--color-context-input-background)}menu.svelte-1tht2a1 button{width:100%;padding:.5rem 1rem;display:flex;align-items:center;gap:.5em;line-height:0}menu.svelte-1tht2a1 button:hover{background-color:var(--color-context-button-background-hover)}menu.svelte-1tht2a1 li.svelte-1tht2a1:last-child button{padding-block-end:.6rem}table.svelte-1bwwtph.svelte-1bwwtph{min-width:100%}thead.svelte-1bwwtph.svelte-1bwwtph{position:sticky;top:0;z-index:50}th.svelte-1bwwtph.svelte-1bwwtph{background-color:var(--color-background);white-space:nowrap;font-weight:500}.type.svelte-1bwwtph.svelte-1bwwtph{font-weight:400;color:var(--color-text-secondary)}td.svelte-1bwwtph.svelte-1bwwtph,th.svelte-1bwwtph.svelte-1bwwtph{padding:.6rem;vertical-align:top;border:1px solid var(--color-frame);transition:background-color .2s linear}.collapsed.svelte-1bwwtph td.svelte-1bwwtph{max-width:300px;overflow:hidden;vertical-align:middle;white-space:nowrap;text-overflow:ellipsis}td.svelte-1bwwtph.svelte-1bwwtph:first-child,th.svelte-1bwwtph.svelte-1bwwtph:first-child{width:4rem;position:sticky;left:0;z-index:10;border-inline-start:0;box-shadow:inset -4px 0 0 0 var(--color-frame)}td.svelte-1bwwtph.svelte-1bwwtph:first-child{overflow:visible;background-color:var(--color-page)}th.id.svelte-1bwwtph.svelte-1bwwtph{text-align:end}td.svelte-1bwwtph .id.svelte-1bwwtph{position:relative;display:flex;align-items:center;justify-content:space-between;gap:.7em}.date.svelte-1bwwtph span.svelte-1bwwtph{color:var(--color-text-secondary)}.highlighted.svelte-1bwwtph td.svelte-1bwwtph{background-color:var(--color-highlight)}.hasContextMenu.svelte-1bwwtph.svelte-1bwwtph{position:relative;z-index:20}.value-null.svelte-1bwwtph.svelte-1bwwtph{text-transform:uppercase;font-size:.9em;color:var(--color-text-secondary)}.combo.svelte-1bwwtph.svelte-1bwwtph{background-color:transparent;opacity:0;transition:opacity .1s linear}.combo.svelte-1bwwtph .button.svelte-1bwwtph:first-child{padding-inline:.1rem 0}tr.svelte-1bwwtph:hover .combo.svelte-1bwwtph{opacity:.5}tr.svelte-1bwwtph:hover .combo.svelte-1bwwtph:hover{opacity:1}tr.svelte-1bwwtph:hover .combo .button.svelte-1bwwtph:not(.active):hover{background-color:var(--color-background)}.combo.svelte-1bwwtph .button.active.svelte-1bwwtph{background-color:var(--color-context);color:var(--color-text-inverted)}.combo.svelte-1bwwtph .button.active.svelte-1bwwtph:hover svg{color:var(--color-text-inverted)}tr.svelte-1bwwtph:has(.active) .combo.svelte-1bwwtph{opacity:1}tr.svelte-1bwwtph:has(.active) .combo button.svelte-1bwwtph:first-child{border-end-start-radius:0}.delete.svelte-1bwwtph.svelte-1bwwtph{width:50px}dialog.svelte-1udbufw.svelte-1udbufw{height:100vh;overflow:hidden;display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:0;bottom:0;left:0;z-index:100}dialog.svelte-1udbufw.svelte-1udbufw::backdrop{background-color:rgba(var(--color-rgb-background),.6)}.content.svelte-1udbufw.svelte-1udbufw{width:clamp(300px,800px,80vw);max-height:94vh;overflow:auto;border-radius:1rem}form.svelte-1udbufw.svelte-1udbufw{display:flex;flex-direction:column;gap:1rem;padding:2rem}fieldset.svelte-1udbufw.svelte-1udbufw{display:grid;grid-template-columns:1fr 2fr;gap:1rem}fieldset.svelte-1udbufw+fieldset.svelte-1udbufw{margin-block-start:2rem}label.svelte-1udbufw.svelte-1udbufw{word-break:break-all}.type.svelte-1udbufw.svelte-1udbufw{margin-block-start:.2rem;opacity:.5;font-size:.9em}textarea.svelte-1udbufw.svelte-1udbufw,select.svelte-1udbufw.svelte-1udbufw{width:100%;max-height:40rem}[role=alert].svelte-1udbufw.svelte-1udbufw:not(:empty){margin-block-start:.5em;padding:.5em 1em .6em;position:relative;border-radius:1rem;background-color:var(--color-danger)}[role=alert].svelte-1udbufw.svelte-1udbufw:not(:empty):before{width:1em;height:.5em;position:absolute;top:-6px;right:1rem;clip-path:polygon(50% 0%,0% 100%,100% 100%);background-color:var(--color-danger);content:""}.footer.svelte-1udbufw.svelte-1udbufw{padding:1.5rem 0;position:sticky;bottom:0;gap:1rem;background-color:var(--color-context)}.error.svelte-1udbufw li.svelte-1udbufw{margin-block-end:1rem;padding:1rem;border-radius:1rem;background-color:var(--color-danger);color:var(--color-text-inverted)}.actions.svelte-1udbufw.svelte-1udbufw{display:flex;align-items:center;justify-content:space-between}section.svelte-afbo94.svelte-afbo94{height:calc(100vh - 83px);flex-grow:1;display:flex;flex-direction:column;overflow:auto;position:relative}nav.svelte-afbo94.svelte-afbo94{padding:1rem;display:flex;flex-wrap:wrap;gap:1rem;align-items:center;position:sticky;left:0;background-color:var(--color-background)}nav.svelte-afbo94>*:first-child{margin-inline-end:auto}.refreshing.svelte-afbo94.svelte-afbo94,.refreshing.svelte-afbo94.svelte-afbo94:hover{background-color:var(--color-interaction-active);color:var(--color-text-inverted)!important}.refreshing.svelte-afbo94 svg{color:var(--color-text-inverted)!important}.pagination.svelte-afbo94.svelte-afbo94{margin-block-start:auto;display:flex;align-items:center;gap:1rem;position:sticky;bottom:0;left:0;right:0;z-index:30}#viewOptions.svelte-afbo94.svelte-afbo94{margin-inline-start:auto;display:flex;gap:1rem}.combo.svelte-afbo94 input.svelte-afbo94{position:absolute;inset-inline-start:-100vw} diff --git a/gui/next/build/_app/immutable/assets/13.NkhcTUJj.css b/gui/next/build/_app/immutable/assets/13.NkhcTUJj.css new file mode 100644 index 0000000..93f0b89 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/13.NkhcTUJj.css @@ -0,0 +1 @@ +.diagnostic.svelte-u09j0c.svelte-u09j0c{border-inline-start:3px solid var(--color-frame);padding:.25rem 0 .25rem 1rem;display:flex;flex-direction:column;gap:.6rem}.diagnostic.isError.svelte-u09j0c.svelte-u09j0c{border-inline-start-color:var(--color-danger)}.header.svelte-u09j0c.svelte-u09j0c{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1rem}.type.svelte-u09j0c.svelte-u09j0c{font-family:monospace;font-weight:600}.isError.svelte-u09j0c .type.svelte-u09j0c{color:var(--color-danger)}.location.svelte-u09j0c.svelte-u09j0c{font-family:monospace;font-size:.9em;color:var(--color-text-secondary);word-break:break-all}.message.svelte-u09j0c.svelte-u09j0c{word-break:break-word}.message.pre.svelte-u09j0c.svelte-u09j0c{white-space:pre-wrap}.longStringInfo.svelte-u09j0c button.svelte-u09j0c{cursor:pointer;font-size:.9em;color:var(--color-text-secondary)}.source.svelte-u09j0c.svelte-u09j0c{margin:0;padding:.5rem .75rem;background-color:rgba(var(--color-rgb-background),.5);border:1px solid var(--color-frame);border-radius:4px;font-family:monospace;font-size:.9em;white-space:pre-wrap;word-break:break-all}.meta.svelte-u09j0c.svelte-u09j0c{font-size:.9em;color:var(--color-text-secondary)}.stack.svelte-u09j0c summary.svelte-u09j0c{cursor:pointer;width:fit-content;list-style:none}.stack.svelte-u09j0c summary.svelte-u09j0c::-webkit-details-marker{display:none}.stack.svelte-u09j0c summary.svelte-u09j0c:hover{color:var(--color-interaction-hover)}.stack.svelte-u09j0c ol.svelte-u09j0c{margin:.35rem 0 0;padding-inline-start:.75rem;list-style:none}.stack.svelte-u09j0c li.svelte-u09j0c{list-style:none;font-family:monospace;word-break:break-all}.context.svelte-u09j0c.svelte-u09j0c{display:flex;flex-direction:column;gap:.15rem}.context.svelte-u09j0c a.svelte-u09j0c:hover{color:var(--color-interaction-hover)}.container.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{height:100%;overflow:hidden;display:grid;grid-template-columns:1fr min-content}nav.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{padding:1rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--color-frame);background-color:rgba(var(--color-rgb-background),.8);backdrop-filter:blur(17px);-webkit-backdrop-filter:blur(17px)}nav.svelte-12glt4h>div.svelte-12glt4h.svelte-12glt4h{display:flex;align-items:center;gap:.5rem}.logs.svelte-12glt4h nav.svelte-12glt4h.svelte-12glt4h{position:sticky;top:0;left:0;z-index:10}.logs.svelte-12glt4h nav input.svelte-12glt4h.svelte-12glt4h{padding-inline-end:2rem}.clearFilter.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{padding:.5rem;position:relative;left:-2.3rem;cursor:pointer}.clearFilter.svelte-12glt4h .label.svelte-12glt4h.svelte-12glt4h{position:absolute;left:-100vw}.clearFilter.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h:hover{color:var(--color-interaction)}.logs.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{height:calc(100vh - 83px);overflow:auto;position:sticky;flex-grow:1}table.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{width:100%}.fresh.svelte-12glt4h td.svelte-12glt4h.svelte-12glt4h{background-color:var(--color-highlight)}.hidden.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{display:none}td.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{padding:1rem;border-block-end:1px solid var(--color-frame)}td.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h:not(:first-child):not(:last-child){padding-inline-start:2rem;padding-inline-end:2rem}.date.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{width:1px;white-space:nowrap}.date.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{font-family:monospace;font-size:1rem}.error.svelte-12glt4h time.svelte-12glt4h.svelte-12glt4h{color:var(--color-danger)}.logs.svelte-12glt4h .message.svelte-12glt4h.svelte-12glt4h{word-break:break-all}.actions.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{width:1px;vertical-align:top}.actions.svelte-12glt4h div.svelte-12glt4h.svelte-12glt4h{display:flex;gap:.5em}.actions.svelte-12glt4h .active.button.svelte-12glt4h.svelte-12glt4h{opacity:1;color:var(--color-interaction)}.actions.svelte-12glt4h .button.svelte-12glt4h.svelte-12glt4h{opacity:0;transition:all .1s linear}tr.svelte-12glt4h:hover .actions button.svelte-12glt4h.svelte-12glt4h{opacity:1}footer.svelte-12glt4h.svelte-12glt4h.svelte-12glt4h{margin-block:4rem;text-align:center;line-height:1.5em;color:var(--color-text-secondary)}.pins.svelte-12glt4h nav.svelte-12glt4h.svelte-12glt4h{justify-content:flex-end}.pins.svelte-12glt4h li.svelte-12glt4h+li.svelte-12glt4h{margin-block-start:2rem;padding-block-start:2rem;border-block-start:1px solid var(--color-frame)}.pins.svelte-12glt4h .date.svelte-12glt4h.svelte-12glt4h{margin-block-end:.6em;display:block}.pins.svelte-12glt4h .info.svelte-12glt4h.svelte-12glt4h{display:flex;justify-content:space-between;gap:1rem;color:var(--color-text-secondary)}.pins.svelte-12glt4h .info button.svelte-12glt4h.svelte-12glt4h{transition:color .1s linear}.pins.svelte-12glt4h .info button.svelte-12glt4h.svelte-12glt4h:hover{background-color:transparent;color:var(--color-danger)} diff --git a/gui/next/build/_app/immutable/assets/15.BIXMQND7.css b/gui/next/build/_app/immutable/assets/15.BIXMQND7.css new file mode 100644 index 0000000..2be5990 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/15.BIXMQND7.css @@ -0,0 +1 @@ +.info.svelte-uhfiox.svelte-uhfiox{display:flex;gap:1.2rem}time.svelte-uhfiox.svelte-uhfiox{color:var(--color-text-secondary)}.tech.svelte-uhfiox.svelte-uhfiox{margin-block:2rem}.tech.svelte-uhfiox dt.svelte-uhfiox{margin-block:.5em .2em;font-weight:500}.tech.svelte-uhfiox dd.svelte-uhfiox{padding:.6em .8em;border-radius:0 1rem 1rem;background-color:var(--color-background);word-wrap:break-word}.personal.svelte-uhfiox.svelte-uhfiox{padding-block-start:1.3rem;border-block-end:2px solid var(--color-background)} diff --git a/gui/next/build/_app/immutable/assets/2.Cpa7KQFv.css b/gui/next/build/_app/immutable/assets/2.Cpa7KQFv.css new file mode 100644 index 0000000..fd62e22 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/2.Cpa7KQFv.css @@ -0,0 +1 @@ +i.svelte-ooaugn{color:var(--color-danger)}.container.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{height:100%;overflow:hidden;display:grid;grid-template-columns:1fr min-content}.container.svelte-1m1ug4d>div.svelte-1m1ug4d.svelte-1m1ug4d{height:calc(100vh - 83px);display:flex;flex-direction:column;overflow-y:auto;flex-grow:1;position:relative}nav.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{padding:1rem;display:flex;align-items:center;gap:.5em;background-color:rgba(var(--color-rgb-background),.8);backdrop-filter:blur(17px);-webkit-backdrop-filter:blur(17px)}.filters.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{border-bottom:1px solid var(--color-frame)}.filters.svelte-1m1ug4d form.svelte-1m1ug4d.svelte-1m1ug4d{display:flex;gap:2rem}.filters.svelte-1m1ug4d fieldset.svelte-1m1ug4d.svelte-1m1ug4d{display:flex;align-items:center;gap:.5em}table.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{width:100%}thead.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{position:sticky;top:0;z-index:50}th.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{background-color:var(--color-background);white-space:nowrap;font-weight:500}td.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d,th.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{padding:.6rem;vertical-align:middle;border:1px solid var(--color-frame);border-block-start:0;transition:background-color .2s linear}td.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d:first-child,th.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d:first-child{border-inline-start:0}td.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d:last-child,th.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d:last-child{border-inline-end:0}th.id.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{padding-inline-start:2.6rem}td.id.svelte-1m1ug4d div.svelte-1m1ug4d.svelte-1m1ug4d{position:relative;display:flex;align-items:center;gap:.7em}table.svelte-1m1ug4d a.svelte-1m1ug4d.svelte-1m1ug4d{color:var(--color-interaction)}.more.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{padding-inline:.1rem;background-color:transparent;opacity:0;transition:opacity .1s linear}tr.svelte-1m1ug4d:hover .more.svelte-1m1ug4d.svelte-1m1ug4d{opacity:.5}tr.svelte-1m1ug4d:hover .more.svelte-1m1ug4d.svelte-1m1ug4d:hover{opacity:1}tr.svelte-1m1ug4d:hover .more.svelte-1m1ug4d.svelte-1m1ug4d:hover{background-color:var(--color-background)}menu.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{display:none;position:absolute;left:.5rem;top:100%;z-index:20;overflow:hidden;border-radius:1rem;white-space:nowrap}menu.active.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{display:block}td.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d:first-child:hover{z-index:30}menu.svelte-1m1ug4d li.svelte-1m1ug4d+li.svelte-1m1ug4d{border-block-start:1px solid var(--color-context-input-background)}menu.svelte-1m1ug4d button{width:100%;padding:.5rem 1rem;display:flex;align-items:center;gap:.5em;line-height:0}menu.svelte-1m1ug4d button:hover{background-color:var(--color-context-button-background-hover)}.pagination.svelte-1m1ug4d.svelte-1m1ug4d.svelte-1m1ug4d{margin-block-start:auto;position:sticky;inset-inline:0;inset-block-end:0} diff --git a/gui/next/build/_app/immutable/assets/4.B9XykGLe.css b/gui/next/build/_app/immutable/assets/4.B9XykGLe.css new file mode 100644 index 0000000..dc96358 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/4.B9XykGLe.css @@ -0,0 +1 @@ +aside.svelte-117f3bg.svelte-117f3bg{width:350px;height:calc(100vh - 83px);flex-shrink:0;overflow:auto;border-inline-end:1px solid var(--color-frame)}nav.svelte-117f3bg.svelte-117f3bg{padding-bottom:1rem}a.svelte-117f3bg.svelte-117f3bg{max-width:100%;margin:0 1rem;padding:.5rem 1rem;display:block;overflow:hidden;border-radius:.5rem;text-overflow:ellipsis}a.svelte-117f3bg.svelte-117f3bg:hover,a.svelte-117f3bg.svelte-117f3bg:focus-visible{background-color:var(--color-background);color:var(--color-interaction)}a.active.svelte-117f3bg.svelte-117f3bg{background-color:var(--color-middleground);font-weight:500}.filter-container.svelte-117f3bg.svelte-117f3bg{padding:1rem 1rem 2rem;position:sticky;top:0;background-image:linear-gradient(to bottom,var(--color-page) 80%,rgba(var(--color-rgb-page),0))}.filter.svelte-117f3bg.svelte-117f3bg{width:100%;padding:.5rem .8rem;display:flex;align-items:center;gap:.5rem;background-color:var(--color-background);border-radius:.5rem;transition:background-color .1s linear}.filter.svelte-117f3bg.svelte-117f3bg:has(input:focus-visible){background-color:var(--color-middleground)}.filter.svelte-117f3bg input.svelte-117f3bg{all:unset;max-width:185px}.filter.svelte-117f3bg button.svelte-117f3bg{all:unset;display:flex;cursor:pointer;line-height:.2em}.filter.svelte-117f3bg button.svelte-117f3bg,.filter.svelte-117f3bg i.svelte-117f3bg{margin-inline-end:.2em;flex-shrink:0}.filter.svelte-117f3bg i.svelte-117f3bg{position:relative;top:2px;color:var(--color-text-secondary)}.filter.svelte-117f3bg kbd.svelte-117f3bg:first-of-type{margin-inline-start:auto}.container.svelte-s8xmdg{display:grid;grid-template-columns:350px auto;transition:grid-template-columns .2s ease-in-out}.container.tablesHidden.svelte-s8xmdg{grid-template-columns:0 auto}.tables-container.svelte-s8xmdg{overflow:hidden} diff --git a/gui/next/build/_app/immutable/assets/6.CufhmNsu.css b/gui/next/build/_app/immutable/assets/6.CufhmNsu.css new file mode 100644 index 0000000..a49f670 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/6.CufhmNsu.css @@ -0,0 +1 @@ +i.svelte-ooaugn{color:var(--color-danger)}menu.svelte-8i1sxu.svelte-8i1sxu{position:absolute;left:0;top:100%;z-index:20;overflow:hidden;border-radius:0 1rem 1rem;white-space:nowrap}menu.svelte-8i1sxu button{width:100%;padding:.5rem 1rem;display:flex;align-items:center;gap:.5em;line-height:0}menu.svelte-8i1sxu button:hover{background-color:var(--color-context-button-background-hover)}menu.svelte-8i1sxu li.svelte-8i1sxu:last-child button{padding-block-end:.6rem}dialog.svelte-26svji.svelte-26svji{height:100vh;overflow:hidden;display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:0;bottom:0;left:0;z-index:100}dialog.svelte-26svji.svelte-26svji::backdrop{background-color:rgba(var(--color-rgb-background),.6)}.content.svelte-26svji.svelte-26svji{width:clamp(300px,800px,80vw);max-height:94vh;overflow:auto;border-radius:1rem}form.svelte-26svji.svelte-26svji{display:flex;flex-direction:column;gap:1rem;padding:2rem}fieldset.svelte-26svji.svelte-26svji{display:grid;grid-template-columns:1fr 2fr;gap:1rem}fieldset.svelte-26svji+fieldset.svelte-26svji{margin-block-start:2rem}label.svelte-26svji.svelte-26svji{word-break:break-all}input.svelte-26svji.svelte-26svji,textarea.svelte-26svji.svelte-26svji{width:100%;min-height:53px}[role=alert].svelte-26svji.svelte-26svji:not(:empty){margin-block-start:.5em;padding:.5em 1em .6em;position:relative;border-radius:1rem;background-color:var(--color-danger)}[role=alert].svelte-26svji.svelte-26svji:not(:empty):before{width:1em;height:.5em;position:absolute;top:-6px;right:1rem;clip-path:polygon(50% 0%,0% 100%,100% 100%);background-color:var(--color-danger);content:""}.footer.svelte-26svji.svelte-26svji{padding:1.5rem 0;position:sticky;bottom:0;gap:1rem;background-color:var(--color-context)}.error.svelte-26svji li.svelte-26svji{margin-block-end:1rem;padding:1rem;border-radius:1rem;background-color:var(--color-danger);color:var(--color-text-inverted)}.actions.svelte-26svji.svelte-26svji{display:flex;align-items:center;justify-content:space-between}.type.svelte-26svji.svelte-26svji{margin-block-start:.2rem;opacity:.5;font-size:.9em}.page.svelte-1g093it.svelte-1g093it{max-width:100vw;height:100%;overflow:hidden;display:grid;grid-template-columns:1fr min-content;position:relative}.container.svelte-1g093it.svelte-1g093it{min-height:0;max-width:100vw;overflow-y:auto;display:grid;grid-template-rows:min-content 1fr}.filters.svelte-1g093it.svelte-1g093it{padding:var(--space-navigation);background-color:var(--color-background);border-block-end:1px solid var(--color-frame)}.filters.svelte-1g093it .label.svelte-1g093it{position:absolute;left:-100vw}.filters.svelte-1g093it form.svelte-1g093it{display:flex;gap:var(--space-navigation);align-items:center}.filters.svelte-1g093it input.svelte-1g093it:focus,.filters.svelte-1g093it select.svelte-1g093it:focus{position:relative;z-index:1}.filters.svelte-1g093it #filters_attribute.svelte-1g093it{margin-inline-end:1px;border-start-end-radius:0;border-end-end-radius:0}.filters.svelte-1g093it .search.svelte-1g093it{display:flex;align-items:center}.filters.svelte-1g093it .search input.svelte-1g093it{padding-inline-end:1.8rem;border-radius:0}.filters.svelte-1g093it .clear.svelte-1g093it{margin-inline-start:-.9rem;position:relative;inset-inline-start:-.4rem;z-index:1}.filters.svelte-1g093it .search .button[type=submit].svelte-1g093it{margin-inline-start:1px;padding-block:.63rem;padding-inline:.7em .8em;border-start-start-radius:0;border-end-start-radius:0}.pagination.svelte-1g093it.svelte-1g093it{padding:1rem;display:flex;align-items:center;gap:.5em;position:fixed;bottom:0;width:100%;justify-content:space-between;border-block-start:1px solid var(--color-frame);background-color:rgba(var(--color-rgb-background),.8);backdrop-filter:blur(17px);-webkit-backdrop-filter:blur(17px)}table.svelte-1g093it.svelte-1g093it{min-width:100%;margin-bottom:70px;line-height:1.27em}thead.svelte-1g093it.svelte-1g093it{background-color:var(--color-background)}th.svelte-1g093it.svelte-1g093it,td.svelte-1g093it.svelte-1g093it{border-block-end:1px solid var(--color-frame)}th.svelte-1g093it.svelte-1g093it,td.svelte-1g093it>a.svelte-1g093it,td.svelte-1g093it>span.svelte-1g093it{padding:var(--space-table) calc(var(--space-navigation) * 1.5)}th.svelte-1g093it.svelte-1g093it:first-child,td.svelte-1g093it:first-child>a.svelte-1g093it,td.svelte-1g093it:first-child>span.svelte-1g093it{padding-inline-start:var(--space-navigation)}th.svelte-1g093it.svelte-1g093it:last-child,td.svelte-1g093it:last-child>a.svelte-1g093it,td.svelte-1g093it:last-child>span.svelte-1g093it{padding-inline-end:var(--space-navigation)}td.svelte-1g093it>a.svelte-1g093it,td.svelte-1g093it>span.svelte-1g093it{display:block}tr.svelte-1g093it:last-child td.svelte-1g093it{border:0}tr.svelte-1g093it.svelte-1g093it{position:relative}tr.svelte-1g093it.svelte-1g093it:after{position:absolute;inset:calc(var(--space-table) / 3);z-index:-1;border-radius:calc(1rem - var(--space-table) / 1.5);background:transparent;content:"";transition:background-color .1s linear}tr.svelte-1g093it.svelte-1g093it:hover:after{background-color:var(--color-background)}tr.active.svelte-1g093it.svelte-1g093it:after{background-color:var(--color-middleground)}@supports (font: -apple-system-body) and (-webkit-appearance: none){tr.svelte-1g093it.svelte-1g093it:after{display:none}}.table-id.svelte-1g093it.svelte-1g093it{font-variant-numeric:tabular-nums;width:150px}.menu.svelte-1g093it.svelte-1g093it{position:relative;width:30px}tr.svelte-1g093it .inner-menu.svelte-1g093it{background-color:transparent;opacity:0;transition:opacity .1s linear}tr.svelte-1g093it:hover .inner-menu.svelte-1g093it{opacity:.5}.menu.svelte-1g093it:hover .inner-menu.svelte-1g093it,.context.svelte-1g093it .menu .inner-menu.svelte-1g093it{opacity:1}.menu.svelte-1g093it button.active.svelte-1g093it{border-end-start-radius:0;border-end-end-radius:0} diff --git a/gui/next/build/_app/immutable/assets/7.CDkZYgtF.css b/gui/next/build/_app/immutable/assets/7.CDkZYgtF.css new file mode 100644 index 0000000..26e3cb7 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/7.CDkZYgtF.css @@ -0,0 +1 @@ +nav.svelte-1t1yf9.svelte-1t1yf9.svelte-1t1yf9{width:100%;margin-inline:auto;margin-block-start:2rem;padding-inline:2rem}.applications.svelte-1t1yf9.svelte-1t1yf9.svelte-1t1yf9{display:flex;gap:2rem;flex-wrap:wrap;justify-content:center}.applications.svelte-1t1yf9+.applications.svelte-1t1yf9.svelte-1t1yf9{margin-top:4rem}.application.svelte-1t1yf9.svelte-1t1yf9.svelte-1t1yf9{width:200px;position:relative;display:flex;overflow:hidden;border-radius:1rem;background-color:var(--color-background);transition:width .2s ease-in-out}.application.svelte-1t1yf9>a.svelte-1t1yf9.svelte-1t1yf9{width:200px;padding:2.75rem 1rem 2rem;display:flex;flex-shrink:0;flex-direction:column;align-items:center;justify-content:space-between;gap:1rem}.application.showDescription.svelte-1t1yf9.svelte-1t1yf9.svelte-1t1yf9{width:500px}.icon.svelte-1t1yf9.svelte-1t1yf9.svelte-1t1yf9{width:100px;height:100px;padding:.5rem;display:flex;align-items:center;justify-content:center;border-radius:.5rem;background-color:var(--color-middleground);color:var(--color-interaction);transition:all .2s ease-in-out}.application.svelte-1t1yf9>a:hover .icon.svelte-1t1yf9.svelte-1t1yf9{border-radius:1rem;scale:1.1}h2.svelte-1t1yf9.svelte-1t1yf9.svelte-1t1yf9{text-align:center;font-size:1.1rem;font-weight:500}.description.svelte-1t1yf9.svelte-1t1yf9.svelte-1t1yf9{width:284px;padding:2.75rem 1rem 2rem 0;flex-shrink:0}.description.svelte-1t1yf9 li.svelte-1t1yf9.svelte-1t1yf9{margin-inline-start:1ch;padding-inline-start:.4em;list-style-type:"–"}.description.svelte-1t1yf9 li.svelte-1t1yf9+li.svelte-1t1yf9{margin-block-start:.2em}.actions.svelte-1t1yf9.svelte-1t1yf9.svelte-1t1yf9{display:flex;align-items:center;position:absolute;inset-inline-end:0rem;inset-block-start:0rem;overflow:hidden;opacity:0;border:1px solid var(--color-page);border-width:0 0 1px 1px;border-radius:0 1rem;transition:opacity .2s linear;transition-delay:0s}.application.svelte-1t1yf9:hover .actions.svelte-1t1yf9.svelte-1t1yf9{opacity:1;transition-delay:.5s}.actions.svelte-1t1yf9 li.svelte-1t1yf9+li.svelte-1t1yf9{border-inline-start:1px solid var(--color-page)}.actions.svelte-1t1yf9 button.svelte-1t1yf9.svelte-1t1yf9{padding:.25em .5em;color:var(--color-text-secondary);transition:color .1s linear}.actions.svelte-1t1yf9 button.svelte-1t1yf9.svelte-1t1yf9:hover,.actions.svelte-1t1yf9 button.svelte-1t1yf9.svelte-1t1yf9:focus-visible{color:var(--color-interaction-hover)}footer.svelte-1t1yf9.svelte-1t1yf9.svelte-1t1yf9{margin-block-start:4rem;padding:2rem;display:flex;align-items:center;justify-content:space-between;gap:2rem;border-block-start:1px solid var(--color-frame)}footer.svelte-1t1yf9 ul.svelte-1t1yf9.svelte-1t1yf9{display:flex;gap:2rem}.update.svelte-1t1yf9.svelte-1t1yf9.svelte-1t1yf9{max-width:100px;display:flex;align-items:center;gap:.5em;font-size:.85rem}.update.svelte-1t1yf9 svg{flex-shrink:0} diff --git a/gui/next/build/_app/immutable/assets/9.O9jYhcLF.css b/gui/next/build/_app/immutable/assets/9.O9jYhcLF.css new file mode 100644 index 0000000..b5ef4df --- /dev/null +++ b/gui/next/build/_app/immutable/assets/9.O9jYhcLF.css @@ -0,0 +1 @@ +code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}#code{border-radius:1rem;border-start-start-radius:0}#code[class*=language-]{background-color:var(--color-context)}h2.svelte-7qclwq.svelte-7qclwq{margin-block-start:2rem;margin-block-end:.2em;font-weight:500;font-size:1.2rem}.info.svelte-7qclwq.svelte-7qclwq{margin-block-end:4rem;margin-trim:block}.info.svelte-7qclwq div.svelte-7qclwq{margin-block-end:.2em;display:flex;gap:.5em}dt.svelte-7qclwq.svelte-7qclwq{color:var(--color-text-secondary)}.error.svelte-7qclwq.svelte-7qclwq{color:var(--color-danger)}code.svelte-7qclwq.svelte-7qclwq{padding:1rem 1.5rem;display:block;border-radius:1rem;border-start-start-radius:0;background-color:var(--color-middleground);font-family:monospace;font-size:1rem} diff --git a/gui/next/build/_app/immutable/assets/Aside.HqXgbmTR.css b/gui/next/build/_app/immutable/assets/Aside.HqXgbmTR.css new file mode 100644 index 0000000..b9ac00c --- /dev/null +++ b/gui/next/build/_app/immutable/assets/Aside.HqXgbmTR.css @@ -0,0 +1 @@ +aside.svelte-1lvj124{width:var(--width, 30vw);min-width:300px;max-width:90vw;position:relative;overflow:hidden;display:flex;background-color:var(--color-page);border-inline-start:1px solid var(--color-frame)}@media (max-width: 750px){aside.svelte-1lvj124{width:90vw;min-width:0;max-width:90vw;position:absolute;inset-inline-end:0;inset-block:0;background-color:var(--color-page)}}.container.svelte-1lvj124{width:var(--width, 30vw);min-width:300px;max-width:90vw;padding:1rem;flex-shrink:0;overflow:auto}@media (max-width: 750px){.container.svelte-1lvj124{width:90vw;min-width:0;max-width:90vw}}aside.svelte-1lvj124 nav:first-child{margin-block-start:-1rem;margin-block-end:2rem;margin-inline:-1rem}header.svelte-1lvj124{display:flex;justify-content:space-between;gap:2rem}h2.svelte-1lvj124{margin-block-end:.2em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;font-size:1.2rem}.close.svelte-1lvj124:hover{color:var(--color-interaction-hover)}.label.svelte-1lvj124{position:absolute;left:-100vw}.resizer.svelte-1lvj124{width:8px;position:absolute;inset:0 auto 0 0;cursor:ew-resize;opacity:0;background-color:var(--color-frame);transition:opacity .2s linear}.resizer.svelte-1lvj124:hover,.resizer.active.svelte-1lvj124{background-color:var(--color-frame);opacity:1}@media (max-width: 750px){.resizer.svelte-1lvj124{display:none}} diff --git a/gui/next/build/_app/immutable/assets/CautionBanner.C54xYRep.css b/gui/next/build/_app/immutable/assets/CautionBanner.C54xYRep.css new file mode 100644 index 0000000..e6d47f8 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/CautionBanner.C54xYRep.css @@ -0,0 +1 @@ +.caution.svelte-w5xay3.svelte-w5xay3{margin:var(--space-page);margin-block-end:0;padding:.85rem 1rem;border:1px solid rgba(var(--color-rgb-danger),.35);border-radius:.5rem;background-color:var(--color-highlight);font-size:.9rem;line-height:1.45;color:var(--color-text)}.caution.svelte-w5xay3 strong.svelte-w5xay3{display:block;margin-block-end:.25rem;font-weight:600} diff --git a/gui/next/build/_app/immutable/assets/JSONTree.Do8jmj2M.css b/gui/next/build/_app/immutable/assets/JSONTree.Do8jmj2M.css new file mode 100644 index 0000000..a6f1cce --- /dev/null +++ b/gui/next/build/_app/immutable/assets/JSONTree.Do8jmj2M.css @@ -0,0 +1 @@ +.container.svelte-1qd6nto{display:inline-block;transform:translate(calc(0px - var(--li-identation)),-50%);position:absolute;top:50%;padding-right:100%}.arrow.svelte-1qd6nto{transform-origin:25% 50%;position:relative;line-height:1.1em;font-size:.75em;margin-left:0;transition:.15s;color:var(--arrow-color);-webkit-user-select:none;user-select:none;font-family:Courier New,Courier,monospace;display:block}.expanded.svelte-1qd6nto{transform:rotate(90deg) translate(-3px)}.root.svelte-19drypg{display:inline-block;position:relative}.indent.svelte-19drypg{padding-left:var(--li-identation)}.label.svelte-19drypg{position:relative}.comma.svelte-150ffaa{margin-left:-.5em;margin-right:.5em}.Date.svelte-l95iub{color:var(--date-color)}.BigInt.svelte-l95iub,.Number.svelte-l95iub{color:var(--number-color)}.Boolean.svelte-l95iub{color:var(--boolean-color)}.Null.svelte-l95iub{color:var(--null-color)}.Undefined.svelte-l95iub{color:var(--undefined-color)}.Symbol.svelte-l95iub{color:var(--symbol-color)}.indent.svelte-1u08yw6{padding-left:var(--li-identation)}span.svelte-1fvwa9c{color:var(--string-color);word-break:break-all;word-wrap:break-word}.i.svelte-1eamqdt{font-style:italic}.fn.svelte-1eamqdt,.i.svelte-1eamqdt{color:var(--function-color)}.regex.svelte-17k1wqt{color:var(--regex-color)}ul.svelte-16cw61f{--string-color:var(--json-tree-string-color, #cb3f41);--symbol-color:var(--json-tree-symbol-color, #cb3f41);--boolean-color:var(--json-tree-boolean-color, #112aa7);--function-color:var(--json-tree-function-color, #112aa7);--number-color:var(--json-tree-number-color, #3029cf);--label-color:var(--json-tree-label-color, #871d8f);--property-color:var(--json-tree-property-color, #000000);--arrow-color:var(--json-tree-arrow-color, #727272);--operator-color:var(--json-tree-operator-color, #727272);--null-color:var(--json-tree-null-color, #8d8d8d);--undefined-color:var(--json-tree-undefined-color, #8d8d8d);--date-color:var(--json-tree-date-color, #8d8d8d);--internal-color:var(--json-tree-internal-color, grey);--regex-color:var(--json-tree-regex-color, var(--string-color));--li-identation:var(--json-tree-li-indentation, 1em);--li-line-height:var(--json-tree-li-line-height, 1.3);font-size:var(--json-tree-font-size, 12px);font-family:var(--json-tree-font-family, "Courier New", Courier, monospace)}ul.svelte-16cw61f li{line-height:var(--li-line-height);display:var(--li-display, list-item);list-style:none}ul.svelte-16cw61f,ul.svelte-16cw61f ul{padding:0;margin:0}ul.svelte-16cw61f{margin-left:var(--li-identation)}ul.svelte-16cw61f{cursor:default}ul.svelte-16cw61f .label{color:var(--label-color)}ul.svelte-16cw61f .property{color:var(--property-color)}ul.svelte-16cw61f .internal{color:var(--internal-color)}ul.svelte-16cw61f .operator{color:var(--operator-color)}div.svelte-1ajfzk1 .root{display:none}div.svelte-1ajfzk1 .arrow{top:2px;cursor:pointer}div.svelte-1ajfzk1 .indent{max-width:600px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}div.showFullLines.svelte-1ajfzk1 .indent{max-width:auto;overflow:visible;white-space:normal;word-wrap:break-word;text-overflow:unset}div.svelte-1ajfzk1 div>ul{margin-left:0}div.svelte-1ajfzk1 div>ul>ul>.indent{padding-left:0} diff --git a/gui/next/build/_app/immutable/assets/Number.AfD80Zdm.css b/gui/next/build/_app/immutable/assets/Number.AfD80Zdm.css new file mode 100644 index 0000000..5f301e0 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/Number.AfD80Zdm.css @@ -0,0 +1 @@ +.number.svelte-142ypws{display:inline-flex;align-items:center}input[type=number].svelte-142ypws{width:calc(var(--max));padding-inline:.5em;padding-block:.45rem .55rem;box-sizing:content-box;-webkit-appearance:none;appearance:none;-moz-appearance:textfield;border-radius:0;text-align:center}input.svelte-142ypws::-webkit-outer-spin-button,input.svelte-142ypws::-webkit-inner-spin-button{-webkit-appearance:none}input.svelte-142ypws:focus-visible{position:relative;z-index:1}button.svelte-142ypws{min-height:2.313rem}button.svelte-142ypws:first-child{padding-inline:.7rem .5rem;border-start-end-radius:0;border-end-end-radius:0}button.svelte-142ypws:last-child{padding-inline:.5rem .7rem;border-start-start-radius:0;border-end-start-radius:0}button.svelte-142ypws:focus-visible{position:relative;z-index:1}button.svelte-142ypws svg{width:.8rem;height:.8rem} diff --git a/gui/next/build/_app/immutable/assets/Toggle.o--CU0Za.css b/gui/next/build/_app/immutable/assets/Toggle.o--CU0Za.css new file mode 100644 index 0000000..cc9f594 --- /dev/null +++ b/gui/next/build/_app/immutable/assets/Toggle.o--CU0Za.css @@ -0,0 +1 @@ +.toggle.svelte-1j5d7bb.svelte-1j5d7bb.svelte-1j5d7bb{display:flex;align-items:center;gap:.5em}.toggle.svelte-1j5d7bb label.svelte-1j5d7bb.svelte-1j5d7bb{cursor:pointer;transition:opacity .1s linear}.toggle.svelte-1j5d7bb input[type=radio].svelte-1j5d7bb.svelte-1j5d7bb,.toggle.svelte-1j5d7bb input[type=checkbox].svelte-1j5d7bb.svelte-1j5d7bb{position:absolute;left:-100vw}.toggle.svelte-1j5d7bb .switcher.svelte-1j5d7bb.svelte-1j5d7bb{width:2rem;height:.8rem;display:inline-block;position:relative;top:2px;border:1px solid var(--color-frame);border-radius:1rem}.toggle.svelte-1j5d7bb .switcher.svelte-1j5d7bb.svelte-1j5d7bb:before{width:1rem;position:absolute;left:1px;top:1px;bottom:1px;border-radius:1rem;background-color:var(--color-frame);content:"";transition:translate .2s cubic-bezier(.075,.82,.165,1)}.toggle.svelte-1j5d7bb input[type=radio]:checked .switcher.svelte-1j5d7bb.svelte-1j5d7bb:before{left:1px}.toggle.svelte-1j5d7bb input[type=radio].svelte-1j5d7bb:not(:checked)+label.svelte-1j5d7bb{opacity:.5}.toggle.svelte-1j5d7bb:has(.switcher+input[type=radio]:checked) .switcher.svelte-1j5d7bb.svelte-1j5d7bb:before{translate:.85em 0}.toggle.svelte-1j5d7bb:has(input[type=radio]:focus-visible) .switcher.svelte-1j5d7bb.svelte-1j5d7bb{border-color:var(--color-interaction-hover)}.toggle.svelte-1j5d7bb:has(input[type=radio]:focus-visible) .switcher.svelte-1j5d7bb.svelte-1j5d7bb:before{background-color:var(--color-interaction-hover)}.toggle.single.svelte-1j5d7bb label.svelte-1j5d7bb.svelte-1j5d7bb{width:100%;position:relative;display:flex;align-items:center;justify-content:space-between;gap:2rem}.toggle.single.svelte-1j5d7bb label.svelte-1j5d7bb.svelte-1j5d7bb:before{width:2rem;height:1.2rem;order:2;flex-shrink:0;position:relative;inset-block-start:1px;border:1px solid var(--color-frame);border-radius:1rem;content:""}.toggle.single.svelte-1j5d7bb label.svelte-1j5d7bb.svelte-1j5d7bb:after{width:1rem;height:calc(1.2rem - 4px);margin-block-start:2px;position:absolute;inset-inline-end:calc(1rem - 2px);flex-shrink:0;border-radius:1rem;background-color:var(--color-frame);content:"";transition:translate .2s cubic-bezier(.075,.82,.165,1)}.toggle.single.svelte-1j5d7bb:has(input:checked) label.svelte-1j5d7bb.svelte-1j5d7bb:after{translate:.75rem 0}.toggle.single.svelte-1j5d7bb i.svelte-1j5d7bb.svelte-1j5d7bb{width:7px;height:7px;margin-block-start:2px;position:absolute;inset-inline-end:6px;z-index:1;color:var(--color-text)}.toggle.single.svelte-1j5d7bb svg{width:100%;height:auto;display:block} diff --git a/gui/next/build/_app/immutable/chunks/BD1m7lx9.js b/gui/next/build/_app/immutable/chunks/BD1m7lx9.js new file mode 100644 index 0000000..d1808cd --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/BD1m7lx9.js @@ -0,0 +1 @@ +const a=t=>{const n=typeof window<"u"&&window.location.port!=="4173"&&window.location.port!=="5173"?`http://localhost:${parseInt(window.location.port)}/api/graph`:"http://localhost:3333/api/graph";return fetch(n,{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify(t)}).then(o=>o.json()).then(o=>o.errors?(o.errors.forEach(r=>{console.log(t.query),console.info(r)}),o):o&&o.data)};export{a as g}; diff --git a/gui/next/build/_app/immutable/chunks/BNCRiqmJ.js b/gui/next/build/_app/immutable/chunks/BNCRiqmJ.js new file mode 100644 index 0000000..1fddac0 --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/BNCRiqmJ.js @@ -0,0 +1 @@ +import{a as z,t as B}from"./Bh3MJlbi.js";import{r as C}from"./Ul9VwQ7n.js";function G(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}function H(n,o){B(n,1,1,()=>{o.delete(n.key)})}function I(n,o,x,D,A,g,f,j,p,k,w,q){let i=n.length,d=g.length,c=i;const a={};for(;c--;)a[n[c].key]=c;const h=[],u=new Map,m=new Map,M=[];for(c=d;c--;){const e=q(A,g,c),s=x(e);let t=f.get(s);t?M.push(()=>t.p(e,o)):(t=k(s,e),t.c()),u.set(s,h[c]=t),s in a&&m.set(s,Math.abs(c-a[s]))}const v=new Set,S=new Set;function y(e){z(e,1),e.m(j,w),f.set(e.key,e),w=e.first,d--}for(;i&&d;){const e=h[d-1],s=n[i-1],t=e.key,l=s.key;e===s?(w=e.first,i--,d--):u.has(l)?!f.has(t)||v.has(t)?y(e):S.has(l)?i--:m.get(t)>m.get(l)?(S.add(t),y(e)):(v.add(l),i--):(p(s,f),i--)}for(;i--;){const e=n[i];u.has(e.key)||p(e,f)}for(;d;)y(h[d-1]);return C(M),h}export{G as e,H as o,I as u}; diff --git a/gui/next/build/_app/immutable/chunks/BVVGnpm8.js b/gui/next/build/_app/immutable/chunks/BVVGnpm8.js new file mode 100644 index 0000000..925e08d --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/BVVGnpm8.js @@ -0,0 +1,2 @@ +import{ah as et,ai as tt,s as L,n as K,d as c,i as d,v as T,k as x,K as H,b as g,D as ne,w as v,c as y,e as N,f as k,h as w,t as b,aj as ze,L as ee,l as Q,u as X,m as Y,o as Z,T as nt,g as G,j as D,I as _e,ak as Ge,z as re,a as O,af as pe,U as me,al as he,A as z}from"./Ul9VwQ7n.js";import{S as F,i as J,t as $,a as m,d as j,g as U,e as q,m as E,c as P,b as A}from"./Bh3MJlbi.js";import{e as te}from"./BNCRiqmJ.js";import{w as ue,r as st}from"./RFIyOgWr.js";function $e(l,t){const s={},e={},n={$$scope:1};let r=l.length;for(;r--;){const a=l[r],i=t[r];if(i){for(const o in a)o in i||(e[o]=1);for(const o in i)n[o]||(s[o]=i[o],n[o]=1);l[r]=i}else for(const o in a)n[o]=1}for(const a in e)a in s||(s[a]=void 0);return s}function de(l){return typeof l=="object"&&l!==null?l:{}}const ge={};function R(l,t){const s=et(ge),e=typeof l=="function"?l(s):l,n={...s,...e};return t!=null&&t.expandable&&(n.isParentExpanded=n.expanded),tt(ge,n),s}function ve(l){let t,s,e="▶",n,r,a;return{c(){t=w("span"),s=w("span"),n=b(e),this.h()},l(i){t=y(i,"SPAN",{class:!0});var o=N(t);s=y(o,"SPAN",{class:!0});var f=N(s);n=k(f,e),f.forEach(c),o.forEach(c),this.h()},h(){v(s,"class","arrow svelte-1qd6nto"),H(s,"expanded",l[2]),v(t,"class","container svelte-1qd6nto")},m(i,o){d(i,t,o),g(t,s),g(s,n),r||(a=ne(t,"click",l[4]),r=!0)},p(i,o){o&4&&H(s,"expanded",i[2])},d(i){i&&c(t),r=!1,a()}}}function rt(l){let t,s=l[1]&&ve(l);return{c(){s&&s.c(),t=T()},l(e){s&&s.l(e),t=T()},m(e,n){s&&s.m(e,n),d(e,t,n)},p(e,[n]){e[1]?s?s.p(e,n):(s=ve(e),s.c(),s.m(t.parentNode,t)):s&&(s.d(1),s=null)},i:K,o:K,d(e){e&&c(t),s&&s.d(e)}}}function lt(l,t,s){let e,n,r=K,a=()=>(r(),r=ze(f,_=>s(2,n=_)),f);l.$$.on_destroy.push(()=>r());const{expanded:i,expandable:o}=R();x(l,o,_=>s(1,e=_));let{expanded:f=i}=t;a();const u=_=>{_.stopPropagation(),ee(f,n=!n,n)};return l.$$set=_=>{"expanded"in _&&a(s(0,f=_.expanded))},[f,e,n,o,u]}class De extends F{constructor(t){super(),J(this,t,lt,rt,L,{expanded:0})}}function at(l){let t;const s=l[1].default,e=Q(s,l,l[0],null);return{c(){e&&e.c()},l(n){e&&e.l(n)},m(n,r){e&&e.m(n,r),t=!0},p(n,[r]){e&&e.p&&(!t||r&1)&&X(e,s,n,n[0],t?Z(s,n[0],r,null):Y(n[0]),null)},i(n){t||(m(e,n),t=!0)},o(n){$(e,n),t=!1},d(n){e&&e.d(n)}}}function ot(l,t,s){let{$$slots:e={},$$scope:n}=t;return R({displayMode:"summary"}),l.$$set=r=>{"$$scope"in r&&s(0,n=r.$$scope)},[n,e]}class it extends F{constructor(t){super(),J(this,t,ot,at,L,{})}}function ft(l){let t;const s=l[3].default,e=Q(s,l,l[2],null);return{c(){e&&e.c()},l(n){e&&e.l(n)},m(n,r){e&&e.m(n,r),t=!0},p(n,[r]){e&&e.p&&(!t||r&4)&&X(e,s,n,n[2],t?Z(s,n[2],r,null):Y(n[2]),null)},i(n){t||(m(e,n),t=!0)},o(n){$(e,n),t=!1},d(n){e&&e.d(n)}}}function ut(l,t,s){let{$$slots:e={},$$scope:n}=t,{expanded:r}=t,{key:a}=t;const i=ue(!1);return R(({keyPath:o,level:f})=>(a!=="[[Entries]]"&&(o=[...o,a],f=f+1),{keyPath:o,level:f,expanded:r,expandable:i})),l.$$set=o=>{"expanded"in o&&s(0,r=o.expanded),"key"in o&&s(1,a=o.key),"$$scope"in o&&s(2,n=o.$$scope)},[r,a,n,e]}class We extends F{constructor(t){super(),J(this,t,ut,ft,L,{expanded:0,key:1})}}function ke(l,t,s){const e=l.slice();return e[19]=t[s],e[21]=s,e}const ct=l=>({key:l&1}),be=l=>({key:l[19],index:l[21]}),_t=l=>({key:l&1}),ye=l=>({key:l[19],index:l[21]}),pt=l=>({}),we=l=>({root:l[6]}),mt=l=>({}),Se=l=>({});function ht(l){let t,s,e,n,r,a,i,o,f=l[6]&&dt(l);e=new it({props:{$$slots:{default:[gt]},$$scope:{ctx:l}}});let u=l[4]&&Ne(l);return{c(){t=w("span"),f&&f.c(),s=D(),A(e.$$.fragment),n=D(),u&&u.c(),r=T(),this.h()},l(_){t=y(_,"SPAN",{class:!0});var p=N(t);f&&f.l(p),s=G(p),P(e.$$.fragment,p),p.forEach(c),n=G(_),u&&u.l(_),r=T(),this.h()},h(){v(t,"class","root svelte-19drypg")},m(_,p){d(_,t,p),f&&f.m(t,null),g(t,s),E(e,t,null),d(_,n,p),u&&u.m(_,p),d(_,r,p),a=!0,i||(o=ne(t,"click",l[9]),i=!0)},p(_,p){_[6]&&f.p(_,p);const h={};p&8192&&(h.$$scope={dirty:p,ctx:_}),e.$set(h),_[4]?u?(u.p(_,p),p&16&&m(u,1)):(u=Ne(_),u.c(),m(u,1),u.m(r.parentNode,r)):u&&(U(),$(u,1,1,()=>{u=null}),q())},i(_){a||(m(f),m(e.$$.fragment,_),m(u),a=!0)},o(_){$(f),$(e.$$.fragment,_),$(u),a=!1},d(_){_&&(c(t),c(n),c(r)),f&&f.d(),j(e),u&&u.d(_),i=!1,o()}}}function $t(l){let t;const s=l[11].summary,e=Q(s,l,l[13],Se);return{c(){e&&e.c()},l(n){e&&e.l(n)},m(n,r){e&&e.m(n,r),t=!0},p(n,r){e&&e.p&&(!t||r&8192)&&X(e,s,n,n[13],t?Z(s,n[13],r,mt):Y(n[13]),Se)},i(n){t||(m(e,n),t=!0)},o(n){$(e,n),t=!1},d(n){e&&e.d(n)}}}function dt(l){let t,s;return t=new De({props:{expanded:l[7]}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p:K,i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function gt(l){let t;const s=l[11].preview,e=Q(s,l,l[13],we);return{c(){e&&e.c()},l(n){e&&e.l(n)},m(n,r){e&&e.m(n,r),t=!0},p(n,r){e&&e.p&&(!t||r&8192)&&X(e,s,n,n[13],t?Z(s,n[13],r,pt):Y(n[13]),we)},i(n){t||(m(e,n),t=!0)},o(n){$(e,n),t=!1},d(n){e&&e.d(n)}}}function Ne(l){let t,s,e,n,r=te(l[0]),a=[];for(let o=0;o$(a[o],1,1,()=>{a[o]=null});return{c(){t=w("ul");for(let o=0;o{};function yt(l,t,s){let e,n,r,{$$slots:a={},$$scope:i}=t,{keys:o}=t,{shouldShowColon:f=void 0}=t,{expandKey:u=M=>M}=t,{defaultExpanded:_=!1}=t;const{isParentExpanded:p,displayMode:h,root:S,expanded:C,expandable:V,keyPath:He,level:Qe,shouldExpandNode:Xe}=R({root:!1},{expandable:!0});if(x(l,C,M=>s(4,n=M)),x(l,V,M=>s(14,r=M)),ee(V,r=!0,r),h!=="summary"){if(!_){const M=Xe({keyPath:He,level:Qe});M!==void 0&&(_=M)}nt(()=>p.subscribe(M=>{M?C.set(_):C.set(!1)}))}function Ye(){ee(C,n=!n,n)}const Ze=M=>e[M].update(xe=>!xe);return l.$$set=M=>{"keys"in M&&s(0,o=M.keys),"shouldShowColon"in M&&s(1,f=M.shouldShowColon),"expandKey"in M&&s(2,u=M.expandKey),"defaultExpanded"in M&&s(10,_=M.defaultExpanded),"$$scope"in M&&s(13,i=M.$$scope)},l.$$.update=()=>{l.$$.dirty&1&&s(3,e=o.map(()=>ue(!1)))},[o,f,u,e,n,h,S,C,V,Ye,_,a,Ze,i]}class B extends F{constructor(t){super(),J(this,t,yt,kt,L,{keys:0,shouldShowColon:1,expandKey:2,defaultExpanded:10})}}function Ae(l,t,s){const e=l.slice();return e[9]=t[s],e[11]=s,e}const wt=l=>({item:l&1}),Pe=l=>({item:l[9],index:l[11]});function Oe(l){let t,s,e,n,r,a=l[3]&&Te(l),i=te(l[0]),o=[];for(let p=0;p$(o[p],1,1,()=>{o[p]=null});let u=l[1]&&Le(),_=l[4]&&Fe(l);return{c(){a&&a.c(),t=D();for(let p=0;p{e=null}),q())},i(n){s||(m(e),s=!0)},o(n){$(e),s=!1},d(n){n&&c(t),e&&e.d(n)}}}function Nt(l,t,s){let{$$slots:e={},$$scope:n}=t,{list:r}=t,{hasMore:a}=t,{label:i=void 0}=t,{prefix:o=void 0}=t,{postfix:f=void 0}=t,{root:u=!1}=t;const{showPreview:_}=R();return l.$$set=p=>{"list"in p&&s(0,r=p.list),"hasMore"in p&&s(1,a=p.hasMore),"label"in p&&s(2,i=p.label),"prefix"in p&&s(3,o=p.prefix),"postfix"in p&&s(4,f=p.postfix),"root"in p&&s(5,u=p.root),"$$scope"in p&&s(7,n=p.$$scope)},[r,a,i,o,f,u,_,n,e]}class se extends F{constructor(t){super(),J(this,t,Nt,St,L,{list:0,hasMore:1,label:2,prefix:3,postfix:4,root:5})}}function jt(l){let t,s=(l[1]??"{…}")+"",e;return{c(){t=w("span"),e=b(s),this.h()},l(n){t=y(n,"SPAN",{class:!0});var r=N(t);e=k(r,s),r.forEach(c),this.h()},h(){v(t,"class","label")},m(n,r){d(n,t,r),g(t,e)},p(n,r){r&2&&s!==(s=(n[1]??"{…}")+"")&&O(e,s)},d(n){n&&c(t)}}}function Et(l){let t,s=l[6]+"",e,n,r=": ",a,i,o;return i=new I({props:{value:l[0][l[6]]}}),{c(){t=w("span"),e=b(s),n=w("span"),a=b(r),A(i.$$.fragment),this.h()},l(f){t=y(f,"SPAN",{class:!0});var u=N(t);e=k(u,s),u.forEach(c),n=y(f,"SPAN",{class:!0});var _=N(n);a=k(_,r),_.forEach(c),P(i.$$.fragment,f),this.h()},h(){v(t,"class","property"),v(n,"class","operator")},m(f,u){d(f,t,u),g(t,e),d(f,n,u),g(n,a),E(i,f,u),o=!0},p(f,u){(!o||u&64)&&s!==(s=f[6]+"")&&O(e,s);const _={};u&65&&(_.value=f[0][f[6]]),i.$set(_)},i(f){o||(m(i.$$.fragment,f),o=!0)},o(f){$(i.$$.fragment,f),o=!1},d(f){f&&(c(t),c(n)),j(i,f)}}}function At(l){let t,s;return t=new se({props:{list:l[3],hasMore:l[3].length({6:e}),({item:e})=>e?64:0]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&8&&(r.list=e[3]),n&12&&(r.hasMore=e[3].length({4:e}),({key:e})=>e?16:0],item_key:[Pt,({key:e})=>({4:e}),({key:e})=>e?16:0],preview:[At,({root:e})=>({5:e}),({root:e})=>e?32:0],summary:[jt]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,[n]){const r={};n&4&&(r.keys=e[2]),n&191&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function Ct(l,t,s){let e,n,{value:r}=t,{summary:a}=t;return l.$$set=i=>{"value"in i&&s(0,r=i.value),"summary"in i&&s(1,a=i.summary)},l.$$.update=()=>{l.$$.dirty&1&&s(2,e=Object.getOwnPropertyNames(r)),l.$$.dirty&4&&s(3,n=e.slice(0,5))},[r,a,e,n]}class ce extends F{constructor(t){super(),J(this,t,Ct,Tt,L,{value:0,summary:1})}}function It(l){let t,s,e=l[0].length+"",n,r;return{c(){t=w("span"),s=b("Array("),n=b(e),r=b(")"),this.h()},l(a){t=y(a,"SPAN",{class:!0});var i=N(t);s=k(i,"Array("),n=k(i,e),r=k(i,")"),i.forEach(c),this.h()},h(){v(t,"class","label")},m(a,i){d(a,t,i),g(t,s),g(t,n),g(t,r)},p(a,i){i&1&&e!==(e=a[0].length+"")&&O(n,e)},d(a){a&&c(t)}}}function Mt(l){let t,s;return t=new I({props:{value:l[5]}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&32&&(r.value=e[5]),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function Lt(l){let t,s;return t=new se({props:{list:l[1],hasMore:l[1].length({5:e}),({item:e})=>e?32:0]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&2&&(r.list=e[1]),n&3&&(r.hasMore=e[1].length({3:e}),({key:e})=>e?8:0],item_key:[Ft,({key:e})=>({3:e}),({key:e})=>e?8:0],preview:[Lt,({root:e})=>({4:e}),({root:e})=>e?16:0],summary:[It]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,[n]){const r={};n&4&&(r.keys=e[2]),n&91&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function Bt(l,t,s){let e,n,{value:r}=t;return l.$$set=a=>{"value"in a&&s(0,r=a.value)},l.$$.update=()=>{l.$$.dirty&1&&s(2,e=Object.getOwnPropertyNames(r)),l.$$.dirty&1&&s(1,n=r.slice(0,5))},[r,n,e]}class Ut extends F{constructor(t){super(),J(this,t,Bt,Kt,L,{value:0})}}function qt(l){let t,s,e,n=l[3].length+"",r,a;return{c(){t=w("span"),s=b(l[1]),e=b("("),r=b(n),a=b(")"),this.h()},l(i){t=y(i,"SPAN",{class:!0});var o=N(t);s=k(o,l[1]),e=k(o,"("),r=k(o,n),a=k(o,")"),o.forEach(c),this.h()},h(){v(t,"class","label")},m(i,o){d(i,t,o),g(t,s),g(t,e),g(t,r),g(t,a)},p(i,o){o&2&&O(s,i[1]),o&8&&n!==(n=i[3].length+"")&&O(r,n)},d(i){i&&c(t)}}}function Rt(l){let t,s;return t=new I({props:{value:l[9]}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&512&&(r.value=e[9]),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function Vt(l){let t,s;return t=new se({props:{list:l[4],hasMore:l[4].length({9:e}),({item:e})=>e?512:0]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&16&&(r.list=e[4]),n&20&&(r.hasMore=e[4].length({7:e}),({key:e})=>e?128:0],item_key:[Wt,({key:e})=>({7:e}),({key:e})=>e?128:0]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&8&&(r.keys=e[3]),n&1156&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function Wt(l){let t,s=l[7]+"",e;return{c(){t=w("span"),e=b(s),this.h()},l(n){t=y(n,"SPAN",{class:!0});var r=N(t);e=k(r,s),r.forEach(c),this.h()},h(){v(t,"class","property")},m(n,r){d(n,t,r),g(t,e)},p(n,r){r&128&&s!==(s=n[7]+"")&&O(e,s)},d(n){n&&c(t)}}}function Ht(l){let t,s;return t=new I({props:{value:l[2][l[7]]}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&132&&(r.value=e[2][e[7]]),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function Qt(l){let t,s,e,n;const r=[Dt,Gt],a=[];function i(o,f){return o[6]===le?0:1}return t=i(l),s=a[t]=r[t](l),{c(){s.c(),e=T()},l(o){s.l(o),e=T()},m(o,f){a[t].m(o,f),d(o,e,f),n=!0},p(o,f){let u=t;t=i(o),t===u?a[t].p(o,f):(U(),$(a[u],1,1,()=>{a[u]=null}),q(),s=a[t],s?s.p(o,f):(s=a[t]=r[t](o),s.c()),m(s,1),s.m(e.parentNode,e))},i(o){n||(m(s),n=!0)},o(o){$(s),n=!1},d(o){o&&c(e),a[t].d(o)}}}function Xt(l){let t,s;return t=new B({props:{keys:[le,"size"],shouldShowColon:l[5],$$slots:{item_value:[Qt,({key:e})=>({6:e}),({key:e})=>e?64:0],item_key:[zt,({key:e})=>({6:e}),({key:e})=>e?64:0],preview:[Vt,({root:e})=>({8:e}),({root:e})=>e?256:0],summary:[qt]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,[n]){const r={};n&1375&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}const le="[[Entries]]";function Yt(l,t,s){let e,{value:n}=t,{nodeType:r}=t,a=[],i=[];const o=f=>f!==le;return l.$$set=f=>{"value"in f&&s(0,n=f.value),"nodeType"in f&&s(1,r=f.nodeType)},l.$$.update=()=>{if(l.$$.dirty&1){let f=[],u=[],_=0;for(const p of n)f.push(_++),u.push(p);s(3,a=f),s(2,i=u)}l.$$.dirty&4&&s(4,e=i.slice(0,5))},[n,r,i,a,e,o]}class Zt extends F{constructor(t){super(),J(this,t,Yt,Xt,L,{value:0,nodeType:1})}}function xt(l){let t,s,e=l[2].length+"",n,r;return{c(){t=w("span"),s=b("Map("),n=b(e),r=b(")"),this.h()},l(a){t=y(a,"SPAN",{color:!0});var i=N(t);s=k(i,"Map("),n=k(i,e),r=k(i,")"),i.forEach(c),this.h()},h(){v(t,"color","label")},m(a,i){d(a,t,i),g(t,s),g(t,n),g(t,r)},p(a,i){i&4&&e!==(e=a[2].length+"")&&O(n,e)},d(a){a&&c(t)}}}function en(l){let t,s,e=" => ",n,r,a;return t=new I({props:{value:l[11]}}),r=new I({props:{value:l[0].get(l[11])}}),{c(){A(t.$$.fragment),s=w("span"),n=b(e),A(r.$$.fragment),this.h()},l(i){P(t.$$.fragment,i),s=y(i,"SPAN",{class:!0});var o=N(s);n=k(o,e),o.forEach(c),P(r.$$.fragment,i),this.h()},h(){v(s,"class","operator")},m(i,o){E(t,i,o),d(i,s,o),g(s,n),E(r,i,o),a=!0},p(i,o){const f={};o&2048&&(f.value=i[11]),t.$set(f);const u={};o&2049&&(u.value=i[0].get(i[11])),r.$set(u)},i(i){a||(m(t.$$.fragment,i),m(r.$$.fragment,i),a=!0)},o(i){$(t.$$.fragment,i),$(r.$$.fragment,i),a=!1},d(i){i&&c(s),j(t,i),j(r,i)}}}function tn(l){let t,s;return t=new se({props:{list:l[4],hasMore:l[4].length({11:e}),({item:e})=>e?2048:0]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&16&&(r.list=e[4]),n&17&&(r.hasMore=e[4].length({8:e}),({key:e})=>e?256:0],item_key:[ln,({key:e})=>({8:e}),({key:e})=>e?256:0]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&2&&(r.keys=e[1]),n&4&&(r.expandKey=e[5]),n&4364&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function ln(l){let t,s=l[8]+"",e;return{c(){t=w("span"),e=b(s),this.h()},l(n){t=y(n,"SPAN",{class:!0});var r=N(t);e=k(r,s),r.forEach(c),this.h()},h(){v(t,"class","property")},m(n,r){d(n,t,r),g(t,e)},p(n,r){r&256&&s!==(s=n[8]+"")&&O(e,s)},d(n){n&&c(t)}}}function an(l){let t,s="{ ",e,n,r,a=" => ",i,o,f,u=" }",_,p;return n=new I({props:{value:l[2][l[8]]}}),o=new I({props:{value:l[3][l[8]]}}),{c(){t=w("span"),e=b(s),A(n.$$.fragment),r=w("span"),i=b(a),A(o.$$.fragment),f=w("span"),_=b(u),this.h()},l(h){t=y(h,"SPAN",{class:!0});var S=N(t);e=k(S,s),S.forEach(c),P(n.$$.fragment,h),r=y(h,"SPAN",{class:!0});var C=N(r);i=k(C,a),C.forEach(c),P(o.$$.fragment,h),f=y(h,"SPAN",{class:!0});var V=N(f);_=k(V,u),V.forEach(c),this.h()},h(){v(t,"class","operator"),v(r,"class","operator"),v(f,"class","operator")},m(h,S){d(h,t,S),g(t,e),E(n,h,S),d(h,r,S),g(r,i),E(o,h,S),d(h,f,S),g(f,_),p=!0},p(h,S){const C={};S&260&&(C.value=h[2][h[8]]),n.$set(C);const V={};S&264&&(V.value=h[3][h[8]]),o.$set(V)},i(h){p||(m(n.$$.fragment,h),m(o.$$.fragment,h),p=!0)},o(h){$(n.$$.fragment,h),$(o.$$.fragment,h),p=!1},d(h){h&&(c(t),c(r),c(f)),j(n,h),j(o,h)}}}function on(l){let t,s=l[9]+"",e;return{c(){t=w("span"),e=b(s),this.h()},l(n){t=y(n,"SPAN",{class:!0});var r=N(t);e=k(r,s),r.forEach(c),this.h()},h(){v(t,"class","property")},m(n,r){d(n,t,r),g(t,e)},p(n,r){r&512&&s!==(s=n[9]+"")&&O(e,s)},d(n){n&&c(t)}}}function fn(l){let t,s;return t=new I({props:{value:l[9]==="key"?l[2][l[8]]:l[3][l[8]]}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&780&&(r.value=e[9]==="key"?e[2][e[8]]:e[3][e[8]]),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function un(l){let t,s;return t=new B({props:{keys:["key","value"],$$slots:{item_value:[fn,({key:e})=>({9:e}),({key:e})=>e?512:0],item_key:[on,({key:e})=>({9:e}),({key:e})=>e?512:0],preview:[an]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&4876&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function cn(l){let t,s,e,n;const r=[rn,sn],a=[];function i(o,f){return o[7]===ae?0:1}return t=i(l),s=a[t]=r[t](l),{c(){s.c(),e=T()},l(o){s.l(o),e=T()},m(o,f){a[t].m(o,f),d(o,e,f),n=!0},p(o,f){let u=t;t=i(o),t===u?a[t].p(o,f):(U(),$(a[u],1,1,()=>{a[u]=null}),q(),s=a[t],s?s.p(o,f):(s=a[t]=r[t](o),s.c()),m(s,1),s.m(e.parentNode,e))},i(o){n||(m(s),n=!0)},o(o){$(s),n=!1},d(o){o&&c(e),a[t].d(o)}}}function _n(l){let t,s;return t=new B({props:{keys:[ae,"size"],shouldShowColon:l[6],$$slots:{item_value:[cn,({key:e})=>({7:e}),({key:e})=>e?128:0],item_key:[nn,({key:e})=>({7:e}),({key:e})=>e?128:0],preview:[tn,({root:e})=>({10:e}),({root:e})=>e?1024:0],summary:[xt]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,[n]){const r={};n&5279&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}const ae="[[Entries]]";function pn(l,t,s){let e,{value:n}=t;R();let r=[],a=[],i=[];const o=u=>a[u],f=u=>u!==ae;return l.$$set=u=>{"value"in u&&s(0,n=u.value)},l.$$.update=()=>{if(l.$$.dirty&1){let u=[],_=[],p=[],h=0;for(const S of n)u.push(h++),_.push(S[0]),p.push(S[1]);s(1,r=u),s(2,a=_),s(3,i=p)}l.$$.dirty&1&&s(4,e=Array.from(n.keys()).slice(0,5))},[n,r,a,i,e,o,f]}class mn extends F{constructor(t){super(),J(this,t,pn,_n,L,{value:0})}}function hn(l){let t,s,e;return{c(){t=w("span"),s=b(l[0]),this.h()},l(n){t=y(n,"SPAN",{class:!0});var r=N(t);s=k(r,l[0]),r.forEach(c),this.h()},h(){v(t,"class",e=pe(l[1])+" svelte-l95iub")},m(n,r){d(n,t,r),g(t,s)},p(n,[r]){r&1&&O(s,n[0]),r&2&&e!==(e=pe(n[1])+" svelte-l95iub")&&v(t,"class",e)},i:K,o:K,d(n){n&&c(t)}}}function $n(l,t,s){let{value:e,nodeType:n}=t;return l.$$set=r=>{"value"in r&&s(0,e=r.value),"nodeType"in r&&s(1,n=r.nodeType)},[e,n]}class W extends F{constructor(t){super(),J(this,t,$n,hn,L,{value:0,nodeType:1})}}function Je(l,t,s){const e=l.slice();e[6]=t[s],e[9]=s;const n=e[9]$(n[a],1,1,()=>{n[a]=null});return{c(){for(let a=0;a0)},m(o,f){d(o,t,f),E(s,t,null),g(t,e),g(e,r),d(o,a,f),i=!0},p(o,f){const u={};f&1&&(u.value=o[6]+(o[7]?"\\n":"")),s.$set(u),(!i||f&1)&&n!==(n=o[7]?" +":"")&&O(r,n)},i(o){i||(m(s.$$.fragment,o),i=!0)},o(o){$(s.$$.fragment,o),i=!1},d(o){o&&(c(t),c(a)),j(s)}}}function vn(l){let t,s,e,n,r,a;const i=[gn,dn],o=[];function f(u,_){return u[1]?0:1}return s=f(l),e=o[s]=i[s](l),{c(){t=w("span"),e.c()},l(u){t=y(u,"SPAN",{});var _=N(t);e.l(_),_.forEach(c)},m(u,_){d(u,t,_),o[s].m(t,null),n=!0,r||(a=ne(t,"click",l[4]),r=!0)},p(u,[_]){let p=s;s=f(u),s===p?o[s].p(u,_):(U(),$(o[p],1,1,()=>{o[p]=null}),q(),e=o[s],e?e.p(u,_):(e=o[s]=i[s](u),e.c()),m(e,1),e.m(t,null))},i(u){n||(m(e),n=!0)},o(u){$(e),n=!1},d(u){u&&c(t),o[s].d(),r=!1,a()}}}function kn(l,t,s){let e,n,{stack:r}=t;const{expanded:a,expandable:i}=R();x(l,a,f=>s(1,n=f)),x(l,i,f=>s(5,e=f)),ee(i,e=!0,e);const o=()=>ee(a,n=!n,n);return l.$$set=f=>{"stack"in f&&s(0,r=f.stack)},[r,n,a,i,o]}class bn extends F{constructor(t){super(),J(this,t,kn,vn,L,{stack:0})}}function yn(l){let t,s,e=String(l[0].message)+"",n;return{c(){t=w("span"),s=b("Error: "),n=b(e),this.h()},l(r){t=y(r,"SPAN",{class:!0});var a=N(t);s=k(a,"Error: "),n=k(a,e),a.forEach(c),this.h()},h(){v(t,"class","label")},m(r,a){d(r,t,a),g(t,s),g(t,n)},p(r,a){a&1&&e!==(e=String(r[0].message)+"")&&O(n,e)},d(r){r&&c(t)}}}function wn(l){let t,s,e=String(l[0].message)+"",n;return{c(){t=w("span"),s=b("Error: "),n=b(e),this.h()},l(r){t=y(r,"SPAN",{class:!0});var a=N(t);s=k(a,"Error: "),n=k(a,e),a.forEach(c),this.h()},h(){v(t,"class","label")},m(r,a){d(r,t,a),g(t,s),g(t,n)},p(r,a){a&1&&e!==(e=String(r[0].message)+"")&&O(n,e)},d(r){r&&c(t)}}}function Sn(l){let t,s=l[2]+"",e;return{c(){t=w("span"),e=b(s),this.h()},l(n){t=y(n,"SPAN",{class:!0});var r=N(t);e=k(r,s),r.forEach(c),this.h()},h(){v(t,"class","property")},m(n,r){d(n,t,r),g(t,e)},p(n,r){r&4&&s!==(s=n[2]+"")&&O(e,s)},d(n){n&&c(t)}}}function Nn(l){let t,s;return t=new I({props:{value:l[0][l[2]]}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&5&&(r.value=e[0][e[2]]),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function jn(l){let t,s;return t=new bn({props:{stack:l[1]}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&2&&(r.stack=e[1]),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function En(l){let t,s,e,n;const r=[jn,Nn],a=[];function i(o,f){return o[2]==="stack"?0:1}return t=i(l),s=a[t]=r[t](l),{c(){s.c(),e=T()},l(o){s.l(o),e=T()},m(o,f){a[t].m(o,f),d(o,e,f),n=!0},p(o,f){let u=t;t=i(o),t===u?a[t].p(o,f):(U(),$(a[u],1,1,()=>{a[u]=null}),q(),s=a[t],s?s.p(o,f):(s=a[t]=r[t](o),s.c()),m(s,1),s.m(e.parentNode,e))},i(o){n||(m(s),n=!0)},o(o){$(s),n=!1},d(o){o&&c(e),a[t].d(o)}}}function An(l){let t,s;return t=new B({props:{keys:["message","stack"],$$slots:{item_value:[En,({key:e})=>({2:e}),({key:e})=>e?4:0],item_key:[Sn,({key:e})=>({2:e}),({key:e})=>e?4:0],preview:[wn],summary:[yn]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,[n]){const r={};n&15&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function Pn(l,t,s){let e,{value:n}=t;return l.$$set=r=>{"value"in r&&s(0,n=r.value)},l.$$.update=()=>{l.$$.dirty&1&&s(1,e=n.stack.split(` +`))},[n,e]}class On extends F{constructor(t){super(),J(this,t,Pn,An,L,{value:0})}}function Tn(l,t){const s=Object.prototype.toString.call(l).slice(8,-1);return s==="Object"?!t&&typeof l[Symbol.iterator]=="function"?"Iterable":l.constructor.name:s}function Cn(l){let t,s,e,n;return{c(){t=w("span"),s=b('"'),e=b(l[0]),n=b('"'),this.h()},l(r){t=y(r,"SPAN",{class:!0});var a=N(t);s=k(a,'"'),e=k(a,l[0]),n=k(a,'"'),a.forEach(c),this.h()},h(){v(t,"class","svelte-1fvwa9c")},m(r,a){d(r,t,a),g(t,s),g(t,e),g(t,n)},p(r,a){a&1&&O(e,r[0])},d(r){r&&c(t)}}}function In(l){let t,s,e=l[0].slice(0,30)+(l[0].length>30?"…":""),n,r;return{c(){t=w("span"),s=b('"'),n=b(e),r=b('"'),this.h()},l(a){t=y(a,"SPAN",{class:!0});var i=N(t);s=k(i,'"'),n=k(i,e),r=k(i,'"'),i.forEach(c),this.h()},h(){v(t,"class","svelte-1fvwa9c")},m(a,i){d(a,t,i),g(t,s),g(t,n),g(t,r)},p(a,i){i&1&&e!==(e=a[0].slice(0,30)+(a[0].length>30?"…":""))&&O(n,e)},d(a){a&&c(t)}}}function Mn(l){let t;function s(r,a){return r[1]==="summary"?In:Cn}let n=s(l)(l);return{c(){n.c(),t=T()},l(r){n.l(r),t=T()},m(r,a){n.m(r,a),d(r,t,a)},p(r,[a]){n.p(r,a)},i:K,o:K,d(r){r&&c(t),n.d(r)}}}function Ln(l,t,s){let e,{value:n}=t;const r={"\n":"\\n"," ":"\\t","\r":"\\r"},{displayMode:a}=R();return l.$$set=i=>{"value"in i&&s(2,n=i.value)},l.$$.update=()=>{l.$$.dirty&4&&s(0,e=n.replace(/[\n\t\r]/g,i=>r[i]))},[e,a,n]}class Fn extends F{constructor(t){super(),J(this,t,Ln,Mn,L,{value:2})}}function Jn(l){let t,s="ƒ";return{c(){t=w("span"),t.textContent=s,this.h()},l(e){t=y(e,"SPAN",{class:!0,"data-svelte-h":!0}),re(t)!=="svelte-migemc"&&(t.textContent=s),this.h()},h(){v(t,"class","i svelte-1eamqdt")},m(e,n){d(e,t,n)},p:K,d(e){e&&c(t)}}}function Be(l){let t,s=qe(l[2])+"",e;return{c(){t=w("span"),e=b(s),this.h()},l(n){t=y(n,"SPAN",{class:!0});var r=N(t);e=k(r,s),r.forEach(c),this.h()},h(){v(t,"class","fn i svelte-1eamqdt")},m(n,r){d(n,t,r),g(t,e)},p(n,r){r&4&&s!==(s=qe(n[2])+"")&&O(e,s)},d(n){n&&c(t)}}}function Ue(l){let t,s=Re(l[2])+"",e;return{c(){t=w("span"),e=b(s),this.h()},l(n){t=y(n,"SPAN",{class:!0});var r=N(t);e=k(r,s),r.forEach(c),this.h()},h(){v(t,"class","i svelte-1eamqdt")},m(n,r){d(n,t,r),g(t,e)},p(n,r){r&4&&s!==(s=Re(n[2])+"")&&O(e,s)},d(n){n&&c(t)}}}function Kn(l){let t,s,e=!l[2].isArrow&&Be(l),n=!l[2].isClass&&Ue(l);return{c(){e&&e.c(),t=T(),n&&n.c(),s=T()},l(r){e&&e.l(r),t=T(),n&&n.l(r),s=T()},m(r,a){e&&e.m(r,a),d(r,t,a),n&&n.m(r,a),d(r,s,a)},p(r,a){r[2].isArrow?e&&(e.d(1),e=null):e?e.p(r,a):(e=Be(r),e.c(),e.m(t.parentNode,t)),r[2].isClass?n&&(n.d(1),n=null):n?n.p(r,a):(n=Ue(r),n.c(),n.m(s.parentNode,s))},d(r){r&&(c(t),c(s)),e&&e.d(r),n&&n.d(r)}}}function Bn(l){let t,s=l[6]+"",e,n;return{c(){t=w("span"),e=b(s),this.h()},l(r){t=y(r,"SPAN",{class:!0});var a=N(t);e=k(a,s),a.forEach(c),this.h()},h(){v(t,"class",n=l[6]===oe||l[6]===ie?"internal":"property")},m(r,a){d(r,t,a),g(t,e)},p(r,a){a&64&&s!==(s=r[6]+"")&&O(e,s),a&64&&n!==(n=r[6]===oe||r[6]===ie?"internal":"property")&&v(t,"class",n)},d(r){r&&c(t)}}}function Un(l){let t,s;return t=new I({props:{value:l[3](l[6])}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&64&&(r.value=e[3](e[6])),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function qn(l){let t,s;return t=new ce({props:{value:l[3](l[6])}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&64&&(r.value=e[3](e[6])),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function Rn(l){let t,s;return{c(){t=w("span"),s=b(l[0]),this.h()},l(e){t=y(e,"SPAN",{class:!0});var n=N(t);s=k(n,l[0]),n.forEach(c),this.h()},h(){v(t,"class","i svelte-1eamqdt")},m(e,n){d(e,t,n),g(t,s)},p(e,n){n&1&&O(s,e[0])},i:K,o:K,d(e){e&&c(t)}}}function Vn(l){let t,s,e,n;const r=[Rn,qn,Un],a=[];function i(o,f){return o[6]===oe?0:o[6]==="prototype"?1:2}return t=i(l),s=a[t]=r[t](l),{c(){s.c(),e=T()},l(o){s.l(o),e=T()},m(o,f){a[t].m(o,f),d(o,e,f),n=!0},p(o,f){let u=t;t=i(o),t===u?a[t].p(o,f):(U(),$(a[u],1,1,()=>{a[u]=null}),q(),s=a[t],s?s.p(o,f):(s=a[t]=r[t](o),s.c()),m(s,1),s.m(e.parentNode,e))},i(o){n||(m(s),n=!0)},o(o){$(s),n=!1},d(o){o&&c(e),a[t].d(o)}}}function zn(l){let t,s;return t=new B({props:{keys:l[1],$$slots:{item_value:[Vn,({key:e})=>({6:e}),({key:e})=>e?64:0],item_key:[Bn,({key:e})=>({6:e}),({key:e})=>e?64:0],preview:[Kn],summary:[Jn]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,[n]){const r={};n&2&&(r.keys=e[1]),n&197&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}const oe="[[Function]]",ie="[[Prototype]]";function Gn(l){const t=l.match(/^(?:(async)\s+)?(?:function)?(\*)?\s*([^(]+)?(\([^)]*\))\s*(=>)?/),s=t==null?void 0:t[1],e=t==null?void 0:t[2],n=t==null?void 0:t[3],r=t==null?void 0:t[4],a=t==null?void 0:t[5],i=l.match(/^class\s+([^\s]+)/),o=i==null?void 0:i[1];return{args:r,isAsync:s,isGenerator:e,fnName:n,isArrow:a,isClass:o}}function qe({isGenerator:l,isAsync:t,isClass:s}){return s?`class ${s}`:(t?"async ":"")+"ƒ"+(l?"*":"")}function Re({isAsync:l,isArrow:t,fnName:s,args:e}){return(t&&l?"async":"")+" "+(s??"")+e+(t?" => …":"")}function Dn(l){try{return l.toString()}catch{switch(l.constructor.name){case"AsyncFunction":return"async function () {}";case"AsyncGeneratorFunction":return"async function * () {}";case"GeneratorFunction:":return"function * () {}";default:return"function () {}"}}}function Wn(l,t,s){let e,n,r,{value:a}=t;function i(f){return f===ie?a.__proto__:a[f]}function o(f){return f===oe?!0:i(f)}return l.$$set=f=>{"value"in f&&s(4,a=f.value)},l.$$.update=()=>{l.$$.dirty&16&&s(0,e=Dn(a)),l.$$.dirty&1&&s(2,n=Gn(e))},s(1,r=["length","name","prototype",oe,ie].filter(o)),[e,r,n,i,a]}class Hn extends F{constructor(t){super(),J(this,t,Wn,zn,L,{value:4})}}function Qn(l){let t,s=l[3]?"writable(":"readable(",e,n,r=")",a,i;return n=new I({props:{value:l[2]}}),{c(){t=w("span"),e=b(s),A(n.$$.fragment),a=b(r),this.h()},l(o){t=y(o,"SPAN",{class:!0});var f=N(t);e=k(f,s),P(n.$$.fragment,f),a=k(f,r),f.forEach(c),this.h()},h(){v(t,"class","label")},m(o,f){d(o,t,f),g(t,e),E(n,t,null),g(t,a),i=!0},p(o,f){(!i||f&8)&&s!==(s=o[3]?"writable(":"readable(")&&O(e,s);const u={};f&4&&(u.value=o[2]),n.$set(u)},i(o){i||(m(n.$$.fragment,o),i=!0)},o(o){$(n.$$.fragment,o),i=!1},d(o){o&&c(t),j(n)}}}function Xn(l){let t,s=l[10]+"",e,n,r=": ",a,i,o;return i=new I({props:{value:l[0][l[10]]}}),{c(){t=w("span"),e=b(s),n=w("span"),a=b(r),A(i.$$.fragment),this.h()},l(f){t=y(f,"SPAN",{class:!0});var u=N(t);e=k(u,s),u.forEach(c),n=y(f,"SPAN",{class:!0});var _=N(n);a=k(_,r),_.forEach(c),P(i.$$.fragment,f),this.h()},h(){v(t,"class","property"),v(n,"class","operator")},m(f,u){d(f,t,u),g(t,e),d(f,n,u),g(n,a),E(i,f,u),o=!0},p(f,u){(!o||u&1024)&&s!==(s=f[10]+"")&&O(e,s);const _={};u&1025&&(_.value=f[0][f[10]]),i.$set(_)},i(f){o||(m(i.$$.fragment,f),o=!0)},o(f){$(i.$$.fragment,f),o=!1},d(f){f&&(c(t),c(n)),j(i,f)}}}function Yn(l){let t,s;return t=new se({props:{list:l[4],hasMore:l[4].length({10:e}),({item:e})=>e?1024:0]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&16&&(r.list=e[4]),n&18&&(r.hasMore=e[4].length({8:e}),({key:e})=>e?256:0],item_key:[Zn,({key:e})=>({8:e}),({key:e})=>e?256:0],preview:[Yn,({root:e})=>({9:e}),({root:e})=>e?512:0],summary:[Qn]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,[n]){const r={};n&32&&(r.keys=e[5]),n&2847&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}const fe="$value";function ts(l,t,s){let e,n,r,a,i,o,f=K,u=()=>(f(),f=ze(_,h=>s(7,o=h)),_);l.$$.on_destroy.push(()=>f());let{value:_}=t;u();function p(h){return h===fe?a:_[h]}return l.$$set=h=>{"value"in h&&u(s(0,_=h.value))},l.$$.update=()=>{l.$$.dirty&1&&s(1,e=Object.getOwnPropertyNames(_)),l.$$.dirty&2&&s(5,n=[fe,...e]),l.$$.dirty&2&&s(4,r=e.slice(0,5)),l.$$.dirty&128&&s(2,a=o),l.$$.dirty&1&&s(3,i=typeof _.set=="function")},[_,e,a,i,r,n,p,o]}class ns extends F{constructor(t){super(),J(this,t,ts,es,L,{value:0})}}function ss(l){let t,s,e,n=l[0].length+"",r,a;return{c(){t=w("span"),s=b(l[1]),e=b("("),r=b(n),a=b(")"),this.h()},l(i){t=y(i,"SPAN",{class:!0});var o=N(t);s=k(o,l[1]),e=k(o,"("),r=k(o,n),a=k(o,")"),o.forEach(c),this.h()},h(){v(t,"class","label")},m(i,o){d(i,t,o),g(t,s),g(t,e),g(t,r),g(t,a)},p(i,o){o&2&&O(s,i[1]),o&1&&n!==(n=i[0].length+"")&&O(r,n)},d(i){i&&c(t)}}}function rs(l){let t,s;return t=new I({props:{value:l[8]}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&256&&(r.value=e[8]),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function ls(l){let t,s;return t=new se({props:{list:l[2],hasMore:l[2].length({8:e}),({item:e})=>e?256:0]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&4&&(r.list=e[2]),n&5&&(r.hasMore=e[2].length({6:e}),({key:e})=>e?64:0],item_key:[as,({key:e})=>({6:e}),({key:e})=>e?64:0],preview:[ls,({root:e})=>({7:e}),({root:e})=>e?128:0],summary:[ss]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,[n]){const r={};n&8&&(r.keys=e[3]),n&711&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}const Ve="Symbol(Symbol.toStringTag)";function fs(l,t,s){let e,n,{value:r}=t,{nodeType:a}=t;const i=["buffer","byteLength","byteOffset","length",Ve];function o(f){return f===Ve?r[Symbol.toStringTag]:r[f]}return l.$$set=f=>{"value"in f&&s(0,r=f.value),"nodeType"in f&&s(1,a=f.nodeType)},l.$$.update=()=>{l.$$.dirty&1&&s(3,e=[...Object.getOwnPropertyNames(r),...i]),l.$$.dirty&1&&s(2,n=r.slice(0,5))},[r,a,n,e,i,o]}class us extends F{constructor(t){super(),J(this,t,fs,is,L,{value:0,nodeType:1})}}function cs(l){let t,s;return{c(){t=w("span"),s=b(l[1]),this.h()},l(e){t=y(e,"SPAN",{class:!0});var n=N(t);s=k(n,l[1]),n.forEach(c),this.h()},h(){v(t,"class","regex svelte-17k1wqt")},m(e,n){d(e,t,n),g(t,s)},p(e,n){n&2&&O(s,e[1])},d(e){e&&c(t)}}}function _s(l){let t,s;return{c(){t=w("span"),s=b(l[1]),this.h()},l(e){t=y(e,"SPAN",{class:!0});var n=N(t);s=k(n,l[1]),n.forEach(c),this.h()},h(){v(t,"class","regex svelte-17k1wqt")},m(e,n){d(e,t,n),g(t,s)},p(e,n){n&2&&O(s,e[1])},d(e){e&&c(t)}}}function ps(l){let t,s=String(l[3])+"",e;return{c(){t=w("span"),e=b(s),this.h()},l(n){t=y(n,"SPAN",{class:!0});var r=N(t);e=k(r,s),r.forEach(c),this.h()},h(){v(t,"class","internal")},m(n,r){d(n,t,r),g(t,e)},p(n,r){r&8&&s!==(s=String(n[3])+"")&&O(e,s)},d(n){n&&c(t)}}}function ms(l){let t,s;return t=new I({props:{value:l[0][l[3]]}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,n){const r={};n&9&&(r.value=e[0][e[3]]),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function hs(l){let t,s;return t=new B({props:{keys:l[2],$$slots:{item_value:[ms,({key:e})=>({3:e}),({key:e})=>e?8:0],item_key:[ps,({key:e})=>({3:e}),({key:e})=>e?8:0],preview:[_s],summary:[cs]},$$scope:{ctx:l}}}),{c(){A(t.$$.fragment)},l(e){P(t.$$.fragment,e)},m(e,n){E(t,e,n),s=!0},p(e,[n]){const r={};n&27&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(e){s||(m(t.$$.fragment,e),s=!0)},o(e){$(t.$$.fragment,e),s=!1},d(e){j(t,e)}}}function $s(l,t,s){let e,{value:n}=t;const r=["lastIndex","dotAll","flags","global","hasIndices","ignoreCase","multiline","source","sticky","unicode"];return l.$$set=a=>{"value"in a&&s(0,n=a.value)},l.$$.update=()=>{l.$$.dirty&1&&s(1,e=n.toString())},[n,e,r]}class ds extends F{constructor(t){super(),J(this,t,$s,hs,L,{value:0})}}function gs(l){let t,s,e;const n=[{value:l[0]},l[1]];var r=l[2];function a(i,o){let f={};for(let u=0;u{j(f,1)}),q()}r?(t=me(r,a(i,o)),A(t.$$.fragment),m(t.$$.fragment,1),E(t,s.parentNode,s)):t=null}else if(r){const f=o&3?$e(n,[o&1&&{value:i[0]},o&2&&de(i[1])]):{};t.$set(f)}},i(i){e||(t&&m(t.$$.fragment,i),e=!0)},o(i){t&&$(t.$$.fragment,i),e=!1},d(i){i&&c(s),t&&j(t,i)}}}function vs(l,t,s){let e,n,r,{value:a}=t;const i=ue();x(l,i,u=>s(4,r=u));const{shouldTreatIterableAsObject:o}=R();function f(u,_){switch(u){case"Object":return typeof _.subscribe=="function"?[ns]:[ce];case"Error":return[On];case"Array":return[Ut];case"Map":return[mn];case"Iterable":case"Set":return[Zt,{nodeType:u}];case"Number":return[W,{nodeType:u}];case"String":return[Fn];case"Boolean":return[W,{nodeType:u,value:_?"true":"false"}];case"Date":return[W,{nodeType:u,value:_.toISOString()}];case"Null":return[W,{nodeType:u,value:"null"}];case"Undefined":return[W,{nodeType:u,value:"undefined"}];case"Function":case"AsyncFunction":case"AsyncGeneratorFunction":case"GeneratorFunction":return[Hn];case"Symbol":return[W,{nodeType:u,value:_.toString()}];case"BigInt":return[W,{nodeType:u,value:String(_)+"n"}];case"ArrayBuffer":return[W,{nodeType:u,value:`ArrayBuffer(${_.byteLength})`}];case"BigInt64Array":case"BigUint64Array":case"Float32Array":case"Float64Array":case"Int8Array":case"Int16Array":case"Int32Array":case"Uint8Array":case"Uint8ClampedArray":case"Uint16Array":case"Uint32Array":return[us,{nodeType:u}];case"RegExp":return[ds];default:return[ce,{summary:u}]}}return l.$$set=u=>{"value"in u&&s(0,a=u.value)},l.$$.update=()=>{l.$$.dirty&1&&ee(i,r=Tn(a,o),r),l.$$.dirty&17&&s(2,[e,n]=f(r,a),e,(s(1,n),s(4,r),s(0,a)))},[a,n,e,i,r]}class I extends F{constructor(t){super(),J(this,t,vs,gs,L,{value:0})}}function ks({defaultExpandedPaths:l,defaultExpandedLevel:t}){const s=l.map(n=>n.split("."));function e(n){e:for(const r of s){if(n.length>r.length)continue;const a=Math.min(n.length,r.length);for(let i=0;ie(u),level:0,keyPath:[],showPreview:r,shouldTreatIterableAsObject:a}),l.$$set=u=>{"value"in u&&s(0,n=u.value),"shouldShowPreview"in u&&s(2,r=u.shouldShowPreview),"shouldTreatIterableAsObject"in u&&s(3,a=u.shouldTreatIterableAsObject),"defaultExpandedPaths"in u&&s(4,i=u.defaultExpandedPaths),"defaultExpandedLevel"in u&&s(5,o=u.defaultExpandedLevel)},l.$$.update=()=>{l.$$.dirty&48&&(e=ks({defaultExpandedPaths:i,defaultExpandedLevel:o}))},[n,f,r,a,i,o]}class Ss extends F{constructor(t){super(),J(this,t,ws,ys,L,{value:0,shouldShowPreview:2,shouldTreatIterableAsObject:3,defaultExpandedPaths:4,defaultExpandedLevel:5})}}function Ns(l){let t,s,e,n;return s=new Ss({props:{value:l[0],defaultExpandedLevel:l[2]}}),{c(){t=w("div"),e=w("div"),A(s.$$.fragment),this.h()},l(r){t=y(r,"DIV",{class:!0});var a=N(t);e=y(a,"DIV",{style:!0});var i=N(e);P(s.$$.fragment,i),a.forEach(c),this.h()},h(){z(e,"display","contents"),z(e,"--json-tree-font-size","16px"),z(e,"--json-tree-li-line-height","1.7"),z(e,"--json-tree-font-family","monospace"),z(e,"--json-tree-string-color","var(--color-text)"),z(e,"--json-tree-label-color","var(--color-interaction)"),z(e,"--json-tree-property-color","var(--color-interaction)"),z(e,"--json-tree-number-color","var(--color-text-secondary)"),z(e,"--json-tree-boolean-color","var(--color-text-secondary)"),v(t,"class","svelte-1ajfzk1"),H(t,"showFullLines",l[1])},m(r,a){d(r,t,a),g(t,e),E(s,e,null),n=!0},p(r,[a]){const i={};a&1&&(i.value=r[0]),a&4&&(i.defaultExpandedLevel=r[2]),s.$set(i),(!n||a&2)&&H(t,"showFullLines",r[1])},i(r){n||(m(s.$$.fragment,r),n=!0)},o(r){$(s.$$.fragment,r),n=!1},d(r){r&&c(t),j(s)}}}function js(l,t,s){let{value:e}=t,{showFullLines:n=!1}=t,{expandedLines:r=2}=t;return l.$$set=a=>{"value"in a&&s(0,e=a.value),"showFullLines"in a&&s(1,n=a.showFullLines),"expandedLines"in a&&s(2,r=a.expandedLines)},[e,n,r]}class Ts extends F{constructor(t){super(),J(this,t,js,Ns,L,{value:0,showFullLines:1,expandedLines:2})}}export{Ts as J}; diff --git a/gui/next/build/_app/immutable/chunks/BVq9mvWR.js b/gui/next/build/_app/immutable/chunks/BVq9mvWR.js new file mode 100644 index 0000000..b20ffb2 --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/BVq9mvWR.js @@ -0,0 +1,2 @@ +import{s as r,n as a,d as l,i as c,w as i,c as h,z as u,h as m}from"./Ul9VwQ7n.js";import{S as d,i as w}from"./Bh3MJlbi.js";function f(n){let e,s=`Use with caution + This view allows direct changing of database records via the GraphQL layer, which can be useful for projects with custom platformOS features. It may allow changes which are not 100% compatible with the Siteglide Admin, so we recommend using with caution.`;return{c(){e=m("aside"),e.innerHTML=s,this.h()},l(t){e=h(t,"ASIDE",{class:!0,role:!0,"data-svelte-h":!0}),u(e)!=="svelte-1479l1"&&(e.innerHTML=s),this.h()},h(){i(e,"class","caution svelte-w5xay3"),i(e,"role","note")},m(t,o){c(t,e,o)},p:a,i:a,o:a,d(t){t&&l(e)}}}class v extends d{constructor(e){super(),w(this,e,null,f,r,{})}}export{v as C}; diff --git a/gui/next/build/_app/immutable/chunks/Bg88RIi0.js b/gui/next/build/_app/immutable/chunks/Bg88RIi0.js new file mode 100644 index 0000000..5fd2ec8 --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/Bg88RIi0.js @@ -0,0 +1 @@ +import{s as x,d as p,r as $,a as F,w as u,A as G,B as y,C as H,i as ee,b,D as S,E as j,c as D,e as U,f as V,g as O,h as A,t as z,j as R,F as ae,G as J,H as ne}from"./Ul9VwQ7n.js";import{S as te,i as se,d as K,t as M,a as Q,m as W,c as X,b as Y}from"./Bh3MJlbi.js";import{I as Z}from"./D-yR0E5w.js";function ie(n){let l,t,h,d,w,c,g,f,L,s,I,r,_,T,E,m,N,k,o,B,C;return c=new Z({props:{icon:n[6]==="navigation"?"arrowLeft":"minus"}}),m=new Z({props:{icon:n[6]==="navigation"?"arrowRight":"minus"}}),{c(){l=A("div"),t=A("button"),h=A("span"),d=z(n[7]),w=R(),Y(c.$$.fragment),L=R(),s=A("input"),I=R(),r=A("button"),_=A("span"),T=z(n[8]),E=R(),Y(m.$$.fragment),this.h()},l(e){l=D(e,"DIV",{class:!0});var i=U(l);t=D(i,"BUTTON",{form:!0,class:!0,"aria-hidden":!0,"data-action":!0});var a=U(t);h=D(a,"SPAN",{class:!0});var P=U(h);d=V(P,n[7]),P.forEach(p),w=O(a),X(c.$$.fragment,a),a.forEach(p),L=O(i),s=D(i,"INPUT",{form:!0,type:!0,name:!0,id:!0,min:!0,max:!0,step:!0,style:!0,class:!0}),I=O(i),r=D(i,"BUTTON",{form:!0,class:!0,"aria-hidden":!0,"data-action":!0});var v=U(r);_=D(v,"SPAN",{class:!0});var q=U(_);T=V(q,n[8]),q.forEach(p),E=O(v),X(m.$$.fragment,v),v.forEach(p),i.forEach(p),this.h()},h(){var e;u(h,"class","label"),u(t,"form",n[1]),u(t,"class","button svelte-142ypws"),t.disabled=g=n[0]<=n[3],u(t,"aria-hidden",f=n[0]<=n[3]),u(t,"data-action","numberDecrease"),u(s,"form",n[1]),u(s,"type","number"),u(s,"name",n[2]),u(s,"id",n[2]),u(s,"min",n[3]),u(s,"max",n[4]),u(s,"step",n[5]),s.autofocus=n[9],G(s,"--max",(((e=n[4])==null?void 0:e.toString().length)||1)+"ch"),u(s,"class","svelte-142ypws"),u(_,"class","label"),u(r,"form",n[1]),u(r,"class","button svelte-142ypws"),r.disabled=N=n[0]>=n[4],u(r,"aria-hidden",k=n[0]>=n[4]),u(r,"data-action","numberIncrease"),u(l,"class","number svelte-142ypws")},m(e,i){ee(e,l,i),b(l,t),b(t,h),b(h,d),b(t,w),W(c,t,null),b(l,L),b(l,s),H(s,n[0]),b(l,I),b(l,r),b(r,_),b(_,T),b(r,E),W(m,r,null),n[17](r),o=!0,n[9]&&s.focus(),B||(C=[S(t,"click",j(n[12])),S(s,"input",n[13]),S(s,"input",j(n[14])),S(s,"focusin",n[15]),S(s,"focusout",n[16]),S(r,"click",j(n[18]))],B=!0)},p(e,[i]){var v;(!o||i&128)&&F(d,e[7]);const a={};i&64&&(a.icon=e[6]==="navigation"?"arrowLeft":"minus"),c.$set(a),(!o||i&2)&&u(t,"form",e[1]),(!o||i&9&&g!==(g=e[0]<=e[3]))&&(t.disabled=g),(!o||i&9&&f!==(f=e[0]<=e[3]))&&u(t,"aria-hidden",f),(!o||i&2)&&u(s,"form",e[1]),(!o||i&4)&&u(s,"name",e[2]),(!o||i&4)&&u(s,"id",e[2]),(!o||i&8)&&u(s,"min",e[3]),(!o||i&16)&&u(s,"max",e[4]),(!o||i&32)&&u(s,"step",e[5]),(!o||i&512)&&(s.autofocus=e[9]),(!o||i&16)&&G(s,"--max",(((v=e[4])==null?void 0:v.toString().length)||1)+"ch"),i&1&&y(s.value)!==e[0]&&H(s,e[0]),(!o||i&256)&&F(T,e[8]);const P={};i&64&&(P.icon=e[6]==="navigation"?"arrowRight":"minus"),m.$set(P),(!o||i&2)&&u(r,"form",e[1]),(!o||i&17&&N!==(N=e[0]>=e[4]))&&(r.disabled=N),(!o||i&17&&k!==(k=e[0]>=e[4]))&&u(r,"aria-hidden",k)},i(e){o||(Q(c.$$.fragment,e),Q(m.$$.fragment,e),o=!0)},o(e){M(c.$$.fragment,e),M(m.$$.fragment,e),o=!1},d(e){e&&p(l),K(c),K(m),n[17](null),B=!1,$(C)}}}function ue(n,l,t){let{form:h}=l,{name:d}=l,{min:w=1}=l,{max:c}=l,{step:g=1}=l,{value:f=""}=l,{style:L}=l,{decreaseLabel:s=`Decrease ${d} value`}=l,{increaseLabel:I=`Increase ${d} value`}=l,r=!1,_;const T=ae();let E;function m(a){clearTimeout(E),E=setTimeout(()=>{a.submitter=_,T("input",a)},150)}const N=async a=>{t(0,f=parseInt(f)-1),await J(),m(a)};function k(){f=y(this.value),t(0,f)}const o=a=>m(a),B=()=>t(9,r=!0),C=()=>t(9,r=!1);function e(a){ne[a?"unshift":"push"](()=>{_=a,t(10,_)})}const i=async a=>{t(0,f=parseInt(f)+1),await J(),m(a)};return n.$$set=a=>{"form"in a&&t(1,h=a.form),"name"in a&&t(2,d=a.name),"min"in a&&t(3,w=a.min),"max"in a&&t(4,c=a.max),"step"in a&&t(5,g=a.step),"value"in a&&t(0,f=a.value),"style"in a&&t(6,L=a.style),"decreaseLabel"in a&&t(7,s=a.decreaseLabel),"increaseLabel"in a&&t(8,I=a.increaseLabel)},[f,h,d,w,c,g,L,s,I,r,_,m,N,k,o,B,C,e,i]}class fe extends te{constructor(l){super(),se(this,l,ue,ie,x,{form:1,name:2,min:3,max:4,step:5,value:0,style:6,decreaseLabel:7,increaseLabel:8})}}export{fe as N}; diff --git a/gui/next/build/_app/immutable/chunks/Bh3MJlbi.js b/gui/next/build/_app/immutable/chunks/Bh3MJlbi.js new file mode 100644 index 0000000..b09453f --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/Bh3MJlbi.js @@ -0,0 +1,4 @@ +var H=Object.defineProperty;var K=(t,e,n)=>e in t?H(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var z=(t,e,n)=>K(t,typeof e!="symbol"?e+"":e,n);import{n as v,a1 as T,a2 as W,d as D,r as O,X as k,q as F,J as C,a3 as Y,a4 as Z,a5 as tt,a6 as q,e as et,R as nt,Q as B,a7 as it,a8 as st,a9 as rt,aa as at,ab as ot,ac as ft}from"./Ul9VwQ7n.js";const J=typeof window<"u";let L=J?()=>window.performance.now():()=>Date.now(),N=J?t=>requestAnimationFrame(t):v;const x=new Set;function Q(t){x.forEach(e=>{e.c(t)||(x.delete(e),e.f())}),x.size!==0&&N(Q)}function U(t){let e;return x.size===0&&N(Q),{promise:new Promise(n=>{x.add(e={c:t,f:n})}),abort(){x.delete(e)}}}const M=new Map;let P=0;function ut(t){let e=5381,n=t.length;for(;n--;)e=(e<<5)-e^t.charCodeAt(n);return e>>>0}function lt(t,e){const n={stylesheet:W(e),rules:{}};return M.set(t,n),n}function A(t,e,n,i,l,o,u,s=0){const c=16.666/i;let r=`{ +`;for(let _=0;_<=1;_+=c){const g=e+(n-e)*o(_);r+=_*100+`%{${u(g,1-g)}} +`}const $=r+`100% {${u(n,1-n)}} +}`,f=`__svelte_${ut($)}_${s}`,m=T(t),{stylesheet:h,rules:a}=M.get(m)||lt(m,t);a[f]||(a[f]=!0,h.insertRule(`@keyframes ${f} ${$}`,h.cssRules.length));const d=t.style.animation||"";return t.style.animation=`${d?`${d}, `:""}${f} ${i}ms linear ${l}ms 1 both`,P+=1,f}function I(t,e){const n=(t.style.animation||"").split(", "),i=n.filter(e?o=>o.indexOf(e)<0:o=>o.indexOf("__svelte")===-1),l=n.length-i.length;l&&(t.style.animation=i.join(", "),P-=l,P||ct())}function ct(){N(()=>{P||(M.forEach(t=>{const{ownerNode:e}=t.stylesheet;e&&D(e)}),M.clear())})}let E;function V(){return E||(E=Promise.resolve(),E.then(()=>{E=null})),E}function S(t,e,n){t.dispatchEvent(Y(`${e?"intro":"outro"}${n}`))}const j=new Set;let p;function yt(){p={r:0,c:[],p}}function wt(){p.r||O(p.c),p=p.p}function dt(t,e){t&&t.i&&(j.delete(t),t.i(e))}function xt(t,e,n,i){if(t&&t.o){if(j.has(t))return;j.add(t),p.c.push(()=>{j.delete(t),i&&(n&&t.d(1),i())}),t.o(e)}else i&&i()}const X={duration:0};function vt(t,e,n){const i={direction:"in"};let l=e(t,n,i),o=!1,u,s,c=0;function r(){u&&I(t,u)}function $(){const{delay:m=0,duration:h=300,easing:a=F,tick:d=v,css:_}=l||X;_&&(u=A(t,0,1,h,m,a,_,c++)),d(0,1);const g=L()+m,b=g+h;s&&s.abort(),o=!0,C(()=>S(t,!0,"start")),s=U(y=>{if(o){if(y>=b)return d(1,0),S(t,!0,"end"),r(),o=!1;if(y>=g){const w=a((y-g)/h);d(w,1-w)}}return o})}let f=!1;return{start(){f||(f=!0,I(t),k(l)?(l=l(i),V().then($)):$())},invalidate(){f=!1},end(){o&&(r(),o=!1)}}}function bt(t,e,n,i){let o=e(t,n,{direction:"both"}),u=i?0:1,s=null,c=null,r=null,$;function f(){r&&I(t,r)}function m(a,d){const _=a.b-u;return d*=Math.abs(_),{a:u,b:a.b,d:_,duration:d,start:a.start,end:a.start+d,group:a.group}}function h(a){const{delay:d=0,duration:_=300,easing:g=F,tick:b=v,css:y}=o||X,w={start:L()+d,b:a};a||(w.group=p,p.r+=1),"inert"in t&&(a?$!==void 0&&(t.inert=$):($=t.inert,t.inert=!0)),s||c?c=w:(y&&(f(),r=A(t,u,a,_,d,g,y)),a&&b(0,1),s=m(w,_),C(()=>S(t,a,"start")),U(R=>{if(c&&R>c.start&&(s=m(c,_),c=null,S(t,s.b,"start"),y&&(f(),r=A(t,u,s.b,s.duration,0,g,o.css))),s){if(R>=s.end)b(u=s.b,1-u),S(t,s.b,"end"),c||(s.b?f():--s.group.r||O(s.group.c)),s=null;else if(R>=s.start){const G=R-s.start;u=s.a+s.d*g(G/s.duration),b(u,1-u)}}return!!(s||c)}))}return{run(a){k(o)?V().then(()=>{o=o({direction:a?"in":"out"}),h(a)}):h(a)},end(){f(),s=c=null}}}function Et(t,e,n){const i=t.$$.props[e];i!==void 0&&(t.$$.bound[i]=n,n(t.$$.ctx[i]))}function St(t){t&&t.c()}function Ot(t,e){t&&t.l(e)}function _t(t,e,n){const{fragment:i,after_update:l}=t.$$;i&&i.m(e,n),C(()=>{const o=t.$$.on_mount.map(st).filter(k);t.$$.on_destroy?t.$$.on_destroy.push(...o):O(o),t.$$.on_mount=[]}),l.forEach(C)}function $t(t,e){const n=t.$$;n.fragment!==null&&(it(n.after_update),O(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function ht(t,e){t.$$.dirty[0]===-1&&(ot.push(t),ft(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{const a=h.length?h[0]:m;return r.ctx&&l(r.ctx[f],r.ctx[f]=a)&&(!r.skip_bound&&r.bound[f]&&r.bound[f](a),$&&ht(t,f)),m}):[],r.update(),$=!0,O(r.before_update),r.fragment=i?i(r.ctx):!1,e.target){if(e.hydrate){rt();const f=et(e.target);r.fragment&&r.fragment.l(f),f.forEach(D)}else r.fragment&&r.fragment.c();e.intro&&dt(t.$$.fragment),_t(t,e.target,e.anchor),at(),nt()}B(c)}class jt{constructor(){z(this,"$$");z(this,"$$set")}$destroy(){$t(this,1),this.$destroy=v}$on(e,n){if(!k(n))return v;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(n),()=>{const l=i.indexOf(n);l!==-1&&i.splice(l,1)}}$set(e){this.$$set&&!Z(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const mt="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(mt);export{jt as S,dt as a,St as b,Ot as c,$t as d,wt as e,bt as f,yt as g,vt as h,Rt as i,Et as j,_t as m,xt as t}; diff --git a/gui/next/build/_app/immutable/chunks/BkeFH9yg.js b/gui/next/build/_app/immutable/chunks/BkeFH9yg.js new file mode 100644 index 0000000..9283bc2 --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/BkeFH9yg.js @@ -0,0 +1 @@ +const p={array:"value_array",boolean:"value_boolean",date:"value",datetime:"value",float:"value_float",integer:"value_int",string:"value",text:"value",upload:"value",json:"value_json"},c={string:"String",integer:"Int",float:"Float",boolean:"Boolean",array:"[String!]",json:"JSONPayload",range:"RangeFilter"},g=l=>{const s=l.entries();let n="",o={},i="",t={};function f(e,r){return r===""?null:e==="integer"?parseInt(r):e==="float"?parseFloat(r):e==="boolean"?r==="true":e==="array"||e==="json"?JSON.parse(r):r}for(const[e,r]of s)if(e.indexOf("[")>=0){let a=e.slice(0,e.indexOf("[")),u=e.slice(e.indexOf("[")+1,e.indexOf("]"));(t[a]??(t[a]={}))[u]=r}for(const e in t)n+=`, $${e}: ${c[t[e].type]||"String"}`,o[e]=f(t[e].type,t[e].value),i+=`{ name: "${e}", ${p[t[e].type]}: $${e} }`;return n.length&&(n=n.slice(2),n=`(${n})`),{variablesDefinition:n,variables:o,properties:i}};export{g as b,c}; diff --git a/gui/next/build/_app/immutable/chunks/C5zjxmar.js b/gui/next/build/_app/immutable/chunks/C5zjxmar.js new file mode 100644 index 0000000..79499db --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/C5zjxmar.js @@ -0,0 +1 @@ +import{s as e}from"./bH_aOImW.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p}; diff --git a/gui/next/build/_app/immutable/chunks/CIy9Z9Qf.js b/gui/next/build/_app/immutable/chunks/CIy9Z9Qf.js new file mode 100644 index 0000000..b09dc89 --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/CIy9Z9Qf.js @@ -0,0 +1,54 @@ +import{g as o}from"./BD1m7lx9.js";const _={get:async e=>{let t="";e!=null&&e.id&&(t=`id: { value: "${e.id}" }`);let a="";e!=null&&e.type&&(a=`type: ${e.type}`);const r=` + query { + admin_background_jobs( + per_page: 20, + page: ${(e==null?void 0:e.page)||1} + filter: { + ${t} + ${a} + } + ) { + has_next_page, + has_previous_page, + total_pages, + results { + id + arguments + attempts + created_at + dead_at + error + error_class + error_message + failed_at + form_configuration_name + form_name + id + label + liquid_body + partial_name + locked_at + queue + resource_id + resource_type + retry_at + run_at + source_name + source_type + started_at + updated_at + } + } + }`;return o({query:r}).then(d=>d.admin_background_jobs)},delete:async e=>{const r=` + mutation { + admin_background_job_delete(id: "${Object.fromEntries(e.properties.entries()).id}") { + id + } + } + `;return o({query:r})},retry:async e=>{const r=` + mutation { + admin_background_job_retry(id: "${Object.fromEntries(e.properties.entries()).id}"){ + id + } + } + `;return o({query:r})}};export{_ as b}; diff --git a/gui/next/build/_app/immutable/chunks/CNoDK8-a.js b/gui/next/build/_app/immutable/chunks/CNoDK8-a.js new file mode 100644 index 0000000..8ccecdf --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/CNoDK8-a.js @@ -0,0 +1,57 @@ +import{g as n}from"./BD1m7lx9.js";import{b as s}from"./BkeFH9yg.js";const p={get:async(e={})=>{let r="",a="";e.value&&(e.attribute==="email"?r+=`${e.attribute}: { contains: "${e.value}" }`:r+=`${e.attribute}: { value: "${e.value}" }`,(e==null?void 0:e.attribute)==="id"&&(e!=null&&e.value)&&(a=` + deleted_at + created_at + external_id + jwt_token + temporary_token + name + first_name + middle_name + last_name + slug + language + `));const t=` + query { + users( + page: ${(e==null?void 0:e.page)??1} + per_page: 50 + sort: { id: { order: DESC } } + filter: { + ${r} + } + ) { + current_page + total_pages + results { + id + email + ${a} + properties + } + } + }`;return n({query:t}).then(u=>u.users)},delete:async e=>{const r=` + mutation { + user_delete(id: ${e}){ id } + } + `;return n({query:r})},create:async(e,r,a)=>{const t=s(a),u=` + mutation${t.variablesDefinition} { + user: user_create(user: { email: "${e}", password: "${r}", properties: [${t.properties}] }) { + id + } + } + `;return n({query:u,variables:t.variables})},edit:async(e,r,a)=>{const t=s(a),u=` + mutation${t.variablesDefinition} { + user_update(user: { email: "${r}", properties: [${t.properties}] }, id: ${e}) { + id + } + } + `;return n({query:u,variables:t.variables})},getCustomProperties:async()=>n({query:` + query { + admin_user_schema { + properties { + attribute_type + name + } + } + } + `}).then(r=>r.admin_user_schema.properties)};export{p as u}; diff --git a/gui/next/build/_app/immutable/chunks/CS29TWE_.js b/gui/next/build/_app/immutable/chunks/CS29TWE_.js new file mode 100644 index 0000000..5c7c090 --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/CS29TWE_.js @@ -0,0 +1 @@ +const o=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;function e(n){return--n*n*n*n*n+1}export{o as g,e as q}; diff --git a/gui/next/build/_app/immutable/chunks/Cpu2L2kn.js b/gui/next/build/_app/immutable/chunks/Cpu2L2kn.js new file mode 100644 index 0000000..50dfa81 --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/Cpu2L2kn.js @@ -0,0 +1 @@ +import{t as G}from"./x4PJc0Qf.js";import{s as Y,d as m,K as H,i as g,w as f,c as j,e as D,h as E,n as M,r as R,a as O,b as C,D as y,g as I,f as q,j as S,t as K,V as Z,J as $}from"./Ul9VwQ7n.js";import{S as x,i as ee,t as A,a as P,g as W,e as X,d as le,h as ae,m as ue,c as te,b as ne}from"./Bh3MJlbi.js";import{f as se}from"./odGh2V91.js";import{I as ie}from"./D-yR0E5w.js";const me=(e,l)=>{const a=n=>{n.composedPath().includes(e)||l(n)};return document.addEventListener("mousedown",a),{destroy(){document.removeEventListener("mousedown",a)}}},pe=(e,l)=>{let a={value:e,type:l};return e==null?(a.value=null,a.type="null",{...a}):(l==="boolean"&&(e===!0?a.value="true":a.value="false"),typeof e=="object"?(a.value=e,a.type="json",{...a}):G(e)?(a.value=G(e),a.type="jsonEscaped",{...a}):{...a,original:{value:e,type:l}})};function oe(e){let l,a=e[2][0].label+"",n,i,o,r,_,v,h,p,t,w,L,s=e[0]===e[2][0].value&&Q();return{c(){l=E("label"),n=K(a),i=S(),s&&s.c(),r=S(),_=E("input"),this.h()},l(c){l=j(c,"LABEL",{for:!0,class:!0});var b=D(l);n=q(b,a),i=I(b),s&&s.l(b),b.forEach(m),r=I(c),_=j(c,"INPUT",{type:!0,name:!0,id:!0,class:!0}),this.h()},h(){f(l,"for",o="toggle-"+e[1]+"-"+e[2][0].value),f(l,"class","svelte-1j5d7bb"),f(_,"type","checkbox"),f(_,"name",e[1]),_.value=v=e[2][0].value,f(_,"id",h="toggle-"+e[1]+"-"+e[2][0].value),_.checked=p=e[0]===e[2][0].value,f(_,"class","svelte-1j5d7bb")},m(c,b){g(c,l,b),C(l,n),C(l,i),s&&s.m(l,null),g(c,r,b),g(c,_,b),t=!0,w||(L=[y(_,"keydown",e[6]),y(_,"change",e[7]),y(_,"change",e[3])],w=!0)},p(c,b){(!t||b&4)&&a!==(a=c[2][0].label+"")&&O(n,a),c[0]===c[2][0].value?s?b&5&&P(s,1):(s=Q(),s.c(),P(s,1),s.m(l,null)):s&&(W(),A(s,1,1,()=>{s=null}),X()),(!t||b&6&&o!==(o="toggle-"+c[1]+"-"+c[2][0].value))&&f(l,"for",o),(!t||b&2)&&f(_,"name",c[1]),(!t||b&4&&v!==(v=c[2][0].value))&&(_.value=v),(!t||b&6&&h!==(h="toggle-"+c[1]+"-"+c[2][0].value))&&f(_,"id",h),(!t||b&5&&p!==(p=c[0]===c[2][0].value))&&(_.checked=p)},i(c){t||(P(s),t=!0)},o(c){A(s),t=!1},d(c){c&&(m(l),m(r),m(_)),s&&s.d(),w=!1,R(L)}}}function fe(e){let l,a,n,i,o,r,_=e[2][0].label+"",v,h,p,t,w,L,s,c,b,B,N,k,T=e[2][1].label+"",U,V,J,z;return{c(){l=E("input"),o=S(),r=E("label"),v=K(_),p=S(),t=E("label"),L=S(),s=E("input"),N=S(),k=E("label"),U=K(T),this.h()},l(u){l=j(u,"INPUT",{type:!0,name:!0,id:!0,class:!0}),o=I(u),r=j(u,"LABEL",{for:!0,class:!0});var d=D(r);v=q(d,_),d.forEach(m),p=I(u),t=j(u,"LABEL",{for:!0,class:!0}),D(t).forEach(m),L=I(u),s=j(u,"INPUT",{type:!0,name:!0,id:!0,class:!0}),N=I(u),k=j(u,"LABEL",{for:!0,class:!0});var F=D(k);U=q(F,T),F.forEach(m),this.h()},h(){f(l,"type","radio"),f(l,"name",e[1]),l.value=a=e[2][0].value,l.checked=n=e[0]===e[2][0].value,f(l,"id",i="toggle-"+e[1]+"-"+e[2][0].value),f(l,"class","svelte-1j5d7bb"),f(r,"for",h="toggle-"+e[1]+"-"+e[2][0].value),f(r,"class","svelte-1j5d7bb"),f(t,"for",w="toggle-"+e[1]+"-"+(e[0]===e[2][0].value?e[2][1].value:e[2][0].value)),f(t,"class","switcher svelte-1j5d7bb"),f(s,"type","radio"),f(s,"name",e[1]),s.value=c=e[2][1].value,s.checked=b=e[0]===e[2][1].value,f(s,"id",B="toggle-"+e[1]+"-"+e[2][1].value),f(s,"class","svelte-1j5d7bb"),f(k,"for",V="toggle-"+e[1]+"-"+e[2][1].value),f(k,"class","svelte-1j5d7bb")},m(u,d){g(u,l,d),g(u,o,d),g(u,r,d),C(r,v),g(u,p,d),g(u,t,d),g(u,L,d),g(u,s,d),g(u,N,d),g(u,k,d),C(k,U),J||(z=[y(l,"keydown",e[4]),y(s,"keydown",e[5])],J=!0)},p(u,d){d&2&&f(l,"name",u[1]),d&4&&a!==(a=u[2][0].value)&&(l.value=a),d&5&&n!==(n=u[0]===u[2][0].value)&&(l.checked=n),d&6&&i!==(i="toggle-"+u[1]+"-"+u[2][0].value)&&f(l,"id",i),d&4&&_!==(_=u[2][0].label+"")&&O(v,_),d&6&&h!==(h="toggle-"+u[1]+"-"+u[2][0].value)&&f(r,"for",h),d&7&&w!==(w="toggle-"+u[1]+"-"+(u[0]===u[2][0].value?u[2][1].value:u[2][0].value))&&f(t,"for",w),d&2&&f(s,"name",u[1]),d&4&&c!==(c=u[2][1].value)&&(s.value=c),d&5&&b!==(b=u[0]===u[2][1].value)&&(s.checked=b),d&6&&B!==(B="toggle-"+u[1]+"-"+u[2][1].value)&&f(s,"id",B),d&4&&T!==(T=u[2][1].label+"")&&O(U,T),d&6&&V!==(V="toggle-"+u[1]+"-"+u[2][1].value)&&f(k,"for",V)},i:M,o:M,d(u){u&&(m(l),m(o),m(r),m(p),m(t),m(L),m(s),m(N),m(k)),J=!1,R(z)}}}function Q(e){let l,a,n,i;return a=new ie({props:{icon:"check"}}),{c(){l=E("i"),ne(a.$$.fragment),this.h()},l(o){l=j(o,"I",{class:!0});var r=D(l);te(a.$$.fragment,r),r.forEach(m),this.h()},h(){f(l,"class","svelte-1j5d7bb")},m(o,r){g(o,l,r),ue(a,l,null),i=!0},i(o){i||(P(a.$$.fragment,o),o&&(n||$(()=>{n=ae(l,se,{delay:50,duration:50}),n.start()})),i=!0)},o(o){A(a.$$.fragment,o),i=!1},d(o){o&&m(l),le(a)}}}function re(e){let l,a,n,i;const o=[fe,oe],r=[];function _(v,h){return v[2].length===2?0:v[2].length===1?1:-1}return~(a=_(e))&&(n=r[a]=o[a](e)),{c(){l=E("div"),n&&n.c(),this.h()},l(v){l=j(v,"DIV",{class:!0});var h=D(l);n&&n.l(h),h.forEach(m),this.h()},h(){f(l,"class","toggle svelte-1j5d7bb"),H(l,"single",e[2].length===1)},m(v,h){g(v,l,h),~a&&r[a].m(l,null),i=!0},p(v,[h]){let p=a;a=_(v),a===p?~a&&r[a].p(v,h):(n&&(W(),A(r[p],1,1,()=>{r[p]=null}),X()),~a?(n=r[a],n?n.p(v,h):(n=r[a]=o[a](v),n.c()),P(n,1),n.m(l,null)):n=null),(!i||h&4)&&H(l,"single",v[2].length===1)},i(v){i||(P(n),i=!0)},o(v){A(n),i=!1},d(v){v&&m(l),~a&&r[a].d()}}}function _e(e,l,a){let{name:n}=l,{options:i=[]}=l,{checked:o=i.length>1?i[0].value.toString():""}=l;function r(t){Z.call(this,e,t)}const _=t=>{t.code==="Space"&&(t.preventDefault(),a(0,o=o===i[0].value?i[1].value:i[0].value))},v=t=>{t.code==="Space"&&(t.preventDefault(),a(0,o=o===i[0].value?i[1].value:i[0].value))},h=t=>{t.code==="Space"&&(t.preventDefault(),a(0,o=o===i[0].value?"":i[0].value))},p=t=>a(0,o=t.target.checked?i[0].value:"");return e.$$set=t=>{"name"in t&&a(1,n=t.name),"options"in t&&a(2,i=t.options),"checked"in t&&a(0,o=t.checked)},[o,n,i,r,_,v,h,p]}class ge extends x{constructor(l){super(),ee(this,l,_e,re,Y,{name:1,options:2,checked:0})}}export{ge as T,me as c,pe as p}; diff --git a/gui/next/build/_app/immutable/chunks/D-yR0E5w.js b/gui/next/build/_app/immutable/chunks/D-yR0E5w.js new file mode 100644 index 0000000..4f0268f --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/D-yR0E5w.js @@ -0,0 +1 @@ +import{s as V,n as M,d as e,i as o,v as i,w as v,b as L,x as t,e as H,y as n}from"./Ul9VwQ7n.js";import{S as C,i as f}from"./Bh3MJlbi.js";function r(s){let h,c;return{c(){h=n("svg"),c=n("path"),this.h()},l(a){h=t(a,"svg",{width:!0,height:!0,viewBox:!0,fill:!0,xmlns:!0});var l=H(h);c=t(l,"path",{d:!0}),H(c).forEach(e),l.forEach(e),this.h()},h(){v(c,"d",s[2]),v(h,"width",s[1]),v(h,"height",s[1]),v(h,"viewBox","0 0 24 24"),v(h,"fill","currentColor"),v(h,"xmlns","http://www.w3.org/2000/svg")},m(a,l){o(a,h,l),L(h,c)},p(a,l){l&4&&v(c,"d",a[2]),l&2&&v(h,"width",a[1]),l&2&&v(h,"height",a[1])},d(a){a&&e(h)}}}function d(s){let h,c=s[0]&&r(s);return{c(){c&&c.c(),h=i()},l(a){c&&c.l(a),h=i()},m(a,l){c&&c.m(a,l),o(a,h,l)},p(a,[l]){a[0]?c?c.p(a,l):(c=r(a),c.c(),c.m(h.parentNode,h)):c&&(c.d(1),c=null)},i:M,o:M,d(a){a&&e(h),c&&c.d(a)}}}function A(s,h,c){let a,{icon:l=!1}=h,{size:m=24}=h;const Z={database:"M12 24c-6.841 0-12-2.257-12-5.25V5.251C0 2.258 5.159.001 12 .001s12 2.257 12 5.25V18.75C24 21.743 18.841 24 12 24zM1.5 18.75c0 1.533 3.739 3.75 10.5 3.75s10.5-2.217 10.5-3.75v-4.137c-2.053 1.622-6.023 2.637-10.5 2.637s-8.446-1.016-10.5-2.637v4.137zm0-6.75c0 1.533 3.739 3.75 10.5 3.75S22.5 13.533 22.5 12V7.863C20.446 9.485 16.477 10.5 12 10.5S3.554 9.485 1.5 7.863V12zM12 1.501c-6.761 0-10.5 2.217-10.5 3.75s3.739 3.75 10.5 3.75 10.5-2.217 10.5-3.75-3.739-3.75-10.5-3.75z",users:"M4.5 9c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3Zm0-4.5C3.67 4.5 3 5.17 3 6s.67 1.5 1.5 1.5S6 6.83 6 6s-.67-1.5-1.5-1.5ZM3 22.5c-.38 0-.7-.28-.74-.66l-.67-5.34H.75c-.41 0-.75-.34-.75-.75V13.5C0 11.02 2.02 9 4.5 9c.41 0 .75.34.75.75s-.34.75-.75.75c-1.65 0-3 1.35-3 3V15h.75c.38 0 .7.28.74.66L3.66 21H6c.41 0 .75.34.75.75s-.34.75-.75.75H3ZM19.5 9c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3Zm0-4.5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5S21 6.83 21 6s-.67-1.5-1.5-1.5Zm-1.5 18c-.41 0-.75-.34-.75-.75s.34-.75.75-.75h2.34l.67-5.34c.05-.38.37-.66.74-.66h.75v-1.5c0-1.65-1.35-3-3-3-.41 0-.75-.34-.75-.75s.34-.75.75-.75c2.48 0 4.5 2.02 4.5 4.5v2.25c0 .41-.34.75-.75.75h-.84l-.67 5.34c-.05.38-.37.66-.74.66h-3Zm-6-15c-2.07 0-3.75-1.68-3.75-3.75S9.93 0 12 0s3.75 1.68 3.75 3.75S14.07 7.5 12 7.5Zm0-6c-1.24 0-2.25 1.01-2.25 2.25S10.76 6 12 6s2.25-1.01 2.25-2.25S13.24 1.5 12 1.5ZM9.75 24a.75.75 0 0 1-.75-.67l-.68-6.83H6.75c-.41 0-.75-.34-.75-.75V13.5c0-3.31 2.69-6 6-6s6 2.69 6 6v2.25c0 .41-.34.75-.75.75h-1.57L15 23.33a.75.75 0 0 1-.75.67h-4.5Zm3.82-1.5.68-6.82c.04-.38.36-.68.75-.68h1.5v-1.5c0-2.48-2.02-4.5-4.5-4.5s-4.5 2.02-4.5 4.5V15H9c.39 0 .71.29.75.68l.68 6.82h3.14Z",log:"m5.25,24c-1.24,0-2.25-1.01-2.25-2.25v-3c0-.41.34-.75.75-.75s.75.34.75.75v3c0,.41.34.75.75.75h13.5c.41,0,.75-.34.75-.75v-3c0-.41.34-.75.75-.75s.75.34.75.75v3c0,1.24-1.01,2.25-2.25,2.25H5.25Zm15-10.5c-.41,0-.75-.34-.75-.75v-7.5c0-.41-.34-.75-.75-.75h-2.25v1.5c0,.83-.67,1.5-1.5,1.5h-6c-.83,0-1.5-.67-1.5-1.5v-1.5h-2.25c-.41,0-.75.34-.75.75v7.5c0,.41-.34.75-.75.75s-.75-.34-.75-.75v-7.5c0-1.24,1.01-2.25,2.25-2.25h2.25c0-.83.67-1.5,1.5-1.5h.31c.52-.92,1.5-1.5,2.56-1.5.04,0,.08,0,.12,0,.04,0,.09,0,.13,0,1.07,0,2.05.58,2.56,1.5h.31c.83,0,1.5.67,1.5,1.5h2.25c1.24,0,2.25,1.01,2.25,2.25v7.5c0,.41-.34.75-.75.75Zm-11.25-7.5h6v-3h-.8c-.32,0-.61-.21-.71-.51-.19-.59-.74-.99-1.37-.99-.03,0-.05,0-.08,0,0,0-.04,0-.04,0-.01,0-.09,0-.11,0-.62,0-1.18.4-1.37.99-.1.31-.39.52-.71.52h-.8v3Zm3.04,13.63c-.17,0-.34-.04-.49-.11-.27-.13-.47-.36-.57-.65l-2.08-5.73-1.37,2.73c-.19.38-.58.62-1.01.62H.75c-.41,0-.75-.34-.75-.75s.34-.75.75-.75h5.54l1.65-3.31c.13-.27.37-.47.65-.56.12-.04.24-.06.36-.06.17,0,.35.04.5.12.26.13.46.35.56.62l2.07,5.69,1.93-4.33c.18-.41.59-.67,1.03-.67.16,0,.31.03.46.1.24.11.43.29.55.52l.94,1.88h6.28c.41,0,.75.34.75.75s-.34.75-.75.75h-6.51c-.43,0-.81-.24-1.01-.62l-.69-1.37-1.98,4.45c-.12.28-.36.51-.67.61-.12.04-.24.06-.36.06Z",logFresh:"M5.25 24C4.01 24 3 22.99 3 21.75v-3c0-.41.34-.75.75-.75s.75.34.75.75v3c0 .41.34.75.75.75h13.5c.41 0 .75-.34.75-.75v-3c0-.41.34-.75.75-.75s.75.34.75.75v3c0 1.24-1.01 2.25-2.25 2.25H5.25Zm15-10.5c-.41 0-.75-.34-.75-.75v-7.5c0-.41-.34-.75-.75-.75H16.5V6c0 .83-.67 1.5-1.5 1.5H9c-.83 0-1.5-.67-1.5-1.5V4.5H5.25c-.41 0-.75.34-.75.75v7.5c0 .41-.34.75-.75.75S3 13.16 3 12.75v-7.5C3 4.01 4.01 3 5.25 3H7.5c0-.83.67-1.5 1.5-1.5h.31C9.83.58 10.81 0 11.88 0h.25c1.06 0 2.04.58 2.56 1.5H15c.83 0 1.5.67 1.5 1.5h2.25C19.99 3 21 4.01 21 5.25v7.5c0 .41-.34.75-.75.75ZM9 6h6V3h-.8c-.32 0-.61-.21-.71-.51-.19-.59-.74-.99-1.37-.99H11.89c-.62 0-1.18.4-1.37.99a.75.75 0 0 1-.71.52h-.8v3ZM7.14 20.55c-.1 0-.19-.02-.28-.06-.19-.08-.33-.22-.41-.4s-.08-.39 0-.57c.37-.9.8-1.72 1.27-2.42-.78-1.12-1.09-2.25-.92-3.27.19-1.07.9-1.99 2.06-2.65 1.41-.74 2.99-1.12 4.58-1.12s3.04.36 4.39 1.03c.2.1.35.28.4.51s0 .45-.14.63c-.41.52-.69 1.48-1 2.49-.68 2.26-1.61 5.36-4.93 5.66-.1 0-.2.01-.29.01-1.55 0-2.64-1.12-3.23-1.94-.29.5-.56 1.05-.81 1.65-.12.28-.39.47-.7.47Zm2.43-3.43c.26.44 1.11 1.76 2.3 1.76h.15c2.31-.21 2.95-2.34 3.62-4.6.24-.79.46-1.53.76-2.17-.95-.36-1.95-.55-2.98-.55-1.34 0-2.68.33-3.86.94-.75.43-1.19.96-1.3 1.59-.09.52.06 1.12.42 1.76 1.48-1.59 2.82-1.8 2.97-1.82h.09c.38 0 .7.28.75.66.05.41-.24.78-.65.84s-.55.09-1.29.65c-.34.26-.68.58-1 .95Z",backgroundJob:"M23.6 7.3v.3c0 .1-.1.2-.2.3l-3 3c-.2.1-.4.1-.6.1-.2 0-.4-.1-.5-.2-.1-.1-.2-.3-.2-.5s.1-.4.2-.5L21 8H1.2c-.4 0-.8-.4-.8-.8s.3-.9.8-.9H21l-1.7-1.5c-.1-.1-.2-.3-.2-.5s.1-.4.2-.5c.1-.1.3-.2.5-.2s.4.1.5.2l3 3c.1.1.1.2.2.2.1.1.1.2.1.3zM4 10.4c-.4 0-.7.3-.7.7-.1 1.1 0 2.2.3 3.3 0 .4.3.6.7.6h.2c.4-.1.6-.5.5-.9-.2-.9-.3-1.9-.2-2.8 0-.5-.3-.8-.8-.9.1 0 0 0 0 0zm2.6 5.3c-.3 0-.6.2-.7.6-.1.4.2.8.6.9.8.2 1.6.3 2.4.3h.9c.4 0 .7-.4.7-.8s-.4-.7-.7-.7H9c-.7 0-1.4-.1-2.1-.2-.2-.1-.2-.1-.3-.1zm9.8-2.7c-.2 0-.4.1-.5.2-.1.1-.2.3-.2.5s.1.4.2.5l1.7 1.7h-3.4c-.4 0-.8.3-.8.8 0 .4.3.8.8.8h3.4l-1.7 1.7c-.1.1-.2.3-.2.5s.1.4.2.5c.1.1.3.2.5.2s.4-.1.5-.2l3-3c.1-.1.1-.2.2-.2v-.6c0-.1-.1-.2-.2-.3l-3-3c-.2-.1-.3-.1-.5-.1z",constant:"M3 24C1.76 24 .75 22.99.75 21.75V2.25C.75 1.01 1.76 0 3 0h15.05c.59 0 1.15.23 1.57.64l2.95 2.88c.43.42.68 1.01.68 1.61v16.62c0 1.24-1.01 2.25-2.25 2.25H3ZM3 1.5c-.41 0-.75.34-.75.75v19.5c0 .41.34.75.75.75h18c.41 0 .75-.34.75-.75V5.14c0-.2-.08-.4-.23-.54l-2.95-2.88a.734.734 0 0 0-.52-.21H3Zm6.65 16.56c-1.12 0-2.06-.87-2.15-1.99v-1.31c0-.16-.11-.33-.27-.41l-1.61-.92c-.23-.13-.38-.38-.38-.65s.14-.52.38-.65l1.58-.91c.18-.1.29-.26.29-.45V9.48a2.173 2.173 0 0 1 2.15-1.99h.85a.749.749 0 1 1 0 1.5h-.85a.65.65 0 0 0-.65.58v1.21c-.02.74-.43 1.4-1.07 1.74l-.43.25.45.26c.62.33 1.02.98 1.04 1.7v1.23c.04.33.32.58.66.58h.84c.41 0 .75.34.75.75s-.34.75-.75.75h-.85Zm4.69 0h-.85c-.41 0-.75-.34-.75-.75s.34-.75.75-.75H14.34c.34 0 .62-.25.66-.58v-1.21c.02-.74.43-1.4 1.07-1.74l.43-.25-.45-.26c-.62-.33-1.02-.98-1.04-1.71V9.58a.658.658 0 0 0-.65-.58h-.85c-.41 0-.75-.34-.75-.75s.34-.75.75-.75h.85c1.12 0 2.06.87 2.15 1.99v1.31c0 .16.11.33.27.41l1.6.92c.23.13.38.38.38.65s-.14.52-.38.65l-1.58.91c-.18.1-.29.26-.29.45v1.29a2.165 2.165 0 0 1-2.15 1.99Z",graphql:"M21 14.9V9.1c.9-.2 1.6-1.1 1.6-2.1 0-1.2-1-2.1-2.1-2.1-.6 0-1.2.3-1.5.7l-5-2.9c.1-.2.1-.4.1-.6C14.1 1 13.2 0 12 0S9.9 1 9.9 2.1c0 .2 0 .4.1.6L5 5.6c-.4-.4-.9-.7-1.5-.7-1.2 0-2.1 1-2.1 2.1 0 1 .7 1.8 1.6 2.1v5.7c-.9.2-1.6 1.1-1.6 2.1 0 1.2 1 2.1 2.1 2.1.6 0 1.2-.3 1.5-.7l5 2.9c-.1.2-.1.4-.1.6 0 1.2 1 2.1 2.1 2.1s2.1-1 2.1-2.1c0-.2 0-.4-.1-.6l5-2.9c.4.4.9.7 1.5.7 1.2 0 2.1-1 2.1-2.1.1-1-.6-1.8-1.6-2zm-17 0V9.1C4.9 8.9 5.6 8 5.6 7c0-.2 0-.4-.1-.6l5-2.9.1.1L4 14.9zm9.5 5.5c-.4-.4-.9-.7-1.5-.7s-1.2.3-1.5.7l-5-2.9v-.1h12.9v.1l-4.9 2.9zm5-4h-13c-.1-.4-.3-.8-.6-1l6.5-11.2c.2.1.4.1.6.1s.4 0 .6-.1l6.5 11.2c-.3.3-.5.6-.6 1zm1.5-1.5L13.5 3.7l.1-.1 5 2.9c-.1.2-.1.4-.1.6 0 1 .7 1.8 1.6 2.1v5.7z",liquid:"M12 24c-2.3 0-4.4-.9-6.1-2.5-1.7-1.6-2.6-3.8-2.6-6.1v-.3C3.3 8.6 9.7 0 12 0c2.3 0 8.7 8.6 8.7 15.1.1 4.8-3.8 8.8-8.6 8.9H12zm0-22.3C10.5 3 4.8 10 4.8 15.1v.2c.1 3.4 3.8 7.1 7.2 7.1h.1c3.4-.1 7.2-3.9 7.1-7.3C19.2 10 13.5 3 12 1.7zm-1 18.2c-2.1 0-3.8-1.7-3.8-3.8 0-.7.3-1.2.9-1.2s.7.7.7 1.4 1.1 1.8 1.8 1.8 1.1.4 1.1.8c.1.7 0 1-.7 1z",arrowRight:"M12.75 23.25a.752.752 0 0 1-.53-1.281l9.22-9.22H.75a.749.749 0 1 1 0-1.499h20.689l-9.22-9.22A.746.746 0 0 1 12.22.97c.141-.142.33-.22.53-.22s.389.078.53.22l10.5 10.5a.74.74 0 0 1 .163.245l.01.026a.73.73 0 0 1 0 .517l-.006.016a.755.755 0 0 1-.168.257L13.28 23.03a.743.743 0 0 1-.53.22z",arrowLeft:"M11.25 23.25a.743.743 0 0 1-.53-.22L.22 12.53a.74.74 0 0 1-.163-.245l-.01-.026a.75.75 0 0 1 .009-.541.74.74 0 0 1 .166-.249L10.72.97a.744.744 0 0 1 1.06 0c.142.141.22.33.22.53s-.078.389-.22.53l-9.22 9.22h20.69a.75.75 0 0 1 0 1.5H2.561l9.22 9.22a.75.75 0 0 1-.531 1.28z",arrowDown:"M12 18.999c-.4 0-.776-.156-1.059-.438L.22 7.841A.745.745 0 0 1 0 7.31c0-.2.078-.389.22-.53a.744.744 0 0 1 1.06 0L12 17.499 22.72 6.78a.744.744 0 0 1 1.06 0 .744.744 0 0 1 0 1.06L13.06 18.56a1.487 1.487 0 0 1-1.06.439z",arrowTripleUp:"M19 10.3c-.4 0-.8-.1-1.1-.3l-6.1-3.9L5.7 10c-.3.2-.7.3-1.1.3-.4 0-.7 0-1-.2-.5-.3-.8-.7-.8-1.3V6.4c0-.8.4-1.4 1.1-1.8L10.7.3c.3-.2.7-.3 1.1-.3s.7.1 1.1.3l6.9 4.4c.6.3 1 1 1 1.7v2.4c0 .5-.3 1-.8 1.3-.3.2-.6.2-1 .2ZM4.3 8.8h.6l6.5-4.2c.1 0 .3-.1.4-.1s.3 0 .4.1l6.5 4.2h.6V6.5c0-.2-.1-.4-.3-.5l-7-4.4h-.6L4.6 6c-.2.1-.3.3-.4.5v2.3Zm14.7 10c-.4 0-.8-.1-1.1-.3l-6.1-3.9-6.1 3.9c-.3.2-.7.3-1.1.3s-.7 0-1-.2c-.5-.3-.8-.7-.8-1.3v-1.8c0-.8.4-1.4 1.1-1.8l6.8-4.3c.3-.2.7-.3 1.1-.3s.7.1 1.1.3l6.9 4.4c.6.3 1 1 1 1.7v1.8c0 .5-.3 1-.8 1.2-.3.2-.6.3-1 .3Zm-7.2-5.9c.1 0 .3 0 .4.1l6.5 4.2h.6v-1.7c0-.2-.1-.4-.3-.5l-6.9-4.4h-.6L4.7 15c-.2.1-.3.3-.4.5v1.7h.6l6.5-4.2c.1 0 .3-.1.4-.1ZM4.2 24c-.2 0-.5-.1-.6-.3-.1-.2-.2-.4-.1-.6s.1-.4.3-.5l7.5-5.2c.1 0 .3-.1.4-.1s.3 0 .4.1l7.5 5.2c.2.1.3.3.3.5s0 .4-.1.6c-.1.2-.4.3-.6.3s-.3 0-.4-.1L11.7 19l-7.1 4.9c-.1 0-.3.1-.4.1Z",search:"M23.245 23.996a.743.743 0 0 1-.53-.22L16.2 17.26a9.824 9.824 0 0 1-2.553 1.579 9.766 9.766 0 0 1-7.51.069 9.745 9.745 0 0 1-5.359-5.262c-1.025-2.412-1.05-5.08-.069-7.51S3.558 1.802 5.97.777a9.744 9.744 0 0 1 7.51-.069 9.745 9.745 0 0 1 5.359 5.262 9.748 9.748 0 0 1 .069 7.51 9.807 9.807 0 0 1-1.649 2.718l6.517 6.518a.75.75 0 0 1-.531 1.28zM9.807 1.49a8.259 8.259 0 0 0-3.25.667 8.26 8.26 0 0 0-4.458 4.54 8.26 8.26 0 0 0 .058 6.362 8.26 8.26 0 0 0 4.54 4.458 8.259 8.259 0 0 0 6.362-.059 8.285 8.285 0 0 0 2.594-1.736.365.365 0 0 1 .077-.076 8.245 8.245 0 0 0 1.786-2.728 8.255 8.255 0 0 0-.059-6.362 8.257 8.257 0 0 0-4.54-4.458 8.28 8.28 0 0 0-3.11-.608z",x:"M19.5 20.25a.743.743 0 0 1-.53-.22L12 13.061l-6.97 6.97a.744.744 0 0 1-1.06 0 .752.752 0 0 1 0-1.061L10.94 12 3.97 5.03c-.142-.141-.22-.33-.22-.53s.078-.389.22-.53c.141-.142.33-.22.53-.22s.389.078.53.22L12 10.94l6.97-6.97a.744.744 0 0 1 1.06 0c.142.141.22.33.22.53s-.078.389-.22.53L13.061 12l6.97 6.97a.75.75 0 0 1-.531 1.28z",plus:"M12 24a.75.75 0 0 1-.75-.75v-10.5H.75a.75.75 0 0 1 0-1.5h10.5V.75a.75.75 0 0 1 1.5 0v10.5h10.5a.75.75 0 0 1 0 1.5h-10.5v10.5A.75.75 0 0 1 12 24z",minus:"M.8 12.8c-.5 0-.8-.4-.8-.8s.3-.8.8-.8h22.5c.4 0 .8.3.8.8s-.3.8-.8.8H.8z",check:"M6.347 24.003a2.95 2.95 0 0 1-2.36-1.187L.15 17.7a.748.748 0 0 1 .6-1.2c.235 0 .459.112.6.3l3.839 5.118a1.442 1.442 0 0 0 1.42.562c.381-.068.712-.281.933-.599L22.636.32a.748.748 0 1 1 1.228.86L8.772 22.739a2.93 2.93 0 0 1-1.9 1.217c-.173.031-.35.047-.525.047z",list:"M8.25 4.498a.75.75 0 0 1 0-1.5h15a.75.75 0 0 1 0 1.5h-15zM8.25 13.498a.75.75 0 0 1 0-1.5h15a.75.75 0 0 1 0 1.5h-15zM8.25 22.498a.75.75 0 0 1 0-1.5h15a.75.75 0 0 1 0 1.5h-15zM1.5 5.998c-.827 0-1.5-.673-1.5-1.5v-3c0-.827.673-1.5 1.5-1.5h3c.827 0 1.5.673 1.5 1.5v3c0 .827-.673 1.5-1.5 1.5h-3zm0-1.5h3v-3h-3v3zM1.5 14.998c-.827 0-1.5-.673-1.5-1.5v-3c0-.827.673-1.5 1.5-1.5h3c.827 0 1.5.673 1.5 1.5v3c0 .827-4.5 1.5-4.5 1.5zm0-1.5h3v-3h-3v3zM1.5 23.998c-.827 0-1.5-.673-1.5-1.5v-3c0-.827.673-1.5 1.5-1.5h3c.827 0 1.5.673 1.5 1.5v3c0 .827-.673 1.5-1.5 1.5h-3zm0-1.5h3v-3h-3v3z",tiles:"M2.25 10.497A2.252 2.252 0 0 1 0 8.247v-6a2.252 2.252 0 0 1 2.25-2.25h6a2.252 2.252 0 0 1 2.25 2.25v6a2.252 2.252 0 0 1-2.25 2.25h-6zm0-9a.75.75 0 0 0-.75.75v6c0 .414.336.75.75.75h6a.75.75 0 0 0 .75-.75v-6a.75.75 0 0 0-.75-.75h-6zM2.25 23.997A2.252 2.252 0 0 1 0 21.747v-6a2.252 2.252 0 0 1 2.25-2.25h6a2.252 2.252 0 0 1 2.25 2.25v6a2.252 2.252 0 0 1-2.25 2.25h-6zm0-9a.75.75 0 0 0-.75.75v6c0 .414.336.75.75.75h6a.75.75 0 0 0 .75-.75v-6a.75.75 0 0 0-.75-.75h-6zM15.75 10.497a2.252 2.252 0 0 1-2.25-2.25v-6a2.252 2.252 0 0 1 2.25-2.25h6A2.252 2.252 0 0 1 24 2.247v6a2.252 2.252 0 0 1-2.25 2.25h-6zm0-9a.75.75 0 0 0-.75.75v6c0 .414.336.75.75.75h6a.75.75 0 0 0 .75-.75v-6a.75.75 0 0 0-.75-.75h-6zM15.75 23.997a2.252 2.252 0 0 1-2.25-2.25v-6a2.252 2.252 0 0 1 2.25-2.25h6a2.252 2.252 0 0 1 2.25 2.25v6a2.252 2.252 0 0 1-2.25 2.25h-6zm0-9a.75.75 0 0 0-.75.75v6c0 .414.336.75.75.75h6a.75.75 0 0 0 .75-.75v-6a.75.75 0 0 0-.75-.75h-6z",pencil:"M.748 24a.755.755 0 0 1-.531-.22.754.754 0 0 1-.196-.716l1.77-6.905a.84.84 0 0 1 .045-.121.73.73 0 0 1 .151-.223L16.513 1.289A4.355 4.355 0 0 1 19.611 0c1.178 0 2.277.454 3.106 1.279l.029.029a4.367 4.367 0 0 1 1.251 3.121 4.356 4.356 0 0 1-1.32 3.087L8.183 22.01a.735.735 0 0 1-.231.154.784.784 0 0 1-.111.042L.933 23.978A.773.773 0 0 1 .748 24zm1.041-1.791 4.41-1.131-3.281-3.275-1.129 4.406zm5.868-1.795 13.02-13.02-4.074-4.074L3.58 16.344l4.077 4.07zM21.736 6.332a2.893 2.893 0 0 0-.059-3.972l-.02-.02a2.872 2.872 0 0 0-2.037-.84v-.375l-.001.375a2.873 2.873 0 0 0-1.954.762l4.071 4.07z",expand:"M23.25 7.498a.75.75 0 0 1-.75-.75V2.559l-3.97 3.97a.746.746 0 0 1-1.06-.001c-.142-.141-.22-.33-.22-.53s.078-.389.22-.53l3.97-3.97h-4.19a.75.75 0 0 1 0-1.5h6a.735.735 0 0 1 .293.06.75.75 0 0 1 .4.404l.01.026c.03.082.047.17.047.26v6a.75.75 0 0 1-.75.75zM.75 23.998a.755.755 0 0 1-.26-.047l-.022-.008A.754.754 0 0 1 0 23.248v-6a.75.75 0 0 1 1.5 0v4.189l3.97-3.97a.744.744 0 0 1 1.06 0 .752.752 0 0 1 0 1.061l-3.97 3.97h4.19a.75.75 0 0 1 0 1.5h-6zM.75 7.498a.75.75 0 0 1-.75-.75v-6A.74.74 0 0 1 .048.487L.055.466a.754.754 0 0 1 .41-.411L.49.045a.737.737 0 0 1 .26-.047h6a.75.75 0 0 1 0 1.5H2.561l3.97 3.97c.142.141.22.33.22.53s-.078.389-.22.53a.747.747 0 0 1-1.061 0L1.5 2.559v4.189a.75.75 0 0 1-.75.75zM17.25 23.998a.75.75 0 0 1 0-1.5h4.189l-3.97-3.97a.752.752 0 0 1 .53-1.281c.2 0 .389.078.53.22l3.97 3.97v-4.189a.75.75 0 0 1 1.501 0v6a.767.767 0 0 1-.046.258l-.006.017a.763.763 0 0 1-.412.419l-.026.01a.73.73 0 0 1-.259.047H17.25zM9 16.498c-.827 0-1.5-.673-1.5-1.5v-6c0-.827.673-1.5 1.5-1.5h6c.827 0 1.5.673 1.5 1.5v6c0 .827-.673 1.5-1.5 1.5H9zm0-1.5h6v-6H9v6z",collapse:"M17.25 7.498a.735.735 0 0 1-.261-.048l-.032-.012a.75.75 0 0 1-.4-.404l-.01-.026a.739.739 0 0 1-.047-.26v-6a.75.75 0 0 1 1.5 0v4.189l4.72-4.72a.744.744 0 0 1 1.06 0 .747.747 0 0 1 0 1.061l-4.72 4.72h4.189a.75.75 0 0 1 0 1.5H17.25zM6.75 23.998a.75.75 0 0 1-.75-.75v-4.189l-4.72 4.72a.744.744 0 0 1-1.06 0 .752.752 0 0 1 0-1.061l4.72-4.72H.75a.75.75 0 0 1 0-1.5h6c.088 0 .175.016.26.047l.022.008a.756.756 0 0 1 .468.695v6a.75.75 0 0 1-.75.75zM23.25 23.998a.743.743 0 0 1-.53-.22L18 19.059v4.189a.75.75 0 0 1-1.5 0v-6c0-.087.016-.174.046-.258l.006-.017a.763.763 0 0 1 .412-.419l.026-.01a.733.733 0 0 1 .259-.047h6a.75.75 0 0 1 0 1.5H19.06l4.72 4.72a.752.752 0 0 1-.53 1.281zM.75 7.498a.75.75 0 0 1 0-1.5h4.189l-4.72-4.72A.746.746 0 0 1 .22.218c.141-.142.33-.22.53-.22s.389.078.53.22L6 4.938V.748a.75.75 0 0 1 1.5 0v6a.735.735 0 0 1-.048.261l-.007.021a.76.76 0 0 1-.695.468h-6zM9 16.498c-.827 0-1.5-.673-1.5-1.5v-6c0-.827.673-1.5 1.5-1.5h6c.827 0 1.5.673 1.5 1.5v6c0 .827-.673 1.5-1.5 1.5H9zm0-1.5h6v-6H9v6z",eye:"M11.8 19.5c-4.3 0-8.6-3-11.2-5.9-.8-.9-.8-2.3 0-3.2 2.6-2.8 6.9-5.9 11.2-5.9h.4c4.3 0 8.6 3 11.2 5.9.8.9.8 2.3 0 3.2-2.6 2.8-6.9 5.9-11.2 5.9h-.4zM11.9 6C8 6 4.1 8.8 1.7 11.4c-.3.3-.3.9 0 1.2C4.1 15.2 8 18 11.9 18h.2c3.9 0 7.8-2.8 10.1-5.4.3-.3.3-.9 0-1.2C19.9 8.8 16 6 12.1 6h-.2zm.1 10.5c-1.2 0-2.3-.5-3.2-1.3s-1.3-2-1.3-3.2c0-2.5 2-4.5 4.5-4.5 1.2 0 2.3.5 3.2 1.3.8.9 1.3 2 1.3 3.2 0 1.2-.5 2.3-1.3 3.2-.9.8-2 1.3-3.2 1.3zM12 9c-1.7 0-3 1.3-3 3 0 .8.3 1.6.9 2.1.6.6 1.3.9 2.1.9s1.6-.3 2.1-.9.9-1.3.9-2.1-.3-1.6-.9-2.1c-.5-.6-1.3-.9-2.1-.9z",eyeStriked:"M2.8 21.8c-.2 0-.4-.1-.5-.2-.2-.2-.3-.4-.3-.6 0-.2.1-.4.2-.5L21 2.5c.1-.1.3-.2.5-.2s.4.1.5.2c.1.1.2.3.2.5s-.1.4-.2.5l-18.8 18c0 .2-.2.3-.4.3zm9.2-1.6h-.1c-1 0-2.1-.2-3.1-.5-.4-.1-.6-.5-.5-.9.1-.3.4-.5.7-.5h.2c.9.3 1.8.4 2.7.4h.2c3.9 0 7.8-2.8 10.1-5.4.3-.3.3-.9 0-1.2-.9-1-1.9-1.9-3-2.7-.1 0-.2-.2-.2-.4s0-.4.1-.6c.1-.2.4-.3.6-.3.2 0 .3.1.4.1 1.2.8 2.2 1.8 3.2 2.9.8.9.8 2.3 0 3.2-2.6 2.8-6.9 5.9-11.2 5.9H12zM3.8 17c-.2 0-.3-.1-.5-.2-1-.7-1.9-1.6-2.7-2.5-.8-.9-.8-2.3 0-3.2 2.6-2.8 6.9-5.9 11.2-5.9h.2c.8 0 1.7.1 2.5.3.4.1.6.5.5.9.1.4-.2.6-.6.6h-.2c-.7-.2-1.4-.3-2.1-.3h-.2C8 6.8 4.1 9.5 1.7 12.1c-.3.3-.3.9 0 1.2.8.8 1.6 1.6 2.5 2.3.2.1.3.3.3.5s0 .4-.2.6c-.1.2-.3.3-.5.3zm4.4-3.5c-.4 0-.8-.3-.8-.8 0-1.2.5-2.3 1.3-3.2s2-1.3 3.2-1.3c.2 0 .4.2.4.4v.8c0 .1 0 .2-.1.3s-.1.1-.2.1c-.8 0-1.6.3-2.1.9-.6.5-.9 1.2-.9 2.1 0 .2-.1.4-.2.5-.2.1-.4.2-.6.2zm3.8 3.7c-.2 0-.4-.2-.4-.4V16c0-.1 0-.2.1-.3.1-.1.2-.1.3-.1.8 0 1.6-.3 2.1-.9.6-.6.9-1.3.9-2.1 0-.4.3-.8.8-.8s.8.3.8.8c0 1.2-.5 2.3-1.3 3.2-1 1-2.1 1.4-3.3 1.4z",book:"M12 23.999a.755.755 0 0 1-.548-.238c-.017-.017-2.491-2.398-10.212-2.494A1.26 1.26 0 0 1 0 20.025V4.249c0-.334.137-.659.375-.892.242-.232.557-.358.89-.358 5.718.073 8.778 1.302 10.258 2.199a6.773 6.773 0 0 1 1.572-2.664A8.513 8.513 0 0 1 17.071.055a1.346 1.346 0 0 1 1.1.153c.353.218.57.6.579 1.02v2.053A31.709 31.709 0 0 1 22.727 3 1.259 1.259 0 0 1 24 4.245v15.772a1.265 1.265 0 0 1-1.243 1.25c-7.724.096-10.193 2.478-10.217 2.502l-.031.03a.742.742 0 0 1-.509.2zM1.5 19.771c5.263.097 8.233 1.194 9.75 2.037V6.826c-.72-.546-3.417-2.201-9.75-2.323v15.268zm17.25-2.926a.751.751 0 0 1-.598.734 7.44 7.44 0 0 0-3.967 2.238 5.3 5.3 0 0 0-1.15 1.838c1.58-.81 4.502-1.794 9.464-1.885V4.502a30.64 30.64 0 0 0-3.75.292v12.051zm-6 2.334c.11-.135.225-.266.345-.39a8.92 8.92 0 0 1 4.155-2.533V1.569a7.055 7.055 0 0 0-3.057 1.986 5.343 5.343 0 0 0-1.443 2.997v12.627z",serverSettings:"M5.3 4.1c.6 0 1.1.5 1.1 1.1s-.5 1.2-1.1 1.2-1.2-.5-1.2-1.1.5-1.2 1.2-1.2zm0 9c.6 0 1.1.5 1.1 1.1s-.5 1.1-1.1 1.1-1.1-.5-1.1-1.1.4-1.1 1.1-1.1zm0 6.4c-2.9 0-5.2-2.4-5.2-5.2 0-1.9 1-3.6 2.5-4.5C1 8.8 0 7.1 0 5.3 0 2.4 2.4 0 5.3 0h12c1.4 0 2.7.5 3.7 1.5s1.5 2.3 1.5 3.7c0 1.3-.5 2.5-1.3 3.5-.1.2-.3.3-.6.3-.2 0-.4-.1-.5-.2-.2-.1-.2-.3-.3-.5s.1-.4.2-.5c.7-.8 1-1.6 1-2.6s-.4-1.9-1.1-2.7c-.7-.7-1.6-1.1-2.7-1.1h-12c-2.1 0-3.8 1.7-3.8 3.8S3.2 9 5.3 9h7.4c.4 0 .8.3.8.8s-.3.8-.8.8H5.3c-2.1 0-3.8 1.7-3.8 3.8S3.2 18 5.3 18h3c.4 0 .7.3.7.8s-.3.8-.8.8l-2.9-.1zM10.5 6c-.4 0-.8-.3-.8-.8s.3-.8.8-.8h6.7c.4 0 .8.3.8.8s-.3.8-.7.8h-6.8zm6.8 12.8c-1.2 0-2.2-1-2.2-2.2s1-2.2 2.2-2.2 2.2 1 2.2 2.2-1 2.2-2.2 2.2zm0-3c-.4 0-.8.3-.8.7s.3.8.8.8.8-.3.8-.8-.4-.7-.8-.7zm0 8.2c-.2 0-.4 0-.6-.1-.7-.2-1.2-.7-1.4-1.4l-.4-1.4c0-.1-.1-.2-.2-.2h-.1l-1.5.3c-.2 0-.3.1-.5.1-.4 0-.8-.1-1.1-.3-.5-.3-.8-.8-.9-1.3-.2-.7 0-1.4.5-1.9l1-1.1c.1-.1.1-.2 0-.3l-1-1.1c-.4-.4-.6-.9-.6-1.5s.3-1.1.7-1.5c.4-.4.9-.6 1.4-.6.2 0 .3 0 .5.1l1.5.3h.1c.1 0 .2-.1.2-.2l.4-1.5c.2-.5.5-1 1-1.2.3-.2.6-.2 1-.2.2 0 .4 0 .6.1.7.2 1.2.7 1.4 1.4l.4 1.4c0 .1.1.2.2.2h.1l1.5-.3c.2 0 .3-.1.5-.1.4 0 .8.1 1.1.3.5.3.8.8.9 1.3.2.7 0 1.4-.5 1.9l-1 1.1c-.1.1-.1.2 0 .3l1 1.1c.4.4.6.9.6 1.5s-.3 1.1-.7 1.5c-.4.4-.9.6-1.4.6-.2 0-.3 0-.5-.1l-1.5-.3h-.1c-.1 0-.2.1-.2.2l-.4 1.4c-.2.5-.5 1-1 1.2-.4.2-.7.3-1 .3zm-2.7-4.6c.8 0 1.4.5 1.7 1.2l.4 1.5c.1.2.2.3.4.4h.2c.1 0 .2 0 .3-.1l.3-.3.4-1.5c.2-.7.9-1.2 1.7-1.2h.4l1.5.3h.1c.1 0 .3-.1.4-.2.1-.1.2-.3.2-.4 0-.2-.1-.3-.2-.4l-1-1.1c-.6-.7-.6-1.7 0-2.4l1-1.1c.1-.1.2-.3.1-.5-.1-.3-.3-.5-.6-.5h-.1l-1.5.3h-.4c-.8 0-1.4-.5-1.7-1.2l-.4-1.5c-.1-.2-.2-.3-.4-.4h-.2c-.1 0-.2 0-.3.1l-.3.3-.4 1.5c-.2.7-.9 1.2-1.7 1.2h-.4l-1.5-.3h-.1c-.1 0-.3.1-.4.2-.1.1-.2.3-.2.4 0 .2.1.3.2.4l1 1.1c.6.7.6 1.7 0 2.4l-1 1.1c-.1.2-.1.4-.1.6 0 .2.1.3.3.4.1.1.2.1.3.1h.1l1.5-.3c.1-.1.3-.1.4-.1z",controlls:"M6 22c-1.4 0-2.6-.9-2.9-2.2H.7c-.4 0-.7-.4-.7-.8s.3-.8.8-.8h2.3C3.4 16.9 4.6 16 6 16s2.6.9 2.9 2.2h14.3c.4 0 .8.3.8.8s-.3.8-.8.8H8.9C8.6 21.1 7.4 22 6 22Zm0-4.5c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5 1.5-.7 1.5-1.5-.7-1.5-1.5-1.5v-.4.4ZM21 15c-1.4 0-2.6-.9-2.9-2.2H.8c-.4 0-.8-.3-.8-.8s.3-.8.8-.8h17.3C18.4 9.9 19.6 9 21 9s3 1.3 3 3-1.3 3-3 3Zm0-4.5c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5 1.5-.7 1.5-1.5-.7-1.5-1.5-1.5ZM8.3 8c-1.4 0-2.6-.9-2.9-2.2H.8C.4 5.8 0 5.5 0 5s.3-.8.8-.8h4.7C5.8 2.9 7 2 8.4 2s2.6.9 2.9 2.2h12c.4 0 .8.3.8.8s-.3.8-.8.8h-12C11 7.1 9.8 8 8.4 8Zm0-4.5c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S9.8 5.8 9.8 5s-.7-1.5-1.5-1.5v-.4.4Z",pin:"M.75 23.999a.743.743 0 0 1-.53-.22c-.142-.141-.22-.33-.22-.53s.078-.389.22-.53l7.474-7.474-3.575-3.575a2.248 2.248 0 0 1-.588-2.16c.151-.582.52-1.07 1.039-1.374a8.266 8.266 0 0 1 5.564-1.002l3.877-6.094c.089-.139.192-.268.308-.383.424-.425.989-.659 1.59-.659s1.166.234 1.591.659L23.343 6.5a2.236 2.236 0 0 1 .605 2.079 2.238 2.238 0 0 1-.988 1.41l-6.092 3.877a8.257 8.257 0 0 1-1 5.562 2.234 2.234 0 0 1-1.942 1.114 2.239 2.239 0 0 1-1.593-.661l-3.576-3.577L1.28 23.78a.746.746 0 0 1-.53.219zM8.72 8.513c-1.186 0-2.36.318-3.394.919a.746.746 0 0 0-.148 1.175l8.214 8.214c.142.142.331.22.532.22a.743.743 0 0 0 .646-.369 6.737 6.737 0 0 0 .728-4.985.75.75 0 0 1 .326-.808l6.529-4.155a.748.748 0 0 0 .128-1.163L16.44 1.718a.745.745 0 0 0-.531-.22.743.743 0 0 0-.633.348l-4.155 6.53a.746.746 0 0 1-.808.326 6.809 6.809 0 0 0-1.593-.189z",pinFilled:"M.8 24c-.2 0-.4-.1-.5-.2-.2-.2-.3-.4-.3-.6s.1-.4.2-.5l7.5-7.5-3.6-3.6c-.1-.1-.3-.3-.4-.5-.3-.5-.4-1.1-.2-1.7.2-.6.5-1.1 1-1.4 1.3-.6 2.8-1 4.2-1 .5 0 .9 0 1.4.1L14 1c.1-.1.2-.3.3-.4.4-.4 1-.7 1.6-.7s1.2.2 1.6.7l5.8 5.8c.1.1.2.2.3.4.4.6.5 1.2.3 1.8-.1.6-.5 1.1-1 1.4l-6.1 3.9c.3 1.9 0 3.9-1 5.6-.1.2-.2.3-.4.5-.4.4-1 .7-1.6.7-.6 0-1.2-.2-1.6-.7l-3.6-3.6-7.5 7.5s-.2.1-.3.1z",trash:"M6.6 23.2c-1.2 0-2.1-.9-2.2-2.1L3.1 5.2H1.5c-.4 0-.8-.3-.8-.8s.3-.8.8-.8h6V3c0-1.2 1-2.2 2.2-2.2h4.5c1.2 0 2.2 1 2.2 2.2v.8h6c.4 0 .8.3.8.8s-.3.8-.8.8h-1.6l-1.3 15.9c-.1 1.2-1.1 2.1-2.2 2.1H6.6zm-.7-2.1c0 .4.4.7.7.7h10.7c.4 0 .7-.3.7-.7l1.3-15.8H4.6l1.3 15.8zM15 3.8V3c0-.4-.3-.8-.8-.8H9.8c-.5 0-.8.4-.8.8v.8h6zM9.8 18c-.5 0-.8-.3-.8-.8V9.8c0-.5.3-.8.8-.8s.8.3.8.8v7.5c-.1.4-.4.7-.8.7zm4.4 0c-.4 0-.8-.3-.8-.8V9.8c0-.4.3-.8.8-.8s.8.3.8.8v7.5c0 .4-.3.7-.8.7z",navigationMenuVertical:"M11.987 24.003c-1.861 0-3.375-1.514-3.375-3.375s1.514-3.375 3.375-3.375 3.375 1.514 3.375 3.375-1.514 3.375-3.375 3.375zm0-5.25c-1.034 0-1.875.841-1.875 1.875s.841 1.875 1.875 1.875 1.875-.841 1.875-1.875-.841-1.875-1.875-1.875zM11.987 6.753c-1.861 0-3.375-1.514-3.375-3.375S10.126.003 11.987.003s3.375 1.514 3.375 3.375-1.514 3.375-3.375 3.375zm0-5.25c-1.034 0-1.875.841-1.875 1.875s.841 1.875 1.875 1.875 1.875-.841 1.875-1.875-.841-1.875-1.875-1.875zM11.987 15.378a3.379 3.379 0 0 1-3.375-3.375c0-1.861 1.514-3.375 3.375-3.375s3.375 1.514 3.375 3.375a3.379 3.379 0 0 1-3.375 3.375zm0-5.25c-1.034 0-1.875.841-1.875 1.875s.841 1.875 1.875 1.875 1.875-.841 1.875-1.875-.841-1.875-1.875-1.875z",copy:"M4.5 24a2.252 2.252 0 0 1-2.25-2.25V8.25A2.252 2.252 0 0 1 4.5 6h2.25V2.25A2.252 2.252 0 0 1 9 0h7.629c.601 0 1.165.234 1.59.658l2.872 2.872c.425.425.659.99.659 1.59v10.63A2.252 2.252 0 0 1 19.5 18h-2.25v3.75A2.252 2.252 0 0 1 15 24H4.5zm0-16.5a.75.75 0 0 0-.75.75v13.5c0 .414.336.75.75.75H15a.75.75 0 0 0 .75-.75V11.121c0-.197-.08-.39-.219-.53l-2.872-2.872a.748.748 0 0 0-.53-.219H4.5zm15 9a.75.75 0 0 0 .75-.75V5.121c0-.197-.08-.39-.219-.53l-2.872-2.872a.748.748 0 0 0-.53-.219H9a.75.75 0 0 0-.75.75V6h3.879c.6 0 1.165.234 1.59.658l2.872 2.872c.425.425.659.99.659 1.59v5.38h2.25z",refresh:"M12.723 22.497c-1.385 0-2.737-.271-4.019-.804a.747.747 0 0 1-.404-.98.748.748 0 0 1 .98-.405 8.924 8.924 0 0 0 3.445.689 8.935 8.935 0 0 0 6.204-2.489 8.91 8.91 0 0 0 2.762-6.283 8.911 8.911 0 0 0-2.482-6.399 8.892 8.892 0 0 0-6.483-2.765 8.921 8.921 0 0 0-6.199 2.485 8.937 8.937 0 0 0-2.746 5.833c-.14 2 .375 3.948 1.462 5.589v-2.72a.75.75 0 0 1 1.5 0v4.5a.75.75 0 0 1-.75.75h-.238a.364.364 0 0 1-.096 0H1.493a.75.75 0 0 1 0-1.5h2.636a10.467 10.467 0 0 1-1.822-6.964l.007-.076.019-.197.006-.045A10.54 10.54 0 0 1 5.497 4.42a10.465 10.465 0 0 1 7.264-2.913c1.385 0 2.738.269 4.019.8a.74.74 0 0 1 .26.18 10.382 10.382 0 0 1 3.253 2.301c3.991 4.171 3.844 10.812-.327 14.803a10.43 10.43 0 0 1-7.241 2.905h-.002z",resizeHorizontal:"M5.2 2.3c0-.4.3-.8.8-.8s.8.3.8.8v19.5c0 .4-.3.8-.8.8s-.8-.3-.8-.8V2.3zm6 0c0-.4.3-.8.8-.8s.8.3.8.8v19.5c0 .4-.3.8-.8.8s-.8-.3-.8-.8V2.3zm6 0c0-.4.3-.8.8-.8s.8.3.8.8v19.5c0 .4-.3.8-.8.8s-.8-.3-.8-.8V2.3z",info:"M14.6 23.5c-2.4 0-4.3-1.9-4.3-4.3v-8.5H8.2c-.6 0-1.1-.5-1.1-1.1s.5-1.1 1.1-1.1h1.6c1.5 0 2.7 1.2 2.7 2.7v8c0 1.2.9 2.1 2.1 2.1h1.6c.6 0 1.1.5 1.1 1.1s-.5 1.1-1.1 1.1h-1.6zm-4-19.2c-1 0-1.9-.9-1.9-1.9S9.6.5 10.6.5s1.9.9 1.9 1.9-.9 1.9-1.9 1.9z",sortAZ:"M8.8 0h-7C.8 0 0 .8 0 1.8v9h1.5v-4H9v3.9h1.5v-9C10.5.8 9.7 0 8.8 0zM1.5 5.4V1.8c0-.1.1-.2.2-.2h7c.2-.1.3 0 .3.2v3.6H1.5zm8.8 17.1V24H1.6c-.4 0-.9-.1-1.1-.4-.3-.3-.5-1 0-1.6l7.2-7.3H0v-1.5h8.5c.4 0 .8.2 1.1.4.5.4.5 1-.1 1.6l-7.2 7.3h8zm8.4-1.3h-.1c-.4 0-.7-.2-.9-.4l-4-4.3c-.1-.1-.2-.3-.2-.5s.1-.4.2-.5c.1-.1.3-.2.5-.2s.4.1.5.2l3.2 3.5V4c0-.4.3-.8.8-.8s.8.3.8.8v14.9l3.2-3.4c.1-.2.3-.2.5-.2s.4.1.5.2c.1.1.2.3.2.5s-.1.4-.2.5l-4 4.3c-.3.3-.6.4-.9.4h-.1z",sortZA:"M8.8 13.2h-7C.8 13.2 0 14 0 15v9h1.5v-3.9H9V24h1.5v-9c0-1-.8-1.8-1.7-1.8zm-7.3 5.4V15c0-.1.1-.2.2-.2h7c.2 0 .3.1.3.2v3.6H1.5zm8.8-9.4v1.5H1.6c-.4 0-.9-.1-1.1-.4-.3-.2-.5-.9 0-1.5l7.2-7.3H0V0h8.5c.4 0 .8.2 1.1.4.5.4.5 1-.1 1.6L2.4 9.2h7.9zm8.4 12h-.1c-.4 0-.7-.2-.9-.4l-4-4.3c-.1-.1-.2-.3-.2-.5s.1-.4.2-.5c.1-.1.3-.2.5-.2s.4.1.5.2l3.2 3.5V4c0-.4.3-.8.8-.8s.8.3.8.8v14.9l3.2-3.4c.1-.2.3-.2.5-.2s.4.1.5.2c.1.1.2.3.2.5s-.1.4-.2.5l-4 4.3c-.3.3-.6.4-.9.4h-.1z",leaf:"M10.257 21.851a8.3 8.3 0 0 1-6.984-3.84l-2.027 1.73a.748.748 0 0 1-1.058-.083.743.743 0 0 1-.177-.546.744.744 0 0 1 .261-.511l2.296-1.959a8.204 8.204 0 0 1-.593-3.072c0-7.309 5.71-7.938 10.748-8.492 3.287-.362 6.685-.736 8.995-2.653.236-.177.495-.265.763-.265.18 0 .354.039.517.117.366.152.647.512.719.931 1.135 6.649-1.167 11.055-3.298 13.581-2.636 3.122-6.53 5.062-10.162 5.062zm-5.831-4.824a6.777 6.777 0 0 0 5.831 3.324c3.203 0 6.657-1.736 9.016-4.532 1.882-2.23 3.908-6.098 3.031-11.947-2.593 1.944-6.059 2.326-9.416 2.696-5.259.579-9.412 1.036-9.412 7.001 0 .694.105 1.375.312 2.031l.386-.329a25.67 25.67 0 0 1 8.897-4.439.752.752 0 0 1 .85 1.094.747.747 0 0 1-.453.352 24.122 24.122 0 0 0-8.35 4.157l-.692.592z",recycle:"M5.6 24c-1.1 0-2-.8-2.2-1.9L0 2.6v-.4C0 1 1 0 2.2 0h19.5c.7 0 1.3.3 1.7.8.5.5.7 1.2.6 1.9l-3.4 19.5c-.2 1.1-1.1 1.9-2.2 1.9L5.6 24zM2.2 1.5c-.4 0-.8.3-.8.7v.1l3.4 19.5c.1.4.4.6.7.6h12.7c.4 0 .7-.3.7-.6l3.4-19.5c0-.2 0-.4-.2-.6-.1-.2-.4-.3-.6-.3l-19.3.1zm10.3 17.3c-.7 0-1.4-.1-2.1-.3-1.4-.5-2.6-1.4-3.3-2.7v1.5c0 .4-.3.8-.8.8s-.8-.3-.8-.8v-3.8c0-.4.3-.8.8-.8H10c.4 0 .8.3.8.8s-.3.8-.8.8H8.1c.5 1.3 1.6 2.3 2.9 2.7.5.2 1 .3 1.6.3.7 0 1.4-.2 2.1-.5 1.2-.6 2-1.6 2.4-2.8.1-.3.4-.5.7-.5h.2c.2.1.3.2.4.4s.1.4 0 .6c-.5 1.6-1.7 2.9-3.2 3.6-.8.4-1.7.7-2.7.7zm2.1-7.5c-.4 0-.8-.3-.8-.8s.3-.8.8-.8h2.1c-.5-1.3-1.6-2.3-2.9-2.7-.5-.2-1-.3-1.6-.3-.7 0-1.4.2-2.1.5-1.1.6-2 1.6-2.4 2.8-.1.3-.4.5-.7.5h-.2c-.4-.1-.6-.6-.5-1C6.8 7.9 8 6.6 9.5 5.9c.9-.4 1.8-.6 2.8-.6.7 0 1.4.1 2.1.3 1.4.5 2.6 1.4 3.3 2.7V6.8c-.1-.5.3-.8.7-.8s.8.3.8.8v3.8c0 .4-.3.8-.8.8h-3.8v-.1z",recycleRefresh:"M2.3 15H2c-.1 0-.2-.1-.2-.2L.3 13.3c-.3-.3-.3-.8 0-1.1.1-.1.3-.2.5-.2s.4.1.5.2l.2.2V12c0-2.3.8-4.6 2.2-6.5 2-2.6 5-4 8.3-4 2.4 0 4.6.8 6.4 2.2.2.1.3.3.3.5s0 .4-.2.6c-.1.2-.3.3-.5.3s-.3-.1-.5-.2C15.9 3.7 14 3 12 3 9.2 3 6.6 4.3 4.9 6.5 3.7 8.1 3 10 3 12v.4l.2-.2c.2-.1.4-.2.6-.2s.4.1.5.2c.1.1.2.3.2.5s-.1.4-.2.5l-1.5 1.5c-.1.1-.2.1-.2.2-.2.1-.3.1-.3.1zm9.7 7.5c-2.4 0-4.6-.8-6.4-2.2-.3-.3-.4-.7-.1-1.1.1-.2.4-.3.6-.3.2 0 .3.1.5.2C8.1 20.4 10 21 12 21c2.8 0 5.4-1.3 7.1-3.5C20.3 16 21 14 21 12v-.4l-.2.2c-.1.1-.3.2-.5.2s-.4-.1-.5-.2c-.1-.1-.2-.3-.2-.5s.1-.4.2-.5l1.5-1.5c.1-.1.2-.1.2-.2h.6c.1 0 .2.1.2.2l1.5 1.5c.1.1.2.3.2.5s-.1.4-.2.5-.3.2-.5.2-.4-.1-.5-.2l-.2-.2v.4c0 2.3-.8 4.6-2.2 6.5-2.1 2.5-5.1 4-8.4 4zM9.5 18c-.4 0-.8-.4-.7-.8 0-.5 0-.9.1-1.3-1.2-.7-2-1.5-2.3-2.5-.3-1-.1-2.2.7-3.3 1.9-2.6 4.8-4.1 8-4.1.2 0 .4.1.6.3 0 .2.1.4.1.6-.1.7 0 1.6.2 2.7.4 2.3.9 5.5-1.9 7.3-.5.3-1.1.5-1.7.5-.9 0-1.7-.3-2.3-.6v.6c-.1.3-.4.6-.8.6zm1-2.9c.3.2 1.2.7 2.1.7.3 0 .7-.1.9-.2 2-1.2 1.6-3.4 1.2-5.7-.1-.8-.3-1.6-.3-2.3-2.3.2-4.5 1.4-5.9 3.4-.5.7-.7 1.3-.5 2 .1.5.6 1 1.2 1.4.6-2.1 1.7-2.9 1.9-3 .1-.1.3-.1.4-.1.3 0 .5.1.6.3.2.3.1.8-.2 1 0 0-.9.7-1.4 2.5z",merge:"M20.62 0a3.382 3.382 0 0 0-2.39 5.77l-5.49 5.49v-4.6c1.5-.34 2.62-1.68 2.62-3.28 0-1.86-1.51-3.38-3.38-3.38S8.6 1.51 8.6 3.38c0 1.6 1.12 2.94 2.62 3.28v4.45L5.79 5.68c.57-.6.93-1.41.93-2.31 0-1.86-1.51-3.38-3.38-3.38S0 1.51 0 3.38s1.51 3.38 3.38 3.38c.41 0 .81-.09 1.17-.22l6.7 6.7v8.21l-1.72-1.72a.75.75 0 1 0-1.06 1.06l3 3c.07.07.15.13.25.17h.02c.09.03.17.05.26.05s.17-.02.26-.05c0 0 .02 0 .03-.01.09-.04.18-.09.25-.16l3-3a.75.75 0 1 0-1.06-1.06l-1.72 1.72v-8.06l6.82-6.82c.34.11.69.19 1.06.19 1.86 0 3.38-1.51 3.38-3.38S22.51 0 20.64 0ZM1.5 3.38c0-1.03.84-1.88 1.88-1.88s1.88.84 1.88 1.88-.84 1.88-1.88 1.88S1.5 4.42 1.5 3.38Zm8.62 0c0-1.03.84-1.88 1.88-1.88s1.88.84 1.88 1.88-.84 1.88-1.88 1.88-1.88-.84-1.88-1.88Zm10.5 1.87c-1.03 0-1.88-.84-1.88-1.88s.84-1.88 1.88-1.88 1.88.84 1.88 1.88-.84 1.88-1.88 1.88Z",disable:"M12 24a11.922 11.922 0 0 1-8.43-3.468.343.343 0 0 1-.099-.099A11.924 11.924 0 0 1 0 12C0 5.383 5.383 0 12 0a11.92 11.92 0 0 1 8.43 3.468.397.397 0 0 1 .099.099A11.92 11.92 0 0 1 24 12c0 6.617-5.383 12-12 12zm-6.87-4.069A10.448 10.448 0 0 0 12 22.5c5.79 0 10.5-4.71 10.5-10.5 0-2.534-.909-4.958-2.569-6.87L5.13 19.931zM12 1.5C6.21 1.5 1.5 6.21 1.5 12c0 2.534.91 4.958 2.569 6.87L18.87 4.069A10.453 10.453 0 0 0 12 1.5z",globeMessage:"M23.25 24c-.05 0-.11 0-.16-.02l-5.74-1.24c-.76.38-1.58.68-2.42.89-.03 0-.05.02-.08.02-.93.23-1.89.34-2.84.34s-1.84-.11-2.77-.33c-.09 0-.18-.03-.27-.07a12.05 12.05 0 0 1-7.6-6.01C-.12 14.77-.42 11.52.53 8.46s3.03-5.58 5.86-7.07C7.24.94 8.15.59 9.09.36c.01 0 .03 0 .06-.01.91-.23 1.86-.35 2.82-.35s1.88.11 2.8.33c.07 0 .14.02.21.05 3.28.84 6.06 3.04 7.63 6.02.74 1.4 1.2 2.99 1.34 4.59.03.08.05.17.05.26 0 .05 0 .1-.02.15.01.22.02.41.02.6 0 1.91-.47 3.83-1.36 5.55-.01.03-.03.07-.05.1-.22.41-.45.79-.7 1.16l2.04 4.11c.13.26.1.57-.08.79-.15.19-.36.29-.59.29ZM9.74 22.25c.75.17 1.51.25 2.27.25s1.49-.08 2.22-.24c.67-1.06 1.22-2.52 1.61-4.26H8.12c.39 1.73.95 3.18 1.61 4.25Zm7.51-1.05c.05 0 .11 0 .16.02l4.48.97-1.55-3.12c-.13-.25-.1-.56.07-.78.07-.09.14-.19.21-.29h-3.21c-.28 1.34-.66 2.54-1.12 3.59.21-.09.41-.19.61-.3a.73.73 0 0 1 .35-.09ZM3.38 18c1.09 1.56 2.59 2.8 4.33 3.58-.46-1.04-.83-2.24-1.11-3.58H3.39Zm18.1-1.5c.67-1.41 1.02-2.96 1.02-4.5S18 12 18 12c0 1.55-.11 3.06-.33 4.5h3.81Zm-5.34 0c.23-1.45.35-2.96.35-4.5h-9c0 1.54.12 3.05.35 4.5h8.3Zm-9.82 0C6.1 15.06 6 13.55 6 12H1.49c0 1.55.35 3.09 1.02 4.5h3.81Zm16.06-5.99c-.17-1.2-.54-2.34-1.1-3.4-.2-.38-.42-.75-.67-1.1H17.4c.3 1.4.49 2.91.56 4.5h4.42Zm-5.93 0c-.08-1.57-.29-3.11-.6-4.5H8.13c-.32 1.39-.52 2.93-.6 4.5h8.92Zm-10.42 0c.07-1.59.26-3.1.56-4.5H3.37c-.62.89-1.09 1.86-1.41 2.9-.16.52-.28 1.06-.36 1.6h4.43Zm13.31-6c-.89-.87-1.92-1.57-3.06-2.08.28.63.53 1.33.74 2.08h2.31Zm-3.89 0c-.34-1.09-.74-2.01-1.2-2.75a10.5 10.5 0 0 0-4.5-.01c-.46.74-.87 1.66-1.21 2.76h6.91Zm-8.49 0c.22-.75.47-1.45.75-2.09-.21.09-.42.19-.62.3-.91.48-1.73 1.08-2.45 1.79h2.32Z"};return s.$$set=z=>{"icon"in z&&c(0,l=z.icon),"size"in z&&c(1,m=z.size)},s.$$.update=()=>{s.$$.dirty&1&&c(2,a=Z[l]),s.$$.dirty&5&&(a||console.warn(`There is no icon named %c${l} %cavailable. Not rendering anything.`,"font-weight: bold","font-weight: normal"))},[l,m,a]}class u extends C{constructor(h){super(),f(this,h,A,d,V,{icon:0,size:1})}}export{u as I}; diff --git a/gui/next/build/_app/immutable/chunks/DGc7Lmco.js b/gui/next/build/_app/immutable/chunks/DGc7Lmco.js new file mode 100644 index 0000000..9415c32 --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/DGc7Lmco.js @@ -0,0 +1 @@ +import{w as g}from"./RFIyOgWr.js";const p=b();function b(){const o=localStorage.view?JSON.parse(localStorage.view):null,e={};e.header=localStorage.header?JSON.parse(localStorage.header):["database","users","logs"],e.online=void 0,e.logs={},e.logsv2={},e.logv2={},e.networks={},e.network={},e.tables=[],e.table={},e.view={database:o!=null&&o.database?o.database:"table",tableStyle:o!=null&&o.tableStyle?o.tableStyle:"collapsed"},e.records={},e.record=null,e.highlighted={record:null,constant:null},e.filters={page:1,attributes:[{attribute_type:"id",name:"id",operation:"value",value:""}],deleted:"false"},e.sort={by:"created_at",order:"DESC"},e.notifications=[],e.asideWidth=localStorage.asideWidth?localStorage.asideWidth:!1,e.users=[];const{subscribe:s,set:d,update:i}=g(e),c=(a,t)=>{i(r=>(r[a]=t,r))},u=()=>{i(a=>(a.filters={page:1,attributes:[{attribute_type:"id",name:"id",operation:"value",value:""}],deleted:"false"},a.sort={by:"created_at",order:"DESC"},a))};let n;const l=(a,t)=>{i(r=>(r.highlighted[a]=t,r)),clearTimeout(n),n=setTimeout(()=>{l("record",null),l("constant",null)},7e3)};return{subscribe:s,set:d,data:c,clearFilters:u,highlight:l,notification:{create:(a,t)=>{i(r=>(r.notifications.push({id:Date.now(),type:a,message:t}),r))},remove:a=>{i(t=>(t.notifications=t.notifications.filter(r=>r.id!==a),t))}},setView:a=>{i(t=>(t.view={...t.view,...a},localStorage.view=JSON.stringify(t.view),t))}}}export{p as s}; diff --git a/gui/next/build/_app/immutable/chunks/DntFPtNo.js b/gui/next/build/_app/immutable/chunks/DntFPtNo.js new file mode 100644 index 0000000..a3e137a --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/DntFPtNo.js @@ -0,0 +1 @@ +import{s as Y,J as q,l as Z,d as p,r as x,K as y,u as ee,m as te,o as se,w as h,i as L,b as g,D as U,c as E,e as S,z as B,g as A,h as z,j as D,k as le,L as T,M as ae,N as ie}from"./Ul9VwQ7n.js";import{S as ne,i as re,d as J,t as W,f as $,a as w,g as K,e as M,m as V,c as X,b as F}from"./Bh3MJlbi.js";import{g as oe,q as fe}from"./CS29TWE_.js";import{s as N}from"./DGc7Lmco.js";import{I as G}from"./D-yR0E5w.js";const{window:Q}=oe;function O(o){let e,t,l,a=o[1]&&P(o),s=o[0]&&R(o);return{c(){e=z("header"),a&&a.c(),t=D(),s&&s.c(),this.h()},l(i){e=E(i,"HEADER",{class:!0});var n=S(e);a&&a.l(n),t=A(n),s&&s.l(n),n.forEach(p),this.h()},h(){h(e,"class","svelte-1lvj124")},m(i,n){L(i,e,n),a&&a.m(e,null),g(e,t),s&&s.m(e,null),l=!0},p(i,n){i[1]?a?a.p(i,n):(a=P(i),a.c(),a.m(e,t)):a&&(a.d(1),a=null),i[0]?s?(s.p(i,n),n&1&&w(s,1)):(s=R(i),s.c(),w(s,1),s.m(e,null)):s&&(K(),W(s,1,1,()=>{s=null}),M())},i(i){l||(w(s),l=!0)},o(i){W(s),l=!1},d(i){i&&p(e),a&&a.d(),s&&s.d()}}}function P(o){let e,t;return{c(){e=z("h2"),t=new ie(!1),this.h()},l(l){e=E(l,"H2",{class:!0});var a=S(e);t=ae(a,!1),a.forEach(p),this.h()},h(){t.a=null,h(e,"class","svelte-1lvj124")},m(l,a){L(l,e,a),t.m(o[1],e)},p(l,a){a&2&&t.p(l[1])},d(l){l&&p(e)}}}function R(o){let e,t,l="Close details",a,s,i;return s=new G({props:{icon:"x"}}),{c(){e=z("a"),t=z("span"),t.textContent=l,a=D(),F(s.$$.fragment),this.h()},l(n){e=E(n,"A",{href:!0,class:!0});var f=S(e);t=E(f,"SPAN",{class:!0,"data-svelte-h":!0}),B(t)!=="svelte-1gxyewl"&&(t.textContent=l),a=A(f),X(s.$$.fragment,f),f.forEach(p),this.h()},h(){h(t,"class","label svelte-1lvj124"),h(e,"href",o[0]),h(e,"class","close svelte-1lvj124")},m(n,f){L(n,e,f),g(e,t),g(e,a),V(s,e,null),i=!0},p(n,f){(!i||f&1)&&h(e,"href",n[0])},i(n){i||(w(s.$$.fragment,n),i=!0)},o(n){W(s.$$.fragment,n),i=!1},d(n){n&&p(e),J(s)}}}function ue(o){let e,t,l,a="Drag to resize panel",s,i,n,f,b,k,v,_,j,H;q(o[10]),i=new G({props:{icon:"resizeHorizontal",size:"7"}});let u=(o[1]||o[0])&&O(o);const c=o[9].default,d=Z(c,o,o[8],null);return{c(){e=z("aside"),t=z("button"),l=z("span"),l.textContent=a,s=D(),F(i.$$.fragment),n=D(),f=z("div"),u&&u.c(),b=D(),d&&d.c(),this.h()},l(r){e=E(r,"ASIDE",{style:!0,class:!0});var m=S(e);t=E(m,"BUTTON",{class:!0});var C=S(t);l=E(C,"SPAN",{class:!0,"data-svelte-h":!0}),B(l)!=="svelte-ruxerc"&&(l.textContent=a),s=A(C),X(i.$$.fragment,C),C.forEach(p),n=A(m),f=E(m,"DIV",{class:!0});var I=S(f);u&&u.l(I),b=A(I),d&&d.l(I),I.forEach(p),m.forEach(p),this.h()},h(){h(l,"class","label svelte-1lvj124"),h(t,"class","resizer svelte-1lvj124"),y(t,"active",o[3]),h(f,"class","container svelte-1lvj124"),h(e,"style",k=o[4].asideWidth?`--width: ${o[4].asideWidth}`:""),h(e,"class","svelte-1lvj124")},m(r,m){L(r,e,m),g(e,t),g(t,l),g(t,s),V(i,t,null),g(e,n),g(e,f),u&&u.m(f,null),g(f,b),d&&d.m(f,null),_=!0,j||(H=[U(Q,"resize",o[10]),U(t,"mousedown",o[6]),U(t,"click",o[7])],j=!0)},p(r,[m]){(!_||m&8)&&y(t,"active",r[3]),r[1]||r[0]?u?(u.p(r,m),m&3&&w(u,1)):(u=O(r),u.c(),w(u,1),u.m(f,b)):u&&(K(),W(u,1,1,()=>{u=null}),M()),d&&d.p&&(!_||m&256)&&ee(d,c,r,r[8],_?se(c,r[8],m,null):te(r[8]),null),(!_||m&16&&k!==(k=r[4].asideWidth?`--width: ${r[4].asideWidth}`:""))&&h(e,"style",k)},i(r){_||(w(i.$$.fragment,r),w(u),w(d,r),r&&q(()=>{_&&(v||(v=$(e,o[5],{},!0)),v.run(1))}),_=!0)},o(r){W(i.$$.fragment,r),W(u),W(d,r),r&&(v||(v=$(e,o[5],{},!1)),v.run(0)),_=!1},d(r){r&&p(e),J(i),u&&u.d(),d&&d.d(r),r&&v&&v.end(),j=!1,x(H)}}}function ce(o,e,t){let l;le(o,N,c=>t(4,l=c));let{$$slots:a={},$$scope:s}=e,{closeUrl:i}=e,{title:n=""}=e,f,b=!1;const k=function(c,{delay:d=0,duration:r=300}){return{delay:d,duration:r,css:m=>{const C=fe(m);return`min-width: 0; width: calc(${l.asideWidth||"30vw"} * ${C});`}}},v=()=>{window.addEventListener("mousemove",j,!1),window.addEventListener("mouseup",_,!1),t(3,b=!0)},_=()=>{window.removeEventListener("mousemove",j,!1),window.removeEventListener("mouseup",_,!1),t(3,b=!1),localStorage.asideWidth=l.asideWidth},j=c=>{T(N,l.asideWidth=f-c.clientX-6+"px",l)},H=c=>{c.detail===2&&(T(N,l.asideWidth=!1,l),localStorage.removeItem("asideWidth"))};function u(){t(2,f=Q.outerWidth)}return o.$$set=c=>{"closeUrl"in c&&t(0,i=c.closeUrl),"title"in c&&t(1,n=c.title),"$$scope"in c&&t(8,s=c.$$scope)},[i,n,f,b,l,k,v,H,s,a,u]}class pe extends ne{constructor(e){super(),re(this,e,ce,ue,Y,{closeUrl:0,title:1})}}export{pe as A}; diff --git a/gui/next/build/_app/immutable/chunks/RFIyOgWr.js b/gui/next/build/_app/immutable/chunks/RFIyOgWr.js new file mode 100644 index 0000000..85ee66d --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/RFIyOgWr.js @@ -0,0 +1 @@ +import{n as b,s as l}from"./Ul9VwQ7n.js";const n=[];function h(e,o){return{subscribe:p(e,o).subscribe}}function p(e,o=b){let r;const i=new Set;function u(t){if(l(e,t)&&(e=t,r)){const c=!n.length;for(const s of i)s[1](),n.push(s,e);if(c){for(let s=0;s{i.delete(s),i.size===0&&r&&(r(),r=null)}}return{set:u,update:f,subscribe:a}}export{h as r,p as w}; diff --git a/gui/next/build/_app/immutable/chunks/Ul9VwQ7n.js b/gui/next/build/_app/immutable/chunks/Ul9VwQ7n.js new file mode 100644 index 0000000..85cd72b --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/Ul9VwQ7n.js @@ -0,0 +1 @@ +var W=Object.defineProperty;var I=(t,e,n)=>e in t?W(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var f=(t,e,n)=>I(t,typeof e!="symbol"?e+"":e,n);function S(){}const ut=t=>t;function G(t,e){for(const n in e)t[n]=e[n];return t}function ft(t){return!!t&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function"}function U(t){return t()}function dt(){return Object.create(null)}function F(t){t.forEach(U)}function J(t){return typeof t=="function"}function _t(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}let m;function ht(t,e){return t===e?!0:(m||(m=document.createElement("a")),m.href=e,t===m.href)}function pt(t){return Object.keys(t).length===0}function K(t,...e){if(t==null){for(const i of e)i(void 0);return S}const n=t.subscribe(...e);return n.unsubscribe?()=>n.unsubscribe():n}function mt(t,e,n){t.$$.on_destroy.push(K(e,n))}function yt(t,e,n,i){if(t){const s=j(t,e,n,i);return t[0](s)}}function j(t,e,n,i){return t[1]&&i?G(n.ctx.slice(),t[1](i(e))):n.ctx}function bt(t,e,n,i){if(t[2]&&i){const s=t[2](i(n));if(e.dirty===void 0)return s;if(typeof s=="object"){const o=[],r=Math.max(e.dirty.length,s.length);for(let l=0;l32){const e=[],n=t.ctx.length/32;for(let i=0;i>1);n(s)<=i?t=s+1:e=s}return t}function V(t){if(t.hydrate_init)return;t.hydrate_init=!0;let e=t.childNodes;if(t.nodeName==="HEAD"){const c=[];for(let a=0;a0&&e[n[s]].claim_order<=a?s+1:Q(1,s,R=>e[n[R]].claim_order,a))-1;i[c]=n[u]+1;const C=u+1;n[C]=c,s=Math.max(C,s)}const o=[],r=[];let l=e.length-1;for(let c=n[s]+1;c!=0;c=i[c-1]){for(o.push(e[c-1]);l>=c;l--)r.push(e[l]);l--}for(;l>=0;l--)r.push(e[l]);o.reverse(),r.sort((c,a)=>c.claim_order-a.claim_order);for(let c=0,a=0;c=o[a].claim_order;)a++;const u=at.removeEventListener(e,n,i)}function Ht(t){return function(e){return e.preventDefault(),t.call(this,e)}}function Mt(t){return function(e){return e.stopPropagation(),t.call(this,e)}}function St(t,e,n){n==null?t.removeAttribute(e):t.getAttribute(e)!==n&&t.setAttribute(e,n)}function jt(t){return t.dataset.svelteH}function Lt(t){let e;return{p(...n){e=n,e.forEach(i=>t.push(i))},r(){e.forEach(n=>t.splice(t.indexOf(n),1))}}}function Pt(t){return t===""?null:+t}function qt(t){return Array.from(t.childNodes)}function q(t){t.claim_info===void 0&&(t.claim_info={last_index:0,total_claimed:0})}function z(t,e,n,i,s=!1){q(t);const o=(()=>{for(let r=t.claim_info.last_index;r=0;r--){const l=t[r];if(e(l)){const c=n(l);return c===void 0?t.splice(r,1):t[r]=c,s?c===void 0&&t.claim_info.last_index--:t.claim_info.last_index=r,l}}return i()})();return o.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,o}function B(t,e,n,i){return z(t,s=>s.nodeName===e,s=>{const o=[];for(let r=0;rs.removeAttribute(r))},()=>i(e))}function zt(t,e,n){return B(t,e,n,w)}function Bt(t,e,n){return B(t,e,n,P)}function et(t,e){return z(t,n=>n.nodeType===3,n=>{const i=""+e;if(n.data.startsWith(i)){if(n.data.length!==i.length)return n.splitText(i.length)}else n.data=i},()=>k(e),!0)}function Ot(t){return et(t," ")}function H(t,e,n){for(let i=n;i{r.source===i.contentWindow&&e()})):(i.src="about:blank",i.onload=()=>{o=D(i.contentWindow,"resize",e),e()}),L(t,i),()=>{(s||o&&i.contentWindow)&&o(),b(i)}}function Kt(t,e,n){t.classList.toggle(e,!!n)}function it(t,e,{bubbles:n=!1,cancelable:i=!1}={}){return new CustomEvent(t,{detail:e,bubbles:n,cancelable:i})}function Qt(t,e){const n=[];let i=0;for(const s of e.childNodes)if(s.nodeType===8){const o=s.textContent.trim();o===`HEAD_${t}_END`?(i-=1,n.push(s)):o===`HEAD_${t}_START`&&(i+=1,n.push(s))}else i>0&&n.push(s);return n}class st{constructor(e=!1){f(this,"is_svg",!1);f(this,"e");f(this,"n");f(this,"t");f(this,"a");this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,n,i=null){this.e||(this.is_svg?this.e=P(n.nodeName):this.e=w(n.nodeType===11?"TEMPLATE":n.nodeName),this.t=n.tagName!=="TEMPLATE"?n:n.content,this.c(e)),this.i(i)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let n=0;n{const s=t.$$.callbacks[e];if(s){const o=it(e,n,{cancelable:i});return s.slice().forEach(r=>{r.call(t,o)}),!o.defaultPrevented}return!0}}function ee(t,e){return d().$$.context.set(t,e),e}function ne(t){return d().$$.context.get(t)}function ie(t,e){const n=t.$$.callbacks[e.type];n&&n.slice().forEach(i=>i.call(this,e))}const p=[],M=[];let h=[];const T=[],O=Promise.resolve();let A=!1;function rt(){A||(A=!0,O.then(ct))}function se(){return rt(),O}function ot(t){h.push(t)}function re(t){T.push(t)}const N=new Set;let _=0;function ct(){if(_!==0)return;const t=g;do{try{for(;_t.indexOf(i)===-1?e.push(i):n.push(i)),n.forEach(i=>i()),h=e}export{Ft as $,Gt as A,Pt as B,It as C,D,Ht as E,te as F,se as G,M as H,kt as I,ot as J,Kt as K,Et as L,Rt as M,E as N,ft as O,d as P,v as Q,ct as R,Zt as S,Yt as T,Vt as U,ie as V,ht as W,J as X,Ut as Y,re as Z,$t as _,Wt as a,Xt as a0,X as a1,At as a2,it as a3,pt as a4,g as a5,dt as a6,oe as a7,U as a8,Nt as a9,Tt as aa,p as ab,rt as ac,vt as ad,Jt as ae,wt as af,Lt as ag,ne as ah,ee as ai,K as aj,Mt as ak,G as al,Z as b,zt as c,b as d,qt as e,et as f,Ot as g,w as h,tt as i,Ct as j,mt as k,yt as l,xt as m,S as n,bt as o,Qt as p,ut as q,F as r,_t as s,k as t,gt as u,Dt as v,St as w,Bt as x,P as y,jt as z}; diff --git a/gui/next/build/_app/immutable/chunks/bH_aOImW.js b/gui/next/build/_app/immutable/chunks/bH_aOImW.js new file mode 100644 index 0000000..f3c1a01 --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/bH_aOImW.js @@ -0,0 +1 @@ +var he=Object.defineProperty;var pe=(t,e,n)=>e in t?he(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var U=(t,e,n)=>pe(t,typeof e!="symbol"?e+"":e,n);import{T as jt,G as Q}from"./Ul9VwQ7n.js";import{w as bt}from"./RFIyOgWr.js";class kt{constructor(e,n){this.status=e,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}}class Et{constructor(e,n){this.status=e,this.location=n}}class St extends Error{constructor(e,n,r){super(r),this.status=e,this.text=n}}new URL("sveltekit-internal://");function ge(t,e){return t==="/"||e==="ignore"?t:e==="never"?t.endsWith("/")?t.slice(0,-1):t:e==="always"&&!t.endsWith("/")?t+"/":t}function me(t){return t.split("%25").map(decodeURI).join("%25")}function _e(t){for(const e in t)t[e]=decodeURIComponent(t[e]);return t}function dt({href:t}){return t.split("#")[0]}function we(...t){let e=5381;for(const n of t)if(typeof n=="string"){let r=n.length;for(;r;)e=e*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)e=e*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(e>>>0).toString(36)}new TextEncoder;new TextDecoder;function ve(t){const e=atob(t),n=new Uint8Array(e.length);for(let r=0;r((t instanceof Request?t.method:(e==null?void 0:e.method)||"GET")!=="GET"&&K.delete(Rt(t)),ye(t,e));const K=new Map;function be(t,e){const n=Rt(t,e),r=document.querySelector(n);if(r!=null&&r.textContent){r.remove();let{body:a,...s}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&K.set(n,{body:a,init:s,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=ve(a)),Promise.resolve(new Response(a,s))}return window.fetch(t,e)}function ke(t,e,n){if(K.size>0){const r=Rt(t,n),a=K.get(r);if(a){if(performance.now(){const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return e.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return e.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return ht(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return ht(String.fromCharCode(...c.slice(2).split("-").map(_=>parseInt(_,16))));const d=Ee.exec(c),[,u,v,f,h]=d;return e.push({name:f,matcher:h,optional:!!u,rest:!!v,chained:v?l===1&&o[0]==="":!1}),v?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return ht(c)}).join("")}).join("")}/?$`),params:e}}function Re(t){return t!==""&&!/^\([^)]+\)$/.test(t)}function xe(t){return t.slice(1).split("/").filter(Re)}function Le(t,e,n){const r={},a=t.slice(1),s=a.filter(i=>i!==void 0);let o=0;for(let i=0;id).join("/"),o=0),l===void 0){c.rest&&(r[c.name]="");continue}if(!c.matcher||n[c.matcher](l)){r[c.name]=l;const d=e[i+1],u=a[i+1];d&&!d.rest&&d.optional&&u&&c.chained&&(o=0),!d&&!u&&Object.keys(r).length===s.length&&(o=0);continue}if(c.optional&&c.chained){o++;continue}return}if(!o)return r}function ht(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Ue({nodes:t,server_loads:e,dictionary:n,matchers:r}){const a=new Set(e);return Object.entries(n).map(([i,[c,l,d]])=>{const{pattern:u,params:v}=Se(i),f={id:i,exec:h=>{const _=u.exec(h);if(_)return Le(_,v,r)},errors:[1,...d||[]].map(h=>t[h]),layouts:[0,...l||[]].map(o),leaf:s(c)};return f.errors.length=f.layouts.length=Math.max(f.errors.length,f.layouts.length),f});function s(i){const c=i<0;return c&&(i=~i),[c,t[i]]}function o(i){return i===void 0?i:[a.has(i),t[i]]}}function Wt(t,e=JSON.parse){try{return e(sessionStorage[t])}catch{}}function Nt(t,e,n=JSON.stringify){const r=n(e);try{sessionStorage[t]=r}catch{}}var Mt;const L=((Mt=globalThis.__sveltekit_1brftwe)==null?void 0:Mt.base)??"";var Ft;const Ae=((Ft=globalThis.__sveltekit_1brftwe)==null?void 0:Ft.assets)??L??"",Te="1785837307558",Yt="sveltekit:snapshot",zt="sveltekit:scroll",Ht="sveltekit:states",$e="sveltekit:pageurl",V="sveltekit:history",M="sveltekit:navigation",P={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},it=location.origin;function xt(t){if(t instanceof URL)return t;let e=document.baseURI;if(!e){const n=document.getElementsByTagName("base");e=n.length?n[0].href:document.URL}return new URL(t,e)}function ct(){return{x:pageXOffset,y:pageYOffset}}function D(t,e){return t.getAttribute(`data-sveltekit-${e}`)}const Dt={...P,"":P.hover};function Jt(t){let e=t.assignedSlot??t.parentNode;return(e==null?void 0:e.nodeType)===11&&(e=e.host),e}function Xt(t,e){for(;t&&t!==e;){if(t.nodeName.toUpperCase()==="A"&&t.hasAttribute("href"))return t;t=Jt(t)}}function mt(t,e,n){let r;try{if(r=new URL(t instanceof SVGAElement?t.href.baseVal:t.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const i=location.hash.split("#")[1]||"/";r.hash=`#${i}${r.hash}`}}catch{}const a=t instanceof SVGAElement?t.target.baseVal:t.target,s=!r||!!a||lt(r,e,n)||(t.getAttribute("rel")||"").split(/\s+/).includes("external"),o=(r==null?void 0:r.origin)===it&&t.hasAttribute("download");return{url:r,external:s,target:a,download:o}}function Z(t){let e=null,n=null,r=null,a=null,s=null,o=null,i=t;for(;i&&i!==document.documentElement;)r===null&&(r=D(i,"preload-code")),a===null&&(a=D(i,"preload-data")),e===null&&(e=D(i,"keepfocus")),n===null&&(n=D(i,"noscroll")),s===null&&(s=D(i,"reload")),o===null&&(o=D(i,"replacestate")),i=Jt(i);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Dt[r??"off"],preload_data:Dt[a??"off"],keepfocus:c(e),noscroll:c(n),reload:c(s),replace_state:c(o)}}function Vt(t){const e=bt(t);let n=!0;function r(){n=!0,e.update(o=>o)}function a(o){n=!1,e.set(o)}function s(o){let i;return e.subscribe(c=>{(i===void 0||n&&c!==i)&&o(i=c)})}return{notify:r,set:a,subscribe:s}}const Qt={v:()=>{}};function Ie(){const{set:t,subscribe:e}=bt(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${Ae}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==Te;return o&&(t(!0),Qt.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:e,check:r}}function lt(t,e,n){return t.origin!==it||!t.pathname.startsWith(e)?!0:n?t.pathname!==location.pathname:!1}function sn(t){}const Zt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...Zt];const Oe=new Set([...Zt]);[...Oe];function Pe(t){return t.filter(e=>e!=null)}function Lt(t){return t instanceof kt||t instanceof St?t.status:500}function Ce(t){return t instanceof St?t.text:"Internal Error"}let S,F,pt;const je=jt.toString().includes("$$")||/function \w+\(\) \{\}/.test(jt.toString());je?(S={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},F={current:null},pt={current:!1}):(S=new class{constructor(){U(this,"data",$state.raw({}));U(this,"form",$state.raw(null));U(this,"error",$state.raw(null));U(this,"params",$state.raw({}));U(this,"route",$state.raw({id:null}));U(this,"state",$state.raw({}));U(this,"status",$state.raw(-1));U(this,"url",$state.raw(new URL("https://example.com")))}},F=new class{constructor(){U(this,"current",$state.raw(null))}},pt=new class{constructor(){U(this,"current",$state.raw(!1))}},Qt.v=()=>pt.current=!0);function Ne(t){Object.assign(S,t)}const De=new Set(["icon","shortcut icon","apple-touch-icon"]),j=Wt(zt)??{},W=Wt(Yt)??{},O={url:Vt({}),page:Vt({}),navigating:bt(null),updated:Ie()};function Ut(t){j[t]=ct()}function Ve(t,e){let n=t+1;for(;j[n];)delete j[n],n+=1;for(n=e+1;W[n];)delete W[n],n+=1}function Y(t,e=!1){return e?location.replace(t.href):location.href=t.href,new Promise(()=>{})}async function te(){if("serviceWorker"in navigator){const t=await navigator.serviceWorker.getRegistration(L||"/");t&&await t.update()}}function qt(){}let At,_t,tt,T,wt,b;const et=[],nt=[];let w=null;function vt(){var t;(t=w==null?void 0:w.fork)==null||t.then(e=>e==null?void 0:e.discard()),w=null}const X=new Map,ee=new Set,qe=new Set,G=new Set;let m={branch:[],error:null,url:null},ne=!1,at=!1,Bt=!0,z=!1,B=!1,ae=!1,Tt=!1,re,E,x,C;const rt=new Set,Kt=new Map;async function un(t,e,n){var s,o,i,c,l;(s=globalThis.__sveltekit_1brftwe)!=null&&s.data&&globalThis.__sveltekit_1brftwe.data,document.URL!==location.href&&(location.href=location.href),b=t,await((i=(o=t.hooks).init)==null?void 0:i.call(o)),At=Ue(t),T=document.documentElement,wt=e,_t=t.nodes[0],tt=t.nodes[1],_t(),tt(),E=(c=history.state)==null?void 0:c[V],x=(l=history.state)==null?void 0:l[M],E||(E=x=Date.now(),history.replaceState({...history.state,[V]:E,[M]:x},""));const r=j[E];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await Ze(wt,n)):(await q({type:"enter",url:xt(b.hash?nn(new URL(location.href)):location.href),replace_state:!0}),a()),Qe()}function Be(){et.length=0,Tt=!1}function oe(t){nt.some(e=>e==null?void 0:e.snapshot)&&(W[t]=nt.map(e=>{var n;return(n=e==null?void 0:e.snapshot)==null?void 0:n.capture()}))}function se(t){var e;(e=W[t])==null||e.forEach((n,r)=>{var a,s;(s=(a=nt[r])==null?void 0:a.snapshot)==null||s.restore(n)})}function Gt(){Ut(E),Nt(zt,j),oe(x),Nt(Yt,W)}async function ie(t,e,n,r){let a;e.invalidateAll&&vt(),await q({type:"goto",url:xt(t),keepfocus:e.keepFocus,noscroll:e.noScroll,replace_state:e.replaceState,state:e.state,redirect_count:n,nav_token:r,accept:()=>{e.invalidateAll&&(Tt=!0,a=[...Kt.keys()]),e.invalidate&&e.invalidate.forEach(Xe)}}),e.invalidateAll&&Q().then(Q).then(()=>{Kt.forEach(({resource:s},o)=>{var i;a!=null&&a.includes(o)&&((i=s.refresh)==null||i.call(s))})})}async function Ke(t){if(t.id!==(w==null?void 0:w.id)){vt();const e={};rt.add(e),w={id:t.id,token:e,promise:le({...t,preload:e}).then(n=>(rt.delete(e),n.type==="loaded"&&n.state.error&&vt(),n)),fork:null}}return w.promise}async function gt(t){var n;const e=(n=await ft(t,!1))==null?void 0:n.route;e&&await Promise.all([...e.layouts,e.leaf].map(r=>r==null?void 0:r[1]()))}async function ce(t,e,n){var a;m=t.state;const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(S,t.props.page),re=new b.root({target:e,props:{...t.props,stores:O,components:nt},hydrate:n,sync:!1}),await Promise.resolve(),se(x),n){const s={from:null,to:{params:m.params,route:{id:((a=m.route)==null?void 0:a.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};G.forEach(o=>o(s))}at=!0}function ot({url:t,params:e,branch:n,status:r,error:a,route:s,form:o}){let i="never";if(L&&(t.pathname===L||t.pathname===L+"/"))i="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(i=f.slash);t.pathname=ge(t.pathname,i),t.search=t.search;const c={type:"loaded",state:{url:t,params:e,branch:n,error:a,route:s},props:{constructors:Pe(n).map(f=>f.node.component),page:Ct(S)}};o!==void 0&&(c.props.form=o);let l={},d=!S,u=0;for(let f=0;fi(new URL(o))))return!0;return!1}function It(t,e){return(t==null?void 0:t.type)==="data"?t:(t==null?void 0:t.type)==="skip"?e??null:null}function Fe(t,e){if(!t)return new Set(e.searchParams.keys());const n=new Set([...t.searchParams.keys(),...e.searchParams.keys()]);for(const r of n){const a=t.searchParams.getAll(r),s=e.searchParams.getAll(r);a.every(o=>s.includes(o))&&s.every(o=>a.includes(o))&&n.delete(r)}return n}function We({error:t,url:e,route:n,params:r}){return{type:"loaded",state:{error:t,url:e,route:n,params:r,branch:[]},props:{page:Ct(S),constructors:[]}}}async function le({id:t,invalidating:e,url:n,params:r,route:a,preload:s}){if((w==null?void 0:w.id)===t)return rt.delete(w.token),w.promise;const{errors:o,layouts:i,leaf:c}=a,l=[...i,c];o.forEach(g=>g==null?void 0:g().catch(()=>{})),l.forEach(g=>g==null?void 0:g[1]().catch(()=>{}));const d=m.url?t!==st(m.url):!1,u=m.route?a.id!==m.route.id:!1,v=Fe(m.url,n);let f=!1;const h=l.map(async(g,p)=>{var $;if(!g)return;const k=m.branch[p];return g[1]===(k==null?void 0:k.loader)&&!Me(f,u,d,v,($=k.universal)==null?void 0:$.uses,r)?k:(f=!0,$t({loader:g[1],url:n,params:r,route:a,parent:async()=>{var J;const A={};for(let y=0;y{});const _=[];for(let g=0;gPromise.resolve({}),server_data_node:It(s)}),i={node:await tt(),loader:tt,universal:null,server:null,data:null};return ot({url:n,params:a,branch:[o,i],status:t,error:e,route:null})}catch(o){if(o instanceof Et)return ie(new URL(o.location,location.href),{},0);throw o}}async function ze(t){const e=t.href;if(X.has(e))return X.get(e);let n;try{const r=(async()=>{let a=await b.hooks.reroute({url:new URL(t),fetch:async(s,o)=>Ge(s,o,t).promise})??t;if(typeof a=="string"){const s=new URL(t);b.hash?s.hash=a:s.pathname=a,a=s}return a})();X.set(e,r),n=await r}catch{X.delete(e);return}return n}async function ft(t,e){if(t&&!lt(t,L,b.hash)){const n=await ze(t);if(!n)return;const r=He(n);for(const a of At){const s=a.exec(r);if(s)return{id:st(t),invalidating:e,route:a,params:_e(s),url:t}}}}function He(t){return me(b.hash?t.hash.replace(/^#/,"").replace(/[?#].+/,""):t.pathname.slice(L.length))||"/"}function st(t){return(b.hash?t.hash.replace(/^#/,""):t.pathname)+t.search}function fe({url:t,type:e,intent:n,delta:r,event:a}){let s=!1;const o=Pt(m,n,t,e);r!==void 0&&(o.navigation.delta=r),a!==void 0&&(o.navigation.event=a);const i={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return z||ee.forEach(c=>c(i)),s?null:o}async function q({type:t,url:e,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o={},redirect_count:i=0,nav_token:c={},accept:l=qt,block:d=qt,event:u}){const v=C;C=c;const f=await ft(e,!1),h=t==="enter"?Pt(m,f,e,t):fe({url:e,type:t,delta:n==null?void 0:n.delta,intent:f,event:u});if(!h){d(),C===c&&(C=v);return}const _=E,g=x;l(),z=!0,at&&h.navigation.type!=="enter"&&O.navigating.set(F.current=h.navigation);let p=f&&await le(f);if(!p){if(lt(e,L,b.hash))return await Y(e,s);p=await ue(e,{id:null},await H(new St(404,"Not Found",`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404,s)}if(e=(f==null?void 0:f.url)||e,C!==c)return h.reject(new Error("navigation aborted")),!1;if(p.type==="redirect"){if(i<20){await q({type:t,url:new URL(p.location,e),popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o,redirect_count:i+1,nav_token:c}),h.fulfil(void 0);return}p=await Ot({status:500,error:await H(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}})}else p.props.page.status>=400&&await O.updated.check()&&(await te(),await Y(e,s));if(Be(),Ut(_),oe(g),p.props.page.url.pathname!==e.pathname&&(e.pathname=p.props.page.url.pathname),o=n?n.state:o,!n){const y=s?0:1,N={[V]:E+=y,[M]:x+=y,[Ht]:o};(s?history.replaceState:history.pushState).call(history,N,"",e),s||Ve(E,x)}const k=f&&(w==null?void 0:w.id)===f.id?w.fork:null;w=null,p.props.page.state=o;let R;if(at){const y=(await Promise.all(Array.from(qe,I=>I(h.navigation)))).filter(I=>typeof I=="function");if(y.length>0){let I=function(){y.forEach(ut=>{G.delete(ut)})};y.push(I),y.forEach(ut=>{G.add(ut)})}m=p.state,p.props.page&&(p.props.page.url=e);const N=k&&await k;N?R=N.commit():(re.$set(p.props),Ne(p.props.page),R=void 0),ae=!0}else await ce(p,wt,!1);const{activeElement:$}=document;await R,await Q(),await Q();let A=n?n.scroll:a?ct():null;if(Bt){const y=e.hash&&document.getElementById(de(e));if(A)scrollTo(A.x,A.y);else if(y){y.scrollIntoView();const{top:N,left:I}=y.getBoundingClientRect();A={x:pageXOffset+I,y:pageYOffset+N}}else scrollTo(0,0)}const J=document.activeElement!==$&&document.activeElement!==document.body;!r&&!J&&en(e,A),Bt=!0,p.props.page&&Object.assign(S,p.props.page),z=!1,t==="popstate"&&se(x),h.fulfil(void 0),G.forEach(y=>y(h.navigation)),O.navigating.set(F.current=null)}async function ue(t,e,n,r,a){return t.origin===it&&t.pathname===location.pathname&&!ne?await Ot({status:r,error:n,url:t,route:e}):await Y(t,a)}function Je(){let t,e,n;T.addEventListener("mousemove",i=>{const c=i.target;clearTimeout(t),t=setTimeout(()=>{s(c,P.hover)},20)});function r(i){i.defaultPrevented||s(i.composedPath()[0],P.tap)}T.addEventListener("mousedown",r),T.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(i=>{for(const c of i)c.isIntersecting&&(gt(new URL(c.target.href)),a.unobserve(c.target))},{threshold:0});async function s(i,c){const l=Xt(i,T),d=l===e&&c>=n;if(!l||d)return;const{url:u,external:v,download:f}=mt(l,L,b.hash);if(v||f)return;const h=Z(l),_=u&&st(m.url)===st(u);if(!(h.reload||_))if(c<=h.preload_data){e=l,n=P.tap;const g=await ft(u,!1);if(!g)return;Ke(g)}else c<=h.preload_code&&(e=l,n=c,gt(u))}function o(){a.disconnect();for(const i of T.querySelectorAll("a")){const{url:c,external:l,download:d}=mt(i,L,b.hash);if(l||d)continue;const u=Z(i);u.reload||(u.preload_code===P.viewport&&a.observe(i),u.preload_code===P.eager&>(c))}}G.add(o),o()}function H(t,e){if(t instanceof kt)return t.body;const n=Lt(t),r=Ce(t);return b.hooks.handleError({error:t,event:e,status:n,message:r})??{message:r}}function dn(t,e={}){return t=new URL(xt(t)),t.origin!==it?Promise.reject(new Error("goto: invalid URL")):ie(t,e,0)}function Xe(t){if(typeof t=="function")et.push(t);else{const{href:e}=new URL(t,location.href);et.push(n=>n.href===e)}}function Qe(){var e;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let r=!1;if(Gt(),!z){const a=Pt(m,void 0,null,"leave"),s={...a.navigation,cancel:()=>{r=!0,a.reject(new Error("navigation cancelled"))}};ee.forEach(o=>o(s))}r?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Gt()}),(e=navigator.connection)!=null&&e.saveData||Je(),T.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const r=Xt(n.composedPath()[0],T);if(!r)return;const{url:a,external:s,target:o,download:i}=mt(r,L,b.hash);if(!a)return;if(o==="_parent"||o==="_top"){if(window.parent!==window)return}else if(o&&o!=="_self")return;const c=Z(r);if(!(r instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||i)return;const[d,u]=(b.hash?a.hash.replace(/^#/,""):a.href).split("#"),v=d===dt(location);if(s||c.reload&&(!v||!u)){fe({url:a,type:"link",event:n})?z=!0:n.preventDefault();return}if(u!==void 0&&v){const[,f]=m.url.href.split("#");if(f===u){if(n.preventDefault(),u===""||u==="top"&&r.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const h=r.ownerDocument.getElementById(decodeURIComponent(u));h&&(h.scrollIntoView(),h.focus())}return}if(B=!0,Ut(E),t(a),!c.replace_state)return;B=!1}n.preventDefault(),await new Promise(f=>{requestAnimationFrame(()=>{setTimeout(f,0)}),setTimeout(f,100)}),await q({type:"link",url:a,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??a.href===location.href,event:n})}),T.addEventListener("submit",n=>{if(n.defaultPrevented)return;const r=HTMLFormElement.prototype.cloneNode.call(n.target),a=n.submitter;if(((a==null?void 0:a.formTarget)||r.target)==="_blank"||((a==null?void 0:a.formMethod)||r.method)!=="get")return;const i=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||r.action);if(lt(i,L,!1))return;const c=n.target,l=Z(c);if(l.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(c,a);i.search=new URLSearchParams(d).toString(),q({type:"form",url:i,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??i.href===location.href,event:n})}),addEventListener("popstate",async n=>{var r;if(!yt){if((r=n.state)!=null&&r[V]){const a=n.state[V];if(C={},a===E)return;const s=j[a],o=n.state[Ht]??{},i=new URL(n.state[$e]??location.href),c=n.state[M],l=m.url?dt(location)===dt(m.url):!1;if(c===x&&(ae||l)){o!==S.state&&(S.state=o),t(i),j[E]=ct(),s&&scrollTo(s.x,s.y),E=a;return}const u=a-E;await q({type:"popstate",url:i,popped:{state:o,scroll:s,delta:u},accept:()=>{E=a,x=c},block:()=>{history.go(-u)},nav_token:C,event:n})}else if(!B){const a=new URL(location.href);t(a),b.hash&&location.reload()}}}),addEventListener("hashchange",()=>{B&&(B=!1,history.replaceState({...history.state,[V]:++E,[M]:x},"",location.href))});for(const n of document.querySelectorAll("link"))De.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&O.navigating.set(F.current=null)});function t(n){m.url=S.url=n,O.page.set(Ct(S)),O.page.notify()}}async function Ze(t,{status:e=200,error:n,node_ids:r,params:a,route:s,server_route:o,data:i,form:c}){ne=!0;const l=new URL(location.href);let d;({params:a={},route:s={id:null}}=await ft(l,!1)||{}),d=At.find(({id:f})=>f===s.id);let u,v=!0;try{const f=r.map(async(_,g)=>{const p=i[g];return p!=null&&p.uses&&(p.uses=tn(p.uses)),$t({loader:b.nodes[_],url:l,params:a,route:s,parent:async()=>{const k={};for(let R=0;R{const i=history.state;yt=!0,location.replace(`#${r}`),b.hash&&location.replace(t.hash),history.replaceState(i,"",t.hash),scrollTo(s,o),yt=!1})}else{const s=document.body,o=s.getAttribute("tabindex");s.tabIndex=-1,s.focus({preventScroll:!0,focusVisible:!1}),o!==null?s.setAttribute("tabindex",o):s.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const s=[];for(let o=0;o{if(a.rangeCount===s.length){for(let o=0;o{a=d,s=u});return o.catch(()=>{}),{navigation:{from:{params:t.params,route:{id:((c=t.route)==null?void 0:c.id)??null},url:t.url},to:n&&{params:(e==null?void 0:e.params)??null,route:{id:((l=e==null?void 0:e.route)==null?void 0:l.id)??null},url:n},willUnload:!e,type:r,complete:o},fulfil:a,reject:s}}function Ct(t){return{data:t.data,error:t.error,form:t.form,params:t.params,route:t.route,state:t.state,status:t.status,url:t.url}}function nn(t){const e=new URL(t);return e.hash=decodeURIComponent(t.hash),e}function de(t){let e;if(b.hash){const[,,n]=t.hash.split("#",3);e=n??""}else e=t.hash.slice(1);return decodeURIComponent(e)}export{un as a,dn as g,sn as l,O as s}; diff --git a/gui/next/build/_app/immutable/chunks/odGh2V91.js b/gui/next/build/_app/immutable/chunks/odGh2V91.js new file mode 100644 index 0000000..98b67fd --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/odGh2V91.js @@ -0,0 +1 @@ +import{q as n}from"./Ul9VwQ7n.js";function r(t,{delay:o=0,duration:e=400,easing:i=n}={}){const a=+getComputedStyle(t).opacity;return{delay:o,duration:e,easing:i,css:c=>`opacity: ${c*a}`}}export{r as f}; diff --git a/gui/next/build/_app/immutable/chunks/t7b_BBSP.js b/gui/next/build/_app/immutable/chunks/t7b_BBSP.js new file mode 100644 index 0000000..3afdb0c --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/t7b_BBSP.js @@ -0,0 +1,21 @@ +import{g as t}from"./BD1m7lx9.js";const i={get:e=>t({query:` + query( + $per_page: Int + $id: ID + ) { + admin_tables( + per_page: $per_page + filter: { + id: { value: $id } + } + ) { + results { + id + name + properties { + name + attribute_type + } + } + } + }`,variables:{per_page:100,id:e}}).then(r=>r.admin_tables.results)};export{i as t}; diff --git a/gui/next/build/_app/immutable/chunks/x4PJc0Qf.js b/gui/next/build/_app/immutable/chunks/x4PJc0Qf.js new file mode 100644 index 0000000..b926de0 --- /dev/null +++ b/gui/next/build/_app/immutable/chunks/x4PJc0Qf.js @@ -0,0 +1 @@ +const o=t=>{if(t&&typeof t=="object")return t;try{const e=JSON.parse(t);if(e&&typeof e=="object")return e}catch{}return!1};export{o as t}; diff --git a/gui/next/build/_app/immutable/entry/app.DmHCXHOx.js b/gui/next/build/_app/immutable/entry/app.DmHCXHOx.js new file mode 100644 index 0000000..89465fa --- /dev/null +++ b/gui/next/build/_app/immutable/entry/app.DmHCXHOx.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.zwm5ZMAN.js","../chunks/Ul9VwQ7n.js","../chunks/Bh3MJlbi.js","../chunks/C5zjxmar.js","../chunks/bH_aOImW.js","../chunks/RFIyOgWr.js","../chunks/t7b_BBSP.js","../chunks/BD1m7lx9.js","../chunks/DGc7Lmco.js","../chunks/D-yR0E5w.js","../chunks/BNCRiqmJ.js","../chunks/odGh2V91.js","../assets/0.QmKtTD0U.css","../nodes/1.B0n1BD_0.js","../nodes/2.C3vbTXim.js","../chunks/CIy9Z9Qf.js","../chunks/Bg88RIi0.js","../assets/Number.AfD80Zdm.css","../assets/2.Cpa7KQFv.css","../nodes/3.Bz4QTVmH.js","../nodes/4.Cy2tpkZR.js","../chunks/BVq9mvWR.js","../assets/CautionBanner.C54xYRep.css","../assets/4.B9XykGLe.css","../nodes/5.Bz4QTVmH.js","../nodes/6.BTcDvYil.js","../chunks/CS29TWE_.js","../chunks/CNoDK8-a.js","../chunks/BkeFH9yg.js","../chunks/Cpu2L2kn.js","../chunks/x4PJc0Qf.js","../assets/Toggle.o--CU0Za.css","../assets/6.CufhmNsu.css","../nodes/7.D_-4meMh.js","../assets/7.CDkZYgtF.css","../nodes/8.DxJ3_9M1.js","../nodes/9.DQ8eZK33.js","../chunks/DntFPtNo.js","../assets/Aside.HqXgbmTR.css","../chunks/BVVGnpm8.js","../assets/JSONTree.Do8jmj2M.css","../assets/9.O9jYhcLF.css","../nodes/10.CpYcdA_2.js","../assets/10.PIDpwlWF.css","../nodes/11.C73io08e.js","../nodes/12.q7a9ldLT.js","../assets/12.EFLSpW2v.css","../nodes/13.D8FJ5ozT.js","../assets/13.NkhcTUJj.css","../nodes/14.D7NRbAwv.js","../nodes/15.WKQetCTJ.js","../assets/15.BIXMQND7.css"])))=>i.map(i=>d[i]); +import{s as B,d as w,i as b,g as J,v as p,j as G,S as H,T as W,G as z,U as E,w as S,A as R,c as F,e as K,h as Q,H as I,a as X,f as Y,t as Z}from"../chunks/Ul9VwQ7n.js";import{S as M,i as x,t as d,a as h,g as A,e as T,d as k,b as v,m as P,c as V}from"../chunks/Bh3MJlbi.js";const ee="modulepreload",te=function(a,e){return new URL(a,e).href},y={},u=function(e,n,o){let s=Promise.resolve();if(n&&n.length>0){const t=document.getElementsByTagName("link"),r=document.querySelector("meta[property=csp-nonce]"),i=(r==null?void 0:r.nonce)||(r==null?void 0:r.getAttribute("nonce"));s=Promise.allSettled(n.map(l=>{if(l=te(l,o),l in y)return;y[l]=!0;const f=l.endsWith(".css"),m=f?'[rel="stylesheet"]':"";if(!!o)for(let L=t.length-1;L>=0;L--){const D=t[L];if(D.href===l&&(!f||D.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${m}`))return;const g=document.createElement("link");if(g.rel=f?"stylesheet":ee,f||(g.as="script"),g.crossOrigin="",g.href=l,i&&g.setAttribute("nonce",i),document.head.appendChild(g),f)return new Promise((L,D)=>{g.addEventListener("load",L),g.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${l}`)))})}))}function c(t){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=t,window.dispatchEvent(r),!r.defaultPrevented)throw t}return s.then(t=>{for(const r of t||[])r.status==="rejected"&&c(r.reason);return e().catch(c)})},me={};function ne(a){let e,n,o;var s=a[2][0];function c(t,r){return{props:{data:t[4],form:t[3],params:t[1].params}}}return s&&(e=E(s,c(a)),a[15](e)),{c(){e&&v(e.$$.fragment),n=p()},l(t){e&&V(e.$$.fragment,t),n=p()},m(t,r){e&&P(e,t,r),b(t,n,r),o=!0},p(t,r){if(r&4&&s!==(s=t[2][0])){if(e){A();const i=e;d(i.$$.fragment,1,0,()=>{k(i,1)}),T()}s?(e=E(s,c(t)),t[15](e),v(e.$$.fragment),h(e.$$.fragment,1),P(e,n.parentNode,n)):e=null}else if(s){const i={};r&16&&(i.data=t[4]),r&8&&(i.form=t[3]),r&2&&(i.params=t[1].params),e.$set(i)}},i(t){o||(e&&h(e.$$.fragment,t),o=!0)},o(t){e&&d(e.$$.fragment,t),o=!1},d(t){t&&w(n),a[15](null),e&&k(e,t)}}}function re(a){let e,n,o;var s=a[2][0];function c(t,r){return{props:{data:t[4],params:t[1].params,$$slots:{default:[ae]},$$scope:{ctx:t}}}}return s&&(e=E(s,c(a)),a[14](e)),{c(){e&&v(e.$$.fragment),n=p()},l(t){e&&V(e.$$.fragment,t),n=p()},m(t,r){e&&P(e,t,r),b(t,n,r),o=!0},p(t,r){if(r&4&&s!==(s=t[2][0])){if(e){A();const i=e;d(i.$$.fragment,1,0,()=>{k(i,1)}),T()}s?(e=E(s,c(t)),t[14](e),v(e.$$.fragment),h(e.$$.fragment,1),P(e,n.parentNode,n)):e=null}else if(s){const i={};r&16&&(i.data=t[4]),r&2&&(i.params=t[1].params),r&65647&&(i.$$scope={dirty:r,ctx:t}),e.$set(i)}},i(t){o||(e&&h(e.$$.fragment,t),o=!0)},o(t){e&&d(e.$$.fragment,t),o=!1},d(t){t&&w(n),a[14](null),e&&k(e,t)}}}function ie(a){let e,n,o;var s=a[2][1];function c(t,r){return{props:{data:t[5],form:t[3],params:t[1].params}}}return s&&(e=E(s,c(a)),a[13](e)),{c(){e&&v(e.$$.fragment),n=p()},l(t){e&&V(e.$$.fragment,t),n=p()},m(t,r){e&&P(e,t,r),b(t,n,r),o=!0},p(t,r){if(r&4&&s!==(s=t[2][1])){if(e){A();const i=e;d(i.$$.fragment,1,0,()=>{k(i,1)}),T()}s?(e=E(s,c(t)),t[13](e),v(e.$$.fragment),h(e.$$.fragment,1),P(e,n.parentNode,n)):e=null}else if(s){const i={};r&32&&(i.data=t[5]),r&8&&(i.form=t[3]),r&2&&(i.params=t[1].params),e.$set(i)}},i(t){o||(e&&h(e.$$.fragment,t),o=!0)},o(t){e&&d(e.$$.fragment,t),o=!1},d(t){t&&w(n),a[13](null),e&&k(e,t)}}}function se(a){let e,n,o;var s=a[2][1];function c(t,r){return{props:{data:t[5],params:t[1].params,$$slots:{default:[oe]},$$scope:{ctx:t}}}}return s&&(e=E(s,c(a)),a[12](e)),{c(){e&&v(e.$$.fragment),n=p()},l(t){e&&V(e.$$.fragment,t),n=p()},m(t,r){e&&P(e,t,r),b(t,n,r),o=!0},p(t,r){if(r&4&&s!==(s=t[2][1])){if(e){A();const i=e;d(i.$$.fragment,1,0,()=>{k(i,1)}),T()}s?(e=E(s,c(t)),t[12](e),v(e.$$.fragment),h(e.$$.fragment,1),P(e,n.parentNode,n)):e=null}else if(s){const i={};r&32&&(i.data=t[5]),r&2&&(i.params=t[1].params),r&65615&&(i.$$scope={dirty:r,ctx:t}),e.$set(i)}},i(t){o||(e&&h(e.$$.fragment,t),o=!0)},o(t){e&&d(e.$$.fragment,t),o=!1},d(t){t&&w(n),a[12](null),e&&k(e,t)}}}function oe(a){let e,n,o;var s=a[2][2];function c(t,r){return{props:{data:t[6],form:t[3],params:t[1].params}}}return s&&(e=E(s,c(a)),a[11](e)),{c(){e&&v(e.$$.fragment),n=p()},l(t){e&&V(e.$$.fragment,t),n=p()},m(t,r){e&&P(e,t,r),b(t,n,r),o=!0},p(t,r){if(r&4&&s!==(s=t[2][2])){if(e){A();const i=e;d(i.$$.fragment,1,0,()=>{k(i,1)}),T()}s?(e=E(s,c(t)),t[11](e),v(e.$$.fragment),h(e.$$.fragment,1),P(e,n.parentNode,n)):e=null}else if(s){const i={};r&64&&(i.data=t[6]),r&8&&(i.form=t[3]),r&2&&(i.params=t[1].params),e.$set(i)}},i(t){o||(e&&h(e.$$.fragment,t),o=!0)},o(t){e&&d(e.$$.fragment,t),o=!1},d(t){t&&w(n),a[11](null),e&&k(e,t)}}}function ae(a){let e,n,o,s;const c=[se,ie],t=[];function r(i,l){return i[2][2]?0:1}return e=r(a),n=t[e]=c[e](a),{c(){n.c(),o=p()},l(i){n.l(i),o=p()},m(i,l){t[e].m(i,l),b(i,o,l),s=!0},p(i,l){let f=e;e=r(i),e===f?t[e].p(i,l):(A(),d(t[f],1,1,()=>{t[f]=null}),T(),n=t[e],n?n.p(i,l):(n=t[e]=c[e](i),n.c()),h(n,1),n.m(o.parentNode,o))},i(i){s||(h(n),s=!0)},o(i){d(n),s=!1},d(i){i&&w(o),t[e].d(i)}}}function $(a){let e,n=a[8]&&N(a);return{c(){e=Q("div"),n&&n.c(),this.h()},l(o){e=F(o,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var s=K(e);n&&n.l(s),s.forEach(w),this.h()},h(){S(e,"id","svelte-announcer"),S(e,"aria-live","assertive"),S(e,"aria-atomic","true"),R(e,"position","absolute"),R(e,"left","0"),R(e,"top","0"),R(e,"clip","rect(0 0 0 0)"),R(e,"clip-path","inset(50%)"),R(e,"overflow","hidden"),R(e,"white-space","nowrap"),R(e,"width","1px"),R(e,"height","1px")},m(o,s){b(o,e,s),n&&n.m(e,null)},p(o,s){o[8]?n?n.p(o,s):(n=N(o),n.c(),n.m(e,null)):n&&(n.d(1),n=null)},d(o){o&&w(e),n&&n.d()}}}function N(a){let e;return{c(){e=Z(a[9])},l(n){e=Y(n,a[9])},m(n,o){b(n,e,o)},p(n,o){o&512&&X(e,n[9])},d(n){n&&w(e)}}}function fe(a){let e,n,o,s,c;const t=[re,ne],r=[];function i(f,m){return f[2][1]?0:1}e=i(a),n=r[e]=t[e](a);let l=a[7]&&$(a);return{c(){n.c(),o=G(),l&&l.c(),s=p()},l(f){n.l(f),o=J(f),l&&l.l(f),s=p()},m(f,m){r[e].m(f,m),b(f,o,m),l&&l.m(f,m),b(f,s,m),c=!0},p(f,[m]){let O=e;e=i(f),e===O?r[e].p(f,m):(A(),d(r[O],1,1,()=>{r[O]=null}),T(),n=r[e],n?n.p(f,m):(n=r[e]=t[e](f),n.c()),h(n,1),n.m(o.parentNode,o)),f[7]?l?l.p(f,m):(l=$(f),l.c(),l.m(s.parentNode,s)):l&&(l.d(1),l=null)},i(f){c||(h(n),c=!0)},o(f){d(n),c=!1},d(f){f&&(w(o),w(s)),r[e].d(f),l&&l.d(f)}}}function le(a,e,n){let{stores:o}=e,{page:s}=e,{constructors:c}=e,{components:t=[]}=e,{form:r}=e,{data_0:i=null}=e,{data_1:l=null}=e,{data_2:f=null}=e;H(o.page.notify);let m=!1,O=!1,g=null;W(()=>{const _=o.page.subscribe(()=>{m&&(n(8,O=!0),z().then(()=>{n(9,g=document.title||"untitled page")}))});return n(7,m=!0),_});function L(_){I[_?"unshift":"push"](()=>{t[2]=_,n(0,t)})}function D(_){I[_?"unshift":"push"](()=>{t[1]=_,n(0,t)})}function C(_){I[_?"unshift":"push"](()=>{t[1]=_,n(0,t)})}function U(_){I[_?"unshift":"push"](()=>{t[0]=_,n(0,t)})}function q(_){I[_?"unshift":"push"](()=>{t[0]=_,n(0,t)})}return a.$$set=_=>{"stores"in _&&n(10,o=_.stores),"page"in _&&n(1,s=_.page),"constructors"in _&&n(2,c=_.constructors),"components"in _&&n(0,t=_.components),"form"in _&&n(3,r=_.form),"data_0"in _&&n(4,i=_.data_0),"data_1"in _&&n(5,l=_.data_1),"data_2"in _&&n(6,f=_.data_2)},a.$$.update=()=>{a.$$.dirty&1026&&o.page.set(s)},[t,s,c,r,i,l,f,m,O,g,o,L,D,C,U,q]}class pe extends M{constructor(e){super(),x(this,e,le,fe,B,{stores:10,page:1,constructors:2,components:0,form:3,data_0:4,data_1:5,data_2:6})}}const de=[()=>u(()=>import("../nodes/0.zwm5ZMAN.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url),()=>u(()=>import("../nodes/1.B0n1BD_0.js"),__vite__mapDeps([13,1,2,3,4,5]),import.meta.url),()=>u(()=>import("../nodes/2.C3vbTXim.js"),__vite__mapDeps([14,1,2,10,4,5,3,15,7,8,9,16,17,18]),import.meta.url),()=>u(()=>import("../nodes/3.Bz4QTVmH.js"),__vite__mapDeps([19,1,2]),import.meta.url),()=>u(()=>import("../nodes/4.Cy2tpkZR.js"),__vite__mapDeps([20,1,2,10,11,3,4,5,8,6,7,9,21,22,23]),import.meta.url),()=>u(()=>import("../nodes/5.Bz4QTVmH.js"),__vite__mapDeps([24,1,2]),import.meta.url),()=>u(()=>import("../nodes/6.BTcDvYil.js"),__vite__mapDeps([25,1,2,26,10,4,5,8,3,27,7,28,29,30,11,9,31,16,17,21,22,32]),import.meta.url),()=>u(()=>import("../nodes/7.D_-4meMh.js"),__vite__mapDeps([33,1,2,11,8,5,6,7,9,34]),import.meta.url),()=>u(()=>import("../nodes/8.DxJ3_9M1.js"),__vite__mapDeps([35,1,2]),import.meta.url),()=>u(()=>import("../nodes/9.DQ8eZK33.js"),__vite__mapDeps([36,1,2,3,4,5,15,7,37,26,8,9,38,39,10,40,41]),import.meta.url),()=>u(()=>import("../nodes/10.CpYcdA_2.js"),__vite__mapDeps([42,1,2,10,11,7,8,5,9,43]),import.meta.url),()=>u(()=>import("../nodes/11.C73io08e.js"),__vite__mapDeps([44,1,2,8,5]),import.meta.url),()=>u(()=>import("../nodes/12.q7a9ldLT.js"),__vite__mapDeps([45,1,2,26,3,4,5,8,7,28,9,10,29,30,11,31,39,40,16,17,46]),import.meta.url),()=>u(()=>import("../nodes/13.D8FJ5ozT.js"),__vite__mapDeps([47,1,2,26,10,11,8,5,9,37,38,30,39,40,48]),import.meta.url),()=>u(()=>import("../nodes/14.D7NRbAwv.js"),__vite__mapDeps([49,1,2,8,5]),import.meta.url),()=>u(()=>import("../nodes/15.WKQetCTJ.js"),__vite__mapDeps([50,1,2,10,3,4,5,27,7,28,8,30,37,26,9,38,39,40,51]),import.meta.url)],he=[],ge={"/":[7],"/backgroundJobs":[8,[2]],"/backgroundJobs/[type]/[id]":[9,[2]],"/constants":[10,[3]],"/database":[11,[4]],"/database/table/[id]":[12,[4]],"/logs":[13,[5]],"/users":[14,[6]],"/users/[id]":[15,[6]]},j={handleError:({error:a})=>{console.error(a)},reroute:()=>{},transport:{}},_e=Object.fromEntries(Object.entries(j.transport).map(([a,e])=>[a,e.decode])),we=Object.fromEntries(Object.entries(j.transport).map(([a,e])=>[a,e.encode])),be=!1,Ee=(a,e)=>_e[a](e);export{Ee as decode,_e as decoders,ge as dictionary,we as encoders,be as hash,j as hooks,me as matchers,de as nodes,pe as root,he as server_loads}; diff --git a/gui/next/build/_app/immutable/entry/start.D4qHf1BM.js b/gui/next/build/_app/immutable/entry/start.D4qHf1BM.js new file mode 100644 index 0000000..76eff31 --- /dev/null +++ b/gui/next/build/_app/immutable/entry/start.D4qHf1BM.js @@ -0,0 +1 @@ +import{l as o,a as r}from"../chunks/bH_aOImW.js";export{o as load_css,r as start}; diff --git a/gui/next/build/_app/immutable/nodes/0.zwm5ZMAN.js b/gui/next/build/_app/immutable/nodes/0.zwm5ZMAN.js new file mode 100644 index 0000000..4e6b922 --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/0.zwm5ZMAN.js @@ -0,0 +1 @@ +import{s as ce,d as m,K as L,i as T,b as d,w as p,c as g,e as w,z as O,g as q,h as $,j as y,k as ie,r as Je,D as be,n as F,L as ze,f as we,t as Me,a as We,v as Ee,T as Oe,J as ke,A as Ie,ae as Ke,S as Re,M as Be,N as je,l as Fe,u as Ge,m as Qe,o as Xe}from"../chunks/Ul9VwQ7n.js";import{S as fe,i as he,t as k,a as b,g as K,e as R,d as P,m as U,c as D,b as J,f as re}from"../chunks/Bh3MJlbi.js";import{p as Ye}from"../chunks/C5zjxmar.js";import{t as Ze}from"../chunks/t7b_BBSP.js";import{s as B}from"../chunks/DGc7Lmco.js";import{I as j}from"../chunks/D-yR0E5w.js";import{e as Ae,u as et,o as tt}from"../chunks/BNCRiqmJ.js";import{f as oe}from"../chunks/odGh2V91.js";function ge(r){const t=r.slice(),e=typeof window<"u"&&window.location.port!=="4173"&&window.location.port!=="5173"?`http://localhost:${parseInt(window.location.port)}`:"http://localhost:3333";return t[3]=e,t}function $e(r){const t=r.slice(),e=typeof window<"u"&&window.location.port!=="4173"&&window.location.port!=="5173"?`http://localhost:${parseInt(window.location.port)}`:"http://localhost:3333";return t[3]=e,t}function st(r){var n;let t,e=((n=r[0].online)==null?void 0:n.MPKIT_URL.replace("https://",""))+"",s,i;return{c(){t=$("a"),s=Me(e),this.h()},l(c){t=g(c,"A",{href:!0});var a=w(t);s=we(a,e),a.forEach(m),this.h()},h(){var c;p(t,"href",i=(c=r[0].online)==null?void 0:c.MPKIT_URL)},m(c,a){T(c,t,a),d(t,s)},p(c,a){var l,o;a&1&&e!==(e=((l=c[0].online)==null?void 0:l.MPKIT_URL.replace("https://",""))+"")&&We(s,e),a&1&&i!==(i=(o=c[0].online)==null?void 0:o.MPKIT_URL)&&p(t,"href",i)},d(c){c&&m(t)}}}function lt(r){let t;return{c(){t=Me("disconnected")},l(e){t=we(e,"disconnected")},m(e,s){T(e,t,s)},p:F,d(e){e&&m(t)}}}function at(r){let t;return{c(){t=Me("connecting…")},l(e){t=we(e,"connecting…")},m(e,s){T(e,t,s)},p:F,d(e){e&&m(t)}}}function xe(r){let t,e,s,i,n,c="Database",a,l,o;return s=new j({props:{icon:"database"}}),{c(){t=$("li"),e=$("a"),J(s.$$.fragment),i=y(),n=$("span"),n.textContent=c,this.h()},l(f){t=g(f,"LI",{class:!0});var M=w(t);e=g(M,"A",{href:!0,class:!0});var _=w(e);D(s.$$.fragment,_),i=q(_),n=g(_,"SPAN",{class:!0,"data-svelte-h":!0}),O(n)!=="svelte-xe6gx4"&&(n.textContent=c),_.forEach(m),M.forEach(m),this.h()},h(){p(n,"class","label svelte-uthxgc"),p(e,"href","/database"),p(e,"class","svelte-uthxgc"),L(e,"active",r[1].url.pathname.startsWith("/database")),p(t,"class","svelte-uthxgc")},m(f,M){T(f,t,M),d(t,e),U(s,e,null),d(e,i),d(e,n),a=!0,l||(o=[be(e,"focus",r[2],{once:!0}),be(e,"mouseover",r[2],{once:!0})],l=!0)},p(f,M){(!a||M&2)&&L(e,"active",f[1].url.pathname.startsWith("/database"))},i(f){a||(b(s.$$.fragment,f),a=!0)},o(f){k(s.$$.fragment,f),a=!1},d(f){f&&m(t),P(s),l=!1,Je(o)}}}function He(r){let t,e,s,i,n,c="Users",a;return s=new j({props:{icon:"users"}}),{c(){t=$("li"),e=$("a"),J(s.$$.fragment),i=y(),n=$("span"),n.textContent=c,this.h()},l(l){t=g(l,"LI",{class:!0});var o=w(t);e=g(o,"A",{href:!0,class:!0});var f=w(e);D(s.$$.fragment,f),i=q(f),n=g(f,"SPAN",{class:!0,"data-svelte-h":!0}),O(n)!=="svelte-o38ms3"&&(n.textContent=c),f.forEach(m),o.forEach(m),this.h()},h(){p(n,"class","label svelte-uthxgc"),p(e,"href","/users"),p(e,"class","svelte-uthxgc"),L(e,"active",r[1].url.pathname.startsWith("/users")),p(t,"class","svelte-uthxgc")},m(l,o){T(l,t,o),d(t,e),U(s,e,null),d(e,i),d(e,n),a=!0},p(l,o){(!a||o&2)&&L(e,"active",l[1].url.pathname.startsWith("/users"))},i(l){a||(b(s.$$.fragment,l),a=!0)},o(l){k(s.$$.fragment,l),a=!1},d(l){l&&m(t),P(s)}}}function qe(r){let t,e,s,i,n,c="Logs",a;return s=new j({props:{icon:"log"}}),{c(){t=$("li"),e=$("a"),J(s.$$.fragment),i=y(),n=$("span"),n.textContent=c,this.h()},l(l){t=g(l,"LI",{class:!0});var o=w(t);e=g(o,"A",{href:!0,class:!0});var f=w(e);D(s.$$.fragment,f),i=q(f),n=g(f,"SPAN",{class:!0,"data-svelte-h":!0}),O(n)!=="svelte-17j55om"&&(n.textContent=c),f.forEach(m),o.forEach(m),this.h()},h(){p(n,"class","label svelte-uthxgc"),p(e,"href","/logs"),p(e,"class","svelte-uthxgc"),L(e,"active",r[1].url.pathname==="/logs"),p(t,"class","svelte-uthxgc")},m(l,o){T(l,t,o),d(t,e),U(s,e,null),d(e,i),d(e,n),a=!0},p(l,o){(!a||o&2)&&L(e,"active",l[1].url.pathname==="/logs")},i(l){a||(b(s.$$.fragment,l),a=!0)},o(l){k(s.$$.fragment,l),a=!1},d(l){l&&m(t),P(s)}}}function ye(r){let t,e,s,i,n,c="Background Jobs",a;return s=new j({props:{icon:"backgroundJob"}}),{c(){t=$("li"),e=$("a"),J(s.$$.fragment),i=y(),n=$("span"),n.textContent=c,this.h()},l(l){t=g(l,"LI",{class:!0});var o=w(t);e=g(o,"A",{href:!0,class:!0});var f=w(e);D(s.$$.fragment,f),i=q(f),n=g(f,"SPAN",{class:!0,"data-svelte-h":!0}),O(n)!=="svelte-fuvc8n"&&(n.textContent=c),f.forEach(m),o.forEach(m),this.h()},h(){p(n,"class","label svelte-uthxgc"),p(e,"href","/backgroundJobs"),p(e,"class","svelte-uthxgc"),L(e,"active",r[1].url.pathname.startsWith("/backgroundJobs")),p(t,"class","svelte-uthxgc")},m(l,o){T(l,t,o),d(t,e),U(s,e,null),d(e,i),d(e,n),a=!0},p(l,o){(!a||o&2)&&L(e,"active",l[1].url.pathname.startsWith("/backgroundJobs"))},i(l){a||(b(s.$$.fragment,l),a=!0)},o(l){k(s.$$.fragment,l),a=!1},d(l){l&&m(t),P(s)}}}function Te(r){let t,e,s,i,n,c="Constants",a;return s=new j({props:{icon:"constant"}}),{c(){t=$("li"),e=$("a"),J(s.$$.fragment),i=y(),n=$("span"),n.textContent=c,this.h()},l(l){t=g(l,"LI",{class:!0});var o=w(t);e=g(o,"A",{href:!0,class:!0});var f=w(e);D(s.$$.fragment,f),i=q(f),n=g(f,"SPAN",{class:!0,"data-svelte-h":!0}),O(n)!=="svelte-s4kqu"&&(n.textContent=c),f.forEach(m),o.forEach(m),this.h()},h(){p(n,"class","label svelte-uthxgc"),p(e,"href","/constants"),p(e,"class","svelte-uthxgc"),L(e,"active",r[1].url.pathname.startsWith("/constants")),p(t,"class","svelte-uthxgc")},m(l,o){T(l,t,o),d(t,e),U(s,e,null),d(e,i),d(e,n),a=!0},p(l,o){(!a||o&2)&&L(e,"active",l[1].url.pathname.startsWith("/constants"))},i(l){a||(b(s.$$.fragment,l),a=!0)},o(l){k(s.$$.fragment,l),a=!1},d(l){l&&m(t),P(s)}}}function Se(r){let t,e,s,i,n,c="Liquid Evaluator",a;return s=new j({props:{icon:"liquid"}}),{c(){t=$("li"),e=$("a"),J(s.$$.fragment),i=y(),n=$("span"),n.textContent=c,this.h()},l(l){t=g(l,"LI",{class:!0});var o=w(t);e=g(o,"A",{href:!0,class:!0});var f=w(e);D(s.$$.fragment,f),i=q(f),n=g(f,"SPAN",{class:!0,"data-svelte-h":!0}),O(n)!=="svelte-1k272bg"&&(n.textContent=c),f.forEach(m),o.forEach(m),this.h()},h(){p(n,"class","label svelte-uthxgc"),p(e,"href",r[3]+"/gui/liquid"),p(e,"class","svelte-uthxgc"),p(t,"class","svelte-uthxgc")},m(l,o){T(l,t,o),d(t,e),U(s,e,null),d(e,i),d(e,n),a=!0},p:F,i(l){a||(b(s.$$.fragment,l),a=!0)},o(l){k(s.$$.fragment,l),a=!1},d(l){l&&m(t),P(s)}}}function Ne(r){let t,e,s,i,n,c="GraphiQL",a;return s=new j({props:{icon:"graphql"}}),{c(){t=$("li"),e=$("a"),J(s.$$.fragment),i=y(),n=$("span"),n.textContent=c,this.h()},l(l){t=g(l,"LI",{class:!0});var o=w(t);e=g(o,"A",{href:!0,class:!0});var f=w(e);D(s.$$.fragment,f),i=q(f),n=g(f,"SPAN",{class:!0,"data-svelte-h":!0}),O(n)!=="svelte-pzl6ct"&&(n.textContent=c),f.forEach(m),o.forEach(m),this.h()},h(){p(n,"class","label svelte-uthxgc"),p(e,"href",r[3]+"/gui/graphql"),p(e,"class","svelte-uthxgc"),p(t,"class","svelte-uthxgc")},m(l,o){T(l,t,o),d(t,e),U(s,e,null),d(e,i),d(e,n),a=!0},p:F,i(l){a||(b(s.$$.fragment,l),a=!0)},o(l){k(s.$$.fragment,l),a=!1},d(l){l&&m(t),P(s)}}}function nt(r){let t,e,s,i,n='',c,a,l,o=' Siteglide development tools',f,M,_,h,u,W=r[0].header.includes("database"),Q,ue=r[0].header.includes("users"),X,pe=r[0].header.includes("logs"),Y,de=r[0].header.includes("backgroundJobs"),Z,me=r[0].header.includes("constants"),ee,_e=r[0].header.includes("liquid"),te,ve=r[0].header.includes("graphiql"),G;function Le(v,z){return v[0].online===void 0?at:v[0].online===!1?lt:st}let se=Le(r),N=se(r),C=W&&xe(r),V=ue&&He(r),E=pe&&qe(r),I=de&&ye(r),A=me&&Te(r),x=_e&&Se($e(r)),H=ve&&Ne(ge(r));return{c(){t=$("header"),e=$("div"),s=$("div"),i=$("a"),i.innerHTML=n,c=y(),a=$("h1"),l=$("a"),l.innerHTML=o,f=y(),M=$("span"),N.c(),_=y(),h=$("nav"),u=$("ul"),C&&C.c(),Q=y(),V&&V.c(),X=y(),E&&E.c(),Y=y(),I&&I.c(),Z=y(),A&&A.c(),ee=y(),x&&x.c(),te=y(),H&&H.c(),this.h()},l(v){t=g(v,"HEADER",{class:!0});var z=w(t);e=g(z,"DIV",{class:!0});var le=w(e);s=g(le,"DIV",{class:!0});var ae=w(s);i=g(ae,"A",{href:!0,"data-svelte-h":!0}),O(i)!=="svelte-1nhlu7c"&&(i.innerHTML=n),c=q(ae),a=g(ae,"H1",{class:!0});var ne=w(a);l=g(ne,"A",{href:!0,class:!0,"data-svelte-h":!0}),O(l)!=="svelte-sq17kk"&&(l.innerHTML=o),f=q(ne),M=g(ne,"SPAN",{class:!0});var Ce=w(M);N.l(Ce),Ce.forEach(m),ne.forEach(m),ae.forEach(m),_=q(le),h=g(le,"NAV",{class:!0});var Ve=w(h);u=g(Ve,"UL",{class:!0});var S=w(u);C&&C.l(S),Q=q(S),V&&V.l(S),X=q(S),E&&E.l(S),Y=q(S),I&&I.l(S),Z=q(S),A&&A.l(S),ee=q(S),x&&x.l(S),te=q(S),H&&H.l(S),S.forEach(m),Ve.forEach(m),le.forEach(m),z.forEach(m),this.h()},h(){p(i,"href","/"),p(l,"href","/"),p(l,"class","svelte-uthxgc"),p(M,"class","instance svelte-uthxgc"),L(M,"offline",!r[0].online),p(a,"class","svelte-uthxgc"),p(s,"class","logo svelte-uthxgc"),p(u,"class","svelte-uthxgc"),p(h,"class","svelte-uthxgc"),p(e,"class","wrapper svelte-uthxgc"),p(t,"class","svelte-uthxgc")},m(v,z){T(v,t,z),d(t,e),d(e,s),d(s,i),d(s,c),d(s,a),d(a,l),d(a,f),d(a,M),N.m(M,null),d(e,_),d(e,h),d(h,u),C&&C.m(u,null),d(u,Q),V&&V.m(u,null),d(u,X),E&&E.m(u,null),d(u,Y),I&&I.m(u,null),d(u,Z),A&&A.m(u,null),d(u,ee),x&&x.m(u,null),d(u,te),H&&H.m(u,null),G=!0},p(v,[z]){se===(se=Le(v))&&N?N.p(v,z):(N.d(1),N=se(v),N&&(N.c(),N.m(M,null))),(!G||z&1)&&L(M,"offline",!v[0].online),z&1&&(W=v[0].header.includes("database")),W?C?(C.p(v,z),z&1&&b(C,1)):(C=xe(v),C.c(),b(C,1),C.m(u,Q)):C&&(K(),k(C,1,1,()=>{C=null}),R()),z&1&&(ue=v[0].header.includes("users")),ue?V?(V.p(v,z),z&1&&b(V,1)):(V=He(v),V.c(),b(V,1),V.m(u,X)):V&&(K(),k(V,1,1,()=>{V=null}),R()),z&1&&(pe=v[0].header.includes("logs")),pe?E?(E.p(v,z),z&1&&b(E,1)):(E=qe(v),E.c(),b(E,1),E.m(u,Y)):E&&(K(),k(E,1,1,()=>{E=null}),R()),z&1&&(de=v[0].header.includes("backgroundJobs")),de?I?(I.p(v,z),z&1&&b(I,1)):(I=ye(v),I.c(),b(I,1),I.m(u,Z)):I&&(K(),k(I,1,1,()=>{I=null}),R()),z&1&&(me=v[0].header.includes("constants")),me?A?(A.p(v,z),z&1&&b(A,1)):(A=Te(v),A.c(),b(A,1),A.m(u,ee)):A&&(K(),k(A,1,1,()=>{A=null}),R()),z&1&&(_e=v[0].header.includes("liquid")),_e?x?(x.p($e(v),z),z&1&&b(x,1)):(x=Se($e(v)),x.c(),b(x,1),x.m(u,te)):x&&(K(),k(x,1,1,()=>{x=null}),R()),z&1&&(ve=v[0].header.includes("graphiql")),ve?H?(H.p(ge(v),z),z&1&&b(H,1)):(H=Ne(ge(v)),H.c(),b(H,1),H.m(u,null)):H&&(K(),k(H,1,1,()=>{H=null}),R())},i(v){G||(b(C),b(V),b(E),b(I),b(A),b(x),b(H),G=!0)},o(v){k(C),k(V),k(E),k(I),k(A),k(x),k(H),G=!1},d(v){v&&m(t),N.d(),C&&C.d(),V&&V.d(),E&&E.d(),I&&I.d(),A&&A.d(),x&&x.d(),H&&H.d()}}}function it(r,t,e){let s,i;return ie(r,B,c=>e(0,s=c)),ie(r,Ye,c=>e(1,i=c)),[s,i,async()=>{s.tables.length||ze(B,s.tables=await Ze.get(),s)}]}class rt extends fe{constructor(t){super(),he(this,t,it,nt,ce,{})}}function Pe(r){let t,e="Disconnected from the instance";return{c(){t=$("div"),t.textContent=e,this.h()},l(s){t=g(s,"DIV",{class:!0,"data-svelte-h":!0}),O(t)!=="svelte-1k8ucix"&&(t.textContent=e),this.h()},h(){p(t,"class","connectionIndicator svelte-1cyr69k"),L(t,"offline",r[0].online===!1)},m(s,i){T(s,t,i)},p(s,i){i&1&&L(t,"offline",s[0].online===!1)},d(s){s&&m(t)}}}function ot(r){let t,e=r[0].online===!1&&Pe(r);return{c(){e&&e.c(),t=Ee()},l(s){e&&e.l(s),t=Ee()},m(s,i){e&&e.m(s,i),T(s,t,i)},p(s,[i]){s[0].online===!1?e?e.p(s,i):(e=Pe(s),e.c(),e.m(t.parentNode,t)):e&&(e.d(1),e=null)},i:F,o:F,d(s){s&&m(t),e&&e.d(s)}}}let ct=7e3;function ft(r,t,e){let s;ie(r,B,c=>e(0,s=c));let i;Oe(async()=>(n(),i=setInterval(n,ct),()=>clearInterval(i)));const n=async()=>{if(document.visibilityState!=="hidden"){const c=typeof window<"u"&&window.location.port!=="4173"&&window.location.port!=="5173"?`http://localhost:${parseInt(window.location.port)}`:"http://localhost:3333";fetch(`${c}/info`).then(a=>a.json()).then(a=>{a&&ze(B,s.online=a,s)}).catch(a=>{ze(B,s.online=!1,s)})}};return[s]}class ht extends fe{constructor(t){super(),he(this,t,ft,ot,ce,{})}}function Ue(r,t,e){const s=r.slice();return s[4]=t[e],s}function De(r,t){let e,s,i=t[4].message+"",n,c,a,l,o,f,M;a=new j({props:{icon:"x",size:"10"}});function _(){return t[2](t[4])}return{key:r,first:null,c(){e=$("div"),s=new je(!1),n=y(),c=$("button"),J(a.$$.fragment),this.h()},l(h){e=g(h,"DIV",{class:!0});var u=w(e);s=Be(u,!1),n=q(u),c=g(u,"BUTTON",{class:!0});var W=w(c);D(a.$$.fragment,W),W.forEach(m),u.forEach(m),this.h()},h(){s.a=n,p(c,"class","svelte-fq192n"),p(e,"class","notification svelte-fq192n"),L(e,"success",t[4].type==="success"),L(e,"error",t[4].type==="error"),L(e,"info",t[4].type==="info"),this.first=e},m(h,u){T(h,e,u),s.m(i,e),d(e,n),d(e,c),U(a,c,null),o=!0,f||(M=be(c,"click",_),f=!0)},p(h,u){t=h,(!o||u&2)&&i!==(i=t[4].message+"")&&s.p(i),(!o||u&2)&&L(e,"success",t[4].type==="success"),(!o||u&2)&&L(e,"error",t[4].type==="error"),(!o||u&2)&&L(e,"info",t[4].type==="info")},i(h){o||(b(a.$$.fragment,h),h&&ke(()=>{o&&(l||(l=re(e,oe,{duration:100},!0)),l.run(1))}),o=!0)},o(h){k(a.$$.fragment,h),h&&(l||(l=re(e,oe,{duration:100},!1)),l.run(0)),o=!1},d(h){h&&m(e),P(a),h&&l&&l.end(),f=!1,M()}}}function ut(r){let t,e=[],s=new Map,i,n,c,a,l,o,f=Ae(r[1].notifications);const M=_=>_[4].id;for(let _=0;_r[3].call(t))},m(_,h){T(_,t,h);for(let u=0;u{o&&(a||(a=re(n,oe,{duration:100},!0)),a.run(1))}),o=!0}},o(_){for(let h=0;he(1,s=a));let i=0;Re(()=>{s.notifications.forEach(a=>{a.timeout||(a.type==="success"||a.type==="info")&&(a.timeout=setTimeout(()=>B.notification.remove(a.id),7e3))})});const n=a=>B.notification.remove(a.id);function c(){i=this.clientHeight,e(0,i)}return[i,s,n,c]}class dt extends fe{constructor(t){super(),he(this,t,pt,ut,ce,{})}}function mt(r){let t,e,s,i,n;t=new rt({});const c=r[1].default,a=Fe(c,r,r[0],null);return i=new dt({}),{c(){J(t.$$.fragment),e=y(),a&&a.c(),s=y(),J(i.$$.fragment)},l(l){D(t.$$.fragment,l),e=q(l),a&&a.l(l),s=q(l),D(i.$$.fragment,l)},m(l,o){U(t,l,o),T(l,e,o),a&&a.m(l,o),T(l,s,o),U(i,l,o),n=!0},p(l,[o]){a&&a.p&&(!n||o&1)&&Ge(a,c,l,l[0],n?Xe(c,l[0],o,null):Qe(l[0]),null)},i(l){n||(b(t.$$.fragment,l),b(a,l),b(i.$$.fragment,l),n=!0)},o(l){k(t.$$.fragment,l),k(a,l),k(i.$$.fragment,l),n=!1},d(l){l&&(m(e),m(s)),P(t,l),a&&a.d(l),P(i,l)}}}function _t(r,t,e){let{$$slots:s={},$$scope:i}=t;return r.$$set=n=>{"$$scope"in n&&e(0,i=n.$$scope)},[i,s]}class Lt extends fe{constructor(t){super(),he(this,t,_t,mt,ce,{})}}export{Lt as component}; diff --git a/gui/next/build/_app/immutable/nodes/1.B0n1BD_0.js b/gui/next/build/_app/immutable/nodes/1.B0n1BD_0.js new file mode 100644 index 0000000..73da495 --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/1.B0n1BD_0.js @@ -0,0 +1 @@ +import{s as x,n as u,d as m,a as h,i as _,b as d,c as v,e as g,f as b,g as S,h as E,t as $,j,k}from"../chunks/Ul9VwQ7n.js";import{S as q,i as y}from"../chunks/Bh3MJlbi.js";import{p as C}from"../chunks/C5zjxmar.js";function H(i){var f;let a,s=i[0].status+"",r,o,n,p=((f=i[0].error)==null?void 0:f.message)+"",c;return{c(){a=E("h1"),r=$(s),o=j(),n=E("p"),c=$(p)},l(e){a=v(e,"H1",{});var t=g(a);r=b(t,s),t.forEach(m),o=S(e),n=v(e,"P",{});var l=g(n);c=b(l,p),l.forEach(m)},m(e,t){_(e,a,t),d(a,r),_(e,o,t),_(e,n,t),d(n,c)},p(e,[t]){var l;t&1&&s!==(s=e[0].status+"")&&h(r,s),t&1&&p!==(p=((l=e[0].error)==null?void 0:l.message)+"")&&h(c,p)},i:u,o:u,d(e){e&&(m(a),m(o),m(n))}}}function P(i,a,s){let r;return k(i,C,o=>s(0,r=o)),[r]}class B extends q{constructor(a){super(),y(this,a,P,H,x,{})}}export{B as component}; diff --git a/gui/next/build/_app/immutable/nodes/10.CpYcdA_2.js b/gui/next/build/_app/immutable/nodes/10.CpYcdA_2.js new file mode 100644 index 0000000..416ac5f --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/10.CpYcdA_2.js @@ -0,0 +1,26 @@ +import{s as De,d as N,I as Me,r as Fe,C as Ce,i as ce,b as n,D as te,E as be,w as l,p as Pe,g as I,c as m,e as O,z as se,f as ge,j as S,h as _,t as Ee,k as Ae,n as Re,J as qe,a as Te,K as Q}from"../chunks/Ul9VwQ7n.js";import{S as Be,i as He,d as de,t as X,a as V,e as Le,m as me,c as _e,b as he,h as Ke,g as Ne}from"../chunks/Bh3MJlbi.js";import{e as ke}from"../chunks/BNCRiqmJ.js";import{f as Ve}from"../chunks/odGh2V91.js";import{g as ve}from"../chunks/BD1m7lx9.js";import{s as j}from"../chunks/DGc7Lmco.js";import{I as pe}from"../chunks/D-yR0E5w.js";const ne={get:()=>ve({query:` + query { + constants( + per_page: 100 + ) { + results { + name, + value, + updated_at + } + } + }`}).then(t=>t.constants.results),edit:e=>{e=Object.fromEntries(e.entries());const t=` + mutation { + constant_set(name: "${e.name}", value: "${e.value}"){ + name, + value + } + }`;return ve({query:t})},delete:e=>{e=Object.fromEntries(e.entries());const t=` + mutation { + constant_unset(name: "${e.name}"){ + name + } + } + `;return ve({query:t})}};function ye(e,t,a){const o=e.slice();return o[13]=t[a],o[14]=t,o[15]=a,o}function Ie(e){let t,a,o="Clear filter",E,i,h,y,R;return i=new pe({props:{icon:"x",size:"12"}}),{c(){t=_("button"),a=_("span"),a.textContent=o,E=S(),he(i.$$.fragment),this.h()},l(f){t=m(f,"BUTTON",{class:!0});var k=O(t);a=m(k,"SPAN",{class:!0,"data-svelte-h":!0}),se(a)!=="svelte-1bu6mgu"&&(a.textContent=o),E=I(k),_e(i.$$.fragment,k),k.forEach(N),this.h()},h(){l(a,"class","label svelte-9flr1b"),l(t,"class","clearFilter svelte-9flr1b")},m(f,k){ce(f,t,k),n(t,a),n(t,E),me(i,t,null),h=!0,y||(R=te(t,"click",e[8]),y=!0)},p:Re,i(f){h||(V(i.$$.fragment,f),h=!0)},o(f){X(i.$$.fragment,f),h=!1},d(f){f&&N(t),de(i),y=!1,R()}}}function Se(e){let t,a,o,E,i,h,y,R="Delete constant",f,k,z,C,T,D=e[13].name+"",J,r,c,v,W,B,q,g,Y,M,K,Z,U,d,P=e[13].exposed?"Hide value":"Show value",u,ae,H,s,w,p,L="Save",A,le,b,x,re;k=new pe({props:{icon:"x",size:"14"}});function oe(){return e[10](e[13],e[14],e[15])}H=new pe({props:{icon:e[13].exposed?"eyeStriked":"eye"}});function Oe(){return e[11](e[13],e[14],e[15])}function Ue(...F){return e[12](e[15],...F)}return{c(){t=_("li"),a=_("form"),o=_("input"),i=S(),h=_("button"),y=_("span"),y.textContent=R,f=S(),he(k.$$.fragment),z=S(),C=_("form"),T=_("label"),J=Ee(D),c=S(),v=_("input"),B=S(),q=_("fieldset"),g=_("input"),Z=S(),U=_("button"),d=_("span"),u=Ee(P),ae=S(),he(H.$$.fragment),w=S(),p=_("button"),p.textContent=L,A=S(),this.h()},l(F){t=m(F,"LI",{class:!0});var $=O(t);a=m($,"FORM",{class:!0});var ee=O(a);o=m(ee,"INPUT",{type:!0,name:!0,class:!0}),i=I(ee),h=m(ee,"BUTTON",{type:!0,title:!0,class:!0});var ie=O(h);y=m(ie,"SPAN",{class:!0,"data-svelte-h":!0}),se(y)!=="svelte-1p7u8ms"&&(y.textContent=R),f=I(ie),_e(k.$$.fragment,ie),ie.forEach(N),ee.forEach(N),z=I($),C=m($,"FORM",{class:!0});var G=O(C);T=m(G,"LABEL",{for:!0,class:!0});var we=O(T);J=ge(we,D),we.forEach(N),c=I(G),v=m(G,"INPUT",{type:!0,name:!0,class:!0}),B=I(G),q=m(G,"FIELDSET",{class:!0});var ue=O(q);g=m(ue,"INPUT",{name:!0,id:!0,class:!0}),Z=I(ue),U=m(ue,"BUTTON",{type:!0,class:!0,title:!0});var fe=O(U);d=m(fe,"SPAN",{class:!0});var $e=O(d);u=ge($e,P),$e.forEach(N),ae=I(fe),_e(H.$$.fragment,fe),fe.forEach(N),ue.forEach(N),w=I(G),p=m(G,"BUTTON",{type:!0,class:!0,"data-svelte-h":!0}),se(p)!=="svelte-1g3xn8h"&&(p.textContent=L),G.forEach(N),A=I($),$.forEach(N),this.h()},h(){l(o,"type","hidden"),l(o,"name","name"),o.value=E=e[13].name,l(o,"class","svelte-9flr1b"),l(y,"class","label svelte-9flr1b"),l(h,"type","submit"),l(h,"title","Delete constant"),l(h,"class","svelte-9flr1b"),l(a,"class","delete svelte-9flr1b"),l(T,"for",r=e[13].name),l(T,"class","svelte-9flr1b"),l(v,"type","hidden"),l(v,"name","name"),v.value=W=e[13].name,l(v,"class","svelte-9flr1b"),g.disabled=Y=!e[13].exposed,l(g,"name","value"),g.value=M=e[13].value,l(g,"id",K=e[13].name),l(g,"class","svelte-9flr1b"),Q(g,"exposed",e[13].exposed),l(d,"class","label svelte-9flr1b"),l(U,"type","button"),l(U,"class","toggleExposition svelte-9flr1b"),l(U,"title",s=e[13].exposed?"Hide value":"Show value"),l(q,"class","svelte-9flr1b"),l(p,"type","submit"),l(p,"class","button svelte-9flr1b"),Q(p,"needed",e[1][e[15]].changed),l(C,"class","edit svelte-9flr1b"),l(t,"class","svelte-9flr1b"),Q(t,"hidden",e[0]&&e[3](e[13])),Q(t,"highlighted",e[2].highlighted.constant===e[13].name)},m(F,$){ce(F,t,$),n(t,a),n(a,o),n(a,i),n(a,h),n(h,y),n(h,f),me(k,h,null),n(t,z),n(t,C),n(C,T),n(T,J),n(C,c),n(C,v),n(C,B),n(C,q),n(q,g),n(q,Z),n(q,U),n(U,d),n(d,u),n(U,ae),me(H,U,null),n(C,w),n(C,p),n(t,A),b=!0,x||(re=[te(a,"submit",be(e[9])),te(g,"input",oe),te(U,"click",Oe),te(C,"submit",be(Ue))],x=!0)},p(F,$){e=F,(!b||$&2&&E!==(E=e[13].name))&&(o.value=E),(!b||$&2)&&D!==(D=e[13].name+"")&&Te(J,D),(!b||$&2&&r!==(r=e[13].name))&&l(T,"for",r),(!b||$&2&&W!==(W=e[13].name))&&(v.value=W),(!b||$&2&&Y!==(Y=!e[13].exposed))&&(g.disabled=Y),(!b||$&2&&M!==(M=e[13].value)&&g.value!==M)&&(g.value=M),(!b||$&2&&K!==(K=e[13].name))&&l(g,"id",K),(!b||$&2)&&Q(g,"exposed",e[13].exposed),(!b||$&2)&&P!==(P=e[13].exposed?"Hide value":"Show value")&&Te(u,P);const ee={};$&2&&(ee.icon=e[13].exposed?"eyeStriked":"eye"),H.$set(ee),(!b||$&2&&s!==(s=e[13].exposed?"Hide value":"Show value"))&&l(U,"title",s),(!b||$&2)&&Q(p,"needed",e[1][e[15]].changed),(!b||$&11)&&Q(t,"hidden",e[0]&&e[3](e[13])),(!b||$&6)&&Q(t,"highlighted",e[2].highlighted.constant===e[13].name)},i(F){b||(V(k.$$.fragment,F),V(H.$$.fragment,F),F&&(le||qe(()=>{le=Ke(t,Ve,{duration:100,delay:10*e[15]}),le.start()})),b=!0)},o(F){X(k.$$.fragment,F),X(H.$$.fragment,F),b=!1},d(F){F&&N(t),de(k),de(H),x=!1,Fe(re)}}}function je(e){var H;let t,a,o,E,i,h,y="Find:",R,f,k,z,C,T,D,J=' ',r,c,v=' ',W,B,q,g,Y,M,K,Z,U;document.title=t="Constants"+((H=e[2].online)!=null&&H.MPKIT_URL?": "+e[2].online.MPKIT_URL.replace("https://",""):"");let d=e[0]&&Ie(e);g=new pe({props:{icon:"arrowRight"}});let P=ke(e[1]),u=[];for(let s=0;sX(u[s],1,1,()=>{u[s]=null});return{c(){a=S(),o=_("div"),E=_("nav"),i=_("form"),h=_("label"),h.textContent=y,R=S(),f=_("input"),k=S(),d&&d.c(),z=S(),C=_("section"),T=_("form"),D=_("fieldset"),D.innerHTML=J,r=S(),c=_("fieldset"),c.innerHTML=v,W=S(),B=_("button"),q=Ee(`Add\r + `),he(g.$$.fragment),Y=S(),M=_("ul");for(let s=0;s{d=null}),Le()),w&63){P=ke(s[1]);let L;for(L=0;La(2,o=r));let E="",i=[];(async()=>await ne.get())().then(r=>{a(1,i=r)});const h=r=>r.name.toLowerCase().indexOf(E.toLowerCase())===-1&&r.value.toLowerCase().indexOf(E.toLowerCase())===-1,y=async(r,c)=>{r.preventDefault();const v=await ne.edit(new FormData(r.target));v.errors?j.notification.create("error",`Failed to update ${v.constant_set.name} constant`):(a(1,i[c].changed=!1,i),j.highlight("constant",v.constant_set.name),j.notification.create("success",`Constant ${v.constant_set.name} updated`))},R=async r=>{if(r.preventDefault(),confirm("Are you sure you want to delete this constant?")){const c=await ne.delete(new FormData(r.target));c.errors?j.notification.create("success",`Failed to delete ${c.constant_unset.name} constant`):(j.notification.create("success",`Constant ${c.constant_unset.name} deleted`),await ne.get().then(v=>{a(1,i=v)}))}},f=async r=>{r.preventDefault();const c=await ne.edit(new FormData(r.target));c.errors?j.notification.create("error",`Failed to create ${c.constant_set.name} constant`):(r.target.reset(),j.notification.create("success",`Constant ${c.constant_set.name} created`),await ne.get().then(v=>{a(1,i=v),j.highlight("constant",c.constant_set.name)}))};function k(){E=this.value,a(0,E)}return[E,i,o,h,y,R,f,k,()=>a(0,E=""),r=>R(r),(r,c,v)=>a(1,c[v].changed=!0,i),(r,c,v)=>a(1,c[v].exposed=!r.exposed,i),(r,c)=>y(c,r)]}class xe extends Be{constructor(t){super(),He(this,t,ze,je,De,{})}}export{xe as component}; diff --git a/gui/next/build/_app/immutable/nodes/11.C73io08e.js b/gui/next/build/_app/immutable/nodes/11.C73io08e.js new file mode 100644 index 0000000..1629fd8 --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/11.C73io08e.js @@ -0,0 +1 @@ +import{s as i,n as o,p as l,d as c,k as p}from"../chunks/Ul9VwQ7n.js";import{S as d,i as m}from"../chunks/Bh3MJlbi.js";import{s as u}from"../chunks/DGc7Lmco.js";function _(n){var s;let e;return document.title=e="Database"+((s=n[0].online)!=null&&s.MPKIT_URL?": "+n[0].online.MPKIT_URL.replace("https://",""):""),{c:o,l(t){l("svelte-1bpefxl",document.head).forEach(c)},m:o,p(t,[a]){var r;a&1&&e!==(e="Database"+((r=t[0].online)!=null&&r.MPKIT_URL?": "+t[0].online.MPKIT_URL.replace("https://",""):""))&&(document.title=e)},i:o,o,d:o}}function f(n,e,s){let t;return p(n,u,a=>s(0,t=a)),[t]}class I extends d{constructor(e){super(),m(this,e,f,_,i,{})}}export{I as component}; diff --git a/gui/next/build/_app/immutable/nodes/12.q7a9ldLT.js b/gui/next/build/_app/immutable/nodes/12.q7a9ldLT.js new file mode 100644 index 0000000..e7311a7 --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/12.q7a9ldLT.js @@ -0,0 +1,72 @@ +import{s as Ze,d as h,i as A,D as le,E as _t,c as g,e as I,h as $,k as Pe,I as Ke,v as Ae,L as Fe,$ as gt,H as rt,r as st,Y as Ye,C as re,b as c,w as _,J as dt,z as ne,g as L,j as F,a as _e,f as W,t as X,n as je,F as Tt,ad as hl,af as At,K as ye,T as bl,G as gl,ag as $l,Z as wl,p as kl,X as yl}from"../chunks/Ul9VwQ7n.js";import{S as Ge,i as Qe,t as R,a as D,g as ge,e as $e,d as se,m as ie,c as oe,b as ue,f as Rt,j as El}from"../chunks/Bh3MJlbi.js";import{q as Tl,g as Cl}from"../chunks/CS29TWE_.js";import{p as wt}from"../chunks/C5zjxmar.js";import{s as H}from"../chunks/DGc7Lmco.js";import{g as ut}from"../chunks/BD1m7lx9.js";import{b as jt,c as Nl}from"../chunks/BkeFH9yg.js";import{I as Se}from"../chunks/D-yR0E5w.js";import{e as Ee,u as Sl,o as Ol}from"../chunks/BNCRiqmJ.js";import{c as Il,p as vl,T as Dl}from"../chunks/Cpu2L2kn.js";import{J as Ll}from"../chunks/BVVGnpm8.js";import{t as Fl}from"../chunks/x4PJc0Qf.js";import{N as Pl}from"../chunks/Bg88RIi0.js";const Al=(r=[])=>{let e="",l={},t="";const n={int:["value_int","not_value_int"],float:["not_value_float","value_float"],bool:["exists","not_value_boolean","value_boolean"],range:["range"],array:["value_array","not_value_array","value_in","not_value_in","array_overlaps","not_array_overlaps"]};for(const a of r){if(!a.minFilterValue&&!a.maxFilterValue&&!a.value)break;let s="",o="";n.int.includes(a.operation)?(s="integer",o=parseInt(a.value)):n.float.includes(a.operation)?(s="float",o=parseFloat(a.value)):n.bool.includes(a.operation)?(s="boolean",o=a.value==="true"):n.range.includes(a.operation)?(s="range",o={},o[a.minFilter]=a.minFilterValue,o[a.maxFilter]=a.maxFilterValue):n.array.includes(a.operation)?(s="array",o=JSON.parse(a.value)):(s="string",o=a.value),a.name!=="id"&&(e+=`, $${a.name}: ${Nl[s]||"String"}`,l[a.name]=o,t+=`{ + name: "${a.name}", + ${a.operation}: $${a.name} + }`)}return e.length&&(e=e.slice(2),e=`(${e})`),t=` + properties: [${t}] + `,{variablesDefinition:e,variables:l,propertiesFilter:t}},Ne={get:r=>{var d,f,v;const l={...{deleted:!1,filters:{page:1}},...r},t=l.table?`table_id: { value: ${l.table} }`:"",n=(f=(d=l.filters)==null?void 0:d.attributes)==null?void 0:f.findIndex(b=>b.name==="id");let a="";n>=0&&l.filters.attributes[n].value&&(a=`id: { ${l.filters.attributes[n].operation}: ${l.filters.attributes[n].value} }`);let s="";l.sort?l.sort.by==="id"||l.sort.by==="created_at"||l.sort.by==="updated_at"?s=`${l.sort.by}: { order: ${l.sort.order} }`:s=`properties: { name: "${l.sort.by}", order: ${l.sort.order} }`:s="created_at: { order: DESC }";const o=l.deleted==="true"?"deleted_at: { exists: true }":"",i=Al((v=l.filters)==null?void 0:v.attributes),u=` + query${i.variablesDefinition} { + records( + page: ${l.filters.page} + per_page: 20, + sort: { ${s} }, + filter: { + ${t} + ${a} + ${o} + ${i.propertiesFilter} + } + ) { + current_page + total_pages + results { + id + created_at + updated_at + deleted_at + properties + } + } + }`;return ut({query:u,variables:i.variables}).then(b=>{H.data("records",b.records)})},create:r=>{const l=Object.fromEntries(r.properties.entries()).tableName,t=jt(r.properties),n=` + mutation${t.variablesDefinition} { + record_create(record: { + table: "${l}", + properties: [${t.properties}] + }) { + id + } + }`;return ut({query:n,variables:t.variables})},edit:r=>{let e=Object.fromEntries(r.properties.entries());const l=e.tableName,t=e.recordId,n=jt(r.properties),a=` + mutation${n.variablesDefinition} { + record_update( + id: ${t}, + record: { + table: "${l}" + properties: [${n.properties}] + } + ) { + id + } + }`;return ut({query:a,variables:n.variables})},delete:r=>{let e=Object.fromEntries(r.properties.entries());const l=e.tableName,t=e.recordId,n=` + mutation { + record_delete(table: "${l}", id: ${t}) { + id + } + }`;return ut({query:n})},restore:r=>{let e=Object.fromEntries(r.properties.entries());const l=e.tableName,n=` + mutation { + record_update( + id: ${e.recordId}, + record: { + table: "${l}", + deleted_at: null + } + ) { + id + } + }`;return ut({query:n})}};function Ut(r,e,l){const t=r.slice();return t[10]=e[l],t[11]=e,t[12]=l,t}function Vt(r,e,l){const t=r.slice();return t[13]=e[l],t}function zt(r,e,l){const t=r.slice();return t[16]=e[l],t}function Bt(r){let e,l,t=Ee(r[1].filters.attributes),n=[];for(let s=0;sR(n[s],1,1,()=>{n[s]=null});return{c(){for(let s=0;s{S[O]=null}),$e(),v=S[f],v?v.p(r,w):(v=S[f]=q[f](r),v.c()),D(v,1),v.m(e,b))},i(N){C||(D(v),C=!0)},o(N){R(v),C=!1},d(N){N&&h(e),Ke(p,N),S[f].d(),E=!1,st(m)}}}function Bl(r){var s;let e,l,t,n,a=((s=r[1].table)==null?void 0:s.properties)&&Bt(r);return{c(){e=$("form"),a&&a.c()},l(o){e=g(o,"FORM",{});var i=I(e);a&&a.l(i),i.forEach(h)},m(o,i){A(o,e,i),a&&a.m(e,null),r[9](e),l=!0,t||(n=le(e,"submit",_t(r[3])),t=!0)},p(o,[i]){var u;(u=o[1].table)!=null&&u.properties?a?(a.p(o,i),i&2&&D(a,1)):(a=Bt(o),a.c(),D(a,1),a.m(e,null)):a&&(ge(),R(a,1,1,()=>{a=null}),$e())},i(o){l||(D(a),l=!0)},o(o){R(a),l=!1},d(o){o&&h(e),a&&a.d(),r[9](null),t=!1,n()}}}function Ml(r,e,l){let t;Pe(r,H,b=>l(1,t=b));let n;const a={id:["value"],string:["value","exists","contains","ends_with","not_contains","not_ends_with","not_starts_with","not_value","starts_with"],text:["value","exists","not_value"],array:["array_contains","value_array","value_in","exists","array_overlaps","not_array_contains","not_array_overlaps","not_value_array","not_value_in"],boolean:["value_boolean","exists","not_value_boolean"],integer:["value_int","exists","not_value_int","range"],float:["value_float","exists","not_value_float","range"],upload:["value","exists","not_value"],datetime:["value","exists","contains","ends_with","not_contains","not_ends_with","not_starts_with","not_value","starts_with"],date:["value","exists","contains","ends_with","not_contains","not_ends_with","not_starts_with","not_value","starts_with"]},s=()=>{Fe(H,t.filters={page:1,attributes:[Object.fromEntries(new FormData(n).entries())],deleted:t.filters.deleted},t),Ne.get({table:t.table.id,filters:t.filters,sort:t.sort,deleted:t.filters.deleted})};function o(b,C){b[C].name=gt(this),H.set(t)}const i=(b,C,E)=>{var m;Fe(H,C[E].attribute_type=((m=t.table.properties.find(y=>y.name===b.name))==null?void 0:m.attribute_type)||"id",t)};function u(b,C){b[C].attribute_type=this.value,H.set(t)}function d(b,C){b[C].operation=gt(this),H.set(t)}function f(b,C){b[C].value=this.value,H.set(t)}function v(b){rt[b?"unshift":"push"](()=>{n=b,l(0,n)})}return[n,t,a,s,o,i,u,d,f,v]}class ql extends Ge{constructor(e){super(),Qe(this,e,Ml,Bl,Ze,{})}}function Jt(r,e,l){const t=r.slice();return t[8]=e[l],t}function Wt(r){let e,l,t="created at",n,a="updated at",s,o="id",i,u,d,f="DESC [Z→A]",v,b="ASC [A→Z]",C,E,m,y,p,k,T,z=Ee(r[1].table.properties),q=[];for(let w=0;wr[3].call(e)),d.__value="DESC",re(d,d.__value),v.__value="ASC",re(v,v.__value),_(u,"name","order"),_(u,"id","sort_order"),_(u,"class","svelte-yzlk61"),r[1].sort.order===void 0&&dt(()=>r[5].call(u)),_(E,"for","sort_order"),_(E,"class","button svelte-yzlk61")},m(w,O){A(w,e,O),c(e,l),c(e,n),c(e,s);for(let P=0;P{V[P]=null}),$e(),y=V[m],y||(y=V[m]=S[m](w),y.c()),D(y,1),y.m(E,null))},i(w){p||(D(y),p=!0)},o(w){R(y),p=!1},d(w){w&&(h(e),h(i),h(u),h(C),h(E)),Ke(q,w),V[m].d(),k=!1,st(T)}}}function Xt(r){let e,l=r[8].name+"",t,n,a;return{c(){e=$("option"),t=X(l),n=F(),this.h()},l(s){e=g(s,"OPTION",{});var o=I(e);t=W(o,l),n=L(o),o.forEach(h),this.h()},h(){e.__value=a=r[8].name,re(e,e.__value)},m(s,o){A(s,e,o),c(e,t),c(e,n)},p(s,o){o&2&&l!==(l=s[8].name+"")&&_e(t,l),o&2&&a!==(a=s[8].name)&&(e.__value=a,re(e,e.__value))},d(s){s&&h(e)}}}function Hl(r){let e,l;return e=new Se({props:{icon:"sortAZ"}}),{c(){ue(e.$$.fragment)},l(t){oe(e.$$.fragment,t)},m(t,n){ie(e,t,n),l=!0},i(t){l||(D(e.$$.fragment,t),l=!0)},o(t){R(e.$$.fragment,t),l=!1},d(t){se(e,t)}}}function Jl(r){let e,l;return e=new Se({props:{icon:"sortZA"}}),{c(){ue(e.$$.fragment)},l(t){oe(e.$$.fragment,t)},m(t,n){ie(e,t,n),l=!0},i(t){l||(D(e.$$.fragment,t),l=!0)},o(t){R(e.$$.fragment,t),l=!1},d(t){se(e,t)}}}function Wl(r){var s;let e,l,t,n,a=((s=r[1].table)==null?void 0:s.properties)&&Wt(r);return{c(){e=$("form"),a&&a.c(),this.h()},l(o){e=g(o,"FORM",{class:!0});var i=I(e);a&&a.l(i),i.forEach(h),this.h()},h(){_(e,"class","svelte-yzlk61")},m(o,i){A(o,e,i),a&&a.m(e,null),r[7](e),l=!0,t||(n=le(e,"submit",_t(r[2])),t=!0)},p(o,[i]){var u;(u=o[1].table)!=null&&u.properties?a?(a.p(o,i),i&2&&D(a,1)):(a=Wt(o),a.c(),D(a,1),a.m(e,null)):a&&(ge(),R(a,1,1,()=>{a=null}),$e())},i(o){l||(D(a),l=!0)},o(o){R(a),l=!1},d(o){o&&h(e),a&&a.d(),r[7](null),t=!1,n()}}}function Xl(r,e,l){let t;Pe(r,H,f=>l(1,t=f));let n;const a=()=>{Fe(H,t.filters.page=1,t),Ne.get({table:t.table.id,filters:t.filters,sort:Object.fromEntries(new FormData(n).entries()),deleted:t.filters.deleted})};function s(){t.sort.by=gt(this),H.set(t)}const o=()=>n.requestSubmit();function i(){t.sort.order=gt(this),H.set(t)}const u=()=>n.requestSubmit();function d(f){rt[f?"unshift":"push"](()=>{n=f,l(0,n)})}return[n,t,a,s,o,i,u,d]}class Yl extends Ge{constructor(e){super(),Qe(this,e,Xl,Wl,Ze,{})}}function Kl(r){let e,l,t,n,a,s,o,i,u,d,f,v,b;return u=new Se({props:{icon:"x",size:"22"}}),{c(){e=$("form"),l=$("input"),n=F(),a=$("input"),s=F(),o=$("button"),i=$("i"),ue(u.$$.fragment),d=X(`\r + Delete record`),this.h()},l(C){e=g(C,"FORM",{});var E=I(e);l=g(E,"INPUT",{type:!0,name:!0}),n=L(E),a=g(E,"INPUT",{type:!0,name:!0}),s=L(E),o=g(E,"BUTTON",{class:!0});var m=I(o);i=g(m,"I",{class:!0});var y=I(i);oe(u.$$.fragment,y),y.forEach(h),d=W(m,`\r + Delete record`),m.forEach(h),E.forEach(h),this.h()},h(){_(l,"type","hidden"),_(l,"name","tableName"),l.value=t=r[0].name,_(a,"type","hidden"),_(a,"name","recordId"),a.value=r[1],_(i,"class","svelte-ooaugn"),_(o,"class","danger")},m(C,E){A(C,e,E),c(e,l),c(e,n),c(e,a),c(e,s),c(e,o),c(o,i),ie(u,i,null),c(o,d),r[4](e),f=!0,v||(b=le(e,"submit",r[3]),v=!0)},p(C,[E]){(!f||E&1&&t!==(t=C[0].name))&&(l.value=t),(!f||E&2)&&(a.value=C[1])},i(C){f||(D(u.$$.fragment,C),f=!0)},o(C){R(u.$$.fragment,C),f=!1},d(C){C&&h(e),se(u),r[4](null),v=!1,b()}}}function Zl(r,e,l){let t,n;Pe(r,H,f=>l(5,t=f)),Pe(r,wt,f=>l(6,n=f));let{table:a}=e,{id:s}=e,o,i=Tt();const u=async f=>{if(f.preventDefault(),confirm("Are you sure you want to delete this record?")){i("success");const v=await Ne.delete({table:a.name,properties:new FormData(o)});v.errors?H.notification.create("error",`Record ${v.record_delete.id} could not be deleted`):(Ne.get({table:n.params.id,filters:t.filters,sort:t.sort,deleted:t.filters.deleted}),H.notification.create("success",`Record ${v.record_delete.id} deleted`))}};function d(f){rt[f?"unshift":"push"](()=>{o=f,l(2,o)})}return r.$$set=f=>{"table"in f&&l(0,a=f.table),"id"in f&&l(1,s=f.id)},[a,s,o,u,d]}class Gl extends Ge{constructor(e){super(),Qe(this,e,Zl,Kl,Ze,{table:0,id:1})}}function Ql(r){let e,l,t,n,a,s,o,i,u,d,f,v,b;return u=new Se({props:{icon:"recycleRefresh"}}),{c(){e=$("form"),l=$("input"),n=F(),a=$("input"),s=F(),o=$("button"),i=$("i"),ue(u.$$.fragment),d=X(`\r + Restore record`),this.h()},l(C){e=g(C,"FORM",{});var E=I(e);l=g(E,"INPUT",{type:!0,name:!0}),n=L(E),a=g(E,"INPUT",{type:!0,name:!0}),s=L(E),o=g(E,"BUTTON",{});var m=I(o);i=g(m,"I",{});var y=I(i);oe(u.$$.fragment,y),y.forEach(h),d=W(m,`\r + Restore record`),m.forEach(h),E.forEach(h),this.h()},h(){_(l,"type","hidden"),_(l,"name","tableName"),l.value=t=r[0].name,_(a,"type","hidden"),_(a,"name","recordId"),a.value=r[1]},m(C,E){A(C,e,E),c(e,l),c(e,n),c(e,a),c(e,s),c(e,o),c(o,i),ie(u,i,null),c(o,d),r[4](e),f=!0,v||(b=le(e,"submit",r[3]),v=!0)},p(C,[E]){(!f||E&1&&t!==(t=C[0].name))&&(l.value=t),(!f||E&2)&&(a.value=C[1])},i(C){f||(D(u.$$.fragment,C),f=!0)},o(C){R(u.$$.fragment,C),f=!1},d(C){C&&h(e),se(u),r[4](null),v=!1,b()}}}function xl(r,e,l){let t,n;Pe(r,H,f=>l(5,t=f)),Pe(r,wt,f=>l(6,n=f));let{table:a}=e,{id:s}=e,o,i=Tt();const u=async f=>{f.preventDefault(),i("success");const v=await Ne.restore({table:a.name,properties:new FormData(o)});v.errors?H.notification.create("error",`Record ${v.record_update.id} could not be restored`):(Ne.get({table:n.params.id,filters:t.filters,sort:t.sort,deleted:t.filters.deleted}),H.notification.create("success",`Record ${v.record_update.id} restored`))};function d(f){rt[f?"unshift":"push"](()=>{o=f,l(2,o)})}return r.$$set=f=>{"table"in f&&l(0,a=f.table),"id"in f&&l(1,s=f.id)},[a,s,o,u,d]}class er extends Ge{constructor(e){super(),Qe(this,e,xl,Ql,Ze,{table:0,id:1})}}function tr(r){let e,l;return e=new Gl({props:{table:r[1].table,id:r[0].id}}),e.$on("success",r[6]),{c(){ue(e.$$.fragment)},l(t){oe(e.$$.fragment,t)},m(t,n){ie(e,t,n),l=!0},p(t,n){const a={};n&2&&(a.table=t[1].table),n&1&&(a.id=t[0].id),e.$set(a)},i(t){l||(D(e.$$.fragment,t),l=!0)},o(t){R(e.$$.fragment,t),l=!1},d(t){se(e,t)}}}function lr(r){let e,l;return e=new er({props:{table:r[1].table,id:r[0].id}}),e.$on("success",r[5]),{c(){ue(e.$$.fragment)},l(t){oe(e.$$.fragment,t)},m(t,n){ie(e,t,n),l=!0},p(t,n){const a={};n&2&&(a.table=t[1].table),n&1&&(a.id=t[0].id),e.$set(a)},i(t){l||(D(e.$$.fragment,t),l=!0)},o(t){R(e.$$.fragment,t),l=!1},d(t){se(e,t)}}}function rr(r){let e,l,t,n,a,s,o,i,u,d,f,v,b;a=new Se({props:{icon:"copy",size:"22"}});const C=[lr,tr],E=[];function m(y,p){return y[1].filters.deleted==="true"?0:1}return u=m(r),d=E[u]=C[u](r),{c(){e=$("menu"),l=$("ul"),t=$("li"),n=$("button"),ue(a.$$.fragment),s=X(`\r + Copy record`),o=F(),i=$("li"),d.c(),this.h()},l(y){e=g(y,"MENU",{class:!0});var p=I(e);l=g(p,"UL",{});var k=I(l);t=g(k,"LI",{class:!0});var T=I(t);n=g(T,"BUTTON",{type:!0});var z=I(n);oe(a.$$.fragment,z),s=W(z,`\r + Copy record`),z.forEach(h),T.forEach(h),o=L(k),i=g(k,"LI",{class:!0});var q=I(i);d.l(q),q.forEach(h),k.forEach(h),p.forEach(h),this.h()},h(){_(n,"type","button"),_(t,"class","svelte-1tht2a1"),_(i,"class","svelte-1tht2a1"),_(e,"class","content-context svelte-1tht2a1")},m(y,p){A(y,e,p),c(e,l),c(l,t),c(t,n),ie(a,n,null),c(n,s),c(l,o),c(l,i),E[u].m(i,null),f=!0,v||(b=[le(window,"keyup",r[3]),le(n,"click",r[4]),hl(Il.call(null,e,r[7]))],v=!0)},p(y,[p]){let k=u;u=m(y),u===k?E[u].p(y,p):(ge(),R(E[k],1,1,()=>{E[k]=null}),$e(),d=E[u],d?d.p(y,p):(d=E[u]=C[u](y),d.c()),D(d,1),d.m(i,null))},i(y){f||(D(a.$$.fragment,y),D(d),f=!0)},o(y){R(a.$$.fragment,y),R(d),f=!1},d(y){y&&h(e),se(a),E[u].d(),v=!1,st(b)}}}function nr(r,e,l){let t;Pe(r,H,f=>l(1,t=f));let{record:n}=e;const a=Tt(),s=f=>{f.key==="Escape"&&a("close")},o=()=>{a("close"),Fe(H,t.record={...n},t),Fe(H,t.record.id=null,t)},i=()=>a("close"),u=()=>a("close"),d=()=>a("close");return r.$$set=f=>{"record"in f&&l(0,n=f.record)},[n,t,a,s,o,i,u,d]}class ar extends Ge{constructor(e){super(),Qe(this,e,nr,rr,Ze,{record:0})}}function Yt(r,e,l){const t=r.slice();return t[5]=e[l],t}function Kt(r,e,l){const t=r.slice();t[8]=e[l];const n=vl(t[5].properties[t[8].name],t[8].attribute_type);return t[9]=n,t}function Zt(r,e,l){const t=r.slice();return t[8]=e[l],t}function Gt(r){var z,q;let e,l,t,n,a="id",s,o,i,u="created at",d,f,v="updated at",b,C,E,m,y=Ee(r[1].table.properties),p=[];for(let S=0;S{T=null}),$e()),(!m||V&2&&E!==(E=At(S[1].view.tableStyle)+" svelte-1bwwtph"))&&_(e,"class",E)},i(S){m||(D(T),m=!0)},o(S){R(T),m=!1},d(S){S&&h(e),Ke(p,S),k&&k.d(),T&&T.d()}}}function Qt(r){let e,l=r[8].name+"",t,n,a,s,o=r[8].attribute_type+"",i,u;return{c(){e=$("th"),t=X(l),n=F(),a=$("small"),s=X("("),i=X(o),u=X(")"),this.h()},l(d){e=g(d,"TH",{class:!0});var f=I(e);t=W(f,l),n=L(f),a=g(f,"SMALL",{class:!0});var v=I(a);s=W(v,"("),i=W(v,o),u=W(v,")"),v.forEach(h),f.forEach(h),this.h()},h(){_(a,"class","type svelte-1bwwtph"),_(e,"class","svelte-1bwwtph")},m(d,f){A(d,e,f),c(e,t),c(e,n),c(e,a),c(a,s),c(a,i),c(a,u)},p(d,f){f&2&&l!==(l=d[8].name+"")&&_e(t,l),f&2&&o!==(o=d[8].attribute_type+"")&&_e(i,o)},d(d){d&&h(e)}}}function xt(r){let e,l="deleted at";return{c(){e=$("th"),e.textContent=l,this.h()},l(t){e=g(t,"TH",{class:!0,"data-svelte-h":!0}),ne(e)!=="svelte-1jwm27o"&&(e.textContent=l),this.h()},h(){_(e,"class","svelte-1bwwtph")},m(t,n){A(t,e,n)},d(t){t&&h(e)}}}function el(r){var o;let e=[],l=new Map,t,n,a=Ee((o=r[1].records)==null?void 0:o.results);const s=i=>i[5].id;for(let i=0;i{s[d]=null}),$e(),l=s[e],l?l.p(i,u):(l=s[e]=a[e](i),l.c()),D(l,1),l.m(t.parentNode,t))},i(i){n||(D(l),n=!0)},o(i){R(l),n=!1},d(i){i&&h(t),s[e].d(i)}}}function sr(r){let e=r[9].value+"",l;return{c(){l=X(e)},l(t){l=W(t,e)},m(t,n){A(t,l,n)},p(t,n){n&2&&e!==(e=t[9].value+"")&&_e(l,e)},i:je,o:je,d(t){t&&h(l)}}}function ir(r){let e,l,t,n;const a=[ur,or],s=[];function o(i,u){return i[1].view.tableStyle==="expanded"?0:1}return e=o(r),l=s[e]=a[e](r),{c(){l.c(),t=Ae()},l(i){l.l(i),t=Ae()},m(i,u){s[e].m(i,u),A(i,t,u),n=!0},p(i,u){let d=e;e=o(i),e===d?s[e].p(i,u):(ge(),R(s[d],1,1,()=>{s[d]=null}),$e(),l=s[e],l?l.p(i,u):(l=s[e]=a[e](i),l.c()),D(l,1),l.m(t.parentNode,t))},i(i){n||(D(l),n=!0)},o(i){R(l),n=!1},d(i){i&&h(t),s[e].d(i)}}}function or(r){let e=JSON.stringify(r[9].value)+"",l;return{c(){l=X(e)},l(t){l=W(t,e)},m(t,n){A(t,l,n)},p(t,n){n&2&&e!==(e=JSON.stringify(t[9].value)+"")&&_e(l,e)},i:je,o:je,d(t){t&&h(l)}}}function ur(r){let e,l;return e=new Ll({props:{value:r[9].value}}),{c(){ue(e.$$.fragment)},l(t){oe(e.$$.fragment,t)},m(t,n){ie(e,t,n),l=!0},p(t,n){const a={};n&2&&(a.value=t[9].value),e.$set(a)},i(t){l||(D(e.$$.fragment,t),l=!0)},o(t){R(e.$$.fragment,t),l=!1},d(t){se(e,t)}}}function rl(r){let e,l,t=r[9].value!==void 0&&ll(r);return{c(){e=$("td"),t&&t.c(),this.h()},l(n){e=g(n,"TD",{class:!0});var a=I(e);t&&t.l(a),a.forEach(h),this.h()},h(){_(e,"class","svelte-1bwwtph"),ye(e,"value-null",r[9].type==="null")},m(n,a){A(n,e,a),t&&t.m(e,null),l=!0},p(n,a){n[9].value!==void 0?t?(t.p(n,a),a&2&&D(t,1)):(t=ll(n),t.c(),D(t,1),t.m(e,null)):t&&(ge(),R(t,1,1,()=>{t=null}),$e()),(!l||a&2)&&ye(e,"value-null",n[9].type==="null")},i(n){l||(D(t),l=!0)},o(n){R(t),l=!1},d(n){n&&h(e),t&&t.d()}}}function nl(r){var i,u;let e,l=new Date((i=r[5])==null?void 0:i.deleted_at).toLocaleDateString(void 0,{})+"",t,n,a,s=new Date((u=r[5])==null?void 0:u.deleted_at).toLocaleTimeString(void 0,{})+"",o;return{c(){e=$("td"),t=X(l),n=F(),a=$("span"),o=X(s),this.h()},l(d){e=g(d,"TD",{class:!0});var f=I(e);t=W(f,l),n=L(f),a=g(f,"SPAN",{class:!0});var v=I(a);o=W(v,s),v.forEach(h),f.forEach(h),this.h()},h(){_(a,"class","svelte-1bwwtph"),_(e,"class","date svelte-1bwwtph")},m(d,f){A(d,e,f),c(e,t),c(e,n),c(e,a),c(a,o)},p(d,f){var v,b;f&2&&l!==(l=new Date((v=d[5])==null?void 0:v.deleted_at).toLocaleDateString(void 0,{})+"")&&_e(t,l),f&2&&s!==(s=new Date((b=d[5])==null?void 0:b.deleted_at).toLocaleTimeString(void 0,{})+"")&&_e(o,s)},d(d){d&&h(e)}}}function al(r,e){var nt,ke,ze,at;let l,t,n,a,s,o,i="More options",u,d,f,v,b,C="Edit record",E,m,y,p,k=e[5].id+"",T,z,q,S,V=new Date((nt=e[5])==null?void 0:nt.created_at).toLocaleDateString(void 0,{})+"",N,w,O,P=new Date((ke=e[5])==null?void 0:ke.created_at).toLocaleTimeString(void 0,{})+"",M,Z,G,j=new Date((ze=e[5])==null?void 0:ze.updated_at).toLocaleDateString(void 0,{})+"",K,B,ae,Ce=new Date((at=e[5])==null?void 0:at.updated_at).toLocaleTimeString(void 0,{})+"",ve,ee,Oe,fe,we,Ue;d=new Se({props:{icon:"navigationMenuVertical",size:"16"}});function it(){return e[2](e[5])}m=new Se({props:{icon:"pencil",size:"16"}});function Ve(){return e[3](e[5])}let ce=e[0].id===e[5].id&&tl(e),De=Ee(e[1].table.properties),Q=[];for(let Y=0;YR(Q[Y],1,1,()=>{Q[Y]=null});let pe=e[1].filters.deleted==="true"&&nl(e);return{key:r,first:null,c(){l=$("tr"),t=$("td"),n=$("div"),a=$("div"),s=$("button"),o=$("span"),o.textContent=i,u=F(),ue(d.$$.fragment),f=F(),v=$("button"),b=$("span"),b.textContent=C,E=F(),ue(m.$$.fragment),y=F(),ce&&ce.c(),p=F(),T=X(k),z=F();for(let Y=0;Y{ce=null}),$e()),(!fe||J&2)&&k!==(k=e[5].id+"")&&_e(T,k),J&2){De=Ee(e[1].table.properties);let de;for(de=0;de{t=null}),$e())},i(a){l||(D(t),l=!0)},o(a){R(t),l=!1},d(a){a&&h(e),t&&t.d(a)}}}function cr(r,e,l){let t;Pe(r,H,i=>l(1,t=i));let n={id:null};return[n,t,i=>l(0,n.id=i.id,n),i=>{Fe(H,t.record=i,t)},()=>l(0,n.id=null,n)]}class dr extends Ge{constructor(e){super(),Qe(this,e,cr,fr,Ze,{})}}var ct=new Map;function _r(r){var e=ct.get(r);e&&e.destroy()}function pr(r){var e=ct.get(r);e&&e.update()}var ft=null;typeof window>"u"?((ft=function(r){return r}).destroy=function(r){return r},ft.update=function(r){return r}):((ft=function(r,e){return r&&Array.prototype.forEach.call(r.length?r:[r],function(l){return function(t){if(t&&t.nodeName&&t.nodeName==="TEXTAREA"&&!ct.has(t)){var n,a=null,s=window.getComputedStyle(t),o=(n=t.value,function(){u({testForHeightReduction:n===""||!t.value.startsWith(n),restoreTextAlign:null}),n=t.value}),i=(function(f){t.removeEventListener("autosize:destroy",i),t.removeEventListener("autosize:update",d),t.removeEventListener("input",o),window.removeEventListener("resize",d),Object.keys(f).forEach(function(v){return t.style[v]=f[v]}),ct.delete(t)}).bind(t,{height:t.style.height,resize:t.style.resize,textAlign:t.style.textAlign,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener("autosize:destroy",i),t.addEventListener("autosize:update",d),t.addEventListener("input",o),window.addEventListener("resize",d),t.style.overflowX="hidden",t.style.wordWrap="break-word",ct.set(t,{destroy:i,update:d}),d()}function u(f){var v,b,C=f.restoreTextAlign,E=C===void 0?null:C,m=f.testForHeightReduction,y=m===void 0||m,p=s.overflowY;if(t.scrollHeight!==0&&(s.resize==="vertical"?t.style.resize="none":s.resize==="both"&&(t.style.resize="horizontal"),y&&(v=function(T){for(var z=[];T&&T.parentNode&&T.parentNode instanceof Element;)T.parentNode.scrollTop&&z.push([T.parentNode,T.parentNode.scrollTop]),T=T.parentNode;return function(){return z.forEach(function(q){var S=q[0],V=q[1];S.style.scrollBehavior="auto",S.scrollTop=V,S.style.scrollBehavior=null})}}(t),t.style.height=""),b=s.boxSizing==="content-box"?t.scrollHeight-(parseFloat(s.paddingTop)+parseFloat(s.paddingBottom)):t.scrollHeight+parseFloat(s.borderTopWidth)+parseFloat(s.borderBottomWidth),s.maxHeight!=="none"&&b>parseFloat(s.maxHeight)?(s.overflowY==="hidden"&&(t.style.overflow="scroll"),b=parseFloat(s.maxHeight)):s.overflowY!=="hidden"&&(t.style.overflow="hidden"),t.style.height=b+"px",E&&(t.style.textAlign=E),v&&v(),a!==b&&(t.dispatchEvent(new Event("autosize:resized",{bubbles:!0})),a=b),p!==s.overflow&&!E)){var k=s.textAlign;s.overflow==="hidden"&&(t.style.textAlign=k==="start"?"end":"start"),u({restoreTextAlign:k,testForHeightReduction:!0})}}function d(){u({testForHeightReduction:!0,restoreTextAlign:null})}}(l)}),r}).destroy=function(r){return r&&Array.prototype.forEach.call(r.length?r:[r],_r),r},ft.update=function(r){return r&&Array.prototype.forEach.call(r.length?r:[r],pr),r});var $t=ft;const Ct=r=>($t(r),{destroy(){$t.destroy(r)}});Ct.update=$t.update;Ct.destroy=$t.destroy;function sl(r,e,l){const t=r.slice();return t[13]=e[l],t}function il(r,e,l){const t=r.slice();t[16]=e[l];const n=t[1].properties?vl(t[1].properties[t[16].name],t[16].attribute_type):{type:t[16].attribute_type,value:""};return t[17]=n,t}function ol(r){let e,l;return{c(){e=$("input"),this.h()},l(t){e=g(t,"INPUT",{type:!0,name:!0}),this.h()},h(){_(e,"type","hidden"),_(e,"name","recordId"),e.value=l=r[1].id},m(t,n){A(t,e,n)},p(t,n){n&2&&l!==(l=t[1].id)&&(e.value=l)},d(t){t&&h(e)}}}function hr(r){let e=r[16].attribute_type+"",l,t,n,a,s;return{c(){l=X(e),t=F(),n=$("input"),this.h()},l(o){l=W(o,e),t=L(o),n=g(o,"INPUT",{type:!0,name:!0}),this.h()},h(){_(n,"type","hidden"),_(n,"name",a=r[16].name+"[type]"),n.value=s=r[16].attribute_type},m(o,i){A(o,l,i),A(o,t,i),A(o,n,i)},p(o,i){i&1&&e!==(e=o[16].attribute_type+"")&&_e(l,e),i&1&&a!==(a=o[16].name+"[type]")&&_(n,"name",a),i&1&&s!==(s=o[16].attribute_type)&&(n.value=s)},i:je,o:je,d(o){o&&(h(l),h(t),h(n))}}}function vr(r){let e,l;return e=new Dl({props:{name:r[16].name+"[type]",options:[{value:"string",label:"string"},{value:"json",label:"json"}],checked:r[17].type==="json"?"json":"string"}}),{c(){ue(e.$$.fragment)},l(t){oe(e.$$.fragment,t)},m(t,n){ie(e,t,n),l=!0},p(t,n){const a={};n&1&&(a.name=t[16].name+"[type]"),n&3&&(a.checked=t[17].type==="json"?"json":"string"),e.$set(a)},i(t){l||(D(e.$$.fragment,t),l=!0)},o(t){R(e.$$.fragment,t),l=!1},d(t){se(e,t)}}}function ul(r){let e;return{c(){e=X("(non editable)")},l(l){e=W(l,"(non editable)")},m(l,t){A(l,e,t)},d(l){l&&h(e)}}}function mr(r){let e,l,t,n,a,s,o;return{c(){e=$("textarea"),this.h()},l(i){e=g(i,"TEXTAREA",{rows:!0,name:!0,id:!0,class:!0}),I(e).forEach(h),this.h()},h(){_(e,"rows","1"),_(e,"name",l=r[16].name+"[value]"),_(e,"id",t="edit_"+r[16].name),e.disabled=n=r[16].attribute_type==="upload",e.value=a=r[17].type==="json"||r[17].type==="jsonEscaped"?JSON.stringify(r[17].value,void 0,2):r[17].value,_(e,"class","svelte-1udbufw")},m(i,u){A(i,e,u),s||(o=hl(Ct.call(null,e)),s=!0)},p(i,u){u&1&&l!==(l=i[16].name+"[value]")&&_(e,"name",l),u&1&&t!==(t="edit_"+i[16].name)&&_(e,"id",t),u&1&&n!==(n=i[16].attribute_type==="upload")&&(e.disabled=n),u&3&&a!==(a=i[17].type==="json"||i[17].type==="jsonEscaped"?JSON.stringify(i[17].value,void 0,2):i[17].value)&&(e.value=a)},d(i){i&&h(e),s=!1,o()}}}function br(r){let e,l,t,n,a,s,o,i,u,d;return{c(){e=$("select"),l=$("option"),t=$("option"),n=X("true"),s=$("option"),o=X("false"),this.h()},l(f){e=g(f,"SELECT",{name:!0,id:!0,class:!0});var v=I(e);l=g(v,"OPTION",{class:!0}),I(l).forEach(h),t=g(v,"OPTION",{});var b=I(t);n=W(b,"true"),b.forEach(h),s=g(v,"OPTION",{});var C=I(s);o=W(C,"false"),C.forEach(h),v.forEach(h),this.h()},h(){l.__value="",re(l,l.__value),_(l,"class","value-null"),t.__value="true",re(t,t.__value),t.selected=a=r[17].value==="true",s.__value="false",re(s,s.__value),s.selected=i=r[17].value==="false",_(e,"name",u=r[16].name+"[value]"),_(e,"id",d="edit_"+r[16].name),_(e,"class","svelte-1udbufw")},m(f,v){A(f,e,v),c(e,l),c(e,t),c(t,n),c(e,s),c(s,o)},p(f,v){v&3&&a!==(a=f[17].value==="true")&&(t.selected=a),v&3&&i!==(i=f[17].value==="false")&&(s.selected=i),v&1&&u!==(u=f[16].name+"[value]")&&_(e,"name",u),v&1&&d!==(d="edit_"+f[16].name)&&_(e,"id",d)},d(f){f&&h(e)}}}function fl(r){let e=r[5][r[16].name].message+"",l;return{c(){l=X(e)},l(t){l=W(t,e)},m(t,n){A(t,l,n)},p(t,n){n&33&&e!==(e=t[5][t[16].name].message+"")&&_e(l,e)},d(t){t&&h(l)}}}function cl(r){let e,l,t,n=r[16].name+"",a,s,o,i,u,d,f,v,b,C,E,m,y;const p=[vr,hr],k=[];function T(w,O){return w[16].attribute_type==="string"?0:1}u=T(r),d=k[u]=p[u](r);let z=r[16].attribute_type==="upload"&&ul();function q(w,O){return w[16].attribute_type==="boolean"?br:mr}let S=q(r),V=S(r),N=r[5][r[16].name]&&fl(r);return{c(){e=$("fieldset"),l=$("dir"),t=$("label"),a=X(n),s=$("br"),o=F(),i=$("div"),d.c(),f=F(),z&&z.c(),b=F(),C=$("div"),V.c(),E=F(),m=$("div"),N&&N.c(),this.h()},l(w){e=g(w,"FIELDSET",{class:!0});var O=I(e);l=g(O,"DIR",{});var P=I(l);t=g(P,"LABEL",{for:!0,class:!0});var M=I(t);a=W(M,n),s=g(M,"BR",{}),o=L(M),i=g(M,"DIV",{class:!0});var Z=I(i);d.l(Z),f=L(Z),z&&z.l(Z),Z.forEach(h),M.forEach(h),P.forEach(h),b=L(O),C=g(O,"DIV",{});var G=I(C);V.l(G),E=L(G),m=g(G,"DIV",{role:!0,class:!0});var j=I(m);N&&N.l(j),j.forEach(h),G.forEach(h),O.forEach(h),this.h()},h(){_(i,"class","type svelte-1udbufw"),_(t,"for",v="edit_"+r[16].name),_(t,"class","svelte-1udbufw"),_(m,"role","alert"),_(m,"class","svelte-1udbufw"),_(e,"class","svelte-1udbufw")},m(w,O){A(w,e,O),c(e,l),c(l,t),c(t,a),c(t,s),c(t,o),c(t,i),k[u].m(i,null),c(i,f),z&&z.m(i,null),c(e,b),c(e,C),V.m(C,null),c(C,E),c(C,m),N&&N.m(m,null),y=!0},p(w,O){(!y||O&1)&&n!==(n=w[16].name+"")&&_e(a,n);let P=u;u=T(w),u===P?k[u].p(w,O):(ge(),R(k[P],1,1,()=>{k[P]=null}),$e(),d=k[u],d?d.p(w,O):(d=k[u]=p[u](w),d.c()),D(d,1),d.m(i,f)),w[16].attribute_type==="upload"?z||(z=ul(),z.c(),z.m(i,null)):z&&(z.d(1),z=null),(!y||O&1&&v!==(v="edit_"+w[16].name))&&_(t,"for",v),S===(S=q(w))&&V?V.p(w,O):(V.d(1),V=S(w),V&&(V.c(),V.m(C,E))),w[5][w[16].name]?N?N.p(w,O):(N=fl(w),N.c(),N.m(m,null)):N&&(N.d(1),N=null)},i(w){y||(D(d),y=!0)},o(w){R(d),y=!1},d(w){w&&h(e),k[u].d(),z&&z.d(),V.d(),N&&N.d()}}}function dl(r){let e,l=JSON.stringify(r[13])+"",t,n;return{c(){e=$("li"),t=X(l),n=F(),this.h()},l(a){e=g(a,"LI",{class:!0});var s=I(e);t=W(s,l),n=L(s),s.forEach(h),this.h()},h(){_(e,"class","svelte-1udbufw")},m(a,s){A(a,e,s),c(e,t),c(e,n)},p(a,s){s&16&&l!==(l=JSON.stringify(a[13])+"")&&_e(t,l)},d(a){a&&h(e)}}}function gr(r){let e;return{c(){e=X("Create record")},l(l){e=W(l,"Create record")},m(l,t){A(l,e,t)},d(l){l&&h(e)}}}function $r(r){let e;return{c(){e=X("Edit record")},l(l){e=W(l,"Edit record")},m(l,t){A(l,e,t)},d(l){l&&h(e)}}}function wr(r){let e,l,t,n,a,s,o,i,u,d,f,v,b,C="Cancel",E,m,y,p,k,T,z,q,S=r[1].id&&ol(r),V=Ee(r[0]),N=[];for(let j=0;jR(N[j],1,1,()=>{N[j]=null});let O=Ee(r[4]),P=[];for(let j=0;j{T&&(k||(k=Rt(e,r[7],{},!0)),k.run(1))}),T=!0}},o(j){N=N.filter(Boolean);for(let K=0;Kl(6,t=m)),Pe(r,wt,m=>l(12,n=m));let{properties:a}=e,{editing:s}=e,o,i,u=[],d={};const f=function(m,{delay:y=0,duration:p=150}){return{delay:y,duration:p,css:k=>{const T=Tl(k);return`opacity: ${T}; transform: scale(${T});`}}};bl(()=>{setTimeout(()=>{o.showModal()},10)}),document.addEventListener("keydown",m=>{m.key==="Escape"&&(m.preventDefault(),Fe(H,t.record=null,t))},{once:!0});const v=async m=>{m.preventDefault();const y=new FormData(i);l(5,d={});for(const p of y.entries())if(p[0].endsWith("[type]")&&(p[1]==="json"||p[1]==="array")){const k=p[0].replace("[type]",""),T=y.get(k+"[value]");T!==""&&!Fl(T)&&l(5,d[k]={property:k,message:`Not a valid ${p[1]}`},d)}if(Object.keys(d).length)await gl(),document.querySelector('[role="alert"]:not(:empty)').scrollIntoView({behavior:"smooth",block:"center"});else if(t.record.id){const p=await Ne.edit({table:t.table.name,id:t.record.id,properties:y});p.errors?l(4,u=p.errors):(Ne.get({table:n.params.id,filters:t.filters,sort:t.sort,deleted:t.filters.deleted}),H.highlight("record",p.record_update.id),H.notification.create("success",`Record ${p.record_update.id} updated`),Fe(H,t.record=null,t))}else{const p=await Ne.create({table:t.table.name,properties:y});p.errors?l(4,u=p.errors):(H.clearFilters(),Ne.get({table:n.params.id,filters:t.filters,sort:t.sort,deleted:t.filters.deleted}),H.highlight("record",p.record_create.id),H.notification.create("success",`Record ${p.record_create.id} created`),Fe(H,t.record=null,t))}},b=()=>Fe(H,t.record=null,t);function C(m){rt[m?"unshift":"push"](()=>{i=m,l(3,i)})}function E(m){rt[m?"unshift":"push"](()=>{o=m,l(2,o)})}return r.$$set=m=>{"properties"in m&&l(0,a=m.properties),"editing"in m&&l(1,s=m.editing)},[a,s,o,i,u,d,t,f,v,b,C,E]}class yr extends Ge{constructor(e){super(),Qe(this,e,kr,wr,Ze,{properties:0,editing:1})}}const{document:Et}=Cl;function Er(r){let e;return{c(){e=X("Work in progress :)")},l(l){e=W(l,"Work in progress :)")},m(l,t){A(l,e,t)},i:je,o:je,d(l){l&&h(e)}}}function Tr(r){let e,l;return e=new dr({}),{c(){ue(e.$$.fragment)},l(t){oe(e.$$.fragment,t)},m(t,n){ie(e,t,n),l=!0},i(t){l||(D(e.$$.fragment,t),l=!0)},o(t){R(e.$$.fragment,t),l=!1},d(t){se(e,t)}}}function _l(r){let e,l,t,n,a,s,o;const i=[Nr,Cr],u=[];function d(f,v){return f[0].view.tableStyle==="collapsed"?0:1}return l=d(r),t=u[l]=i[l](r),{c(){e=$("button"),t.c(),this.h()},l(f){e=g(f,"BUTTON",{class:!0,title:!0});var v=I(e);t.l(v),v.forEach(h),this.h()},h(){_(e,"class","button"),_(e,"title",n=r[0].view.tableStyle==="expanded"?"Collapse values":"Expand values")},m(f,v){A(f,e,v),u[l].m(e,null),a=!0,s||(o=le(e,"click",_t(function(){yl(r[0].view.tableStyle==="collapsed"?H.setView({tableStyle:"expanded"}):H.setView({tableStyle:"collapsed"}))&&(r[0].view.tableStyle==="collapsed"?H.setView({tableStyle:"expanded"}):H.setView({tableStyle:"collapsed"})).apply(this,arguments)})),s=!0)},p(f,v){r=f;let b=l;l=d(r),l!==b&&(ge(),R(u[b],1,1,()=>{u[b]=null}),$e(),t=u[l],t||(t=u[l]=i[l](r),t.c()),D(t,1),t.m(e,null)),(!a||v&1&&n!==(n=r[0].view.tableStyle==="expanded"?"Collapse values":"Expand values"))&&_(e,"title",n)},i(f){a||(D(t),a=!0)},o(f){R(t),a=!1},d(f){f&&h(e),u[l].d(),s=!1,o()}}}function Cr(r){let e,l="Collapse values",t,n,a;return n=new Se({props:{icon:"collapse"}}),{c(){e=$("span"),e.textContent=l,t=F(),ue(n.$$.fragment),this.h()},l(s){e=g(s,"SPAN",{class:!0,"data-svelte-h":!0}),ne(e)!=="svelte-jserey"&&(e.textContent=l),t=L(s),oe(n.$$.fragment,s),this.h()},h(){_(e,"class","label")},m(s,o){A(s,e,o),A(s,t,o),ie(n,s,o),a=!0},i(s){a||(D(n.$$.fragment,s),a=!0)},o(s){R(n.$$.fragment,s),a=!1},d(s){s&&(h(e),h(t)),se(n,s)}}}function Nr(r){let e,l="Expand values",t,n,a;return n=new Se({props:{icon:"expand"}}),{c(){e=$("span"),e.textContent=l,t=F(),ue(n.$$.fragment),this.h()},l(s){e=g(s,"SPAN",{class:!0,"data-svelte-h":!0}),ne(e)!=="svelte-1tvmrgx"&&(e.textContent=l),t=L(s),oe(n.$$.fragment,s),this.h()},h(){_(e,"class","label")},m(s,o){A(s,e,o),A(s,t,o),ie(n,s,o),a=!0},i(s){a||(D(n.$$.fragment,s),a=!0)},o(s){R(n.$$.fragment,s),a=!1},d(s){s&&(h(e),h(t)),se(n,s)}}}function pl(r){let e,l;return e=new yr({props:{properties:r[0].table.properties,editing:r[0].record}}),{c(){ue(e.$$.fragment)},l(t){oe(e.$$.fragment,t)},m(t,n){ie(e,t,n),l=!0},p(t,n){const a={};n&1&&(a.properties=t[0].table.properties),n&1&&(a.editing=t[0].record),e.$set(a)},i(t){l||(D(e.$$.fragment,t),l=!0)},o(t){R(e.$$.fragment,t),l=!1},d(t){se(e,t)}}}function Sr(r){var Dt,Lt,Ft,Pt;let e,l,t,n,a,s,o,i,u,d,f="Refresh current view",v,b,C,E,m,y,p,k,T,z="Page:",q,S,V,N,w=(((Dt=r[0].records)==null?void 0:Dt.total_pages)||1)+"",O,P,M,Z,G,j,K,B="Create new record",ae,Ce,ve,ee,Oe,fe,we,Ue,it,Ve,ce,De=r[0].filters.deleted==="false"?"ing":"",Q,ot,pe,nt,ke,ze,at,Y,J,Te=r[0].filters.deleted==="true"?"ing":"",Ie,Re,Le,de,te,xe,qe,He,he,kt,yt,Nt;Et.title=e=(((Lt=r[0].table)==null?void 0:Lt.name)||"Loading…")+((Ft=r[0].online)!=null&&Ft.MPKIT_URL?": "+r[0].online.MPKIT_URL.replace("https://",""):""),a=new ql({}),o=new Yl({}),b=new Se({props:{icon:"refresh"}});const St=[Tr,Er],et=[];function Ot(U,x){return U[0].view.database!=="tiles"?0:1}E=Ot(r),m=et[E]=St[E](r);function ml(U){r[5](U)}let It={name:"page",min:1,max:(Pt=r[0].records)==null?void 0:Pt.total_pages,step:1,decreaseLabel:"Previous page",increaseLabel:"Next page",style:"navigation"};r[0].filters.page!==void 0&&(It.value=r[0].filters.page),S=new Pl({props:It}),rt.push(()=>El(S,"value",ml)),S.$on("input",r[6]),G=new Se({props:{icon:"plus"}});let me=r[0].view.database!=="tiles"&&_l(r);Ue=new Se({props:{icon:"leaf"}}),ze=new Se({props:{icon:"recycle"}});let be=r[0].record!==null&&pl(r);return kt=$l(r[9][0]),{c(){l=F(),t=$("section"),n=$("nav"),ue(a.$$.fragment),s=F(),ue(o.$$.fragment),i=F(),u=$("button"),d=$("span"),d.textContent=f,v=F(),ue(b.$$.fragment),C=F(),m.c(),y=F(),p=$("nav"),k=$("div"),T=$("label"),T.textContent=z,q=F(),ue(S.$$.fragment),N=X(`\r + of `),O=X(w),P=F(),M=$("div"),Z=$("button"),ue(G.$$.fragment),j=F(),K=$("span"),K.textContent=B,ae=F(),me&&me.c(),Ce=F(),ve=$("div"),ee=$("input"),fe=F(),we=$("label"),ue(Ue.$$.fragment),it=F(),Ve=$("span"),ce=X("Show"),Q=X(De),ot=X(" current database state"),nt=F(),ke=$("label"),ue(ze.$$.fragment),at=F(),Y=$("span"),J=X("Show"),Ie=X(Te),Re=X(" deleted records"),de=F(),te=$("input"),qe=F(),be&&be.c(),He=Ae(),this.h()},l(U){kl("svelte-1ke6alb",Et.head).forEach(h),l=L(U),t=g(U,"SECTION",{class:!0});var Be=I(t);n=g(Be,"NAV",{class:!0});var Me=I(n);oe(a.$$.fragment,Me),s=L(Me),oe(o.$$.fragment,Me),i=L(Me),u=g(Me,"BUTTON",{class:!0,title:!0});var tt=I(u);d=g(tt,"SPAN",{class:!0,"data-svelte-h":!0}),ne(d)!=="svelte-iqo23s"&&(d.textContent=f),v=L(tt),oe(b.$$.fragment,tt),tt.forEach(h),Me.forEach(h),C=L(Be),m.l(Be),y=L(Be),p=g(Be,"NAV",{class:!0});var lt=I(p);k=g(lt,"DIV",{});var Je=I(k);T=g(Je,"LABEL",{for:!0,"data-svelte-h":!0}),ne(T)!=="svelte-1r8oyu6"&&(T.textContent=z),q=L(Je),oe(S.$$.fragment,Je),N=W(Je,`\r + of `),O=W(Je,w),Je.forEach(h),P=L(lt),M=g(lt,"DIV",{id:!0,class:!0});var We=I(M);Z=g(We,"BUTTON",{class:!0,title:!0});var pt=I(Z);oe(G.$$.fragment,pt),j=L(pt),K=g(pt,"SPAN",{class:!0,"data-svelte-h":!0}),ne(K)!=="svelte-19x6y3e"&&(K.textContent=B),pt.forEach(h),ae=L(We),me&&me.l(We),Ce=L(We),ve=g(We,"DIV",{class:!0});var Xe=I(ve);ee=g(Xe,"INPUT",{type:!0,name:!0,id:!0,class:!0}),fe=L(Xe),we=g(Xe,"LABEL",{for:!0,class:!0,title:!0});var ht=I(we);oe(Ue.$$.fragment,ht),it=L(ht),Ve=g(ht,"SPAN",{class:!0});var vt=I(Ve);ce=W(vt,"Show"),Q=W(vt,De),ot=W(vt," current database state"),vt.forEach(h),ht.forEach(h),nt=L(Xe),ke=g(Xe,"LABEL",{for:!0,class:!0,title:!0});var mt=I(ke);oe(ze.$$.fragment,mt),at=L(mt),Y=g(mt,"SPAN",{class:!0});var bt=I(Y);J=W(bt,"Show"),Ie=W(bt,Te),Re=W(bt," deleted records"),bt.forEach(h),mt.forEach(h),de=L(Xe),te=g(Xe,"INPUT",{type:!0,name:!0,id:!0,class:!0}),Xe.forEach(h),We.forEach(h),lt.forEach(h),Be.forEach(h),qe=L(U),be&&be.l(U),He=Ae(),this.h()},h(){_(d,"class","label"),_(u,"class","button svelte-afbo94"),_(u,"title","Refresh current view (R)"),ye(u,"refreshing",r[2]),_(n,"class","svelte-afbo94"),_(T,"for","page"),_(K,"class","label"),_(Z,"class","button"),_(Z,"title","Create new record"),_(ee,"type","radio"),_(ee,"name","deleted"),_(ee,"id","deletedTrue"),ee.__value="false",re(ee,ee.__value),ee.disabled=Oe=r[0].filters.deleted==="false",_(ee,"class","svelte-afbo94"),_(Ve,"class","label"),_(we,"for","deletedTrue"),_(we,"class","button"),_(we,"title",pe="Show"+(r[0].filters.deleted==="false"?"ing":"")+" current database state"),ye(we,"active",r[0].filters.deleted==="false"),ye(we,"disabled",r[0].filters.deleted==="false"),_(Y,"class","label"),_(ke,"for","deletedFalse"),_(ke,"class","button"),_(ke,"title",Le="Show"+(r[0].filters.deleted==="true"?"ing":"")+" deleted records"),ye(ke,"active",r[0].filters.deleted==="true"),ye(ke,"disabled",r[0].filters.deleted==="true"),_(te,"type","radio"),_(te,"name","deleted"),_(te,"id","deletedFalse"),te.__value="true",re(te,te.__value),te.disabled=xe=r[0].filters.deleted==="true",_(te,"class","svelte-afbo94"),_(ve,"class","combo svelte-afbo94"),_(M,"id","viewOptions"),_(M,"class","svelte-afbo94"),_(p,"class","pagination svelte-afbo94"),_(t,"class","svelte-afbo94"),kt.p(ee,te)},m(U,x){A(U,l,x),A(U,t,x),c(t,n),ie(a,n,null),c(n,s),ie(o,n,null),c(n,i),c(n,u),c(u,d),c(u,v),ie(b,u,null),c(t,C),et[E].m(t,null),c(t,y),c(t,p),c(p,k),c(k,T),c(k,q),ie(S,k,null),c(k,N),c(k,O),c(p,P),c(p,M),c(M,Z),ie(G,Z,null),c(Z,j),c(Z,K),c(M,ae),me&&me.m(M,null),c(M,Ce),c(M,ve),c(ve,ee),ee.checked=ee.__value===r[0].filters.deleted,c(ve,fe),c(ve,we),ie(Ue,we,null),c(we,it),c(we,Ve),c(Ve,ce),c(Ve,Q),c(Ve,ot),c(ve,nt),c(ve,ke),ie(ze,ke,null),c(ke,at),c(ke,Y),c(Y,J),c(Y,Ie),c(Y,Re),c(ve,de),c(ve,te),te.checked=te.__value===r[0].filters.deleted,A(U,qe,x),be&&be.m(U,x),A(U,He,x),he=!0,yt||(Nt=[le(window,"keypress",r[4]),le(u,"click",r[3]),le(Z,"click",_t(r[7])),le(ee,"change",r[8]),le(ee,"change",r[10]),le(te,"change",r[11]),le(te,"change",r[12])],yt=!0)},p(U,[x]){var tt,lt,Je,We;(!he||x&1)&&e!==(e=(((tt=U[0].table)==null?void 0:tt.name)||"Loading…")+((lt=U[0].online)!=null&<.MPKIT_URL?": "+U[0].online.MPKIT_URL.replace("https://",""):""))&&(Et.title=e),(!he||x&4)&&ye(u,"refreshing",U[2]);let Be=E;E=Ot(U),E!==Be&&(ge(),R(et[Be],1,1,()=>{et[Be]=null}),$e(),m=et[E],m||(m=et[E]=St[E](U),m.c()),D(m,1),m.m(t,y));const Me={};x&1&&(Me.max=(Je=U[0].records)==null?void 0:Je.total_pages),!V&&x&1&&(V=!0,Me.value=U[0].filters.page,wl(()=>V=!1)),S.$set(Me),(!he||x&1)&&w!==(w=(((We=U[0].records)==null?void 0:We.total_pages)||1)+"")&&_e(O,w),U[0].view.database!=="tiles"?me?(me.p(U,x),x&1&&D(me,1)):(me=_l(U),me.c(),D(me,1),me.m(M,Ce)):me&&(ge(),R(me,1,1,()=>{me=null}),$e()),(!he||x&1&&Oe!==(Oe=U[0].filters.deleted==="false"))&&(ee.disabled=Oe),x&1&&(ee.checked=ee.__value===U[0].filters.deleted),(!he||x&1)&&De!==(De=U[0].filters.deleted==="false"?"ing":"")&&_e(Q,De),(!he||x&1&&pe!==(pe="Show"+(U[0].filters.deleted==="false"?"ing":"")+" current database state"))&&_(we,"title",pe),(!he||x&1)&&ye(we,"active",U[0].filters.deleted==="false"),(!he||x&1)&&ye(we,"disabled",U[0].filters.deleted==="false"),(!he||x&1)&&Te!==(Te=U[0].filters.deleted==="true"?"ing":"")&&_e(Ie,Te),(!he||x&1&&Le!==(Le="Show"+(U[0].filters.deleted==="true"?"ing":"")+" deleted records"))&&_(ke,"title",Le),(!he||x&1)&&ye(ke,"active",U[0].filters.deleted==="true"),(!he||x&1)&&ye(ke,"disabled",U[0].filters.deleted==="true"),(!he||x&1&&xe!==(xe=U[0].filters.deleted==="true"))&&(te.disabled=xe),x&1&&(te.checked=te.__value===U[0].filters.deleted),U[0].record!==null?be?(be.p(U,x),x&1&&D(be,1)):(be=pl(U),be.c(),D(be,1),be.m(He.parentNode,He)):be&&(ge(),R(be,1,1,()=>{be=null}),$e())},i(U){he||(D(a.$$.fragment,U),D(o.$$.fragment,U),D(b.$$.fragment,U),D(m),D(S.$$.fragment,U),D(G.$$.fragment,U),D(me),D(Ue.$$.fragment,U),D(ze.$$.fragment,U),D(be),he=!0)},o(U){R(a.$$.fragment,U),R(o.$$.fragment,U),R(b.$$.fragment,U),R(m),R(S.$$.fragment,U),R(G.$$.fragment,U),R(me),R(Ue.$$.fragment,U),R(ze.$$.fragment,U),R(be),he=!1},d(U){U&&(h(l),h(t),h(qe),h(He)),se(a),se(o),se(b),et[E].d(),se(S),se(G),me&&me.d(),se(Ue),se(ze),be&&be.d(U),kt.r(),yt=!1,st(Nt)}}}function Or(r,e,l){let t,n;Pe(r,H,m=>l(0,t=m)),Pe(r,wt,m=>l(1,n=m));let a=!1;const s=()=>{l(2,a=!0),Ne.get({table:n.params.id,filters:t.filters,sort:t.sort,deleted:t.filters.deleted}).then(()=>l(2,a=!1))},o=m=>{document.activeElement===document.body&&!m.target.matches("input, textarea")&&m.key==="r"&&s()},i=[[]];function u(m){r.$$.not_equal(t.filters.page,m)&&(t.filters.page=m,H.set(t))}const d=()=>{Ne.get({table:n.params.id,filters:t.filters,sort:t.sort,deleted:t.filters.deleted})},f=()=>Fe(H,t.record={},t);function v(){t.filters.deleted=this.__value,H.set(t)}const b=()=>{Ne.get({table:n.params.id,filters:t.filters,sort:t.sort,deleted:t.filters.deleted})};function C(){t.filters.deleted=this.__value,H.set(t)}const E=()=>{Ne.get({table:n.params.id,filters:t.filters,sort:t.sort,deleted:t.filters.deleted})};return r.$$.update=()=>{r.$$.dirty&3&&Fe(H,t.table=t.tables.filter(m=>m.id===n.params.id)[0],t),r.$$.dirty&2&&n.params.id&&Ne.get({table:n.params.id})&&H.clearFilters()},[t,n,a,s,o,u,d,f,v,i,b,C,E]}class qr extends Ge{constructor(e){super(),Qe(this,e,Or,Sr,Ze,{})}}export{qr as component}; diff --git a/gui/next/build/_app/immutable/nodes/13.D8FJ5ozT.js b/gui/next/build/_app/immutable/nodes/13.D8FJ5ozT.js new file mode 100644 index 0000000..f9a6cbc --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/13.D8FJ5ozT.js @@ -0,0 +1 @@ +import{s as Be,d as g,a as Q,K as Z,i as q,b as u,w as _,c as v,e as w,f as J,g as P,h as b,t as K,j as N,n as be,I as $e,D as x,r as Fe,C as Ee,p as Je,z as ee,k as Ke,T as Ge,L as me,a0 as Ye,S as Qe,H as We,J as Xe,E as Ze,G as xe}from"../chunks/Ul9VwQ7n.js";import{S as qe,i as ze,t as F,a as A,g as oe,e as ie,d as te,m as le,c as se,b as ne,h as et}from"../chunks/Bh3MJlbi.js";import{g as tt}from"../chunks/CS29TWE_.js";import{e as ue}from"../chunks/BNCRiqmJ.js";import{f as lt}from"../chunks/odGh2V91.js";import{s as ce}from"../chunks/DGc7Lmco.js";import{I as de}from"../chunks/D-yR0E5w.js";import{A as st}from"../chunks/DntFPtNo.js";import{t as nt}from"../chunks/x4PJc0Qf.js";import{J as rt}from"../chunks/BVVGnpm8.js";const at={get:async s=>{const e=typeof window<"u"&&window.location.port!=="4173"&&window.location.port!=="5173"?`http://localhost:${parseInt(window.location.port)}/api/logs`:"http://localhost:3333/api/logs",n=s.last??null;return fetch(`${e}?lastId=`+n).then(t=>t.ok?t.json():Promise.reject(t)).then(t=>(t.logs.forEach(l=>{l.downloaded_at=Date.now()}),t)).catch(t=>({error:t}))}},ot=1,it=s=>!!s&&typeof s=="object"&&s.schema_version===ot,ft=s=>s&&s.data&&s.data.type||s&&s.error_type||"Log",ke=s=>s?typeof s=="string"?s:s.path?s.line!=null?`${s.path}:${s.line}`:`${s.path}`:s.line!=null?`line ${s.line}`:null:null;function we(s,e,n){const t=s.slice();return t[12]=e[n],t}function Se(s){let e,n;return{c(){e=b("span"),n=K(s[5]),this.h()},l(t){e=v(t,"SPAN",{class:!0});var l=w(e);n=J(l,s[5]),l.forEach(g),this.h()},h(){_(e,"class","location svelte-u09j0c")},m(t,l){q(t,e,l),u(e,n)},p(t,l){l&32&&Q(n,t[5])},d(t){t&&g(e)}}}function ut(s){let e;function n(a,r){return a[3]||a[2].length<=fe?ht:dt}let t=n(s),l=t(s);return{c(){e=b("div"),l.c(),this.h()},l(a){e=v(a,"DIV",{class:!0});var r=w(e);l.l(r),r.forEach(g),this.h()},h(){_(e,"class","message pre svelte-u09j0c")},m(a,r){q(a,e,r),l.m(e,null)},p(a,r){t===(t=n(a))&&l?l.p(a,r):(l.d(1),l=t(a),l&&(l.c(),l.m(e,null)))},i:be,o:be,d(a){a&&g(e),l.d()}}}function ct(s){let e,n;return e=new rt({props:{value:s[6],showFullLines:!0}}),{c(){ne(e.$$.fragment)},l(t){se(e.$$.fragment,t)},m(t,l){le(e,t,l),n=!0},p(t,l){const a={};l&64&&(a.value=t[6]),e.$set(a)},i(t){n||(A(e.$$.fragment,t),n=!0)},o(t){F(e.$$.fragment,t),n=!1},d(t){te(e,t)}}}function dt(s){let e=s[2].substr(0,fe)+"",n,t,l,a,r=s[2].length-fe+"",i,o,c,d;return{c(){n=K(e),t=N(),l=b("span"),a=b("button"),i=K(r),o=K(" more characters"),this.h()},l(f){n=J(f,e),t=P(f),l=v(f,"SPAN",{class:!0});var p=w(l);a=v(p,"BUTTON",{type:!0,class:!0});var h=w(a);i=J(h,r),o=J(h," more characters"),h.forEach(g),p.forEach(g),this.h()},h(){_(a,"type","button"),_(a,"class","svelte-u09j0c"),_(l,"class","longStringInfo svelte-u09j0c")},m(f,p){q(f,n,p),q(f,t,p),q(f,l,p),u(l,a),u(a,i),u(a,o),c||(d=x(a,"click",s[11]),c=!0)},p(f,p){p&4&&e!==(e=f[2].substr(0,fe)+"")&&Q(n,e),p&4&&r!==(r=f[2].length-fe+"")&&Q(i,r)},d(f){f&&(g(n),g(t),g(l)),c=!1,d()}}}function ht(s){let e;return{c(){e=K(s[2])},l(n){e=J(n,s[2])},m(n,t){q(n,e,t)},p(n,t){t&4&&Q(e,n[2])},d(n){n&&g(e)}}}function Te(s){let e,n=s[0].source_span+"",t;return{c(){e=b("pre"),t=K(n),this.h()},l(l){e=v(l,"PRE",{class:!0});var a=w(e);t=J(a,n),a.forEach(g),this.h()},h(){_(e,"class","source svelte-u09j0c")},m(l,a){q(l,e,a),u(e,t)},p(l,a){a&1&&n!==(n=l[0].source_span+"")&&Q(t,n)},d(l){l&&g(e)}}}function Le(s){let e,n,t,l=s[1].length+"",a,r,i,o,c=ue(s[1]),d=[];for(let f=0;f1&&Le(s),C=(s[4].url||s[4].user)&&ye(s);return{c(){e=b("div"),n=b("div"),t=b("span"),l=K(s[7]),a=N(),h&&h.c(),r=N(),o&&o.c(),c=N(),$&&$.c(),d=N(),L&&L.c(),f=N(),C&&C.c(),this.h()},l(k){e=v(k,"DIV",{class:!0});var E=w(e);n=v(E,"DIV",{class:!0});var j=w(n);t=v(j,"SPAN",{class:!0});var I=w(t);l=J(I,s[7]),I.forEach(g),a=P(j),h&&h.l(j),j.forEach(g),r=P(E),o&&o.l(E),c=P(E),$&&$.l(E),d=P(E),L&&L.l(E),f=P(E),C&&C.l(E),E.forEach(g),this.h()},h(){_(t,"class","type svelte-u09j0c"),_(n,"class","header svelte-u09j0c"),_(e,"class","diagnostic svelte-u09j0c"),Z(e,"isError",s[8])},m(k,E){q(k,e,E),u(e,n),u(n,t),u(t,l),u(n,a),h&&h.m(n,null),u(e,r),~i&&S[i].m(e,null),u(e,c),$&&$.m(e,null),u(e,d),L&&L.m(e,null),u(e,f),C&&C.m(e,null),p=!0},p(k,[E]){(!p||E&128)&&Q(l,k[7]),k[5]?h?h.p(k,E):(h=Se(k),h.c(),h.m(n,null)):h&&(h.d(1),h=null);let j=i;i=V(k),i===j?~i&&S[i].p(k,E):(o&&(oe(),F(S[j],1,1,()=>{S[j]=null}),ie()),~i?(o=S[i],o?o.p(k,E):(o=S[i]=T[i](k),o.c()),A(o,1),o.m(e,c)):o=null),k[0].source_span?$?$.p(k,E):($=Te(k),$.c(),$.m(e,d)):$&&($.d(1),$=null),k[1].length>1?L?L.p(k,E):(L=Le(k),L.c(),L.m(e,f)):L&&(L.d(1),L=null),k[4].url||k[4].user?C?C.p(k,E):(C=ye(k),C.c(),C.m(e,null)):C&&(C.d(1),C=null),(!p||E&256)&&Z(e,"isError",k[8])},i(k){p||(A(o),p=!0)},o(k){F(o),p=!1},d(k){k&&g(e),h&&h.d(),~i&&S[i].d(),$&&$.d(),L&&L.d(),C&&C.d()}}}const fe=262144;function gt(s,e,n){let t,l,a,r,i,o,c,d,f,{log:p}=e,h=!1;const T=()=>n(3,h=!0);return s.$$set=S=>{"log"in S&&n(9,p=S.log)},s.$$.update=()=>{s.$$.dirty&512&&n(0,t=p.data||{}),s.$$.dirty&1&&n(10,l=it(t)),s.$$.dirty&1&&n(8,a=!!t.type),s.$$.dirty&512&&n(7,r=ft(p)),s.$$.dirty&513&&n(2,i=t.message!=null?String(t.message):p.message==null?"":String(p.message)),s.$$.dirty&4&&n(6,o=i.lengthF(l[r],1,1,()=>{l[r]=null});return{c(){e=b("table");for(let r=0;rs[4].logs.downloaded_at[0])},m(U,R){q(U,e,R),u(e,n),u(n,t),u(t,a),u(t,r),u(t,o),u(e,d),u(e,f),le(p,f,null),u(e,h),u(e,T),u(T,S),u(S,V),u(V,$),u(V,C),le(k,V,null),u(S,E),u(S,j),u(j,I),u(j,y),le(z,j,null),u(e,Y),D=!0,H||(B=[x(V,"click",he),x(j,"click",Ze(O))],H=!0)},p(U,R){s=U,(!D||R&16)&&l!==(l=new Date(s[21].created_at).toLocaleDateString(void 0,{})+"")&&Q(a,l),(!D||R&16)&&i!==(i=new Date(s[21].created_at).toLocaleTimeString(void 0,{})+"")&&Q(o,i),(!D||R&16&&c!==(c=s[21].created_at))&&_(t,"datetime",c);const X={};R&16&&(X.log=s[21]),p.$set(X),(!D||R&20)&&Z(j,"active",s[2].find(G)),(!D||R&50)&&Z(e,"hidden",s[1]&&s[5](s[21])||s[21].hidden),(!D||R&16)&&Z(e,"error",s[21].error_type.match(/error/i)),(!D||R&16)&&Z(e,"fresh",s[21].downloaded_at>s[4].logs.downloaded_at[0])},i(U){D||(A(p.$$.fragment,U),A(k.$$.fragment,U),A(z.$$.fragment,U),U&&(M||Xe(()=>{M=et(e,lt,{duration:200}),M.start()})),D=!0)},o(U){F(p.$$.fragment,U),F(k.$$.fragment,U),F(z.$$.fragment,U),D=!1},d(U){U&&g(e),te(p),te(k),te(z),H=!1,Fe(B)}}}function Ue(s){let e,n="No newer logs to show
Checking every 3 seconds";return{c(){e=b("footer"),e.innerHTML=n,this.h()},l(t){e=v(t,"FOOTER",{class:!0,"data-svelte-h":!0}),ee(e)!=="svelte-akhvzo"&&(e.innerHTML=n),this.h()},h(){_(e,"class","svelte-12glt4h")},m(t,l){q(t,e,l)},d(t){t&&g(e)}}}function Me(s){let e,n;return e=new st({props:{$$slots:{default:[pt]},$$scope:{ctx:s}}}),{c(){ne(e.$$.fragment)},l(t){se(e.$$.fragment,t)},m(t,l){le(e,t,l),n=!0},p(t,l){const a={};l&67108868&&(a.$$scope={dirty:l,ctx:t}),e.$set(a)},i(t){n||(A(e.$$.fragment,t),n=!0)},o(t){F(e.$$.fragment,t),n=!1},d(t){te(e,t)}}}function Re(s){let e,n,t=ue(s[2]),l=[];for(let r=0;rF(l[r],1,1,()=>{l[r]=null});return{c(){e=b("ul");for(let r=0;r{c=null}),ie())},i(d){r||(A(c),r=!0)},o(d){F(c),r=!1},d(d){d&&g(e),c&&c.d(),i=!1,o()}}}function mt(s){var he;let e,n,t,l,a,r,i,o="Filter:",c,d,f,p,h,T,S="Clear screen",V,$,L,C="Toggle pinned logs panel",k,E,j,I,m,y,z,Y;ve.title=e="Logs"+((he=s[4].online)!=null&&he.MPKIT_URL?": "+s[4].online.MPKIT_URL.replace("https://",""):"");let M=s[1]&&je(s);E=new de({props:{icon:"pin"}});let D=s[4].logs.logs&&Ae(s),H=!s[1]&&Ue(),B=s[3]&&Me(s);return{c(){n=N(),t=b("div"),l=b("section"),a=b("nav"),r=b("form"),i=b("label"),i.textContent=o,c=N(),d=b("input"),f=N(),M&&M.c(),p=N(),h=b("div"),T=b("button"),T.textContent=S,V=N(),$=b("button"),L=b("span"),L.textContent=C,k=N(),ne(E.$$.fragment),j=N(),D&&D.c(),I=N(),H&&H.c(),m=N(),B&&B.c(),this.h()},l(O){Je("svelte-dfdkqr",ve.head).forEach(g),n=P(O),t=v(O,"DIV",{class:!0});var U=w(t);l=v(U,"SECTION",{class:!0});var R=w(l);a=v(R,"NAV",{class:!0});var X=w(a);r=v(X,"FORM",{});var W=w(r);i=v(W,"LABEL",{for:!0,"data-svelte-h":!0}),ee(i)!=="svelte-kf6j7o"&&(i.textContent=o),c=P(W),d=v(W,"INPUT",{type:!0,id:!0,class:!0}),f=P(W),M&&M.l(W),W.forEach(g),p=P(X),h=v(X,"DIV",{class:!0});var re=w(h);T=v(re,"BUTTON",{type:!0,class:!0,"data-svelte-h":!0}),ee(T)!=="svelte-1hlqgjb"&&(T.textContent=S),V=P(re),$=v(re,"BUTTON",{type:!0,title:!0,class:!0});var ae=w($);L=v(ae,"SPAN",{class:!0,"data-svelte-h":!0}),ee(L)!=="svelte-1o6petk"&&(L.textContent=C),k=P(ae),se(E.$$.fragment,ae),ae.forEach(g),re.forEach(g),X.forEach(g),j=P(R),D&&D.l(R),I=P(R),H&&H.l(R),R.forEach(g),m=P(U),B&&B.l(U),U.forEach(g),this.h()},h(){_(i,"for","filter"),_(d,"type","text"),_(d,"id","filter"),_(d,"class","svelte-12glt4h"),_(T,"type","button"),_(T,"class","button"),_(L,"class","label"),_($,"type","button"),_($,"title","Toggle pinned logs panel"),_($,"class","button"),_(h,"class","svelte-12glt4h"),_(a,"class","svelte-12glt4h"),_(l,"class","logs svelte-12glt4h"),_(t,"class","container svelte-12glt4h")},m(O,G){q(O,n,G),q(O,t,G),u(t,l),u(l,a),u(a,r),u(r,i),u(r,c),u(r,d),Ee(d,s[1]),u(r,f),M&&M.m(r,null),u(a,p),u(a,h),u(h,T),u(h,V),u(h,$),u($,L),u($,k),le(E,$,null),u(l,j),D&&D.m(l,null),u(l,I),H&&H.m(l,null),u(t,m),B&&B.m(t,null),s[16](t),y=!0,z||(Y=[x(d,"input",s[8]),x(T,"click",s[10]),x($,"click",s[7])],z=!0)},p(O,[G]){var U;(!y||G&16)&&e!==(e="Logs"+((U=O[4].online)!=null&&U.MPKIT_URL?": "+O[4].online.MPKIT_URL.replace("https://",""):""))&&(ve.title=e),G&2&&d.value!==O[1]&&Ee(d,O[1]),O[1]?M?(M.p(O,G),G&2&&A(M,1)):(M=je(O),M.c(),A(M,1),M.m(r,null)):M&&(oe(),F(M,1,1,()=>{M=null}),ie()),O[4].logs.logs?D?(D.p(O,G),G&16&&A(D,1)):(D=Ae(O),D.c(),A(D,1),D.m(l,I)):D&&(oe(),F(D,1,1,()=>{D=null}),ie()),O[1]?H&&(H.d(1),H=null):H||(H=Ue(),H.c(),H.m(l,null)),O[3]?B?(B.p(O,G),G&8&&A(B,1)):(B=Me(O),B.c(),A(B,1),B.m(t,null)):B&&(oe(),F(B,1,1,()=>{B=null}),ie())},i(O){y||(A(M),A(E.$$.fragment,O),A(D),A(B),y=!0)},o(O){F(M),F(E.$$.fragment,O),F(D),F(B),y=!1},d(O){O&&(g(n),g(t)),M&&M.d(),te(E),D&&D.d(),H&&H.d(),B&&B.d(),s[16](null),z=!1,Fe(Y)}}}function vt(s,e,n){let t;Ke(s,ce,m=>n(4,t=m));let l,a="",r=[],i,o;Ge(()=>(c(),p(),o=setInterval(()=>{document.visibilityState!=="hidden"&&c()},7500),()=>clearInterval(o)));const c=async()=>{var z,Y,M;const m=((Y=(z=t.logs.logs)==null?void 0:z.at(-1))==null?void 0:Y.id)??null,y=await at.get({last:m});m?(M=y.logs)!=null&&M.length&&(me(ce,t.logs.logs=[...t.logs.logs,...y.logs],t),t.logs.downloaded_at.push(Date.now()),t.logs.downloaded_at.length>2&&t.logs.downloaded_at.splice(0,1)):t.logs.logs||(me(ce,t.logs=y,t),t.logs.downloaded_at||me(ce,t.logs.downloaded_at=[Date.now()],t))},d=m=>m.hidden===!0||m.error_type.toLowerCase().indexOf(a)===-1&&m.message.toLowerCase().indexOf(a)===-1;let f=!1;Ye(()=>{{const m=document.querySelector(".logs");m&&Math.abs(m.scrollHeight-m.scrollTop-m.clientHeight)<10&&(f=!1)}}),Qe(async()=>{var m;f||(await xe(),document.querySelector("footer").scrollIntoView(),(m=t.logs.logs)!=null&&m.length&&(f=!0))});const p=()=>{n(3,i=localStorage.pinnedPanel==="true"),n(2,r=localStorage.pinnedLogs?JSON.parse(localStorage.pinnedLogs):[])},h=m=>{r.find(y=>y.id===m.id)?n(2,r=r.filter(y=>y.id!==m.id)):n(2,r=[...r,m]),localStorage.pinnedLogs=JSON.stringify(r)},T=()=>{i?(n(3,i=!1),localStorage.pinnedPanel=!1):(n(3,i=!0),localStorage.pinnedPanel=!0)};function S(){a=this.value,n(1,a)}const V=()=>n(1,a=""),$=()=>t.logs.logs.forEach((m,y)=>me(ce,t.logs.logs[y].hidden=!0,t)),L=(m,y)=>navigator.clipboard.writeText(m.message).then(()=>{y.target.classList.add("confirmation"),setTimeout(()=>y.target.classList.remove("confirmation"),1e3)}),C=m=>h(m),k=(m,y)=>y.id===m.id,E=()=>{localStorage.pinnedLogs=[],n(2,r=[])},j=m=>h(m);function I(m){We[m?"unshift":"push"](()=>{l=m,n(0,l)})}return[l,a,r,i,t,d,h,T,S,V,$,L,C,k,E,j,I]}class Dt extends qe{constructor(e){super(),ze(this,e,vt,mt,Be,{})}}export{Dt as component}; diff --git a/gui/next/build/_app/immutable/nodes/14.D7NRbAwv.js b/gui/next/build/_app/immutable/nodes/14.D7NRbAwv.js new file mode 100644 index 0000000..b6a8936 --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/14.D7NRbAwv.js @@ -0,0 +1 @@ +import{s as i,n as o,p as c,d as l,k as p}from"../chunks/Ul9VwQ7n.js";import{S as m,i as d}from"../chunks/Bh3MJlbi.js";import{s as u}from"../chunks/DGc7Lmco.js";function _(n){var s;let e;return document.title=e="Users"+((s=n[0].online)!=null&&s.MPKIT_URL?": "+n[0].online.MPKIT_URL.replace("https://",""):""),{c:o,l(t){c("svelte-mcmxo",document.head).forEach(l)},m:o,p(t,[a]){var r;a&1&&e!==(e="Users"+((r=t[0].online)!=null&&r.MPKIT_URL?": "+t[0].online.MPKIT_URL.replace("https://",""):""))&&(document.title=e)},i:o,o,d:o}}function f(n,e,s){let t;return p(n,u,a=>s(0,t=a)),[t]}class I extends m{constructor(e){super(),d(this,e,f,_,i,{})}}export{I as component}; diff --git a/gui/next/build/_app/immutable/nodes/15.WKQetCTJ.js b/gui/next/build/_app/immutable/nodes/15.WKQetCTJ.js new file mode 100644 index 0000000..f88acca --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/15.WKQetCTJ.js @@ -0,0 +1 @@ +import{s as Be,d as u,i as c,p as We,g as G,j as H,k as Te,a as R,w as z,b,c as h,e as M,f as K,v as J,h as v,t as O,z as A,I as Ge,n as Le}from"../chunks/Ul9VwQ7n.js";import{S as He,i as Qe,d as Ne,t as q,a as N,m as qe,c as Ae,b as Ve,g as le,e as ie}from"../chunks/Bh3MJlbi.js";import{e as we}from"../chunks/BNCRiqmJ.js";import{p as Xe}from"../chunks/C5zjxmar.js";import{u as Ye}from"../chunks/CNoDK8-a.js";import{s as Ze}from"../chunks/DGc7Lmco.js";import{t as ye}from"../chunks/x4PJc0Qf.js";import{A as xe}from"../chunks/DntFPtNo.js";import{J as et}from"../chunks/BVVGnpm8.js";function Ie(o,t,f){const l=o.slice();return l[4]=t[f][0],l[5]=t[f][1],l}function Se(o){var i;let t,f=((i=o[1])==null?void 0:i.id)+"",l;return{c(){t=O("ID: "),l=O(f)},l(s){t=K(s,"ID: "),l=K(s,f)},m(s,a){c(s,t,a),c(s,l,a)},p(s,a){var e;a&2&&f!==(f=((e=s[1])==null?void 0:e.id)+"")&&R(l,f)},d(s){s&&(u(t),u(l))}}}function je(o){var a;let t,f="External ID:",l,i=((a=o[1])==null?void 0:a.external_id)+"",s;return{c(){t=v("dt"),t.textContent=f,l=v("dd"),s=O(i),this.h()},l(e){t=h(e,"DT",{class:!0,"data-svelte-h":!0}),A(t)!=="svelte-1xroeo8"&&(t.textContent=f),l=h(e,"DD",{class:!0});var n=M(l);s=K(n,i),n.forEach(u),this.h()},h(){z(t,"class","svelte-uhfiox"),z(l,"class","svelte-uhfiox")},m(e,n){c(e,t,n),c(e,l,n),b(l,s)},p(e,n){var r;n&2&&i!==(i=((r=e[1])==null?void 0:r.external_id)+"")&&R(s,i)},d(e){e&&(u(t),u(l))}}}function Pe(o){var a;let t,f="JWT:",l,i=((a=o[1])==null?void 0:a.jwt_token)+"",s;return{c(){t=v("dt"),t.textContent=f,l=v("dd"),s=O(i),this.h()},l(e){t=h(e,"DT",{class:!0,"data-svelte-h":!0}),A(t)!=="svelte-l7ssfz"&&(t.textContent=f),l=h(e,"DD",{class:!0});var n=M(l);s=K(n,i),n.forEach(u),this.h()},h(){z(t,"class","svelte-uhfiox"),z(l,"class","svelte-uhfiox")},m(e,n){c(e,t,n),c(e,l,n),b(l,s)},p(e,n){var r;n&2&&i!==(i=((r=e[1])==null?void 0:r.jwt_token)+"")&&R(s,i)},d(e){e&&(u(t),u(l))}}}function Ue(o){var a;let t,f="First name:",l,i=((a=o[1])==null?void 0:a.name)+"",s;return{c(){t=v("dt"),t.textContent=f,l=v("dd"),s=O(i)},l(e){t=h(e,"DT",{"data-svelte-h":!0}),A(t)!=="svelte-8iyt8l"&&(t.textContent=f),l=h(e,"DD",{});var n=M(l);s=K(n,i),n.forEach(u)},m(e,n){c(e,t,n),c(e,l,n),b(l,s)},p(e,n){var r;n&2&&i!==(i=((r=e[1])==null?void 0:r.name)+"")&&R(s,i)},d(e){e&&(u(t),u(l))}}}function Me(o){var a;let t,f="First name:",l,i=((a=o[1])==null?void 0:a.first_name)+"",s;return{c(){t=v("dt"),t.textContent=f,l=v("dd"),s=O(i)},l(e){t=h(e,"DT",{"data-svelte-h":!0}),A(t)!=="svelte-8iyt8l"&&(t.textContent=f),l=h(e,"DD",{});var n=M(l);s=K(n,i),n.forEach(u)},m(e,n){c(e,t,n),c(e,l,n),b(l,s)},p(e,n){var r;n&2&&i!==(i=((r=e[1])==null?void 0:r.first_name)+"")&&R(s,i)},d(e){e&&(u(t),u(l))}}}function Je(o){var a;let t,f="Middle name:",l,i=((a=o[1])==null?void 0:a.middle_name)+"",s;return{c(){t=v("dt"),t.textContent=f,l=v("dd"),s=O(i)},l(e){t=h(e,"DT",{"data-svelte-h":!0}),A(t)!=="svelte-1eitmmc"&&(t.textContent=f),l=h(e,"DD",{});var n=M(l);s=K(n,i),n.forEach(u)},m(e,n){c(e,t,n),c(e,l,n),b(l,s)},p(e,n){var r;n&2&&i!==(i=((r=e[1])==null?void 0:r.middle_name)+"")&&R(s,i)},d(e){e&&(u(t),u(l))}}}function Ke(o){var a;let t,f="Last name:",l,i=((a=o[1])==null?void 0:a.last_name)+"",s;return{c(){t=v("dt"),t.textContent=f,l=v("dd"),s=O(i)},l(e){t=h(e,"DT",{"data-svelte-h":!0}),A(t)!=="svelte-1sn8cp"&&(t.textContent=f),l=h(e,"DD",{});var n=M(l);s=K(n,i),n.forEach(u)},m(e,n){c(e,t,n),c(e,l,n),b(l,s)},p(e,n){var r;n&2&&i!==(i=((r=e[1])==null?void 0:r.last_name)+"")&&R(s,i)},d(e){e&&(u(t),u(l))}}}function Oe(o){var a;let t,f="Slug:",l,i=((a=o[1])==null?void 0:a.slug)+"",s;return{c(){t=v("dt"),t.textContent=f,l=v("dd"),s=O(i)},l(e){t=h(e,"DT",{"data-svelte-h":!0}),A(t)!=="svelte-q9mm1z"&&(t.textContent=f),l=h(e,"DD",{});var n=M(l);s=K(n,i),n.forEach(u)},m(e,n){c(e,t,n),c(e,l,n),b(l,s)},p(e,n){var r;n&2&&i!==(i=((r=e[1])==null?void 0:r.slug)+"")&&R(s,i)},d(e){e&&(u(t),u(l))}}}function Re(o){var a;let t,f="Language:",l,i=((a=o[1])==null?void 0:a.language)+"",s;return{c(){t=v("dt"),t.textContent=f,l=v("dd"),s=O(i)},l(e){t=h(e,"DT",{"data-svelte-h":!0}),A(t)!=="svelte-14i3pp2"&&(t.textContent=f),l=h(e,"DD",{});var n=M(l);s=K(n,i),n.forEach(u)},m(e,n){c(e,t,n),c(e,l,n),b(l,s)},p(e,n){var r;n&2&&i!==(i=((r=e[1])==null?void 0:r.language)+"")&&R(s,i)},d(e){e&&(u(t),u(l))}}}function ze(o){let t,f,l=we(Object.entries(o[1].properties)),i=[];for(let a=0;aq(i[a],1,1,()=>{i[a]=null});return{c(){t=v("dl");for(let a=0;a{g[_]=null}),ie(),e=g[a],e?e.p(p,k):(e=g[a]=C[a](p),e.c()),N(e,1),e.m(i,n))},i(p){r||(N(e),r=!0)},o(p){q(e),r=!1},d(p){p&&(u(t),u(i)),g[a].d()}}}function it(o){var ne,ae,fe,se,oe,re,de,ue,_e,ce,me,pe;let t,f,l,i,s=new Date((ne=o[1])==null?void 0:ne.created_at).toLocaleDateString(void 0,{})+"",a,e,n=new Date((ae=o[1])==null?void 0:ae.created_at).toLocaleTimeString(void 0,{})+"",r,C,g,$,p,k,_,Y,Z,y,x,ee,te,Q,V,E=((fe=o[1])==null?void 0:fe.id)&&Se(o),T=((se=o[1])==null?void 0:se.external_id)&&je(o),L=((oe=o[1])==null?void 0:oe.jwt_token)&&Pe(o),w=((re=o[1])==null?void 0:re.name)&&Ue(o),I=((de=o[1])==null?void 0:de.first_name)&&Me(o),S=((ue=o[1])==null?void 0:ue.middle_name)&&Je(o),j=((_e=o[1])==null?void 0:_e.last_name)&&Ke(o),P=((ce=o[1])==null?void 0:ce.slug)&&Oe(o),U=((me=o[1])==null?void 0:me.language)&&Re(o),D=((pe=o[1])==null?void 0:pe.properties)&&ze(o);return{c(){t=v("div"),f=v("div"),E&&E.c(),l=H(),i=v("time"),a=O(s),e=H(),r=O(n),g=H(),$=v("dl"),T&&T.c(),p=J(),L&&L.c(),k=H(),_=v("dl"),w&&w.c(),Y=J(),I&&I.c(),Z=J(),S&&S.c(),y=J(),j&&j.c(),x=J(),P&&P.c(),ee=J(),U&&U.c(),te=H(),D&&D.c(),Q=J(),this.h()},l(d){t=h(d,"DIV",{});var m=M(t);f=h(m,"DIV",{class:!0});var B=M(f);E&&E.l(B),l=G(B),i=h(B,"TIME",{datetime:!0,class:!0});var W=M(i);a=K(W,s),e=G(W),r=K(W,n),W.forEach(u),B.forEach(u),m.forEach(u),g=G(d),$=h(d,"DL",{class:!0});var X=M($);T&&T.l(X),p=J(),L&&L.l(X),X.forEach(u),k=G(d),_=h(d,"DL",{class:!0});var F=M(_);w&&w.l(F),Y=J(),I&&I.l(F),Z=J(),S&&S.l(F),y=J(),j&&j.l(F),x=J(),P&&P.l(F),ee=J(),U&&U.l(F),F.forEach(u),te=G(d),D&&D.l(d),Q=J(),this.h()},h(){var d;z(i,"datetime",C=(d=o[1])==null?void 0:d.created_at),z(i,"class","svelte-uhfiox"),z(f,"class","info svelte-uhfiox"),z($,"class","tech svelte-uhfiox"),z(_,"class","personal definitions svelte-uhfiox")},m(d,m){c(d,t,m),b(t,f),E&&E.m(f,null),b(f,l),b(f,i),b(i,a),b(i,e),b(i,r),c(d,g,m),c(d,$,m),T&&T.m($,null),b($,p),L&&L.m($,null),c(d,k,m),c(d,_,m),w&&w.m(_,null),b(_,Y),I&&I.m(_,null),b(_,Z),S&&S.m(_,null),b(_,y),j&&j.m(_,null),b(_,x),P&&P.m(_,null),b(_,ee),U&&U.m(_,null),c(d,te,m),D&&D.m(d,m),c(d,Q,m),V=!0},p(d,m){var B,W,X,F,he,ve,be,ke,De,ge,Ce,$e,Ee;(B=d[1])!=null&&B.id?E?E.p(d,m):(E=Se(d),E.c(),E.m(f,l)):E&&(E.d(1),E=null),(!V||m&2)&&s!==(s=new Date((W=d[1])==null?void 0:W.created_at).toLocaleDateString(void 0,{})+"")&&R(a,s),(!V||m&2)&&n!==(n=new Date((X=d[1])==null?void 0:X.created_at).toLocaleTimeString(void 0,{})+"")&&R(r,n),(!V||m&2&&C!==(C=(F=d[1])==null?void 0:F.created_at))&&z(i,"datetime",C),(he=d[1])!=null&&he.external_id?T?T.p(d,m):(T=je(d),T.c(),T.m($,p)):T&&(T.d(1),T=null),(ve=d[1])!=null&&ve.jwt_token?L?L.p(d,m):(L=Pe(d),L.c(),L.m($,null)):L&&(L.d(1),L=null),(be=d[1])!=null&&be.name?w?w.p(d,m):(w=Ue(d),w.c(),w.m(_,Y)):w&&(w.d(1),w=null),(ke=d[1])!=null&&ke.first_name?I?I.p(d,m):(I=Me(d),I.c(),I.m(_,Z)):I&&(I.d(1),I=null),(De=d[1])!=null&&De.middle_name?S?S.p(d,m):(S=Je(d),S.c(),S.m(_,y)):S&&(S.d(1),S=null),(ge=d[1])!=null&&ge.last_name?j?j.p(d,m):(j=Ke(d),j.c(),j.m(_,x)):j&&(j.d(1),j=null),(Ce=d[1])!=null&&Ce.slug?P?P.p(d,m):(P=Oe(d),P.c(),P.m(_,ee)):P&&(P.d(1),P=null),($e=d[1])!=null&&$e.language?U?U.p(d,m):(U=Re(d),U.c(),U.m(_,null)):U&&(U.d(1),U=null),(Ee=d[1])!=null&&Ee.properties?D?(D.p(d,m),m&2&&N(D,1)):(D=ze(d),D.c(),N(D,1),D.m(Q.parentNode,Q)):D&&(le(),q(D,1,1,()=>{D=null}),ie())},i(d){V||(N(D),V=!0)},o(d){q(D),V=!1},d(d){d&&(u(t),u(g),u($),u(k),u(_),u(te),u(Q)),E&&E.d(),T&&T.d(),L&&L.d(),w&&w.d(),I&&I.d(),S&&S.d(),j&&j.d(),P&&P.d(),U&&U.d(),D&&D.d(d)}}}function nt(o){var s,a,e,n;let t,f,l,i;return document.title=t=(((s=o[1])==null?void 0:s.email)??"Users")+((a=o[2].online)!=null&&a.MPKIT_URL?": "+o[2].online.MPKIT_URL.replace("https://",""):""),l=new xe({props:{title:((e=o[1])==null?void 0:e.email)??((n=o[1])==null?void 0:n.id)??"Loading…",closeUrl:"/users?"+o[0].url.searchParams.toString(),$$slots:{default:[it]},$$scope:{ctx:o}}}),{c(){f=H(),Ve(l.$$.fragment)},l(r){We("svelte-n9gl86",document.head).forEach(u),f=G(r),Ae(l.$$.fragment,r)},m(r,C){c(r,f,C),qe(l,r,C),i=!0},p(r,[C]){var $,p,k,_;(!i||C&6)&&t!==(t=((($=r[1])==null?void 0:$.email)??"Users")+((p=r[2].online)!=null&&p.MPKIT_URL?": "+r[2].online.MPKIT_URL.replace("https://",""):""))&&(document.title=t);const g={};C&2&&(g.title=((k=r[1])==null?void 0:k.email)??((_=r[1])==null?void 0:_.id)??"Loading…"),C&1&&(g.closeUrl="/users?"+r[0].url.searchParams.toString()),C&258&&(g.$$scope={dirty:C,ctx:r}),l.$set(g)},i(r){i||(N(l.$$.fragment,r),i=!0)},o(r){q(l.$$.fragment,r),i=!1},d(r){r&&u(f),Ne(l,r)}}}function at(o,t,f){let l,i;Te(o,Xe,e=>f(0,l=e)),Te(o,Ze,e=>f(2,i=e));let s;const a=async()=>{const e={attribute:"id",value:l.params.id};await Ye.get(e).then(n=>{f(1,s=n.results[0])})};return o.$$.update=()=>{o.$$.dirty&1&&l.params.id&&a()},[l,s,i]}class pt extends He{constructor(t){super(),Qe(this,t,at,nt,Be,{})}}export{pt as component}; diff --git a/gui/next/build/_app/immutable/nodes/2.C3vbTXim.js b/gui/next/build/_app/immutable/nodes/2.C3vbTXim.js new file mode 100644 index 0000000..3d3bb08 --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/2.C3vbTXim.js @@ -0,0 +1,7 @@ +import{s as je,d as u,i as X,b as l,D as me,w as c,c as d,e as y,g as L,f as Y,h as f,j as N,t as Z,F as Ze,H as Le,X as He,l as nt,I as at,r as Qe,Y as Je,Z as st,a as De,u as lt,m as rt,o as ot,C as Pe,J as it,p as ut,z as ne,k as Ve,_ as dt,K as ze,$ as ft}from"../chunks/Ul9VwQ7n.js";import{S as Ue,i as Ae,d as pe,t as V,a as F,m as he,c as ge,b as ve,j as ct,e as We,g as xe}from"../chunks/Bh3MJlbi.js";import{e as Ke}from"../chunks/BNCRiqmJ.js";import"../chunks/bH_aOImW.js";import{p as _t}from"../chunks/C5zjxmar.js";import{b as Se}from"../chunks/CIy9Z9Qf.js";import{s as Ce}from"../chunks/DGc7Lmco.js";import{I as Me}from"../chunks/D-yR0E5w.js";import{N as mt}from"../chunks/Bg88RIi0.js";const be=e=>{const t=e instanceof Date?e:new Date(e),n=new Intl.RelativeTimeFormat("en"),a={years:3600*24*365,months:3600*24*30,weeks:3600*24*7,days:3600*24,hours:3600,minutes:60,seconds:1},s=(t.getTime()-Date.now())/1e3;for(let i in a)if(a[i]{o.preventDefault();const p=await Se.retry({properties:new FormData(s)});p.errors?Ce.notification.create("error",`Background job ${p.admin_background_job_retry.id} could not be run again`):(i("itemsChanged"),Ce.notification.create("success",`Background job ${p.admin_background_job_retry.id} planned to run again`))};function v(o){Le[o?"unshift":"push"](()=>{s=o,n(1,s)})}return e.$$set=o=>{"id"in o&&n(0,a=o.id)},[a,s,_,v]}class gt extends Ue{constructor(t){super(),Ae(this,t,ht,pt,je,{id:0})}}function vt(e){let t,n,a,s,i,_,v,o,p,h;return _=new Me({props:{icon:"x",size:"22"}}),{c(){t=f("form"),n=f("input"),a=N(),s=f("button"),i=f("i"),ve(_.$$.fragment),v=Z(`\r + Delete background job`),this.h()},l(r){t=d(r,"FORM",{});var b=y(t);n=d(b,"INPUT",{type:!0,name:!0}),a=L(b),s=d(b,"BUTTON",{class:!0});var P=y(s);i=d(P,"I",{class:!0});var k=y(i);ge(_.$$.fragment,k),k.forEach(u),v=Y(P,`\r + Delete background job`),P.forEach(u),b.forEach(u),this.h()},h(){c(n,"type","hidden"),c(n,"name","id"),n.value=e[0],c(i,"class","svelte-ooaugn"),c(s,"class","danger")},m(r,b){X(r,t,b),l(t,n),l(t,a),l(t,s),l(s,i),he(_,i,null),l(s,v),e[3](t),o=!0,p||(h=me(t,"submit",e[2]),p=!0)},p(r,[b]){(!o||b&1)&&(n.value=r[0])},i(r){o||(F(_.$$.fragment,r),o=!0)},o(r){V(_.$$.fragment,r),o=!1},d(r){r&&u(t),pe(_),e[3](null),p=!1,h()}}}function bt(e,t,n){let{id:a}=t,s;const i=Ze(),_=async o=>{if(o.preventDefault(),confirm("Are you sure you want to delete this background job?")){const p=await Se.delete({properties:new FormData(s)});p.errors?Ce.notification.create("error",`Background job ${p.admin_background_job_delete.id} could not be deleted`):(i("itemsChanged"),Ce.notification.create("success",`Background job ${p.admin_background_job_delete.id} deleted`))}};function v(o){Le[o?"unshift":"push"](()=>{s=o,n(1,s)})}return e.$$set=o=>{"id"in o&&n(0,a=o.id)},[a,s,_,v]}class Et extends Ue{constructor(t){super(),Ae(this,t,bt,vt,je,{id:0})}}function Ge(e,t,n){const a=e.slice();return a[16]=t[n],a}function yt(e){let t;return{c(){t=Z("Runs")},l(n){t=Y(n,"Runs")},m(n,a){X(n,t,a)},d(n){n&&u(t)}}}function $t(e){let t;return{c(){t=Z("Failed")},l(n){t=Y(n,"Failed")},m(n,a){X(n,t,a)},d(n){n&&u(t)}}}function Xe(e){let t,n,a;return n=new gt({props:{id:e[16].id}}),n.$on("itemsChanged",e[6]),{c(){t=f("li"),ve(n.$$.fragment),this.h()},l(s){t=d(s,"LI",{class:!0});var i=y(t);ge(n.$$.fragment,i),i.forEach(u),this.h()},h(){c(t,"class","svelte-1m1ug4d")},m(s,i){X(s,t,i),he(n,t,null),a=!0},p(s,i){const _={};i&2&&(_.id=s[16].id),n.$set(_)},i(s){a||(F(n.$$.fragment,s),a=!0)},o(s){V(n.$$.fragment,s),a=!1},d(s){s&&u(t),pe(n)}}}function kt(e){let t=(e[16].run_at_parsed||be(new Date(e[16].run_at)))+"",n;return{c(){n=Z(t)},l(a){n=Y(a,t)},m(a,s){X(a,n,s)},p(a,s){s&2&&t!==(t=(a[16].run_at_parsed||be(new Date(a[16].run_at)))+"")&&De(n,t)},d(a){a&&u(n)}}}function Dt(e){let t=(e[16].dead_at_parsed||be(new Date(e[16].dead_at))||"")+"",n;return{c(){n=Z(t)},l(a){n=Y(a,t)},m(a,s){X(a,n,s)},p(a,s){s&2&&t!==(t=(a[16].dead_at_parsed||be(new Date(a[16].dead_at))||"")+"")&&De(n,t)},d(a){a&&u(n)}}}function Ye(e){let t,n,a,s,i,_="More options",v,o,p,h,r,b,P,k,te,w,z=(e[16].source_name||e[16].id)+"",E,A,K,R,S=e[16].queue+"",ae,se,j,ie,q,J,ue;o=new Me({props:{icon:"navigationMenuVertical",size:"16"}});function Ee(){return e[11](e[16])}let g=e[16].dead_at&&Xe(e);k=new Et({props:{id:e[16].id}}),k.$on("itemsChanged",e[6]);function G($,C){return $[0].type==="DEAD"?Dt:kt}let le=G(e),U=le(e);return{c(){t=f("tr"),n=f("td"),a=f("div"),s=f("button"),i=f("span"),i.textContent=_,v=N(),ve(o.$$.fragment),p=N(),h=f("menu"),r=f("ul"),g&&g.c(),b=N(),P=f("li"),ve(k.$$.fragment),te=N(),w=f("a"),E=Z(z),K=N(),R=f("td"),ae=Z(S),se=N(),j=f("td"),U.c(),ie=N(),this.h()},l($){t=d($,"TR",{class:!0});var C=y(t);n=d(C,"TD",{class:!0});var Q=y(n);a=d(Q,"DIV",{class:!0});var H=y(a);s=d(H,"BUTTON",{class:!0});var W=y(s);i=d(W,"SPAN",{class:!0,"data-svelte-h":!0}),ne(i)!=="svelte-1agpmtc"&&(i.textContent=_),v=L(W),ge(o.$$.fragment,W),W.forEach(u),p=L(H),h=d(H,"MENU",{class:!0});var de=y(h);r=d(de,"UL",{});var M=y(r);g&&g.l(M),b=L(M),P=d(M,"LI",{class:!0});var fe=y(P);ge(k.$$.fragment,fe),fe.forEach(u),M.forEach(u),de.forEach(u),te=L(H),w=d(H,"A",{href:!0,class:!0});var ye=y(w);E=Y(ye,z),ye.forEach(u),H.forEach(u),Q.forEach(u),K=L(C),R=d(C,"TD",{class:!0});var $e=y(R);ae=Y($e,S),$e.forEach(u),se=L(C),j=d(C,"TD",{class:!0});var re=y(j);U.l(re),re.forEach(u),ie=L(C),C.forEach(u),this.h()},h(){c(i,"class","label"),c(s,"class","button compact more svelte-1m1ug4d"),c(P,"class","svelte-1m1ug4d"),c(h,"class","content-context svelte-1m1ug4d"),ze(h,"active",e[2].id===e[16].id),c(w,"href",A="/backgroundJobs/"+e[0].type.toLowerCase()+"/"+e[16].id+"?"+e[4].url.searchParams.toString()),c(w,"class","svelte-1m1ug4d"),c(a,"class","svelte-1m1ug4d"),c(n,"class","id svelte-1m1ug4d"),c(R,"class","svelte-1m1ug4d"),c(j,"class","svelte-1m1ug4d"),c(t,"class","svelte-1m1ug4d")},m($,C){X($,t,C),l(t,n),l(n,a),l(a,s),l(s,i),l(s,v),he(o,s,null),l(a,p),l(a,h),l(h,r),g&&g.m(r,null),l(r,b),l(r,P),he(k,P,null),l(a,te),l(a,w),l(w,E),l(t,K),l(t,R),l(R,ae),l(t,se),l(t,j),U.m(j,null),l(t,ie),q=!0,J||(ue=[me(s,"click",Ee),me(n,"mouseleave",e[12])],J=!0)},p($,C){e=$,e[16].dead_at?g?(g.p(e,C),C&2&&F(g,1)):(g=Xe(e),g.c(),F(g,1),g.m(r,b)):g&&(xe(),V(g,1,1,()=>{g=null}),We());const Q={};C&2&&(Q.id=e[16].id),k.$set(Q),(!q||C&6)&&ze(h,"active",e[2].id===e[16].id),(!q||C&2)&&z!==(z=(e[16].source_name||e[16].id)+"")&&De(E,z),(!q||C&19&&A!==(A="/backgroundJobs/"+e[0].type.toLowerCase()+"/"+e[16].id+"?"+e[4].url.searchParams.toString()))&&c(w,"href",A),(!q||C&2)&&S!==(S=e[16].queue+"")&&De(ae,S),le===(le=G(e))&&U?U.p(e,C):(U.d(1),U=le(e),U&&(U.c(),U.m(j,null)))},i($){q||(F(o.$$.fragment,$),F(g),F(k.$$.fragment,$),q=!0)},o($){V(o.$$.fragment,$),V(g),V(k.$$.fragment,$),q=!1},d($){$&&u(t),pe(o),g&&g.d(),pe(k),U.d(),J=!1,Qe(ue)}}}function Ct(e){var Be;let t,n,a,s,i,_,v,o,p="Type:",h,r,b,P="Scheduled",k,te="Failed",w,z="Running",E,A,K,R,S,ae="Name / id",se,j,ie="Priority",q,J,ue,Ee,g,G,le="Page:",U,$,C,Q,H=(e[1].total_pages||1)+"",W,de,M,fe,ye;document.title=t="Jobs"+((Be=e[5].online)!=null&&Be.MPKIT_URL?": "+e[5].online.MPKIT_URL.replace("https://",""):"");function $e(m,T){return m[0].type==="DEAD"?$t:yt}let re=$e(e),x=re(e),oe=Ke(e[1].results),D=[];for(let m=0;mV(D[m],1,1,()=>{D[m]=null});function tt(m){e[13](m)}let Oe={form:"filters",name:"page",min:1,max:e[1].total_pages,step:1,decreaseLabel:"Previous page",increaseLabel:"Next page",style:"navigation"};e[0].page!==void 0&&(Oe.value=e[0].page),$=new mt({props:Oe}),Le.push(()=>ct($,"value",tt)),$.$on("input",function(){He(e[3].requestSubmit())&&e[3].requestSubmit().apply(this,arguments)});const Ne=e[8].default,O=nt(Ne,e,e[7],null);return{c(){n=N(),a=f("div"),s=f("div"),i=f("nav"),_=f("form"),v=f("fieldset"),o=f("label"),o.textContent=p,h=N(),r=f("select"),b=f("option"),b.textContent=P,k=f("option"),k.textContent=te,w=f("option"),w.textContent=z,E=N(),A=f("table"),K=f("thead"),R=f("tr"),S=f("th"),S.textContent=ae,se=N(),j=f("th"),j.textContent=ie,q=N(),J=f("th"),x.c(),ue=N();for(let m=0;me[9].call(r)),c(v,"class","svelte-1m1ug4d"),c(_,"id","filters"),c(_,"class","svelte-1m1ug4d"),c(i,"class","filters svelte-1m1ug4d"),c(S,"class","id svelte-1m1ug4d"),c(j,"class","svelte-1m1ug4d"),c(J,"class","svelte-1m1ug4d"),c(K,"class","svelte-1m1ug4d"),c(A,"class","svelte-1m1ug4d"),c(G,"for","page"),c(g,"class","pagination svelte-1m1ug4d"),c(s,"class","svelte-1m1ug4d"),c(a,"class","container svelte-1m1ug4d")},m(m,T){X(m,n,T),X(m,a,T),l(a,s),l(s,i),l(i,_),l(_,v),l(v,o),l(v,h),l(v,r),l(r,b),l(r,k),l(r,w),Je(r,e[0].type,!0),e[10](_),l(s,E),l(s,A),l(A,K),l(K,R),l(R,S),l(R,se),l(R,j),l(R,q),l(R,J),x.m(J,null),l(A,ue);for(let B=0;BC=!1)),$.$set(B),(!M||T&2)&&H!==(H=(e[1].total_pages||1)+"")&&De(W,H),O&&O.p&&(!M||T&128)&<(O,Ne,e,e[7],M?ot(Ne,e[7],T,null):rt(e[7]),null)},i(m){if(!M){for(let T=0;Tn(4,a=E)),Ve(e,Ce,E=>n(5,s=E));let{$$slots:i={},$$scope:_}=t,v={results:[]},o={id:null},p={page:1,type:"SCHEDULED",...Object.fromEntries(a.url.searchParams)},h,r;const b=async()=>{clearInterval(r),n(1,v=await Se.get(p)),r=setInterval(()=>{v.results.forEach(E=>{p.type==="DEAD"?E.dead_at_parsed=be(new Date(E.dead_at)):E.run_at_parsed=be(new Date(E.run_at))})},1e3)};dt(()=>{clearInterval(r)});function P(){p.type=ft(this),n(0,p)}function k(E){Le[E?"unshift":"push"](()=>{h=E,n(3,h)})}const te=E=>n(2,o.id=E.id,o),w=()=>n(2,o.id=null,o);function z(E){e.$$.not_equal(p.page,E)&&(p.page=E,n(0,p))}return e.$$set=E=>{"$$scope"in E&&n(7,_=E.$$scope)},e.$$.update=()=>{e.$$.dirty&1&&p&&b()},[p,v,o,h,a,s,b,_,i,P,k,te,w,z]}class St extends Ue{constructor(t){super(),Ae(this,t,Tt,Ct,je,{})}}export{St as component}; diff --git a/gui/next/build/_app/immutable/nodes/3.Bz4QTVmH.js b/gui/next/build/_app/immutable/nodes/3.Bz4QTVmH.js new file mode 100644 index 0000000..000b0ac --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/3.Bz4QTVmH.js @@ -0,0 +1 @@ +import{s as l,l as i,u as r,m as u,o as f}from"../chunks/Ul9VwQ7n.js";import{S as _,i as c,t as m,a as p}from"../chunks/Bh3MJlbi.js";function $(n){let s;const a=n[1].default,e=i(a,n,n[0],null);return{c(){e&&e.c()},l(t){e&&e.l(t)},m(t,o){e&&e.m(t,o),s=!0},p(t,[o]){e&&e.p&&(!s||o&1)&&r(e,a,t,t[0],s?f(a,t[0],o,null):u(t[0]),null)},i(t){s||(p(e,t),s=!0)},o(t){m(e,t),s=!1},d(t){e&&e.d(t)}}}function d(n,s,a){let{$$slots:e={},$$scope:t}=s;return n.$$set=o=>{"$$scope"in o&&a(0,t=o.$$scope)},[t,e]}class S extends _{constructor(s){super(),c(this,s,d,$,l,{})}}export{S as component}; diff --git a/gui/next/build/_app/immutable/nodes/4.Cy2tpkZR.js b/gui/next/build/_app/immutable/nodes/4.Cy2tpkZR.js new file mode 100644 index 0000000..462cff4 --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/4.Cy2tpkZR.js @@ -0,0 +1 @@ +import{s as le,d as v,I as ie,r as ce,C as X,i as V,b,D as j,w as g,c as k,e as w,g as N,z as G,h as E,j as A,k as Y,L as fe,F as ue,T as ae,n as Q,J as de,a as me,K as P,f as _e,t as he,H as Z,l as pe,u as be,m as ge,o as ve}from"../chunks/Ul9VwQ7n.js";import{S as ne,i as re,t as L,a as C,g as ke,e as Ee,d as F,m as J,c as M,b as O,h as ye}from"../chunks/Bh3MJlbi.js";import{e as x}from"../chunks/BNCRiqmJ.js";import{f as $e}from"../chunks/odGh2V91.js";import{p as we}from"../chunks/C5zjxmar.js";import{s as ee}from"../chunks/DGc7Lmco.js";import{t as Se}from"../chunks/t7b_BBSP.js";import{I as oe}from"../chunks/D-yR0E5w.js";import{C as Ce}from"../chunks/BVq9mvWR.js";function te(i,t,e){const a=i.slice();return a[15]=t[e],a[17]=e,a}function Ie(i){let t,e,a;return e=new oe({props:{icon:"search",size:"18"}}),{c(){t=E("i"),O(e.$$.fragment),this.h()},l(n){t=k(n,"I",{class:!0});var s=w(t);M(e.$$.fragment,s),s.forEach(v),this.h()},h(){g(t,"class","svelte-117f3bg")},m(n,s){V(n,t,s),J(e,t,null),a=!0},p:Q,i(n){a||(C(e.$$.fragment,n),a=!0)},o(n){L(e.$$.fragment,n),a=!1},d(n){n&&v(t),F(e)}}}function De(i){let t,e,a="Reset filter",n,s,_,r,c;return s=new oe({props:{icon:"x",size:"18"}}),{c(){t=E("button"),e=E("span"),e.textContent=a,n=A(),O(s.$$.fragment),this.h()},l(l){t=k(l,"BUTTON",{class:!0});var o=w(t);e=k(o,"SPAN",{class:!0,"data-svelte-h":!0}),G(e)!=="svelte-8g7ehw"&&(e.textContent=a),n=N(o),M(s.$$.fragment,o),o.forEach(v),this.h()},h(){g(e,"class","label"),g(t,"class","svelte-117f3bg")},m(l,o){V(l,t,o),b(t,e),b(t,n),J(s,t,null),_=!0,r||(c=j(t,"click",i[8]),r=!0)},p:Q,i(l){_||(C(s.$$.fragment,l),_=!0)},o(l){L(s.$$.fragment,l),_=!1},d(l){l&&v(t),F(s),r=!1,c()}}}function se(i){let t,e,a=i[15].name+"",n,s,_,r;return{c(){t=E("li"),e=E("a"),n=he(a),_=A(),this.h()},l(c){t=k(c,"LI",{});var l=w(t);e=k(l,"A",{href:!0,class:!0});var o=w(e);n=_e(o,a),o.forEach(v),_=N(l),l.forEach(v),this.h()},h(){g(e,"href",s="/database/table/"+i[15].id),g(e,"class","svelte-117f3bg"),P(e,"active",i[15].id===i[4].params.id)},m(c,l){V(c,t,l),b(t,e),b(e,n),b(t,_)},p(c,l){l&1&&a!==(a=c[15].name+"")&&me(n,a),l&1&&s!==(s="/database/table/"+c[15].id)&&g(e,"href",s),l&17&&P(e,"active",c[15].id===c[4].params.id)},i(c){c&&(r||de(()=>{r=ye(t,$e,{duration:100,delay:7*i[17]}),r.start()}))},o:Q,d(c){c&&v(t)}}}function qe(i){let t,e,a,n,s,_,r,c,l,o="Ctrl",d,K="K",H,I,D,T,B,f;const U=[De,Ie],$=[];function z(u,p){return u[3]?0:1}n=z(i),s=$[n]=U[n](i);let S=x(i[0]),h=[];for(let u=0;u{$[y]=null}),Ee(),s=$[n],s?s.p(u,p):(s=$[n]=U[n](u),s.c()),C(s,1),s.m(a,_)),p&8&&r.value!==u[3]&&X(r,u[3]),p&17){S=x(u[0]);let m;for(m=0;me(4,a=f)),Y(i,ee,f=>e(13,n=f));let s=n.tables,_=s,r,c,l;(async()=>await Se.get())().then(f=>{s=f,e(0,_=f),fe(ee,n.tables=f,n)});const o=ue();ae(async()=>{c.focus(),document.addEventListener("keydown",f=>{f.ctrlKey&&f.key==="k"&&(f.preventDefault(),o("sidebarNeeded"),c.focus(),c.select())}),a.data.table&&r.querySelector(`[href$="${a.data.table.id}"]`).scrollIntoView({behavior:"smooth",block:"center"})});const d=()=>{l?e(0,_=s.filter(f=>f.name.includes(l))):e(0,_=s)},K=f=>{f.key==="Escape"&&(e(3,l=""),d()),f.key==="Enter"&&r.querySelector("li:first-child a").click()},H=f=>{var U,$,z,S,h,u,p,y,m,q;f.key==="ArrowDown"&&r.contains(document.activeElement)&&(f.preventDefault(),document.activeElement.matches("input")?(U=r.querySelector("a"))==null||U.focus():(h=(S=(z=($=document.activeElement)==null?void 0:$.parentElement)==null?void 0:z.nextElementSibling)==null?void 0:S.querySelector("a"))==null||h.focus()),f.key==="ArrowUp"&&r.contains(document.activeElement)&&(f.preventDefault(),(u=document.activeElement)!=null&&u.matches("li:first-child a")?c.focus():(q=(m=(y=(p=document.activeElement)==null?void 0:p.parentElement)==null?void 0:y.previousElementSibling)==null?void 0:m.querySelector("a"))==null||q.focus()),f.key==="Escape"&&r.contains(document.activeElement)&&(c.focus(),e(3,l=""),d())},I=()=>{e(3,l=null),d()};function D(f){Z[f?"unshift":"push"](()=>{c=f,e(2,c)})}function T(){l=this.value,e(3,l)}function B(f){Z[f?"unshift":"push"](()=>{r=f,e(1,r)})}return[_,r,c,l,a,d,K,H,I,D,T,B]}class Ne extends ne{constructor(t){super(),re(this,t,Ke,qe,le,{})}}function Ae(i){let t,e,a,n,s,_,r;t=new Ce({}),s=new Ne({}),s.$on("sidebarNeeded",i[3]);const c=i[2].default,l=pe(c,i,i[1],null);return{c(){O(t.$$.fragment),e=A(),a=E("div"),n=E("div"),O(s.$$.fragment),_=A(),l&&l.c(),this.h()},l(o){M(t.$$.fragment,o),e=N(o),a=k(o,"DIV",{class:!0});var d=w(a);n=k(d,"DIV",{class:!0});var K=w(n);M(s.$$.fragment,K),K.forEach(v),_=N(d),l&&l.l(d),d.forEach(v),this.h()},h(){g(n,"class","tables-container svelte-s8xmdg"),g(a,"class","container svelte-s8xmdg"),P(a,"tablesHidden",i[0])},m(o,d){J(t,o,d),V(o,e,d),V(o,a,d),b(a,n),J(s,n,null),b(a,_),l&&l.m(a,null),r=!0},p(o,[d]){l&&l.p&&(!r||d&2)&&be(l,c,o,o[1],r?ve(c,o[1],d,null):ge(o[1]),null),(!r||d&1)&&P(a,"tablesHidden",o[0])},i(o){r||(C(t.$$.fragment,o),C(s.$$.fragment,o),C(l,o),r=!0)},o(o){L(t.$$.fragment,o),L(s.$$.fragment,o),L(l,o),r=!1},d(o){o&&(v(e),v(a)),F(t,o),F(s),l&&l.d(o)}}}function Le(i,t,e){let{$$slots:a={},$$scope:n}=t,s=!1;ae(()=>{document.addEventListener("keydown",r=>{!r.target.matches("input, textarea")&&r.key==="b"&&(e(0,s=!s),localStorage.tablesHidden=s)})});const _=()=>e(0,s=!1);return i.$$set=r=>{"$$scope"in r&&e(1,n=r.$$scope)},[s,n,a,_]}class Je extends ne{constructor(t){super(),re(this,t,Le,Ae,le,{})}}export{Je as component}; diff --git a/gui/next/build/_app/immutable/nodes/5.Bz4QTVmH.js b/gui/next/build/_app/immutable/nodes/5.Bz4QTVmH.js new file mode 100644 index 0000000..000b0ac --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/5.Bz4QTVmH.js @@ -0,0 +1 @@ +import{s as l,l as i,u as r,m as u,o as f}from"../chunks/Ul9VwQ7n.js";import{S as _,i as c,t as m,a as p}from"../chunks/Bh3MJlbi.js";function $(n){let s;const a=n[1].default,e=i(a,n,n[0],null);return{c(){e&&e.c()},l(t){e&&e.l(t)},m(t,o){e&&e.m(t,o),s=!0},p(t,[o]){e&&e.p&&(!s||o&1)&&r(e,a,t,t[0],s?f(a,t[0],o,null):u(t[0]),null)},i(t){s||(p(e,t),s=!0)},o(t){m(e,t),s=!1},d(t){e&&e.d(t)}}}function d(n,s,a){let{$$slots:e={},$$scope:t}=s;return n.$$set=o=>{"$$scope"in o&&a(0,t=o.$$scope)},[t,e]}class S extends _{constructor(s){super(),c(this,s,d,$,l,{})}}export{S as component}; diff --git a/gui/next/build/_app/immutable/nodes/6.BTcDvYil.js b/gui/next/build/_app/immutable/nodes/6.BTcDvYil.js new file mode 100644 index 0000000..1bec116 --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/6.BTcDvYil.js @@ -0,0 +1,7 @@ +import{s as Je,d as c,i as te,b as o,D as he,w as u,c as p,e as $,g as O,f as me,h,j as S,t as ve,F as tt,H as Ae,r as Ke,ad as wt,I as Qe,J as lt,E as Tt,z as ue,k as xe,T as Pt,L as we,a as Ie,n as et,C as Pe,Y as ot,Z as It,p as Dt,l as jt,u as Nt,m as Lt,o as Ot,G as ut,$ as St,K as Oe}from"../chunks/Ul9VwQ7n.js";import{S as Ge,i as Ye,d as fe,t as q,a as L,m as ce,c as de,b as _e,f as ze,g as Ce,e as ye,j as Ut}from"../chunks/Bh3MJlbi.js";import{q as Ct,g as At}from"../chunks/CS29TWE_.js";import{e as Se}from"../chunks/BNCRiqmJ.js";import{g as Mt}from"../chunks/bH_aOImW.js";import{s as oe}from"../chunks/DGc7Lmco.js";import{p as Rt}from"../chunks/C5zjxmar.js";import{u as Me}from"../chunks/CNoDK8-a.js";import{c as Bt,p as Vt,T as Ft}from"../chunks/Cpu2L2kn.js";import{I as De}from"../chunks/D-yR0E5w.js";import{t as qt}from"../chunks/x4PJc0Qf.js";import{N as Ht}from"../chunks/Bg88RIi0.js";import{C as zt}from"../chunks/BVq9mvWR.js";function Jt(l){let e,n,t,s,i,a,f,r,m,g;return a=new De({props:{icon:"x",size:"22"}}),{c(){e=h("form"),n=h("input"),t=S(),s=h("button"),i=h("i"),_e(a.$$.fragment),f=ve(`\r + Delete user`),this.h()},l(d){e=p(d,"FORM",{});var b=$(e);n=p(b,"INPUT",{type:!0,name:!0}),t=O(b),s=p(b,"BUTTON",{class:!0});var E=$(s);i=p(E,"I",{class:!0});var y=$(i);de(a.$$.fragment,y),y.forEach(c),f=me(E,`\r + Delete user`),E.forEach(c),b.forEach(c),this.h()},h(){u(n,"type","hidden"),u(n,"name","id"),n.value=l[0],u(i,"class","svelte-ooaugn"),u(s,"class","danger")},m(d,b){te(d,e,b),o(e,n),o(e,t),o(e,s),o(s,i),ce(a,i,null),o(s,f),l[3](e),r=!0,m||(g=he(e,"submit",l[2]),m=!0)},p(d,[b]){(!r||b&1)&&(n.value=d[0])},i(d){r||(L(a.$$.fragment,d),r=!0)},o(d){q(a.$$.fragment,d),r=!1},d(d){d&&c(e),fe(a),l[3](null),m=!1,g()}}}function Kt(l,e,n){let{id:t}=e,s,i=tt();const a=async r=>{if(r.preventDefault(),confirm("Are you sure you want to delete this user?")){i("close");const g=new FormData(s).get("id");(await Me.delete(g)).errors?oe.notification.create("error",`Record ${g} could not be deleted`):(oe.notification.create("success",`Record ${g} deleted`),i("success"))}};function f(r){Ae[r?"unshift":"push"](()=>{s=r,n(1,s)})}return l.$$set=r=>{"id"in r&&n(0,t=r.id)},[t,s,a,f]}class Gt extends Ge{constructor(e){super(),Ye(this,e,Kt,Jt,Je,{id:0})}}function Yt(l){let e,n,t,s,i,a,f;return s=new Gt({props:{id:l[0].id}}),s.$on("success",l[3]),s.$on("close",l[4]),{c(){e=h("menu"),n=h("ul"),t=h("li"),_e(s.$$.fragment),this.h()},l(r){e=p(r,"MENU",{class:!0});var m=$(e);n=p(m,"UL",{});var g=$(n);t=p(g,"LI",{class:!0});var d=$(t);de(s.$$.fragment,d),d.forEach(c),g.forEach(c),m.forEach(c),this.h()},h(){u(t,"class","svelte-8i1sxu"),u(e,"class","content-context svelte-8i1sxu")},m(r,m){te(r,e,m),o(e,n),o(n,t),ce(s,t,null),i=!0,a||(f=[he(window,"keyup",l[2]),wt(Bt.call(null,e,l[5]))],a=!0)},p(r,[m]){const g={};m&1&&(g.id=r[0].id),s.$set(g)},i(r){i||(L(s.$$.fragment,r),i=!0)},o(r){q(s.$$.fragment,r),i=!1},d(r){r&&c(e),fe(s),a=!1,Ke(f)}}}function Wt(l,e,n){let{record:t}=e;const s=tt(),i=m=>{m.key==="Escape"&&s("close")},a=()=>s("reload"),f=()=>s("close"),r=()=>s("close");return l.$$set=m=>{"record"in m&&n(0,t=m.record)},[t,s,i,a,f,r]}class Xt extends Ge{constructor(e){super(),Ye(this,e,Wt,Yt,Je,{record:0})}}function ft(l,e,n){const t=l.slice();return t[13]=e[n],t}function ct(l,e,n){const t=l.slice();t[16]=e[n];const s=t[1]!==null?Vt(t[1].properties[t[16].name],t[16].attribute_type):{type:t[16].attribute_type,value:""};return t[17]=s,t}function dt(l){let e,n=`
`;return{c(){e=h("fieldset"),e.innerHTML=n,this.h()},l(t){e=p(t,"FIELDSET",{class:!0,"data-svelte-h":!0}),ue(e)!=="svelte-1u8xex3"&&(e.innerHTML=n),this.h()},h(){u(e,"class","svelte-26svji")},m(t,s){te(t,e,s)},d(t){t&&c(e)}}}function Zt(l){let e=l[16].attribute_type+"",n,t,s,i,a;return{c(){n=ve(e),t=S(),s=h("input"),this.h()},l(f){n=me(f,e),t=O(f),s=p(f,"INPUT",{type:!0,name:!0,class:!0}),this.h()},h(){u(s,"type","hidden"),u(s,"name",i=l[16].name+"[type]"),s.value=a=l[16].attribute_type,u(s,"class","svelte-26svji")},m(f,r){te(f,n,r),te(f,t,r),te(f,s,r)},p(f,r){r&1&&e!==(e=f[16].attribute_type+"")&&Ie(n,e),r&1&&i!==(i=f[16].name+"[type]")&&u(s,"name",i),r&1&&a!==(a=f[16].attribute_type)&&(s.value=a)},i:et,o:et,d(f){f&&(c(n),c(t),c(s))}}}function Qt(l){let e,n;return e=new Ft({props:{name:l[16].name+"[type]",options:[{value:"string",label:"string"},{value:"json",label:"json"}],checked:l[17].type==="json"?"json":"string"}}),{c(){_e(e.$$.fragment)},l(t){de(e.$$.fragment,t)},m(t,s){ce(e,t,s),n=!0},p(t,s){const i={};s&1&&(i.name=t[16].name+"[type]"),s&3&&(i.checked=t[17].type==="json"?"json":"string"),e.$set(i)},i(t){n||(L(e.$$.fragment,t),n=!0)},o(t){q(e.$$.fragment,t),n=!1},d(t){fe(e,t)}}}function xt(l){let e,n,t,s;return{c(){e=h("textarea"),this.h()},l(i){e=p(i,"TEXTAREA",{rows:!0,name:!0,id:!0,class:!0}),$(e).forEach(c),this.h()},h(){u(e,"rows","1"),u(e,"name",n=l[16].name+"[value]"),u(e,"id",t="edit_"+l[16].name),e.value=s=l[17].type==="json"||l[17].type==="jsonEscaped"?JSON.stringify(l[17].value,void 0,2):l[17].value,u(e,"class","svelte-26svji")},m(i,a){te(i,e,a)},p(i,a){a&1&&n!==(n=i[16].name+"[value]")&&u(e,"name",n),a&1&&t!==(t="edit_"+i[16].name)&&u(e,"id",t),a&3&&s!==(s=i[17].type==="json"||i[17].type==="jsonEscaped"?JSON.stringify(i[17].value,void 0,2):i[17].value)&&(e.value=s)},d(i){i&&c(e)}}}function el(l){let e,n,t,s,i,a,f,r,m,g;return{c(){e=h("select"),n=h("option"),t=h("option"),s=ve("true"),a=h("option"),f=ve("false"),this.h()},l(d){e=p(d,"SELECT",{name:!0,id:!0});var b=$(e);n=p(b,"OPTION",{class:!0}),$(n).forEach(c),t=p(b,"OPTION",{});var E=$(t);s=me(E,"true"),E.forEach(c),a=p(b,"OPTION",{});var y=$(a);f=me(y,"false"),y.forEach(c),b.forEach(c),this.h()},h(){n.__value="",Pe(n,n.__value),u(n,"class","value-null"),t.__value="true",Pe(t,t.__value),t.selected=i=l[17].value==="true",a.__value="false",Pe(a,a.__value),a.selected=r=l[17].value==="false",u(e,"name",m=l[16].name+"[value]"),u(e,"id",g="edit_"+l[16].name)},m(d,b){te(d,e,b),o(e,n),o(e,t),o(t,s),o(e,a),o(a,f)},p(d,b){b&3&&i!==(i=d[17].value==="true")&&(t.selected=i),b&3&&r!==(r=d[17].value==="false")&&(a.selected=r),b&1&&m!==(m=d[16].name+"[value]")&&u(e,"name",m),b&1&&g!==(g="edit_"+d[16].name)&&u(e,"id",g)},d(d){d&&c(e)}}}function _t(l){let e=l[5][l[16].name].message+"",n;return{c(){n=ve(e)},l(t){n=me(t,e)},m(t,s){te(t,n,s)},p(t,s){s&33&&e!==(e=t[5][t[16].name].message+"")&&Ie(n,e)},d(t){t&&c(n)}}}function mt(l){let e,n,t,s=l[16].name+"",i,a,f,r,m,g,d,b,E,y,H,k;const D=[Qt,Zt],w=[];function U(T,R){return T[16].attribute_type==="string"?0:1}m=U(l),g=w[m]=D[m](l);function z(T,R){return T[16].attribute_type==="boolean"?el:xt}let B=z(l),A=B(l),I=l[5][l[16].name]&&_t(l);return{c(){e=h("fieldset"),n=h("dir"),t=h("label"),i=ve(s),a=h("br"),f=S(),r=h("div"),g.c(),b=S(),E=h("div"),A.c(),y=S(),H=h("div"),I&&I.c(),this.h()},l(T){e=p(T,"FIELDSET",{class:!0});var R=$(e);n=p(R,"DIR",{});var K=$(n);t=p(K,"LABEL",{for:!0,class:!0});var G=$(t);i=me(G,s),a=p(G,"BR",{}),f=O(G),r=p(G,"DIV",{class:!0});var M=$(r);g.l(M),M.forEach(c),G.forEach(c),K.forEach(c),b=O(R),E=p(R,"DIV",{});var J=$(E);A.l(J),y=O(J),H=p(J,"DIV",{role:!0,class:!0});var C=$(H);I&&I.l(C),C.forEach(c),J.forEach(c),R.forEach(c),this.h()},h(){u(r,"class","type svelte-26svji"),u(t,"for",d="edit_"+l[16].name),u(t,"class","svelte-26svji"),u(H,"role","alert"),u(H,"class","svelte-26svji"),u(e,"class","svelte-26svji")},m(T,R){te(T,e,R),o(e,n),o(n,t),o(t,i),o(t,a),o(t,f),o(t,r),w[m].m(r,null),o(e,b),o(e,E),A.m(E,null),o(E,y),o(E,H),I&&I.m(H,null),k=!0},p(T,R){(!k||R&1)&&s!==(s=T[16].name+"")&&Ie(i,s);let K=m;m=U(T),m===K?w[m].p(T,R):(Ce(),q(w[K],1,1,()=>{w[K]=null}),ye(),g=w[m],g?g.p(T,R):(g=w[m]=D[m](T),g.c()),L(g,1),g.m(r,null)),(!k||R&1&&d!==(d="edit_"+T[16].name))&&u(t,"for",d),B===(B=z(T))&&A?A.p(T,R):(A.d(1),A=B(T),A&&(A.c(),A.m(E,y))),T[5][T[16].name]?I?I.p(T,R):(I=_t(T),I.c(),I.m(H,null)):I&&(I.d(1),I=null)},i(T){k||(L(g),k=!0)},o(T){q(g),k=!1},d(T){T&&c(e),w[m].d(),A.d(),I&&I.d()}}}function vt(l){let e,n=(l[13].message??JSON.stringify(l[13]))+"",t,s;return{c(){e=h("li"),t=ve(n),s=S(),this.h()},l(i){e=p(i,"LI",{class:!0});var a=$(e);t=me(a,n),s=O(a),a.forEach(c),this.h()},h(){u(e,"class","svelte-26svji")},m(i,a){te(i,e,a),o(e,t),o(e,s)},p(i,a){a&16&&n!==(n=(i[13].message??JSON.stringify(i[13]))+"")&&Ie(t,n)},d(i){i&&c(e)}}}function tl(l){let e;return{c(){e=ve("Edit user")},l(n){e=me(n,"Edit user")},m(n,t){te(n,e,t)},d(n){n&&c(e)}}}function ll(l){let e;return{c(){e=ve("Create user")},l(n){e=me(n,"Create user")},m(n,t){te(n,e,t)},d(n){n&&c(e)}}}function sl(l){let e,n,t,s,i,a=``,f,r,m,g,d,b,E,y,H,k,D,w,U="Cancel",z,B,A,I,T,R,K,G,M=l[1]===null&&dt(),J=Se(l[0]),C=[];for(let v=0;vq(C[v],1,1,()=>{C[v]=null});let V=Se(l[4]),F=[];for(let v=0;v{R&&(T||(T=ze(e,l[7],{},!0)),T.run(1))}),R=!0}},o(v){C=C.filter(Boolean);for(let N=0;Nn(6,t=k));let s,i,a=[],f={},{userProperties:r}=e,{userToEdit:m}=e;const g=tt(),d=function(k,{delay:D=0,duration:w=150}){return{delay:D,duration:w,css:U=>{const z=Ct(U);return`opacity: ${z}; transform: scale(${z});`}}};Pt(()=>{setTimeout(()=>{s.showModal()},10)}),document.addEventListener("keydown",k=>{k.key==="Escape"&&(k.preventDefault(),we(oe,t.user=void 0,t))},{once:!0});const b=async k=>{k.preventDefault();const D=new FormData(i);n(5,f={});for(const w of D.entries())if(w[0].endsWith("[type]")&&(w[1]==="json"||w[1]==="array")){const U=w[0].replace("[type]",""),z=D.get(U+"[value]");z!==""&&!qt(z)&&n(5,f[U]={property:U,message:`Not a valid ${w[1]}`},f)}if(Object.keys(f).length)await tick(),document.querySelector('[role="alert"]:not(:empty)').scrollIntoView({behavior:"smooth",block:"center"});else if(m===null){const w=D.get("email"),U=D.get("password");D.delete("email"),D.delete("password");const z=await Me.create(w,U,D);z.errors?n(4,a=z.errors):(we(oe,t.user=void 0,t),oe.notification.create("success",`User ${z.user.id} created`),g("success"))}else{const w=D.get("email");D.delete("email");const U=await Me.edit(m.id,w,D);U.errors?n(4,a=U.errors):(we(oe,t.user=void 0,t),oe.notification.create("success",`User ${U.user_update.id} edited`),g("success"))}},E=()=>we(oe,t.user=void 0,t);function y(k){Ae[k?"unshift":"push"](()=>{i=k,n(3,i)})}function H(k){Ae[k?"unshift":"push"](()=>{s=k,n(2,s)})}return l.$$set=k=>{"userProperties"in k&&n(0,r=k.userProperties),"userToEdit"in k&&n(1,m=k.userToEdit)},[r,m,s,i,a,f,t,d,b,E,y,H]}class al extends Ge{constructor(e){super(),Ye(this,e,nl,sl,Je,{userProperties:0,userToEdit:1})}}const{document:Ze}=At;function pt(l,e,n){const t=l.slice();return t[28]=e[n],t}function ht(l){let e,n,t="Clear filters",s,i,a,f,r,m;return i=new De({props:{icon:"x",size:"14"}}),{c(){e=h("button"),n=h("span"),n.textContent=t,s=S(),_e(i.$$.fragment),this.h()},l(g){e=p(g,"BUTTON",{type:!0,class:!0});var d=$(e);n=p(d,"SPAN",{class:!0,"data-svelte-h":!0}),ue(n)!=="svelte-ki22n5"&&(n.textContent=t),s=O(d),de(i.$$.fragment,d),d.forEach(c),this.h()},h(){u(n,"class","label svelte-1g093it"),u(e,"type","button"),u(e,"class","clear svelte-1g093it")},m(g,d){te(g,e,d),o(e,n),o(e,s),ce(i,e,null),f=!0,r||(m=he(e,"click",l[10]),r=!0)},p:et,i(g){f||(L(i.$$.fragment,g),g&<(()=>{f&&(a||(a=ze(e,l[8],{},!0)),a.run(1))}),f=!0)},o(g){q(i.$$.fragment,g),g&&(a||(a=ze(e,l[8],{},!1)),a.run(0)),f=!1},d(g){g&&c(e),fe(i),g&&a&&a.end(),r=!1,m()}}}function gt(l){let e,n,t=Se(l[1]),s=[];for(let a=0;aq(s[a],1,1,()=>{s[a]=null});return{c(){e=h("tbody");for(let a=0;a{v=null}),ye()),(!V||_&2)&&A!==(A=l[28].id+"")&&Ie(I,A),(!V||_&34&&T!==(T="/users/"+l[28].id+"?"+l[5].url.searchParams.toString()))&&u(B,"href",T),(!V||_&2)&&M!==(M=l[28].email+"")&&Ie(J,M),(!V||_&34&&C!==(C="/users/"+l[28].id+"?"+l[5].url.searchParams.toString()))&&u(G,"href",C),(!V||_&34)&&Oe(e,"active",l[5].params.id==l[28].id),(!V||_&18)&&Oe(e,"context",l[4].id===l[28].id)},i(N){V||(L(d.$$.fragment,N),L(D.$$.fragment,N),L(v),V=!0)},o(N){q(d.$$.fragment,N),q(D.$$.fragment,N),q(v),V=!1},d(N){N&&c(e),fe(d),fe(D),v&&v.d(),F=!1,Ke(ae)}}}function $t(l){let e;const n=l[13].default,t=jt(n,l,l[12],null);return{c(){t&&t.c()},l(s){t&&t.l(s)},m(s,i){t&&t.m(s,i),e=!0},p(s,i){t&&t.p&&(!e||i&4096)&&Nt(t,n,s,s[12],e?Ot(n,s[12],i,null):Lt(s[12]),null)},i(s){e||(L(t,s),e=!0)},o(s){q(t,s),e=!1},d(s){t&&t.d(s)}}}function kt(l){let e,n;return e=new al({props:{userProperties:l[2],userToEdit:l[6].user}}),e.$on("success",l[26]),{c(){_e(e.$$.fragment)},l(t){de(e.$$.fragment,t)},m(t,s){ce(e,t,s),n=!0},p(t,s){const i={};s&4&&(i.userProperties=t[2]),s&64&&(i.userToEdit=t[6].user),e.$set(i)},i(t){n||(L(e.$$.fragment,t),n=!0)},o(t){q(e.$$.fragment,t),n=!1},d(t){fe(e,t)}}}function rl(l){var at;let e,n,t,s,i,a,f,r,m,g="Filter by",d,b,E,y,H="email",k,D="id",w,U,z,B,A,I,T="Apply filter",R,K,G,M,J,C,j=' ID Email',V,F,ae,se,ee,v="Page:",N,_,Y,ge,be=l[3].totalPages+"",re,Ee,W,ne,ie,$e,Ue="Create a new user",je,Re,Ne,We,st;Ze.title=e="Users"+((at=l[6].online)!=null&&at.MPKIT_URL?": "+l[6].online.MPKIT_URL.replace("https://",""):""),s=new zt({});let X=l[3].value&&ht(l);K=new De({props:{icon:"arrowRight"}});let Z=l[1]&>(l);function yt(P){l[23](P)}let nt={form:"filters",name:"page",min:1,max:l[3].totalPages,step:1,decreaseLabel:"Previous page",increaseLabel:"Next page",style:"navigation"};l[3].page!==void 0&&(nt.value=l[3].page),_=new Ht({props:nt}),Ae.push(()=>Ut(_,"value",yt)),_.$on("input",l[24]),ne=new De({props:{icon:"plus"}});let Q=l[5].params.id&&$t(l),x=l[6].user!==void 0&&kt(l);return{c(){n=S(),t=h("div"),_e(s.$$.fragment),i=S(),a=h("section"),f=h("nav"),r=h("form"),m=h("label"),m.textContent=g,d=S(),b=h("fieldset"),E=h("select"),y=h("option"),y.textContent=H,k=h("option"),k.textContent=D,w=S(),U=h("input"),z=S(),X&&X.c(),B=S(),A=h("button"),I=h("span"),I.textContent=T,R=S(),_e(K.$$.fragment),G=S(),M=h("article"),J=h("table"),C=h("thead"),C.innerHTML=j,V=S(),Z&&Z.c(),F=S(),ae=h("nav"),se=h("div"),ee=h("label"),ee.textContent=v,N=S(),_e(_.$$.fragment),ge=ve(`\r + of `),re=ve(be),Ee=S(),W=h("button"),_e(ne.$$.fragment),ie=S(),$e=h("span"),$e.textContent=Ue,je=S(),Q&&Q.c(),Re=S(),x&&x.c(),this.h()},l(P){Dt("svelte-mcmxo",Ze.head).forEach(c),n=O(P),t=p(P,"DIV",{class:!0});var pe=$(t);de(s.$$.fragment,pe),i=O(pe),a=p(pe,"SECTION",{class:!0});var ke=$(a);f=p(ke,"NAV",{class:!0});var rt=$(f);r=p(rt,"FORM",{action:!0,id:!0,class:!0});var Be=$(r);m=p(Be,"LABEL",{for:!0,"data-svelte-h":!0}),ue(m)!=="svelte-rbwhex"&&(m.textContent=g),d=O(Be),b=p(Be,"FIELDSET",{class:!0});var Te=$(b);E=p(Te,"SELECT",{id:!0,name:!0,class:!0});var Xe=$(E);y=p(Xe,"OPTION",{"data-svelte-h":!0}),ue(y)!=="svelte-51kto6"&&(y.textContent=H),k=p(Xe,"OPTION",{"data-svelte-h":!0}),ue(k)!=="svelte-ns3pfu"&&(k.textContent=D),Xe.forEach(c),w=O(Te),U=p(Te,"INPUT",{type:!0,name:!0,class:!0}),z=O(Te),X&&X.l(Te),B=O(Te),A=p(Te,"BUTTON",{type:!0,class:!0});var Ve=$(A);I=p(Ve,"SPAN",{class:!0,"data-svelte-h":!0}),ue(I)!=="svelte-ctu7wl"&&(I.textContent=T),R=O(Ve),de(K.$$.fragment,Ve),Ve.forEach(c),Te.forEach(c),Be.forEach(c),rt.forEach(c),G=O(ke),M=p(ke,"ARTICLE",{class:!0});var it=$(M);J=p(it,"TABLE",{class:!0});var Fe=$(J);C=p(Fe,"THEAD",{class:!0,"data-svelte-h":!0}),ue(C)!=="svelte-17vx132"&&(C.innerHTML=j),V=O(Fe),Z&&Z.l(Fe),Fe.forEach(c),it.forEach(c),F=O(ke),ae=p(ke,"NAV",{class:!0});var qe=$(ae);se=p(qe,"DIV",{});var Le=$(se);ee=p(Le,"LABEL",{for:!0,"data-svelte-h":!0}),ue(ee)!=="svelte-1r8oyu6"&&(ee.textContent=v),N=O(Le),de(_.$$.fragment,Le),ge=me(Le,`\r + of `),re=me(Le,be),Le.forEach(c),Ee=O(qe),W=p(qe,"BUTTON",{class:!0,title:!0});var He=$(W);de(ne.$$.fragment,He),ie=O(He),$e=p(He,"SPAN",{class:!0,"data-svelte-h":!0}),ue($e)!=="svelte-vjukmr"&&($e.textContent=Ue),He.forEach(c),qe.forEach(c),ke.forEach(c),je=O(pe),Q&&Q.l(pe),Re=O(pe),x&&x.l(pe),pe.forEach(c),this.h()},h(){u(m,"for","filters_attribute"),y.__value="email",Pe(y,y.__value),k.__value="id",Pe(k,k.__value),u(E,"id","filters_attribute"),u(E,"name","attribute"),u(E,"class","svelte-1g093it"),l[3].attribute===void 0&<(()=>l[14].call(E)),u(U,"type","text"),u(U,"name","value"),u(U,"class","svelte-1g093it"),u(I,"class","label svelte-1g093it"),u(A,"type","submit"),u(A,"class","button svelte-1g093it"),u(b,"class","search svelte-1g093it"),u(r,"action",""),u(r,"id","filters"),u(r,"class","svelte-1g093it"),u(f,"class","filters svelte-1g093it"),u(C,"class","svelte-1g093it"),u(J,"class","svelte-1g093it"),u(M,"class","contetnt"),u(ee,"for","page"),u($e,"class","label"),u(W,"class","button"),u(W,"title","Create user"),u(ae,"class","pagination svelte-1g093it"),u(a,"class","container svelte-1g093it"),u(t,"class","page svelte-1g093it")},m(P,le){te(P,n,le),te(P,t,le),ce(s,t,null),o(t,i),o(t,a),o(a,f),o(f,r),o(r,m),o(r,d),o(r,b),o(b,E),o(E,y),o(E,k),ot(E,l[3].attribute,!0),o(b,w),o(b,U),Pe(U,l[3].value),o(b,z),X&&X.m(b,null),o(b,B),o(b,A),o(A,I),o(A,R),ce(K,A,null),l[17](r),o(a,G),o(a,M),o(M,J),o(J,C),o(J,V),Z&&Z.m(J,null),o(a,F),o(a,ae),o(ae,se),o(se,ee),o(se,N),ce(_,se,null),o(se,ge),o(se,re),o(ae,Ee),o(ae,W),ce(ne,W,null),o(W,ie),o(W,$e),o(t,je),Q&&Q.m(t,null),o(t,Re),x&&x.m(t,null),Ne=!0,We||(st=[he(E,"change",l[14]),he(E,"change",l[15]),he(U,"input",l[16]),he(r,"submit",l[18]),he(W,"click",Tt(l[25]))],We=!0)},p(P,[le]){var ke;(!Ne||le&64)&&e!==(e="Users"+((ke=P[6].online)!=null&&ke.MPKIT_URL?": "+P[6].online.MPKIT_URL.replace("https://",""):""))&&(Ze.title=e),le&8&&ot(E,P[3].attribute),le&8&&U.value!==P[3].value&&Pe(U,P[3].value),P[3].value?X?(X.p(P,le),le&8&&L(X,1)):(X=ht(P),X.c(),L(X,1),X.m(b,B)):X&&(Ce(),q(X,1,1,()=>{X=null}),ye()),P[1]?Z?(Z.p(P,le),le&2&&L(Z,1)):(Z=gt(P),Z.c(),L(Z,1),Z.m(J,null)):Z&&(Ce(),q(Z,1,1,()=>{Z=null}),ye());const pe={};le&8&&(pe.max=P[3].totalPages),!Y&&le&8&&(Y=!0,pe.value=P[3].page,It(()=>Y=!1)),_.$set(pe),(!Ne||le&8)&&be!==(be=P[3].totalPages+"")&&Ie(re,be),P[5].params.id?Q?(Q.p(P,le),le&32&&L(Q,1)):(Q=$t(P),Q.c(),L(Q,1),Q.m(t,Re)):Q&&(Ce(),q(Q,1,1,()=>{Q=null}),ye()),P[6].user!==void 0?x?(x.p(P,le),le&64&&L(x,1)):(x=kt(P),x.c(),L(x,1),x.m(t,null)):x&&(Ce(),q(x,1,1,()=>{x=null}),ye())},i(P){Ne||(L(s.$$.fragment,P),L(X),L(K.$$.fragment,P),L(Z),L(_.$$.fragment,P),L(ne.$$.fragment,P),L(Q),L(x),Ne=!0)},o(P){q(s.$$.fragment,P),q(X),q(K.$$.fragment,P),q(Z),q(_.$$.fragment,P),q(ne.$$.fragment,P),q(Q),q(x),Ne=!1},d(P){P&&(c(n),c(t)),fe(s),X&&X.d(),fe(K),l[17](null),Z&&Z.d(),fe(_),fe(ne),Q&&Q.d(),x&&x.d(),We=!1,Ke(st)}}}function il(l,e,n){let t,s;xe(l,Rt,j=>n(5,t=j)),xe(l,oe,j=>n(6,s=j));let{$$slots:i={},$$scope:a}=e,f,r=[],m=null,g={page:1,attribute:"email",value:""},d={page:1,totalPages:1,attribute:"email",value:"",...Object.fromEntries(t.url.searchParams)};we(oe,s.user=void 0,s);let b={id:null};const E=function(){const j=Object.fromEntries(t.url.searchParams);Me.get(j).then(V=>{n(1,r=V.results),n(3,d.totalPages=V.total_pages,d)})},y=function(j,{delay:V=0,duration:F=150}){return{delay:V,duration:F,css:ae=>`scale: ${Ct(ae)};`}},H=function(j=null){m===null?Me.getCustomProperties().then(V=>{n(2,m=V),we(oe,s.user=j,s)}).catch(()=>{oe.notification.create("error","Could not load table properties. Please try again later.")}):we(oe,s.user=j,s)},k=async function(){n(3,d=structuredClone(g)),await ut(),f.requestSubmit()},D=async function(j){j.preventDefault();const V=t.url.searchParams,F=new URLSearchParams(new FormData(j.target));V.get("value")!==F.get("value")&&(F.set("page",1),n(3,d.page=1,d)),await Mt(document.location.pathname+"?"+F.toString()),await ut(),await E()};function w(){d.attribute=St(this),n(3,d)}const U=()=>n(3,d.value="",d);function z(){d.value=this.value,n(3,d)}function B(j){Ae[j?"unshift":"push"](()=>{f=j,n(0,f)})}const A=j=>D(j),I=j=>n(4,b.id=j.id,b),T=j=>{H(j)},R=()=>E(),K=()=>n(4,b.id=null,b);function G(j){l.$$.not_equal(d.page,j)&&(d.page=j,n(3,d))}const M=j=>{f.requestSubmit(j.detail.submitter)},J=()=>H(),C=()=>E();return l.$$set=j=>{"$$scope"in j&&n(12,a=j.$$scope)},E(),[f,r,m,d,b,t,s,E,y,H,k,D,a,i,w,U,z,B,A,I,T,R,K,G,M,J,C]}class $l extends Ge{constructor(e){super(),Ye(this,e,il,rl,Je,{})}}export{$l as component}; diff --git a/gui/next/build/_app/immutable/nodes/7.D_-4meMh.js b/gui/next/build/_app/immutable/nodes/7.D_-4meMh.js new file mode 100644 index 0000000..a26da51 --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/7.D_-4meMh.js @@ -0,0 +1,5 @@ +import{O as da,P as ha,Q as sl,R as pa,s as va,d as a,r as ma,a as Ct,w as t,K as A,i as Yt,b as e,D as q,A as aa,p as _a,g as u,c as l,e as r,z as C,f as D,j as f,h as n,t as N,k as ga,L as mn,n as S,v as ra,J as $a}from"../chunks/Ul9VwQ7n.js";import{g as ua,t as _,e as fa,a as m,S as ba,i as ka,d as L,m as y,c as E,b as U,f as ia}from"../chunks/Bh3MJlbi.js";import{f as oa}from"../chunks/odGh2V91.js";import{s as cs}from"../chunks/DGc7Lmco.js";import{t as La}from"../chunks/t7b_BBSP.js";import{I as w}from"../chunks/D-yR0E5w.js";function ya(s,o){const $=o.token={};function c(d,v,p,b){if(o.token!==$)return;o.resolved=b;let P=o.ctx;p!==void 0&&(P=P.slice(),P[p]=b);const B=d&&(o.current=d)(P);let k=!1;o.block&&(o.blocks?o.blocks.forEach((z,ve)=>{ve!==v&&z&&(ua(),_(z,1,1,()=>{o.blocks[ve]===z&&(o.blocks[ve]=null)}),fa())}):o.block.d(1),B.c(),m(B,1),B.m(o.mount(),o.anchor),k=!0),o.block=B,o.blocks&&(o.blocks[v]=B),k&&pa()}if(da(s)){const d=ha();if(s.then(v=>{sl(d),c(o.then,1,o.value,v),sl(null)},v=>{if(sl(d),c(o.catch,2,o.error,v),sl(null),!o.hasCatch)throw v}),o.current!==o.pending)return c(o.pending,0),!0}else{if(o.current!==o.then)return c(o.then,1,o.value,s),!0;o.resolved=s}}function Ea(s,o,$){const c=o.slice(),{resolved:d}=s;s.current===s.then&&(c[s.value]=d),s.current===s.catch&&(c[s.error]=d),s.block.p(c,$)}function Ua(s){return{c:S,l:S,m:S,p:S,i:S,o:S,d:S}}function wa(s){let o,$,c=s[21].version!==s[1].online.version&&ca(s);return{c(){c&&c.c(),o=ra()},l(d){c&&c.l(d),o=ra()},m(d,v){c&&c.m(d,v),Yt(d,o,v),$=!0},p(d,v){d[21].version!==d[1].online.version?c?(c.p(d,v),v&2&&m(c,1)):(c=ca(d),c.c(),m(c,1),c.m(o.parentNode,o)):c&&(ua(),_(c,1,1,()=>{c=null}),fa())},i(d){$||(m(c),$=!0)},o(d){_(c),$=!1},d(d){d&&a(o),c&&c.d(d)}}}function ca(s){let o,$,c,d,v="Update available",p,b,P,B;return $=new w({props:{icon:"arrowTripleUp"}}),{c(){o=n("button"),U($.$$.fragment),c=f(),d=n("span"),d.textContent=v,this.h()},l(k){o=l(k,"BUTTON",{title:!0,class:!0});var z=r(o);E($.$$.fragment,z),c=u(z),d=l(z,"SPAN",{"data-svelte-h":!0}),C(d)!=="svelte-16bfzxk"&&(d.textContent=v),z.forEach(a),this.h()},h(){t(o,"title","Update to siteglide-cli version "+s[21].version),t(o,"class","update svelte-1t1yf9")},m(k,z){Yt(k,o,z),y($,o,null),e(o,c),e(o,d),b=!0,P||(B=q(o,"click",s[6]),P=!0)},p:S,i(k){b||(m($.$$.fragment,k),k&&$a(()=>{b&&(p||(p=ia(o,oa,{},!0)),p.run(1))}),b=!0)},o(k){_($.$$.fragment,k),k&&(p||(p=ia(o,oa,{},!1)),p.run(0)),b=!1},d(k){k&&a(o),L($),k&&p&&p.end(),P=!1,B()}}}function Ca(s){return{c:S,l:S,m:S,p:S,i:S,o:S,d:S}}function Ta(s){var An;let o,$,c,d,v,p,b,P,B,k,z="Database",ve,me,ll='
  • Inspect tables and records
  • Create, edit or delete records
  • Filter and find any record
  • ',us,ae,Ae,R,_e,fs,ge,nl="Show more information about Database tool",ds,T,I,$e,al,Be,Zt=s[1].header.includes("database")?"Unpin Database from":"Pin Database to",hs,rl,ps,il,H,re,Tt,Me,ol,Je,_n="Users",cl,He,gn='
  • Inspect registered users and their personal data
  • ',ul,be,Pt,x,Oe,fl,Fe,$n="Show more information about Users tool",dl,qt,j,ke,hl,Qe,xt=s[1].header.includes("users")?"Unpin Users from":"Pin Users to",vs,pl,ms,vl,O,ie,It,Ge,ml,Ve,bn="Logs",_l,Re,kn='
  • View system logs
  • Inspect logs you've outputted yourself
  • Debug Liquid or GraphQL errors
  • ',gl,Le,Dt,ee,je,$l,Ke,Ln="Show more information about Logs tool",bl,Nt,K,ye,kl,We,es=s[1].header.includes("logs")?"Unpin Logs from":"Pin Logs to",_s,Ll,gs,yl,F,oe,St,Xe,El,Ye,yn="Background Jobs",Ul,Ze,En='
  • List scheduled background jobs
  • Debug background jobs that failed to run
  • ',wl,Ee,zt,te,xe,Cl,et,Un="Show more information about Background Jobs tool",Tl,At,W,Ue,Pl,tt,ts=s[1].header.includes("backgroundJobs")?"Unpin Background Jobs from":"Pin Background Jobs to",$s,ql,bs,Il,Q,ce,Bt,st,Dl,lt,wn="Constants",Nl,nt,Cn='
  • Check all constants in one place
  • Create new constants
  • Edit or delete existing ones
  • ',Sl,we,Mt,se,at,zl,rt,Tn="Show more information about Constants tool",Al,Jt,X,Ce,Bl,it,ss=s[1].header.includes("constants")?"Unpin Constants from":"Pin Constants to",ks,Ml,Ls,Jl,Te,G,ue,ot,ct,Hl,ut,Pn="Liquid Evaluator",Ol,ft,qn='
  • Run Liquid code against your instance
  • Test Liquid logic
  • Quickly prototype your ideas
  • ',Fl,Pe,Ht,le,dt,Ql,ht,In="Show more information about Liquid Evaluator",Gl,Ot,Y,qe,Vl,pt,ls=s[1].header.includes("liquid")?"Unpin Liquid Evaluator from":"Pin Liquid Evaluator to",ys,Rl,Es,jl,V,fe,vt,mt,Kl,_t,Dn="GraphiQL",Wl,gt,Nn='
  • Run GraphQL against your instance
  • Explore documentation
  • Quickly prototype your queries and mutations
  • ',Xl,Ie,Ft,ne,$t,Yl,bt,Sn="Show more information about GraphiQL",Zl,Qt,Z,De,xl,kt,ns=s[1].header.includes("graphiql")?"Unpin GraphiQL from":"Pin GraphiQL to",Us,en,ws,Cs,de,Gt,tn,Ne,as,Se,Lt,sn,ln,rs,ze,yt,nn,g,an,zn;document.title=o="Siteglide"+((An=s[1].online)!=null&&An.MPKIT_URL?": "+s[1].online.MPKIT_URL.replace("https://",""):""),P=new w({props:{icon:"database",size:"48"}}),_e=new w({props:{icon:"info",size:"14"}}),$e=new w({props:{icon:s[1].header.includes("database")?"pinFilled":"pin",size:"14"}}),Me=new w({props:{icon:"users",size:"48"}}),Oe=new w({props:{icon:"info",size:"14"}}),ke=new w({props:{icon:s[1].header.includes("users")?"pinFilled":"pin",size:"14"}}),Ge=new w({props:{icon:"log",size:"48"}}),je=new w({props:{icon:"info",size:"14"}}),ye=new w({props:{icon:s[1].header.includes("logs")?"pinFilled":"pin",size:"14"}}),Xe=new w({props:{icon:"backgroundJob",size:"48"}}),xe=new w({props:{icon:"info",size:"14"}}),Ue=new w({props:{icon:s[1].header.includes("backgroundJobs")?"pinFilled":"pin",size:"14"}}),st=new w({props:{icon:"constant",size:"48"}}),at=new w({props:{icon:"info",size:"14"}}),Ce=new w({props:{icon:s[1].header.includes("constants")?"pinFilled":"pin",size:"14"}}),ct=new w({props:{icon:"liquid",size:"48"}}),dt=new w({props:{icon:"info",size:"14"}}),qe=new w({props:{icon:s[1].header.includes("liquid")?"pinFilled":"pin",size:"14"}}),mt=new w({props:{icon:"graphql",size:"48"}}),$t=new w({props:{icon:"info",size:"14"}}),De=new w({props:{icon:s[1].header.includes("graphiql")?"pinFilled":"pin",size:"14"}});let M={ctx:s,current:null,token:null,hasCatch:!1,pending:Ca,then:wa,catch:Ua,value:21,blocks:[,,,]};return ya(s[5](),M),Lt=new w({props:{icon:"book"}}),yt=new w({props:{icon:"serverSettings"}}),{c(){$=f(),c=n("nav"),d=n("ul"),v=n("li"),p=n("a"),b=n("div"),U(P.$$.fragment),B=f(),k=n("h2"),k.textContent=z,ve=f(),me=n("ul"),me.innerHTML=ll,us=f(),ae=n("ul"),Ae=n("li"),R=n("button"),U(_e.$$.fragment),fs=f(),ge=n("span"),ge.textContent=nl,ds=f(),T=n("li"),I=n("button"),U($e.$$.fragment),al=f(),Be=n("span"),hs=N(Zt),rl=N(" header menu"),il=f(),H=n("li"),re=n("a"),Tt=n("div"),U(Me.$$.fragment),ol=f(),Je=n("h2"),Je.textContent=_n,cl=f(),He=n("ul"),He.innerHTML=gn,ul=f(),be=n("ul"),Pt=n("li"),x=n("button"),U(Oe.$$.fragment),fl=f(),Fe=n("span"),Fe.textContent=$n,dl=f(),qt=n("li"),j=n("button"),U(ke.$$.fragment),hl=f(),Qe=n("span"),vs=N(xt),pl=N(" header menu"),vl=f(),O=n("li"),ie=n("a"),It=n("div"),U(Ge.$$.fragment),ml=f(),Ve=n("h2"),Ve.textContent=bn,_l=f(),Re=n("ul"),Re.innerHTML=kn,gl=f(),Le=n("ul"),Dt=n("li"),ee=n("button"),U(je.$$.fragment),$l=f(),Ke=n("span"),Ke.textContent=Ln,bl=f(),Nt=n("li"),K=n("button"),U(ye.$$.fragment),kl=f(),We=n("span"),_s=N(es),Ll=N(" header menu"),yl=f(),F=n("li"),oe=n("a"),St=n("div"),U(Xe.$$.fragment),El=f(),Ye=n("h2"),Ye.textContent=yn,Ul=f(),Ze=n("ul"),Ze.innerHTML=En,wl=f(),Ee=n("ul"),zt=n("li"),te=n("button"),U(xe.$$.fragment),Cl=f(),et=n("span"),et.textContent=Un,Tl=f(),At=n("li"),W=n("button"),U(Ue.$$.fragment),Pl=f(),tt=n("span"),$s=N(ts),ql=N(" header menu"),Il=f(),Q=n("li"),ce=n("a"),Bt=n("div"),U(st.$$.fragment),Dl=f(),lt=n("h2"),lt.textContent=wn,Nl=f(),nt=n("ul"),nt.innerHTML=Cn,Sl=f(),we=n("ul"),Mt=n("li"),se=n("button"),U(at.$$.fragment),zl=f(),rt=n("span"),rt.textContent=Tn,Al=f(),Jt=n("li"),X=n("button"),U(Ce.$$.fragment),Bl=f(),it=n("span"),ks=N(ss),Ml=N(" header menu"),Jl=f(),Te=n("ul"),G=n("li"),ue=n("a"),ot=n("div"),U(ct.$$.fragment),Hl=f(),ut=n("h2"),ut.textContent=Pn,Ol=f(),ft=n("ul"),ft.innerHTML=qn,Fl=f(),Pe=n("ul"),Ht=n("li"),le=n("button"),U(dt.$$.fragment),Ql=f(),ht=n("span"),ht.textContent=In,Gl=f(),Ot=n("li"),Y=n("button"),U(qe.$$.fragment),Vl=f(),pt=n("span"),ys=N(ls),Rl=N(" header menu"),jl=f(),V=n("li"),fe=n("a"),vt=n("div"),U(mt.$$.fragment),Kl=f(),_t=n("h2"),_t.textContent=Dn,Wl=f(),gt=n("ul"),gt.innerHTML=Nn,Xl=f(),Ie=n("ul"),Ft=n("li"),ne=n("button"),U($t.$$.fragment),Yl=f(),bt=n("span"),bt.textContent=Sn,Zl=f(),Qt=n("li"),Z=n("button"),U(De.$$.fragment),xl=f(),kt=n("span"),Us=N(ns),en=N(" header menu"),Cs=f(),de=n("footer"),Gt=n("div"),M.block.c(),tn=f(),Ne=n("ul"),as=n("li"),Se=n("a"),U(Lt.$$.fragment),sn=N(`\r + Documentation`),ln=f(),rs=n("li"),ze=n("a"),U(yt.$$.fragment),nn=N(`\r + Siteglide Portal`),this.h()},l(i){_a("svelte-1cqdfx4",document.head).forEach(a),$=u(i),c=l(i,"NAV",{class:!0});var he=r(c);d=l(he,"UL",{class:!0});var J=r(d);v=l(J,"LI",{class:!0});var pe=r(v);p=l(pe,"A",{href:!0,class:!0});var Et=r(p);b=l(Et,"DIV",{class:!0});var is=r(b);E(P.$$.fragment,is),is.forEach(a),B=u(Et),k=l(Et,"H2",{class:!0,"data-svelte-h":!0}),C(k)!=="svelte-1a38a01"&&(k.textContent=z),Et.forEach(a),ve=u(pe),me=l(pe,"UL",{class:!0,"data-svelte-h":!0}),C(me)!=="svelte-1tj1zl5"&&(me.innerHTML=ll),us=u(pe),ae=l(pe,"UL",{class:!0});var Ut=r(ae);Ae=l(Ut,"LI",{class:!0});var os=r(Ae);R=l(os,"BUTTON",{title:!0,class:!0});var wt=r(R);E(_e.$$.fragment,wt),fs=u(wt),ge=l(wt,"SPAN",{class:!0,"data-svelte-h":!0}),C(ge)!=="svelte-vg36pf"&&(ge.textContent=nl),wt.forEach(a),os.forEach(a),ds=u(Ut),T=l(Ut,"LI",{class:!0});var Bn=r(T);I=l(Bn,"BUTTON",{title:!0,class:!0});var Ts=r(I);E($e.$$.fragment,Ts),al=u(Ts),Be=l(Ts,"SPAN",{class:!0});var rn=r(Be);hs=D(rn,Zt),rl=D(rn," header menu"),rn.forEach(a),Ts.forEach(a),Bn.forEach(a),Ut.forEach(a),pe.forEach(a),il=u(J),H=l(J,"LI",{class:!0});var Vt=r(H);re=l(Vt,"A",{href:!0,class:!0});var Ps=r(re);Tt=l(Ps,"DIV",{class:!0});var Mn=r(Tt);E(Me.$$.fragment,Mn),Mn.forEach(a),ol=u(Ps),Je=l(Ps,"H2",{class:!0,"data-svelte-h":!0}),C(Je)!=="svelte-bvmn5u"&&(Je.textContent=_n),Ps.forEach(a),cl=u(Vt),He=l(Vt,"UL",{class:!0,"data-svelte-h":!0}),C(He)!=="svelte-ml78fh"&&(He.innerHTML=gn),ul=u(Vt),be=l(Vt,"UL",{class:!0});var qs=r(be);Pt=l(qs,"LI",{class:!0});var Jn=r(Pt);x=l(Jn,"BUTTON",{title:!0,class:!0});var Is=r(x);E(Oe.$$.fragment,Is),fl=u(Is),Fe=l(Is,"SPAN",{class:!0,"data-svelte-h":!0}),C(Fe)!=="svelte-10o6fc2"&&(Fe.textContent=$n),Is.forEach(a),Jn.forEach(a),dl=u(qs),qt=l(qs,"LI",{class:!0});var Hn=r(qt);j=l(Hn,"BUTTON",{title:!0,class:!0});var Ds=r(j);E(ke.$$.fragment,Ds),hl=u(Ds),Qe=l(Ds,"SPAN",{class:!0});var on=r(Qe);vs=D(on,xt),pl=D(on," header menu"),on.forEach(a),Ds.forEach(a),Hn.forEach(a),qs.forEach(a),Vt.forEach(a),vl=u(J),O=l(J,"LI",{class:!0});var Rt=r(O);ie=l(Rt,"A",{href:!0,class:!0});var Ns=r(ie);It=l(Ns,"DIV",{class:!0});var On=r(It);E(Ge.$$.fragment,On),On.forEach(a),ml=u(Ns),Ve=l(Ns,"H2",{class:!0,"data-svelte-h":!0}),C(Ve)!=="svelte-1ef7qq7"&&(Ve.textContent=bn),Ns.forEach(a),_l=u(Rt),Re=l(Rt,"UL",{class:!0,"data-svelte-h":!0}),C(Re)!=="svelte-16nvdoq"&&(Re.innerHTML=kn),gl=u(Rt),Le=l(Rt,"UL",{class:!0});var Ss=r(Le);Dt=l(Ss,"LI",{class:!0});var Fn=r(Dt);ee=l(Fn,"BUTTON",{title:!0,class:!0});var zs=r(ee);E(je.$$.fragment,zs),$l=u(zs),Ke=l(zs,"SPAN",{class:!0,"data-svelte-h":!0}),C(Ke)!=="svelte-7a5jqd"&&(Ke.textContent=Ln),zs.forEach(a),Fn.forEach(a),bl=u(Ss),Nt=l(Ss,"LI",{class:!0});var Qn=r(Nt);K=l(Qn,"BUTTON",{title:!0,class:!0});var As=r(K);E(ye.$$.fragment,As),kl=u(As),We=l(As,"SPAN",{class:!0});var cn=r(We);_s=D(cn,es),Ll=D(cn," header menu"),cn.forEach(a),As.forEach(a),Qn.forEach(a),Ss.forEach(a),Rt.forEach(a),yl=u(J),F=l(J,"LI",{class:!0});var jt=r(F);oe=l(jt,"A",{href:!0,class:!0});var Bs=r(oe);St=l(Bs,"DIV",{class:!0});var Gn=r(St);E(Xe.$$.fragment,Gn),Gn.forEach(a),El=u(Bs),Ye=l(Bs,"H2",{class:!0,"data-svelte-h":!0}),C(Ye)!=="svelte-1bxtcha"&&(Ye.textContent=yn),Bs.forEach(a),Ul=u(jt),Ze=l(jt,"UL",{class:!0,"data-svelte-h":!0}),C(Ze)!=="svelte-198kha5"&&(Ze.innerHTML=En),wl=u(jt),Ee=l(jt,"UL",{class:!0});var Ms=r(Ee);zt=l(Ms,"LI",{class:!0});var Vn=r(zt);te=l(Vn,"BUTTON",{title:!0,class:!0});var Js=r(te);E(xe.$$.fragment,Js),Cl=u(Js),et=l(Js,"SPAN",{class:!0,"data-svelte-h":!0}),C(et)!=="svelte-12zm1eu"&&(et.textContent=Un),Js.forEach(a),Vn.forEach(a),Tl=u(Ms),At=l(Ms,"LI",{class:!0});var Rn=r(At);W=l(Rn,"BUTTON",{title:!0,class:!0});var Hs=r(W);E(Ue.$$.fragment,Hs),Pl=u(Hs),tt=l(Hs,"SPAN",{class:!0});var un=r(tt);$s=D(un,ts),ql=D(un," header menu"),un.forEach(a),Hs.forEach(a),Rn.forEach(a),Ms.forEach(a),jt.forEach(a),Il=u(J),Q=l(J,"LI",{class:!0});var Kt=r(Q);ce=l(Kt,"A",{href:!0,class:!0});var Os=r(ce);Bt=l(Os,"DIV",{class:!0});var jn=r(Bt);E(st.$$.fragment,jn),jn.forEach(a),Dl=u(Os),lt=l(Os,"H2",{class:!0,"data-svelte-h":!0}),C(lt)!=="svelte-187k1uv"&&(lt.textContent=wn),Os.forEach(a),Nl=u(Kt),nt=l(Kt,"UL",{class:!0,"data-svelte-h":!0}),C(nt)!=="svelte-1hxwc9f"&&(nt.innerHTML=Cn),Sl=u(Kt),we=l(Kt,"UL",{class:!0});var Fs=r(we);Mt=l(Fs,"LI",{class:!0});var Kn=r(Mt);se=l(Kn,"BUTTON",{title:!0,class:!0});var Qs=r(se);E(at.$$.fragment,Qs),zl=u(Qs),rt=l(Qs,"SPAN",{class:!0,"data-svelte-h":!0}),C(rt)!=="svelte-96zp3x"&&(rt.textContent=Tn),Qs.forEach(a),Kn.forEach(a),Al=u(Fs),Jt=l(Fs,"LI",{class:!0});var Wn=r(Jt);X=l(Wn,"BUTTON",{title:!0,class:!0});var Gs=r(X);E(Ce.$$.fragment,Gs),Bl=u(Gs),it=l(Gs,"SPAN",{class:!0});var fn=r(it);ks=D(fn,ss),Ml=D(fn," header menu"),fn.forEach(a),Gs.forEach(a),Wn.forEach(a),Fs.forEach(a),Kt.forEach(a),J.forEach(a),Jl=u(he),Te=l(he,"UL",{class:!0});var Vs=r(Te);G=l(Vs,"LI",{class:!0});var Wt=r(G);ue=l(Wt,"A",{href:!0,class:!0});var Rs=r(ue);ot=l(Rs,"DIV",{class:!0,style:!0});var Xn=r(ot);E(ct.$$.fragment,Xn),Xn.forEach(a),Hl=u(Rs),ut=l(Rs,"H2",{class:!0,"data-svelte-h":!0}),C(ut)!=="svelte-1945w61"&&(ut.textContent=Pn),Rs.forEach(a),Ol=u(Wt),ft=l(Wt,"UL",{class:!0,"data-svelte-h":!0}),C(ft)!=="svelte-1k625ps"&&(ft.innerHTML=qn),Fl=u(Wt),Pe=l(Wt,"UL",{class:!0});var js=r(Pe);Ht=l(js,"LI",{class:!0});var Yn=r(Ht);le=l(Yn,"BUTTON",{title:!0,class:!0});var Ks=r(le);E(dt.$$.fragment,Ks),Ql=u(Ks),ht=l(Ks,"SPAN",{class:!0,"data-svelte-h":!0}),C(ht)!=="svelte-zgpe6t"&&(ht.textContent=In),Ks.forEach(a),Yn.forEach(a),Gl=u(js),Ot=l(js,"LI",{class:!0});var Zn=r(Ot);Y=l(Zn,"BUTTON",{title:!0,class:!0});var Ws=r(Y);E(qe.$$.fragment,Ws),Vl=u(Ws),pt=l(Ws,"SPAN",{class:!0});var dn=r(pt);ys=D(dn,ls),Rl=D(dn," header menu"),dn.forEach(a),Ws.forEach(a),Zn.forEach(a),js.forEach(a),Wt.forEach(a),jl=u(Vs),V=l(Vs,"LI",{class:!0});var Xt=r(V);fe=l(Xt,"A",{href:!0,class:!0});var Xs=r(fe);vt=l(Xs,"DIV",{class:!0,style:!0});var xn=r(vt);E(mt.$$.fragment,xn),xn.forEach(a),Kl=u(Xs),_t=l(Xs,"H2",{class:!0,"data-svelte-h":!0}),C(_t)!=="svelte-v0z4e8"&&(_t.textContent=Dn),Xs.forEach(a),Wl=u(Xt),gt=l(Xt,"UL",{class:!0,"data-svelte-h":!0}),C(gt)!=="svelte-17bqupm"&&(gt.innerHTML=Nn),Xl=u(Xt),Ie=l(Xt,"UL",{class:!0});var Ys=r(Ie);Ft=l(Ys,"LI",{class:!0});var ea=r(Ft);ne=l(ea,"BUTTON",{title:!0,class:!0});var Zs=r(ne);E($t.$$.fragment,Zs),Yl=u(Zs),bt=l(Zs,"SPAN",{class:!0,"data-svelte-h":!0}),C(bt)!=="svelte-1mz1lxe"&&(bt.textContent=Sn),Zs.forEach(a),ea.forEach(a),Zl=u(Ys),Qt=l(Ys,"LI",{class:!0});var ta=r(Qt);Z=l(ta,"BUTTON",{title:!0,class:!0});var xs=r(Z);E(De.$$.fragment,xs),xl=u(xs),kt=l(xs,"SPAN",{class:!0});var hn=r(kt);Us=D(hn,ns),en=D(hn," header menu"),hn.forEach(a),xs.forEach(a),ta.forEach(a),Ys.forEach(a),Xt.forEach(a),Vs.forEach(a),he.forEach(a),Cs=u(i),de=l(i,"FOOTER",{class:!0});var el=r(de);Gt=l(el,"DIV",{});var sa=r(Gt);M.block.l(sa),sa.forEach(a),tn=u(el),Ne=l(el,"UL",{class:!0});var tl=r(Ne);as=l(tl,"LI",{});var la=r(as);Se=l(la,"A",{href:!0,class:!0});var pn=r(Se);E(Lt.$$.fragment,pn),sn=D(pn,`\r + Documentation`),pn.forEach(a),la.forEach(a),ln=u(tl),rs=l(tl,"LI",{});var na=r(rs);ze=l(na,"A",{href:!0,class:!0});var vn=r(ze);E(yt.$$.fragment,vn),nn=D(vn,`\r + Siteglide Portal`),vn.forEach(a),na.forEach(a),tl.forEach(a),el.forEach(a),this.h()},h(){t(b,"class","icon svelte-1t1yf9"),t(k,"class","svelte-1t1yf9"),t(p,"href","/database"),t(p,"class","svelte-1t1yf9"),t(me,"class","description svelte-1t1yf9"),t(ge,"class","label"),t(R,"title","More information"),t(R,"class","svelte-1t1yf9"),t(Ae,"class","svelte-1t1yf9"),t(Be,"class","label"),t(I,"title",ps=(s[1].header.includes("database")?"Unpin Database from":"Pin Database to")+" header menu"),t(I,"class","svelte-1t1yf9"),t(T,"class","svelte-1t1yf9"),t(ae,"class","actions svelte-1t1yf9"),t(v,"class","application svelte-1t1yf9"),A(v,"showDescription",s[0].includes("database")),t(Tt,"class","icon svelte-1t1yf9"),t(Je,"class","svelte-1t1yf9"),t(re,"href","/users"),t(re,"class","svelte-1t1yf9"),t(He,"class","description svelte-1t1yf9"),t(Fe,"class","label"),t(x,"title","More information"),t(x,"class","svelte-1t1yf9"),t(Pt,"class","svelte-1t1yf9"),t(Qe,"class","label"),t(j,"title",ms=(s[1].header.includes("users")?"Unpin Users from":"Pin Users to")+" header menu"),t(j,"class","svelte-1t1yf9"),t(qt,"class","svelte-1t1yf9"),t(be,"class","actions svelte-1t1yf9"),t(H,"class","application svelte-1t1yf9"),A(H,"showDescription",s[0].includes("users")),t(It,"class","icon svelte-1t1yf9"),t(Ve,"class","svelte-1t1yf9"),t(ie,"href","/logs"),t(ie,"class","svelte-1t1yf9"),t(Re,"class","description svelte-1t1yf9"),t(Ke,"class","label"),t(ee,"title","More information"),t(ee,"class","svelte-1t1yf9"),t(Dt,"class","svelte-1t1yf9"),t(We,"class","label"),t(K,"title",gs=(s[1].header.includes("logs")?"Unpin Logs from":"Pin Logs to")+" header menu"),t(K,"class","svelte-1t1yf9"),t(Nt,"class","svelte-1t1yf9"),t(Le,"class","actions svelte-1t1yf9"),t(O,"class","application svelte-1t1yf9"),A(O,"showDescription",s[0].includes("logs")),t(St,"class","icon svelte-1t1yf9"),t(Ye,"class","svelte-1t1yf9"),t(oe,"href","/backgroundJobs"),t(oe,"class","svelte-1t1yf9"),t(Ze,"class","description svelte-1t1yf9"),t(et,"class","label"),t(te,"title","More information"),t(te,"class","svelte-1t1yf9"),t(zt,"class","svelte-1t1yf9"),t(tt,"class","label"),t(W,"title",bs=(s[1].header.includes("backgroundJobs")?"Unpin Background Jobs from":"Pin Background Jobs to")+" header menu"),t(W,"class","svelte-1t1yf9"),t(At,"class","svelte-1t1yf9"),t(Ee,"class","actions svelte-1t1yf9"),t(F,"class","application svelte-1t1yf9"),A(F,"showDescription",s[0].includes("backgroundJobs")),t(Bt,"class","icon svelte-1t1yf9"),t(lt,"class","svelte-1t1yf9"),t(ce,"href","/constants"),t(ce,"class","svelte-1t1yf9"),t(nt,"class","description svelte-1t1yf9"),t(rt,"class","label"),t(se,"title","More information"),t(se,"class","svelte-1t1yf9"),t(Mt,"class","svelte-1t1yf9"),t(it,"class","label"),t(X,"title",Ls=(s[1].header.includes("constants")?"Unpin Constants from":"Pin Constants to")+" header menu"),t(X,"class","svelte-1t1yf9"),t(Jt,"class","svelte-1t1yf9"),t(we,"class","actions svelte-1t1yf9"),t(Q,"class","application svelte-1t1yf9"),A(Q,"showDescription",s[0].includes("constants")),t(d,"class","applications svelte-1t1yf9"),t(ot,"class","icon svelte-1t1yf9"),aa(ot,"color","#aeb0b3"),t(ut,"class","svelte-1t1yf9"),t(ue,"href",(typeof window<"u"&&window.location.port!=="4173"&&window.location.port!=="5173"?`http://localhost:${parseInt(window.location.port)}`:"http://localhost:3333")+"/gui/liquid"),t(ue,"class","svelte-1t1yf9"),t(ft,"class","description svelte-1t1yf9"),t(ht,"class","label"),t(le,"title","More information"),t(le,"class","svelte-1t1yf9"),t(Ht,"class","svelte-1t1yf9"),t(pt,"class","label"),t(Y,"title",Es=(s[1].header.includes("liquid")?"Unpin Liquid Evaluator from":"Pin Liquid Evaluator to")+" header menu"),t(Y,"class","svelte-1t1yf9"),t(Ot,"class","svelte-1t1yf9"),t(Pe,"class","actions svelte-1t1yf9"),t(G,"class","application svelte-1t1yf9"),A(G,"showDescription",s[0].includes("liquid")),t(vt,"class","icon svelte-1t1yf9"),aa(vt,"color","#f30e9c"),t(_t,"class","svelte-1t1yf9"),t(fe,"href",(typeof window<"u"&&window.location.port!=="4173"&&window.location.port!=="5173"?`http://localhost:${parseInt(window.location.port)}`:"http://localhost:3333")+"/gui/graphql"),t(fe,"class","svelte-1t1yf9"),t(gt,"class","description svelte-1t1yf9"),t(bt,"class","label"),t(ne,"title","More information"),t(ne,"class","svelte-1t1yf9"),t(Ft,"class","svelte-1t1yf9"),t(kt,"class","label"),t(Z,"title",ws=(s[1].header.includes("graphiql")?"Unpin GraphiQL from":"Pin GraphiQL to")+" header menu"),t(Z,"class","svelte-1t1yf9"),t(Qt,"class","svelte-1t1yf9"),t(Ie,"class","actions svelte-1t1yf9"),t(V,"class","application svelte-1t1yf9"),A(V,"showDescription",s[0].includes("graphiql")),t(Te,"class","applications svelte-1t1yf9"),t(c,"class","svelte-1t1yf9"),t(Se,"href","https://developers.siteglide.com"),t(Se,"class","button"),t(ze,"href","https://my.siteglide.com"),t(ze,"class","button"),t(Ne,"class","svelte-1t1yf9"),t(de,"class","svelte-1t1yf9")},m(i,h){Yt(i,$,h),Yt(i,c,h),e(c,d),e(d,v),e(v,p),e(p,b),y(P,b,null),e(p,B),e(p,k),e(v,ve),e(v,me),e(v,us),e(v,ae),e(ae,Ae),e(Ae,R),y(_e,R,null),e(R,fs),e(R,ge),e(ae,ds),e(ae,T),e(T,I),y($e,I,null),e(I,al),e(I,Be),e(Be,hs),e(Be,rl),e(d,il),e(d,H),e(H,re),e(re,Tt),y(Me,Tt,null),e(re,ol),e(re,Je),e(H,cl),e(H,He),e(H,ul),e(H,be),e(be,Pt),e(Pt,x),y(Oe,x,null),e(x,fl),e(x,Fe),e(be,dl),e(be,qt),e(qt,j),y(ke,j,null),e(j,hl),e(j,Qe),e(Qe,vs),e(Qe,pl),e(d,vl),e(d,O),e(O,ie),e(ie,It),y(Ge,It,null),e(ie,ml),e(ie,Ve),e(O,_l),e(O,Re),e(O,gl),e(O,Le),e(Le,Dt),e(Dt,ee),y(je,ee,null),e(ee,$l),e(ee,Ke),e(Le,bl),e(Le,Nt),e(Nt,K),y(ye,K,null),e(K,kl),e(K,We),e(We,_s),e(We,Ll),e(d,yl),e(d,F),e(F,oe),e(oe,St),y(Xe,St,null),e(oe,El),e(oe,Ye),e(F,Ul),e(F,Ze),e(F,wl),e(F,Ee),e(Ee,zt),e(zt,te),y(xe,te,null),e(te,Cl),e(te,et),e(Ee,Tl),e(Ee,At),e(At,W),y(Ue,W,null),e(W,Pl),e(W,tt),e(tt,$s),e(tt,ql),e(d,Il),e(d,Q),e(Q,ce),e(ce,Bt),y(st,Bt,null),e(ce,Dl),e(ce,lt),e(Q,Nl),e(Q,nt),e(Q,Sl),e(Q,we),e(we,Mt),e(Mt,se),y(at,se,null),e(se,zl),e(se,rt),e(we,Al),e(we,Jt),e(Jt,X),y(Ce,X,null),e(X,Bl),e(X,it),e(it,ks),e(it,Ml),e(c,Jl),e(c,Te),e(Te,G),e(G,ue),e(ue,ot),y(ct,ot,null),e(ue,Hl),e(ue,ut),e(G,Ol),e(G,ft),e(G,Fl),e(G,Pe),e(Pe,Ht),e(Ht,le),y(dt,le,null),e(le,Ql),e(le,ht),e(Pe,Gl),e(Pe,Ot),e(Ot,Y),y(qe,Y,null),e(Y,Vl),e(Y,pt),e(pt,ys),e(pt,Rl),e(Te,jl),e(Te,V),e(V,fe),e(fe,vt),y(mt,vt,null),e(fe,Kl),e(fe,_t),e(V,Wl),e(V,gt),e(V,Xl),e(V,Ie),e(Ie,Ft),e(Ft,ne),y($t,ne,null),e(ne,Yl),e(ne,bt),e(Ie,Zl),e(Ie,Qt),e(Qt,Z),y(De,Z,null),e(Z,xl),e(Z,kt),e(kt,Us),e(kt,en),Yt(i,Cs,h),Yt(i,de,h),e(de,Gt),M.block.m(Gt,M.anchor=null),M.mount=()=>Gt,M.anchor=null,e(de,tn),e(de,Ne),e(Ne,as),e(as,Se),y(Lt,Se,null),e(Se,sn),e(Ne,ln),e(Ne,rs),e(rs,ze),y(yt,ze,null),e(ze,nn),g=!0,an||(zn=[q(p,"focus",s[2],{once:!0}),q(p,"mouseover",s[2],{once:!0}),q(R,"click",s[7]),q(I,"click",s[8]),q(x,"click",s[9]),q(j,"click",s[10]),q(ee,"click",s[11]),q(K,"click",s[12]),q(te,"click",s[13]),q(W,"click",s[14]),q(se,"click",s[15]),q(X,"click",s[16]),q(le,"click",s[17]),q(Y,"click",s[18]),q(ne,"click",s[19]),q(Z,"click",s[20])],an=!0)},p(i,[h]){var wt;s=i,(!g||h&2)&&o!==(o="Siteglide"+((wt=s[1].online)!=null&&wt.MPKIT_URL?": "+s[1].online.MPKIT_URL.replace("https://",""):""))&&(document.title=o);const he={};h&2&&(he.icon=s[1].header.includes("database")?"pinFilled":"pin"),$e.$set(he),(!g||h&2)&&Zt!==(Zt=s[1].header.includes("database")?"Unpin Database from":"Pin Database to")&&Ct(hs,Zt),(!g||h&2&&ps!==(ps=(s[1].header.includes("database")?"Unpin Database from":"Pin Database to")+" header menu"))&&t(I,"title",ps),(!g||h&1)&&A(v,"showDescription",s[0].includes("database"));const J={};h&2&&(J.icon=s[1].header.includes("users")?"pinFilled":"pin"),ke.$set(J),(!g||h&2)&&xt!==(xt=s[1].header.includes("users")?"Unpin Users from":"Pin Users to")&&Ct(vs,xt),(!g||h&2&&ms!==(ms=(s[1].header.includes("users")?"Unpin Users from":"Pin Users to")+" header menu"))&&t(j,"title",ms),(!g||h&1)&&A(H,"showDescription",s[0].includes("users"));const pe={};h&2&&(pe.icon=s[1].header.includes("logs")?"pinFilled":"pin"),ye.$set(pe),(!g||h&2)&&es!==(es=s[1].header.includes("logs")?"Unpin Logs from":"Pin Logs to")&&Ct(_s,es),(!g||h&2&&gs!==(gs=(s[1].header.includes("logs")?"Unpin Logs from":"Pin Logs to")+" header menu"))&&t(K,"title",gs),(!g||h&1)&&A(O,"showDescription",s[0].includes("logs"));const Et={};h&2&&(Et.icon=s[1].header.includes("backgroundJobs")?"pinFilled":"pin"),Ue.$set(Et),(!g||h&2)&&ts!==(ts=s[1].header.includes("backgroundJobs")?"Unpin Background Jobs from":"Pin Background Jobs to")&&Ct($s,ts),(!g||h&2&&bs!==(bs=(s[1].header.includes("backgroundJobs")?"Unpin Background Jobs from":"Pin Background Jobs to")+" header menu"))&&t(W,"title",bs),(!g||h&1)&&A(F,"showDescription",s[0].includes("backgroundJobs"));const is={};h&2&&(is.icon=s[1].header.includes("constants")?"pinFilled":"pin"),Ce.$set(is),(!g||h&2)&&ss!==(ss=s[1].header.includes("constants")?"Unpin Constants from":"Pin Constants to")&&Ct(ks,ss),(!g||h&2&&Ls!==(Ls=(s[1].header.includes("constants")?"Unpin Constants from":"Pin Constants to")+" header menu"))&&t(X,"title",Ls),(!g||h&1)&&A(Q,"showDescription",s[0].includes("constants"));const Ut={};h&2&&(Ut.icon=s[1].header.includes("liquid")?"pinFilled":"pin"),qe.$set(Ut),(!g||h&2)&&ls!==(ls=s[1].header.includes("liquid")?"Unpin Liquid Evaluator from":"Pin Liquid Evaluator to")&&Ct(ys,ls),(!g||h&2&&Es!==(Es=(s[1].header.includes("liquid")?"Unpin Liquid Evaluator from":"Pin Liquid Evaluator to")+" header menu"))&&t(Y,"title",Es),(!g||h&1)&&A(G,"showDescription",s[0].includes("liquid"));const os={};h&2&&(os.icon=s[1].header.includes("graphiql")?"pinFilled":"pin"),De.$set(os),(!g||h&2)&&ns!==(ns=s[1].header.includes("graphiql")?"Unpin GraphiQL from":"Pin GraphiQL to")&&Ct(Us,ns),(!g||h&2&&ws!==(ws=(s[1].header.includes("graphiql")?"Unpin GraphiQL from":"Pin GraphiQL to")+" header menu"))&&t(Z,"title",ws),(!g||h&1)&&A(V,"showDescription",s[0].includes("graphiql")),Ea(M,s,h)},i(i){g||(m(P.$$.fragment,i),m(_e.$$.fragment,i),m($e.$$.fragment,i),m(Me.$$.fragment,i),m(Oe.$$.fragment,i),m(ke.$$.fragment,i),m(Ge.$$.fragment,i),m(je.$$.fragment,i),m(ye.$$.fragment,i),m(Xe.$$.fragment,i),m(xe.$$.fragment,i),m(Ue.$$.fragment,i),m(st.$$.fragment,i),m(at.$$.fragment,i),m(Ce.$$.fragment,i),m(ct.$$.fragment,i),m(dt.$$.fragment,i),m(qe.$$.fragment,i),m(mt.$$.fragment,i),m($t.$$.fragment,i),m(De.$$.fragment,i),m(M.block),m(Lt.$$.fragment,i),m(yt.$$.fragment,i),g=!0)},o(i){_(P.$$.fragment,i),_(_e.$$.fragment,i),_($e.$$.fragment,i),_(Me.$$.fragment,i),_(Oe.$$.fragment,i),_(ke.$$.fragment,i),_(Ge.$$.fragment,i),_(je.$$.fragment,i),_(ye.$$.fragment,i),_(Xe.$$.fragment,i),_(xe.$$.fragment,i),_(Ue.$$.fragment,i),_(st.$$.fragment,i),_(at.$$.fragment,i),_(Ce.$$.fragment,i),_(ct.$$.fragment,i),_(dt.$$.fragment,i),_(qe.$$.fragment,i),_(mt.$$.fragment,i),_($t.$$.fragment,i),_(De.$$.fragment,i);for(let h=0;h<3;h+=1){const he=M.blocks[h];_(he)}_(Lt.$$.fragment,i),_(yt.$$.fragment,i),g=!1},d(i){i&&(a($),a(c),a(Cs),a(de)),L(P),L(_e),L($e),L(Me),L(Oe),L(ke),L(Ge),L(je),L(ye),L(Xe),L(xe),L(Ue),L(st),L(at),L(Ce),L(ct),L(dt),L(qe),L(mt),L($t),L(De),M.block.d(),M.token=null,M=null,L(Lt),L(yt),an=!1,ma(zn)}}}function Pa(s,o,$){let c;ga(s,cs,T=>$(1,c=T));let d=[];const v=async()=>{c.tables.length||mn(cs,c.tables=await La.get(),c)},p=T=>{c.header.indexOf(T)>-1?mn(cs,c.header=c.header.filter(I=>I!==T),c):mn(cs,c.header=[...c.header,T],c),localStorage.header=JSON.stringify(c.header)},b=T=>{d.indexOf(T)>-1?$(0,d=d.filter(I=>I!==T)):$(0,d=[...d,T])};return[d,c,v,p,b,async()=>await(await fetch("https://registry.npmjs.org/@siteglide/siteglide-cli/latest")).json(),()=>{navigator.clipboard.writeText("npm i -g @siteglide/siteglide-cli@latest").then(()=>{cs.notification.create("info","
    Update command copied to clipboard Run npm i -g @siteglide/siteglide-cli@latest in the terminal
    ")}).catch(T=>{copying=!1,error=!0,console.error(T)})},()=>b("database"),()=>p("database"),()=>b("users"),()=>p("users"),()=>b("logs"),()=>p("logs"),()=>b("backgroundJobs"),()=>p("backgroundJobs"),()=>b("constants"),()=>p("constants"),()=>b("liquid"),()=>p("liquid"),()=>b("graphiql"),()=>p("graphiql")]}class Aa extends ba{constructor(o){super(),ka(this,o,Pa,Ta,va,{})}}export{Aa as component}; diff --git a/gui/next/build/_app/immutable/nodes/8.DxJ3_9M1.js b/gui/next/build/_app/immutable/nodes/8.DxJ3_9M1.js new file mode 100644 index 0000000..643565a --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/8.DxJ3_9M1.js @@ -0,0 +1 @@ +import{s}from"../chunks/Ul9VwQ7n.js";import{S as t,i as e}from"../chunks/Bh3MJlbi.js";class l extends t{constructor(o){super(),e(this,o,null,null,s,{})}}export{l as component}; diff --git a/gui/next/build/_app/immutable/nodes/9.DQ8eZK33.js b/gui/next/build/_app/immutable/nodes/9.DQ8eZK33.js new file mode 100644 index 0000000..ab74afa --- /dev/null +++ b/gui/next/build/_app/immutable/nodes/9.DQ8eZK33.js @@ -0,0 +1 @@ +import{s as se,l as ie,d,u as re,m as oe,o as ce,w as k,i as m,b as _,c as b,e as L,h as g,S as fe,G as ue,H as de,W as _e,p as me,z as I,g as w,j as D,k as pe,v as N,n as y,f as P,t as A,a as J}from"../chunks/Ul9VwQ7n.js";import{S as ae,i as ne,t as H,a as j,d as z,m as B,c as F,b as G,g as R,e as M}from"../chunks/Bh3MJlbi.js";import{p as he}from"../chunks/C5zjxmar.js";import{b as ve}from"../chunks/CIy9Z9Qf.js";import{A as be}from"../chunks/DntFPtNo.js";import{J as ge}from"../chunks/BVVGnpm8.js";function qe(f){let e,a,o,i,r,s;const l=f[3].default,t=ie(l,f,f[2],null);return{c(){e=g("template"),a=g("pre"),o=g("code"),t&&t.c(),this.h()},l(n){e=b(n,"TEMPLATE",{});var c=L(e.content);a=b(c,"PRE",{class:!0});var p=L(a);o=b(p,"CODE",{class:!0});var h=L(o);t&&t.l(h),h.forEach(d),p.forEach(d),c.forEach(d),this.h()},h(){k(o,"class",i="language-"+f[0]),k(a,"class",r="line-numbers language-"+f[0])},m(n,c){m(n,e,c),_(e.content,a),_(a,o),t&&t.m(o,null),f[4](e),s=!0},p(n,[c]){t&&t.p&&(!s||c&4)&&re(t,l,n,n[2],s?ce(l,n[2],c,null):oe(n[2]),null),(!s||c&1&&i!==(i="language-"+n[0]))&&k(o,"class",i),(!s||c&1&&r!==(r="line-numbers language-"+n[0]))&&k(a,"class",r)},i(n){s||(j(t,n),s=!0)},o(n){H(t,n),s=!1},d(n){n&&d(e),t&&t.d(n),f[4](null)}}}function ke(f,e,a){let{$$slots:o={},$$scope:i}=e,{language:r}=e,s;fe(async()=>{var n;await ue(),(n=document.querySelector("#code"))==null||n.remove();const t=s.content.cloneNode(!0);t.firstChild.id="code",s.after(t),Prism.highlightAll()});function l(t){de[t?"unshift":"push"](()=>{s=t,a(1,s)})}return f.$$set=t=>{"language"in t&&a(0,r=t.language),"$$scope"in t&&a(2,i=t.$$scope)},[r,s,i,o,l]}class Ce extends ae{constructor(e){super(),ne(this,e,ke,qe,se,{language:0})}}function $e(f){let e,a,o,i,r,s,l,t,n=f[1].source_name&&Q(f),c=f[1].id&&X(f),p=f[1].error_message&&x(f),h=f[1].liquid_body&&ee(f),$=f[1].partial_name&&te(f),q=f[1].arguments&&le(f);return{c(){e=g("dl"),n&&n.c(),a=N(),c&&c.c(),o=D(),p&&p.c(),i=D(),h&&h.c(),r=D(),$&&$.c(),s=D(),q&&q.c(),l=N(),this.h()},l(u){e=b(u,"DL",{class:!0});var v=L(e);n&&n.l(v),a=N(),c&&c.l(v),v.forEach(d),o=w(u),p&&p.l(u),i=w(u),h&&h.l(u),r=w(u),$&&$.l(u),s=w(u),q&&q.l(u),l=N(),this.h()},h(){k(e,"class","info svelte-7qclwq")},m(u,v){m(u,e,v),n&&n.m(e,null),_(e,a),c&&c.m(e,null),m(u,o,v),p&&p.m(u,v),m(u,i,v),h&&h.m(u,v),m(u,r,v),$&&$.m(u,v),m(u,s,v),q&&q.m(u,v),m(u,l,v),t=!0},p(u,v){u[1].source_name?n?n.p(u,v):(n=Q(u),n.c(),n.m(e,a)):n&&(n.d(1),n=null),u[1].id?c?c.p(u,v):(c=X(u),c.c(),c.m(e,null)):c&&(c.d(1),c=null),u[1].error_message?p?p.p(u,v):(p=x(u),p.c(),p.m(i.parentNode,i)):p&&(p.d(1),p=null),u[1].liquid_body?h?(h.p(u,v),v&2&&j(h,1)):(h=ee(u),h.c(),j(h,1),h.m(r.parentNode,r)):h&&(R(),H(h,1,1,()=>{h=null}),M()),u[1].partial_name?$?$.p(u,v):($=te(u),$.c(),$.m(s.parentNode,s)):$&&($.d(1),$=null),u[1].arguments?q?(q.p(u,v),v&2&&j(q,1)):(q=le(u),q.c(),j(q,1),q.m(l.parentNode,l)):q&&(R(),H(q,1,1,()=>{q=null}),M())},i(u){t||(j(h),j(q),t=!0)},o(u){H(h),H(q),t=!1},d(u){u&&(d(e),d(o),d(i),d(r),d(s),d(l)),n&&n.d(),c&&c.d(),p&&p.d(u),h&&h.d(u),$&&$.d(u),q&&q.d(u)}}}function we(f){let e;return{c(){e=A("There is no such background job")},l(a){e=P(a,"There is no such background job")},m(a,o){m(a,e,o)},p:y,i:y,o:y,d(a){a&&d(e)}}}function Q(f){let e,a,o="ID:",i,r,s=f[1].id+"",l,t;return{c(){e=g("div"),a=g("dt"),a.textContent=o,i=D(),r=g("dd"),l=A(s),t=D(),this.h()},l(n){e=b(n,"DIV",{class:!0});var c=L(e);a=b(c,"DT",{class:!0,"data-svelte-h":!0}),I(a)!=="svelte-179gw2t"&&(a.textContent=o),i=w(c),r=b(c,"DD",{});var p=L(r);l=P(p,s),p.forEach(d),t=w(c),c.forEach(d),this.h()},h(){k(a,"class","svelte-7qclwq"),k(e,"class","svelte-7qclwq")},m(n,c){m(n,e,c),_(e,a),_(e,i),_(e,r),_(r,l),_(e,t)},p(n,c){c&2&&s!==(s=n[1].id+"")&&J(l,s)},d(n){n&&d(e)}}}function X(f){let e,a,o="Created at:",i,r,s=new Date(f[1].created_at).toLocaleString()+"",l,t,n,c,p="Run at:",h,$,q=new Date(f[1].run_at).toLocaleString()+"",u,v,O,U,S=f[1].dead_at&&Y(f),T=f[1].arguments.url&&Z(f);return{c(){e=g("div"),a=g("dt"),a.textContent=o,i=D(),r=g("dd"),l=A(s),t=D(),n=g("div"),c=g("dt"),c.textContent=p,h=D(),$=g("dd"),u=A(q),v=D(),S&&S.c(),O=N(),T&&T.c(),U=N(),this.h()},l(C){e=b(C,"DIV",{class:!0});var E=L(e);a=b(E,"DT",{class:!0,"data-svelte-h":!0}),I(a)!=="svelte-psrdxl"&&(a.textContent=o),i=w(E),r=b(E,"DD",{});var W=L(r);l=P(W,s),W.forEach(d),t=w(E),E.forEach(d),n=b(C,"DIV",{class:!0});var V=L(n);c=b(V,"DT",{class:!0,"data-svelte-h":!0}),I(c)!=="svelte-u0lbhu"&&(c.textContent=p),h=w(V),$=b(V,"DD",{});var K=L($);u=P(K,q),K.forEach(d),v=w(V),V.forEach(d),S&&S.l(C),O=N(),T&&T.l(C),U=N(),this.h()},h(){k(a,"class","svelte-7qclwq"),k(e,"class","svelte-7qclwq"),k(c,"class","svelte-7qclwq"),k(n,"class","svelte-7qclwq")},m(C,E){m(C,e,E),_(e,a),_(e,i),_(e,r),_(r,l),_(e,t),m(C,n,E),_(n,c),_(n,h),_(n,$),_($,u),_(n,v),S&&S.m(C,E),m(C,O,E),T&&T.m(C,E),m(C,U,E)},p(C,E){E&2&&s!==(s=new Date(C[1].created_at).toLocaleString()+"")&&J(l,s),E&2&&q!==(q=new Date(C[1].run_at).toLocaleString()+"")&&J(u,q),C[1].dead_at?S?S.p(C,E):(S=Y(C),S.c(),S.m(O.parentNode,O)):S&&(S.d(1),S=null),C[1].arguments.url?T?T.p(C,E):(T=Z(C),T.c(),T.m(U.parentNode,U)):T&&(T.d(1),T=null)},d(C){C&&(d(e),d(n),d(O),d(U)),S&&S.d(C),T&&T.d(C)}}}function Y(f){let e,a,o="Dead at:",i,r,s=new Date(f[1].dead_at).toLocaleString()+"",l,t;return{c(){e=g("div"),a=g("dt"),a.textContent=o,i=D(),r=g("dd"),l=A(s),t=D(),this.h()},l(n){e=b(n,"DIV",{class:!0});var c=L(e);a=b(c,"DT",{class:!0,"data-svelte-h":!0}),I(a)!=="svelte-1gjx1j5"&&(a.textContent=o),i=w(c),r=b(c,"DD",{class:!0});var p=L(r);l=P(p,s),p.forEach(d),t=w(c),c.forEach(d),this.h()},h(){k(a,"class","svelte-7qclwq"),k(r,"class","error svelte-7qclwq"),k(e,"class","svelte-7qclwq")},m(n,c){m(n,e,c),_(e,a),_(e,i),_(e,r),_(r,l),_(e,t)},p(n,c){c&2&&s!==(s=new Date(n[1].dead_at).toLocaleString()+"")&&J(l,s)},d(n){n&&d(e)}}}function Z(f){let e,a,o="URL:",i,r,s=(f[1].arguments.context.location.href||"/")+"",l;return{c(){e=g("div"),a=g("dt"),a.textContent=o,i=D(),r=g("dd"),l=A(s),this.h()},l(t){e=b(t,"DIV",{class:!0});var n=L(e);a=b(n,"DT",{class:!0,"data-svelte-h":!0}),I(a)!=="svelte-vrqyfv"&&(a.textContent=o),i=w(n),r=b(n,"DD",{});var c=L(r);l=P(c,s),c.forEach(d),n.forEach(d),this.h()},h(){k(a,"class","svelte-7qclwq"),k(e,"class","svelte-7qclwq")},m(t,n){m(t,e,n),_(e,a),_(e,i),_(e,r),_(r,l)},p(t,n){n&2&&s!==(s=(t[1].arguments.context.location.href||"/")+"")&&J(l,s)},d(t){t&&d(e)}}}function x(f){let e,a="Error message",o,i,r=f[1].error_message+"",s;return{c(){e=g("h2"),e.textContent=a,o=D(),i=g("code"),s=A(r),this.h()},l(l){e=b(l,"H2",{class:!0,"data-svelte-h":!0}),I(e)!=="svelte-46lcxd"&&(e.textContent=a),o=w(l),i=b(l,"CODE",{class:!0});var t=L(i);s=P(t,r),t.forEach(d),this.h()},h(){k(e,"class","svelte-7qclwq"),k(i,"class","svelte-7qclwq")},m(l,t){m(l,e,t),m(l,o,t),m(l,i,t),_(i,s)},p(l,t){t&2&&r!==(r=l[1].error_message+"")&&J(s,r)},d(l){l&&(d(e),d(o),d(i))}}}function ee(f){let e,a="Background job code:",o,i,r;return i=new Ce({props:{language:"liquid",$$slots:{default:[De]},$$scope:{ctx:f}}}),{c(){e=g("h2"),e.textContent=a,o=D(),G(i.$$.fragment),this.h()},l(s){e=b(s,"H2",{class:!0,"data-svelte-h":!0}),I(e)!=="svelte-dymu4w"&&(e.textContent=a),o=w(s),F(i.$$.fragment,s),this.h()},h(){k(e,"class","svelte-7qclwq")},m(s,l){m(s,e,l),m(s,o,l),B(i,s,l),r=!0},p(s,l){const t={};l&10&&(t.$$scope={dirty:l,ctx:s}),i.$set(t)},i(s){r||(j(i.$$.fragment,s),r=!0)},o(s){H(i.$$.fragment,s),r=!1},d(s){s&&(d(e),d(o)),z(i,s)}}}function De(f){let e=f[1].liquid_body+"",a;return{c(){a=A(e)},l(o){a=P(o,e)},m(o,i){m(o,a,i)},p(o,i){i&2&&e!==(e=o[1].liquid_body+"")&&J(a,e)},d(o){o&&d(a)}}}function te(f){let e,a="Background function name:",o,i,r=f[1].partial_name+"",s;return{c(){e=g("h2"),e.textContent=a,o=D(),i=g("code"),s=A(r),this.h()},l(l){e=b(l,"H2",{class:!0,"data-svelte-h":!0}),I(e)!=="svelte-1qty0jf"&&(e.textContent=a),o=w(l),i=b(l,"CODE",{class:!0});var t=L(i);s=P(t,r),t.forEach(d),this.h()},h(){k(e,"class","svelte-7qclwq"),k(i,"class","svelte-7qclwq")},m(l,t){m(l,e,t),m(l,o,t),m(l,i,t),_(i,s)},p(l,t){t&2&&r!==(r=l[1].partial_name+"")&&J(s,r)},d(l){l&&(d(e),d(o),d(i))}}}function le(f){let e,a="Arguments",o,i,r,s;return r=new ge({props:{value:f[1].arguments,expandedLines:1,showFullLines:!0}}),{c(){e=g("h2"),e.textContent=a,o=D(),i=g("code"),G(r.$$.fragment),this.h()},l(l){e=b(l,"H2",{class:!0,"data-svelte-h":!0}),I(e)!=="svelte-h49jwy"&&(e.textContent=a),o=w(l),i=b(l,"CODE",{class:!0});var t=L(i);F(r.$$.fragment,t),t.forEach(d),this.h()},h(){k(e,"class","svelte-7qclwq"),k(i,"class","svelte-7qclwq")},m(l,t){m(l,e,t),m(l,o,t),m(l,i,t),B(r,i,null),s=!0},p(l,t){const n={};t&2&&(n.value=l[1].arguments),r.$set(n)},i(l){s||(j(r.$$.fragment,l),s=!0)},o(l){H(r.$$.fragment,l),s=!1},d(l){l&&(d(e),d(o),d(i)),z(r)}}}function Ee(f){let e,a,o,i;const r=[we,$e],s=[];function l(t,n){return t[1]===null?0:1}return e=l(f),a=s[e]=r[e](f),{c(){a.c(),o=N()},l(t){a.l(t),o=N()},m(t,n){s[e].m(t,n),m(t,o,n),i=!0},p(t,n){let c=e;e=l(t),e===c?s[e].p(t,n):(R(),H(s[c],1,1,()=>{s[c]=null}),M(),a=s[e],a?a.p(t,n):(a=s[e]=r[e](t),a.c()),j(a,1),a.m(o.parentNode,o))},i(t){i||(j(a),i=!0)},o(t){H(a),i=!1},d(t){t&&d(o),s[e].d(t)}}}function Le(f){let e,a="",o,i,r,s;return r=new be({props:{title:f[1].source_name||f[1].id||"Loading…",closeUrl:"/backgroundJobs?"+f[0].url.searchParams.toString(),$$slots:{default:[Ee]},$$scope:{ctx:f}}}),{c(){e=g("script"),e.innerHTML=a,i=D(),G(r.$$.fragment),this.h()},l(l){const t=me("svelte-1pgpgj4",document.head);e=b(t,"SCRIPT",{src:!0,"data-manual":!0,"data-svelte-h":!0}),I(e)!=="svelte-6mxszl"&&(e.innerHTML=a),t.forEach(d),i=w(l),F(r.$$.fragment,l),this.h()},h(){_e(e.src,o="/prism.js")||k(e,"src",o),k(e,"data-manual","")},m(l,t){_(document.head,e),m(l,i,t),B(r,l,t),s=!0},p(l,[t]){const n={};t&2&&(n.title=l[1].source_name||l[1].id||"Loading…"),t&1&&(n.closeUrl="/backgroundJobs?"+l[0].url.searchParams.toString()),t&10&&(n.$$scope={dirty:t,ctx:l}),r.$set(n)},i(l){s||(j(r.$$.fragment,l),s=!0)},o(l){H(r.$$.fragment,l),s=!1},d(l){l&&d(i),d(e),z(r,l)}}}function Se(f,e,a){let o;pe(f,he,s=>a(0,o=s));let i={};const r=async()=>{await ve.get({id:o.params.id,type:o.params.type.toUpperCase()}).then(s=>{s.results.length?a(1,i=s.results[0]):a(1,i=null)})};return f.$$.update=()=>{f.$$.dirty&1&&o.params.id&&r(o.params.id)},[o,i]}class Ae extends ae{constructor(e){super(),ne(this,e,Se,Le,se,{})}}export{Ae as component}; diff --git a/gui/next/build/_app/version.json b/gui/next/build/_app/version.json new file mode 100644 index 0000000..3b4a302 --- /dev/null +++ b/gui/next/build/_app/version.json @@ -0,0 +1 @@ +{"version":"1785837307558"} \ No newline at end of file diff --git a/gui/next/build/favicon.png b/gui/next/build/favicon.png new file mode 100644 index 0000000..9fffb15 Binary files /dev/null and b/gui/next/build/favicon.png differ diff --git a/gui/next/build/index.html b/gui/next/build/index.html new file mode 100644 index 0000000..02bacc3 --- /dev/null +++ b/gui/next/build/index.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/gui/next/build/prism.js b/gui/next/build/prism.js new file mode 100644 index 0000000..382c1e2 --- /dev/null +++ b/gui/next/build/prism.js @@ -0,0 +1,254 @@ +/* PrismJS 1.29.0 +https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+liquid+markup-templating&plugins=line-numbers+normalize-whitespace */ +var _self='undefined'!=typeof window?window:'undefined'!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){ + var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){ + return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,'&').replace(/=g.reach);A+=w.value.length,w=w.next){ + var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){ + var P,L=1;if(y){ + if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){ + var I={cause:f+','+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach); + } + } + } + } + } + }function s(){ + var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0; + }function u(e,n,t){ + var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a; + }function c(e,n,t){ + for(var r=n.next,a=0;a'+i.content+''; + },!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener('message',(function(n){ + var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close(); + }),!1),a):a;var g=a.util.currentScript();function f(){ + a.manual||a.highlightAll(); + }if(g&&(a.filename=g.src,g.hasAttribute('data-manual')&&(a.manual=!0)),!a.manual){ + var h=document.readyState;'loading'===h||'interactive'===h&&g&&g.defer?document.addEventListener('DOMContentLoaded',f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16); + }return a; +}(_self);'undefined'!=typeof module&&module.exports&&(module.exports=Prism),'undefined'!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{'internal-subset':{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,'doctype-tag':/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},'special-attr':[],'attr-value':{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:'attr-equals'},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,'attr-name':{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:'named-entity'},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside['attr-value'].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside['internal-subset'].inside=Prism.languages.markup,Prism.hooks.add('wrap',(function(a){ + 'entity'===a.type&&(a.attributes.title=a.content.replace(/&/,'&')); +})),Object.defineProperty(Prism.languages.markup.tag,'addInlined',{value:function(a,e){ + var s={};s['language-'+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={'included-cdata':{pattern://i,inside:s}};t['language-'+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp('(<__[^>]*>)(?:))*\\]\\]>|(?!)'.replace(/__/g,(function(){ + return a; + })),'i'),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore('markup','cdata',n); +}}),Object.defineProperty(Prism.languages.markup.tag,'addAttribute',{value:function(a,e){ + Prism.languages.markup.tag.inside['special-attr'].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))",'i'),lookbehind:!0,inside:{'attr-name':/^[^\s=]+/,'attr-value':{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,'language-'+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:'attr-equals'},/"|'/]}}}}); +}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend('markup',{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; +!function(e){ + function n(e,n){ + return'___'+e.toUpperCase()+n+'___'; + }Object.defineProperties(e.languages['markup-templating']={},{buildPlaceholders:{value:function(t,a,r,o){ + if(t.language===a){ + var c=t.tokenStack=[];t.code=t.code.replace(r,(function(e){ + if('function'==typeof o&&!o(e))return e;for(var r,i=c.length;-1!==t.code.indexOf(r=n(a,i));)++i;return c[i]=e,r; + })),t.grammar=e.languages.markup; + } + }},tokenizePlaceholders:{value:function(t,a){ + if(t.language===a&&t.tokenStack){ + t.grammar=e.languages[a];var r=0,o=Object.keys(t.tokenStack);!function c(i){ + for(var u=0;u=o.length);u++){ + var g=i[u];if('string'==typeof g||g.content&&'string'==typeof g.content){ + var l=o[r],s=t.tokenStack[l],f='string'==typeof g?g:g.content,p=n(a,l),k=f.indexOf(p);if(k>-1){ + ++r;var m=f.substring(0,k),d=new e.Token(a,e.tokenize(s,t.grammar),'language-'+a,s),h=f.substring(k+p.length),v=[];m&&v.push.apply(v,c([m])),v.push(d),h&&v.push.apply(v,c([h])),'string'==typeof g?i.splice.apply(i,[u,1].concat(v)):g.content=v; + } + }else g.content&&c(g.content); + }return i; + }(t.tokens); + } + }}}); +}(Prism); +Prism.languages.liquid={comment:{pattern:/(^\{%\s*comment\s*%\})[\s\S]+(?=\{%\s*endcomment\s*%\}$)/,lookbehind:!0},delimiter:{pattern:/^\{(?:\{\{|[%\{])-?|-?(?:\}\}|[%\}])\}$/,alias:'punctuation'},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},keyword:/\b(?:as|assign|break|(?:end)?(?:capture|case|comment|for|form|if|paginate|raw|style|tablerow|unless)|continue|cycle|decrement|echo|else|elsif|in|include|increment|limit|liquid|offset|range|render|reversed|section|when|with)\b/,object:/\b(?:address|all_country_option_tags|article|block|blog|cart|checkout|collection|color|country|country_option_tags|currency|current_page|current_tags|customer|customer_address|date|discount_allocation|discount_application|external_video|filter|filter_value|font|forloop|fulfillment|generic_file|gift_card|group|handle|image|line_item|link|linklist|localization|location|measurement|media|metafield|model|model_source|order|page|page_description|page_image|page_title|part|policy|product|product_option|recommendations|request|robots|routes|rule|script|search|selling_plan|selling_plan_allocation|selling_plan_group|shipping_method|shop|shop_locale|sitemap|store_availability|tax_line|template|theme|transaction|unit_price_measurement|user_agent|variant|video|video_source)\b/,function:[{pattern:/(\|\s*)\w+/,lookbehind:!0,alias:'filter'},{pattern:/(\.\s*)(?:first|last|size)/,lookbehind:!0}],boolean:/\b(?:false|nil|true)\b/,range:{pattern:/\.\./,alias:'operator'},number:/\b\d+(?:\.\d+)?\b/,operator:/[!=]=|<>|[<>]=?|[|?:=-]|\b(?:and|contains(?=\s)|or)\b/,punctuation:/[.,\[\]()]/,empty:{pattern:/\bempty\b/,alias:'keyword'}},Prism.hooks.add('before-tokenize',(function(e){ + var t=!1;Prism.languages['markup-templating'].buildPlaceholders(e,'liquid',/\{%\s*comment\s*%\}[\s\S]*?\{%\s*endcomment\s*%\}|\{(?:%[\s\S]*?%|\{\{[\s\S]*?\}\}|\{[\s\S]*?\})\}/g,(function(e){ + var n=/^\{%-?\s*(\w+)/.exec(e);if(n){ + var i=n[1];if('raw'===i&&!t)return t=!0,!0;if('endraw'===i)return t=!1,!0; + }return!t; + })); +})),Prism.hooks.add('after-tokenize',(function(e){ + Prism.languages['markup-templating'].tokenizePlaceholders(e,'liquid'); +})); +!function(){ + if('undefined'!=typeof Prism&&'undefined'!=typeof document){ + var e='line-numbers',n=/\n(?!$)/g,t=Prism.plugins.lineNumbers={getLine:function(n,t){ + if('PRE'===n.tagName&&n.classList.contains(e)){ + var i=n.querySelector('.line-numbers-rows');if(i){ + var r=parseInt(n.getAttribute('data-start'),10)||1,s=r+(i.children.length-1);ts&&(t=s);var l=t-r;return i.children[l]; + } + } + },resize:function(e){ + r([e]); + },assumeViewportIndependence:!0},i=void 0;window.addEventListener('resize',(function(){ + t.assumeViewportIndependence&&i===window.innerWidth||(i=window.innerWidth,r(Array.prototype.slice.call(document.querySelectorAll('pre.line-numbers')))); + })),Prism.hooks.add('complete',(function(t){ + if(t.code){ + var i=t.element,s=i.parentNode;if(s&&/pre/i.test(s.nodeName)&&!i.querySelector('.line-numbers-rows')&&Prism.util.isActive(i,e)){ + i.classList.remove(e),s.classList.add(e);var l,o=t.code.match(n),a=o?o.length+1:1,u=new Array(a+1).join('');(l=document.createElement('span')).setAttribute('aria-hidden','true'),l.className='line-numbers-rows',l.innerHTML=u,s.hasAttribute('data-start')&&(s.style.counterReset='linenumber '+(parseInt(s.getAttribute('data-start'),10)-1)),t.element.appendChild(l),r([s]),Prism.hooks.run('line-numbers',t); + } + } + })),Prism.hooks.add('line-numbers',(function(e){ + e.plugins=e.plugins||{},e.plugins.lineNumbers=!0; + })); + }function r(e){ + if(0!=(e=e.filter((function(e){ + var n,t=(n=e,n?window.getComputedStyle?getComputedStyle(n):n.currentStyle||null:null)['white-space'];return'pre-wrap'===t||'pre-line'===t; + }))).length){ + var t=e.map((function(e){ + var t=e.querySelector('code'),i=e.querySelector('.line-numbers-rows');if(t&&i){ + var r=e.querySelector('.line-numbers-sizer'),s=t.textContent.split(n);r||((r=document.createElement('span')).className='line-numbers-sizer',t.appendChild(r)),r.innerHTML='0',r.style.display='block';var l=r.getBoundingClientRect().height;return r.innerHTML='',{element:e,lines:s,lineHeights:[],oneLinerHeight:l,sizer:r}; + } + })).filter(Boolean);t.forEach((function(e){ + var n=e.sizer,t=e.lines,i=e.lineHeights,r=e.oneLinerHeight;i[t.length-1]=void 0,t.forEach((function(e,t){ + if(e&&e.length>1){ + var s=n.appendChild(document.createElement('span'));s.style.display='block',s.textContent=e; + }else i[t]=r; + })); + })),t.forEach((function(e){ + for(var n=e.sizer,t=e.lineHeights,i=0,r=0;rt&&(o[l]='\n'+o[l],a=s); + }n[i]=o.join(''); + }return n.join('\n'); + }},'undefined'!=typeof module&&module.exports&&(module.exports=n),Prism.plugins.NormalizeWhitespace=new n({'remove-trailing':!0,'remove-indent':!0,'left-trim':!0,'right-trim':!0}),Prism.hooks.add('before-sanity-check',(function(e){ + var n=Prism.plugins.NormalizeWhitespace;if((!e.settings||!1!==e.settings['whitespace-normalization'])&&Prism.util.isActive(e.element,'whitespace-normalization',!0))if(e.element&&e.element.parentNode||!e.code){ + var r=e.element.parentNode;if(e.code&&r&&'pre'===r.nodeName.toLowerCase()){ + for(var i in null==e.settings&&(e.settings={}),t)if(Object.hasOwnProperty.call(t,i)){ + var o=t[i];if(r.hasAttribute('data-'+i))try{ + var a=JSON.parse(r.getAttribute('data-'+i)||'true');typeof a===o&&(e.settings[i]=a); + }catch(e){} + }for(var l=r.childNodes,s='',c='',u=!1,m=0;m=6.0.0" + } + }, + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "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" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@playwright/test": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.55.3.tgz", + "integrity": "sha512-qyX8+93kK/7R5BEXPC2PjUt0+fS/VO2BVHjEHyIEWiYn88rcRBHmdLgoJjktBltgAf+NY7RfCGB1SoyKS/p9kg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.55.3.tgz", + "integrity": "sha512-6sHrL42bjt5dHQzJ12Q4vMKfN+kUnZ0atHHnv4V0Wd9JMTk7FDzSY35+7qbz3ypQYMBPANbpGK7JpnWNnhGt8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.55.3.tgz", + "integrity": "sha512-1ht2SpGIjEl2igJ9AbNpPIKzb1B5goXOcmtD0RFxnwNuMxqkR6AUaaErZz+4o+FKmzxcSNBOLrzsICZVNYa1Rw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.55.3.tgz", + "integrity": "sha512-FYZ4iVunXxtT+CZqQoPVwPhH7549e/Gy7PIRRtq4t5f/vt54pX6eG9ebttRH6QSH7r/zxAFA4EZGlQ0h0FvXiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.55.3.tgz", + "integrity": "sha512-M/mwDCJ4wLsIgyxv2Lj7Len+UMHd4zAXu4GQ2UaCdksStglWhP61U3uowkaYBQBhVoNpwx5Hputo8eSqM7K82Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.55.3.tgz", + "integrity": "sha512-5jZT2c7jBCrMegKYTYTpni8mg8y3uY8gzeq2ndFOANwNuC/xJbVAoGKR9LhMDA0H3nIhvaqUoBEuJoICBudFrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.55.3.tgz", + "integrity": "sha512-YeGUhkN1oA+iSPzzhEjVPS29YbViOr8s4lSsFaZKLHswgqP911xx25fPOyE9+khmN6W4VeM0aevbDp4kkEoHiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.55.3.tgz", + "integrity": "sha512-eo0iOIOvcAlWB3Z3eh8pVM8hZ0oVkK3AjEM9nSrkSug2l15qHzF3TOwT0747omI6+CJJvl7drwZepT+re6Fy/w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.55.3.tgz", + "integrity": "sha512-DJay3ep76bKUDImmn//W5SvpjRN5LmK/ntWyeJs/dcnwiiHESd3N4uteK9FDLf0S0W8E6Y0sVRXpOCoQclQqNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.55.3.tgz", + "integrity": "sha512-BKKWQkY2WgJ5MC/ayvIJTHjy0JUGb5efaHCUiG/39sSUvAYRBaO3+/EK0AZT1RF3pSj86O24GLLik9mAYu0IJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.55.3.tgz", + "integrity": "sha512-Q9nVlWtKAG7ISW80OiZGxTr6rYtyDSkauHUtvkQI6TNOJjFvpj4gcH+KaJihqYInnAzEEUetPQubRwHef4exVg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.55.3.tgz", + "integrity": "sha512-2H5LmhzrpC4fFRNwknzmmTvvyJPHwESoJgyReXeFoYYuIDfBhP29TEXOkCJE/KxHi27mj7wDUClNq78ue3QEBQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.55.3.tgz", + "integrity": "sha512-9S542V0ie9LCTznPYlvaeySwBeIEa7rDBgLHKZ5S9DBgcqdJYburabm8TqiqG6mrdTzfV5uttQRHcbKff9lWtA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.55.3.tgz", + "integrity": "sha512-ukxw+YH3XXpcezLgbJeasgxyTbdpnNAkrIlFGDl7t+pgCxZ89/6n1a+MxlY7CegU+nDgrgdqDelPRNQ/47zs0g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.55.3.tgz", + "integrity": "sha512-Iauw9UsTTvlF++FhghFJjqYxyXdggXsOqGpFBylaRopVpcbfyIIsNvkf9oGwfgIcf57z3m8+/oSYTo6HutBFNw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.55.3.tgz", + "integrity": "sha512-3OqKAHSEQXKdq9mQ4eajqUgNIK27VZPW3I26EP8miIzuKzCJ3aW3oEn2pzF+4/Hj/Moc0YDsOtBgT5bZ56/vcA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.55.3.tgz", + "integrity": "sha512-0CM8dSVzVIaqMcXIFej8zZrSFLnGrAE8qlNbbHfTw1EEPnFTg1U1ekI0JdzjPyzSfUsHWtodilQQG/RA55berA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.55.3.tgz", + "integrity": "sha512-+fgJE12FZMIgBaKIAGd45rxf+5ftcycANJRWk8Vz0NnMTM5rADPGuRFTYar+Mqs560xuART7XsX2lSACa1iOmQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.55.3.tgz", + "integrity": "sha512-tMD7NnbAolWPzQlJQJjVFh/fNH3K/KnA7K8gv2dJWCwwnaK6DFCYST1QXYWfu5V0cDwarWC8Sf/cfMHniNq21A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.55.3.tgz", + "integrity": "sha512-u5KsqxOxjEeIbn7bUK1MPM34jrnPwjeqgyin4/N6e/KzXKfpE9Mi0nCxcQjaM9lLmPcHmn/xx1yOjgTMtu1jWQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.55.3.tgz", + "integrity": "sha512-vo54aXwjpTtsAnb3ca7Yxs9t2INZg7QdXN/7yaoG7nPGbOBXYXQY41Km+S1Ov26vzOAzLcAjmMdjyEqS1JkVhw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.55.3.tgz", + "integrity": "sha512-HI+PIVZ+m+9AgpnY3pt6rinUdRYrGHvmVdsNQ4odNqQ/eRF78DVpMR7mOq7nW06QxpczibwBmeQzB68wJ+4W4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.55.3.tgz", + "integrity": "sha512-vRByotbdMo3Wdi+8oC2nVxtc3RkkFKrGaok+a62AT8lz/YBuQjaVYAS5Zcs3tPzW43Vsf9J0wehJbUY5xRSekA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.55.3.tgz", + "integrity": "sha512-POZHq7UeuzMJljC5NjKi8vKMFN6/5EOqcX1yGntNLp7rUTpBAXQ1hW8kWPFxYLv07QMcNM75xqVLGPWQq6TKFA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.55.3.tgz", + "integrity": "sha512-aPFONczE4fUFKNXszdvnd2GqKEYQdV5oEsIbKPujJmWlCI9zEsv1Otig8RKK+X9bed9gFUN6LAeN4ZcNuu4zjg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz", + "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, + "node_modules/@sveltejs/adapter-auto": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-3.3.1.tgz", + "integrity": "sha512-5Sc7WAxYdL6q9j/+D0jJKjGREGlfIevDyHSQ2eNETHcB1TKlQWHcAo8AS8H1QdjNvSXpvOwNjykDUHPEAyGgdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-meta-resolve": "^4.1.0" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, + "node_modules/@sveltejs/adapter-static": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.10.tgz", + "integrity": "sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.50.0.tgz", + "integrity": "sha512-Hj8sR8O27p2zshFEIJzsvfhLzxga/hWw6tRLnBjMYw70m1aS9BSYCqAUtzDBjRREtX1EvLMYgaC0mYE3Hz4KWA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/cookie": "^0.6.0", + "acorn": "^8.14.1", + "cookie": "^0.6.0", + "devalue": "^5.6.2", + "esm-env": "^1.2.2", + "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" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": "^5.3.3", + "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", + "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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/@types/autosize": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/autosize/-/autosize-4.0.3.tgz", + "integrity": "sha512-o0ZyU3ePp3+KRbhHsY4ogjc+ZQWgVN5h6j8BHW5RII4cFKi6PEKK9QPAcphJVkD0dGpyFnD3VRR0WMvHVjCv9w==", + "license": "MIT" + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/autosize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/autosize/-/autosize-6.0.1.tgz", + "integrity": "sha512-f86EjiUKE6Xvczc4ioP1JBlWG7FKrE13qe/DxBCpe8GCipCq2nFw73aO8QEBKHfSbYGDN5eB9jXWKen7tspDqQ==", + "license": "MIT" + }, + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": 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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/devalue": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", + "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "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/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "license": "CC0-1.0" + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/playwright": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "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" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.3.tgz", + "integrity": "sha512-y9yUpfQvetAjiDLtNMf1hL9NXchIJgWt6zIKeoB+tCd3npX08Eqfzg60V9DhIGVMtQ0AlMkFw5xa+AQ37zxnAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.55.3", + "@rollup/rollup-android-arm64": "4.55.3", + "@rollup/rollup-darwin-arm64": "4.55.3", + "@rollup/rollup-darwin-x64": "4.55.3", + "@rollup/rollup-freebsd-arm64": "4.55.3", + "@rollup/rollup-freebsd-x64": "4.55.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.55.3", + "@rollup/rollup-linux-arm-musleabihf": "4.55.3", + "@rollup/rollup-linux-arm64-gnu": "4.55.3", + "@rollup/rollup-linux-arm64-musl": "4.55.3", + "@rollup/rollup-linux-loong64-gnu": "4.55.3", + "@rollup/rollup-linux-loong64-musl": "4.55.3", + "@rollup/rollup-linux-ppc64-gnu": "4.55.3", + "@rollup/rollup-linux-ppc64-musl": "4.55.3", + "@rollup/rollup-linux-riscv64-gnu": "4.55.3", + "@rollup/rollup-linux-riscv64-musl": "4.55.3", + "@rollup/rollup-linux-s390x-gnu": "4.55.3", + "@rollup/rollup-linux-x64-gnu": "4.55.3", + "@rollup/rollup-linux-x64-musl": "4.55.3", + "@rollup/rollup-openbsd-x64": "4.55.3", + "@rollup/rollup-openharmony-arm64": "4.55.3", + "@rollup/rollup-win32-arm64-msvc": "4.55.3", + "@rollup/rollup-win32-ia32-msvc": "4.55.3", + "@rollup/rollup-win32-x64-gnu": "4.55.3", + "@rollup/rollup-win32-x64-msvc": "4.55.3", + "fsevents": "~2.3.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==", + "dev": true, + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "dev": true, + "license": "MIT" + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "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==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svelte": { + "version": "4.2.20", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.20.tgz", + "integrity": "sha512-eeEgGc2DtiUil5ANdtd8vPwt9AgaMdnuUFnPft9F5oMvU/FHu5IHFic+p1dR/UOB7XU2mX2yHW+NcTch4DCh5Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte-autosize": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/svelte-autosize/-/svelte-autosize-1.1.5.tgz", + "integrity": "sha512-whiND/GthFDG9Ansvil21qxmFhSMfuooVZPg40sbcLHYKR9srYhnfrP5qdw8MXHAm6DY9g5PawurOAWl34fK7g==", + "license": "MIT", + "dependencies": { + "@types/autosize": "^4.0.3", + "autosize": "*" + }, + "peerDependencies": { + "svelte": ">=3.0.0" + } + }, + "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==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/svelte-json-tree": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/svelte-json-tree/-/svelte-json-tree-2.2.0.tgz", + "integrity": "sha512-zcfepTrJ6xhpdgRZEujmiFh+ainRw7HO4Bsoh8PMAsm7fkgUPtnrZi3An8tmCFY8jajYhMrauHsd1S1XTeuiCw==", + "license": "MIT", + "peerDependencies": { + "svelte": "^4.0.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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "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/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + } + } +} diff --git a/gui/next/package.json b/gui/next/package.json new file mode 100644 index 0000000..22be143 --- /dev/null +++ b/gui/next/package.json @@ -0,0 +1,25 @@ +{ + "name": "admin-v2", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "test": "playwright test" + }, + "devDependencies": { + "@playwright/test": "1.57.0", + "@sveltejs/adapter-auto": "^3.3.1", + "@sveltejs/adapter-static": "^3.0.6", + "@sveltejs/kit": "^2.7.3", + "@sveltejs/vite-plugin-svelte": "^3.1.2", + "svelte": "^4.2.19", + "vite": "^5.4.10" + }, + "type": "module", + "dependencies": { + "svelte-autosize": "^1.1.0", + "svelte-json-tree": "^2.2.0" + } +} diff --git a/gui/next/playwright.config.js b/gui/next/playwright.config.js new file mode 100644 index 0000000..87cd44b --- /dev/null +++ b/gui/next/playwright.config.js @@ -0,0 +1,78 @@ +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * @see https://playwright.dev/docs/test-configuration + */ +export default defineConfig({ + testDir: './playwright', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 1 : 0, + workers: 6, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: 'http://localhost:4173/', + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + /* save screenshots when failed, only on CI */ + screenshot: process.env.CI ? 'only-on-failure' : 'off' + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] } + } + + // { + // name: 'firefox', + // use: { ...devices['Desktop Firefox'] }, + // }, + + // { + // name: 'webkit', + // use: { ...devices['Desktop Safari'] }, + // }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ] + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: 'npm run start', + // url: 'http://127.0.0.1:3000', + // reuseExistingServer: !process.env.CI, + // }, +}); + diff --git a/gui/next/pnpm-lock.yaml b/gui/next/pnpm-lock.yaml new file mode 100644 index 0000000..037849d --- /dev/null +++ b/gui/next/pnpm-lock.yaml @@ -0,0 +1,960 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + svelte-autosize: + specifier: ^1.1.0 + version: 1.1.0 + svelte-json-tree: + specifier: ^2.2.0 + version: 2.2.0(svelte@4.2.19) + devDependencies: + '@playwright/test': + specifier: ^1.53.1 + version: 1.53.1 + '@sveltejs/adapter-auto': + specifier: ^3.3.1 + version: 3.3.1(@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10))(svelte@4.2.19)(vite@5.4.10)) + '@sveltejs/adapter-static': + specifier: ^3.0.6 + version: 3.0.6(@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10))(svelte@4.2.19)(vite@5.4.10)) + '@sveltejs/kit': + specifier: ^2.7.3 + version: 2.7.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10))(svelte@4.2.19)(vite@5.4.10) + '@sveltejs/vite-plugin-svelte': + specifier: ^3.1.2 + version: 3.1.2(svelte@4.2.19)(vite@5.4.10) + svelte: + specifier: ^4.2.19 + version: 4.2.19 + vite: + specifier: ^5.4.10 + version: 5.4.10 + +packages: + + '@ampproject/remapping@2.2.1': + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.3': + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.1': + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.1.2': + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.19': + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + + '@playwright/test@1.53.1': + resolution: {integrity: sha512-Z4c23LHV0muZ8hfv4jw6HngPJkbbtZxTkxPNIg7cJcTc9C28N/p2q7g3JZS2SiKBBHJ3uM1dgDye66bB7LEk5w==} + engines: {node: '>=18'} + hasBin: true + + '@polka/url@1.0.0-next.24': + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + cpu: [x64] + os: [win32] + + '@sveltejs/adapter-auto@3.3.1': + resolution: {integrity: sha512-5Sc7WAxYdL6q9j/+D0jJKjGREGlfIevDyHSQ2eNETHcB1TKlQWHcAo8AS8H1QdjNvSXpvOwNjykDUHPEAyGgdQ==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + + '@sveltejs/adapter-static@3.0.6': + resolution: {integrity: sha512-MGJcesnJWj7FxDcB/GbrdYD3q24Uk0PIL4QIX149ku+hlJuj//nxUbb0HxUTpjkecWfHjVveSUnUaQWnPRXlpg==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + + '@sveltejs/kit@2.7.3': + resolution: {integrity: sha512-Vx7nq5MJ86I8qXYsVidC5PX6xm+uxt8DydvOdmJoyOK7LvGP18OFEG359yY+aa51t6pENvqZAMqAREQQx1OI2Q==} + engines: {node: '>=18.13'} + hasBin: true + 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 + + '@sveltejs/vite-plugin-svelte-inspector@2.1.0': + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} + 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 + + '@sveltejs/vite-plugin-svelte@3.1.2': + resolution: {integrity: sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + autosize@6.0.1: + resolution: {integrity: sha512-f86EjiUKE6Xvczc4ioP1JBlWG7FKrE13qe/DxBCpe8GCipCq2nFw73aO8QEBKHfSbYGDN5eB9jXWKen7tspDqQ==} + + axobject-query@4.0.0: + resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} + + code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + devalue@5.1.1: + resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + playwright-core@1.53.1: + resolution: {integrity: sha512-Z46Oq7tLAyT0lGoFx4DOuB1IA9D1TPj0QkYxpPVUnGDqHHvDpCftu1J2hM2PiWsNMoZh8+LQaarAWcDfPBc6zg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.53.1: + resolution: {integrity: sha512-LJ13YLr/ocweuwxyGf1XNFWIU4M2zUSo149Qbp+A4cpwDjsxRPj7k6H25LBrEHiEwxvRbD8HdwvQmRMSvquhYw==} + engines: {node: '>=18'} + hasBin: true + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + + sirv@3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + svelte-autosize@1.1.0: + resolution: {integrity: sha512-CPHq/K0ssrwuHBxFCCOtpWtXZwk4edjEIZ2mJT4KKzjSBq+CO9nOmstjpOh5TpoOf/4MtDcwAwnWmktqANjU6A==} + + svelte-hmr@0.16.0: + resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + + svelte-json-tree@2.2.0: + resolution: {integrity: sha512-zcfepTrJ6xhpdgRZEujmiFh+ainRw7HO4Bsoh8PMAsm7fkgUPtnrZi3An8tmCFY8jajYhMrauHsd1S1XTeuiCw==} + peerDependencies: + svelte: ^4.0.0 + + svelte@4.2.19: + resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==} + engines: {node: '>=16'} + + tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + vite@5.4.10: + resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + 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 + + vitefu@0.2.5: + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + +snapshots: + + '@ampproject/remapping@2.2.1': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@jridgewell/gen-mapping@0.3.3': + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + + '@jridgewell/resolve-uri@3.1.1': {} + + '@jridgewell/set-array@1.1.2': {} + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.19': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@playwright/test@1.53.1': + dependencies: + playwright: 1.53.1 + + '@polka/url@1.0.0-next.24': {} + + '@rollup/rollup-android-arm-eabi@4.24.0': + optional: true + + '@rollup/rollup-android-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-x64@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.24.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.24.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.0': + optional: true + + '@sveltejs/adapter-auto@3.3.1(@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10))(svelte@4.2.19)(vite@5.4.10))': + dependencies: + '@sveltejs/kit': 2.7.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10))(svelte@4.2.19)(vite@5.4.10) + import-meta-resolve: 4.1.0 + + '@sveltejs/adapter-static@3.0.6(@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10))(svelte@4.2.19)(vite@5.4.10))': + dependencies: + '@sveltejs/kit': 2.7.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10))(svelte@4.2.19)(vite@5.4.10) + + '@sveltejs/kit@2.7.3(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10))(svelte@4.2.19)(vite@5.4.10)': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.10) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 5.1.1 + esm-env: 1.0.0 + import-meta-resolve: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.10 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 3.0.0 + svelte: 4.2.19 + tiny-glob: 0.2.9 + vite: 5.4.10 + + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10))(svelte@4.2.19)(vite@5.4.10)': + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.10) + debug: 4.3.4 + svelte: 4.2.19 + vite: 5.4.10 + transitivePeerDependencies: + - supports-color + + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10)': + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.10))(svelte@4.2.19)(vite@5.4.10) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.10 + svelte: 4.2.19 + svelte-hmr: 0.16.0(svelte@4.2.19) + vite: 5.4.10 + vitefu: 0.2.5(vite@5.4.10) + transitivePeerDependencies: + - supports-color + + '@types/cookie@0.6.0': {} + + '@types/estree@1.0.5': {} + + '@types/estree@1.0.6': {} + + acorn@8.10.0: {} + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + autosize@6.0.1: {} + + axobject-query@4.0.0: + dependencies: + dequal: 2.0.3 + + code-red@1.0.4: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + '@types/estree': 1.0.5 + acorn: 8.10.0 + estree-walker: 3.0.3 + periscopic: 3.1.0 + + cookie@0.6.0: {} + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + deepmerge@4.3.1: {} + + dequal@2.0.3: {} + + devalue@5.1.1: {} + + esbuild@0.21.5: + 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 + + esm-env@1.0.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.5 + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + globalyzer@0.1.0: {} + + globrex@0.1.2: {} + + import-meta-resolve@4.1.0: {} + + is-reference@3.0.2: + dependencies: + '@types/estree': 1.0.5 + + kleur@4.1.5: {} + + locate-character@3.0.0: {} + + magic-string@0.30.10: + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + mdn-data@2.0.30: {} + + mri@1.2.0: {} + + mrmime@2.0.0: {} + + ms@2.1.2: {} + + nanoid@3.3.7: {} + + periscopic@3.1.0: + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + + picocolors@1.1.0: {} + + playwright-core@1.53.1: {} + + playwright@1.53.1: + dependencies: + playwright-core: 1.53.1 + optionalDependencies: + fsevents: 2.3.2 + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + + rollup@4.24.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 + fsevents: 2.3.3 + + sade@1.8.1: + dependencies: + mri: 1.2.0 + + set-cookie-parser@2.6.0: {} + + sirv@3.0.0: + dependencies: + '@polka/url': 1.0.0-next.24 + mrmime: 2.0.0 + totalist: 3.0.1 + + source-map-js@1.2.0: {} + + source-map-js@1.2.1: {} + + svelte-autosize@1.1.0: + dependencies: + autosize: 6.0.1 + + svelte-hmr@0.16.0(svelte@4.2.19): + dependencies: + svelte: 4.2.19 + + svelte-json-tree@2.2.0(svelte@4.2.19): + dependencies: + svelte: 4.2.19 + + svelte@4.2.19: + dependencies: + '@ampproject/remapping': 2.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + '@types/estree': 1.0.5 + acorn: 8.10.0 + aria-query: 5.3.0 + axobject-query: 4.0.0 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.10 + periscopic: 3.1.0 + + tiny-glob@0.2.9: + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + + totalist@3.0.1: {} + + vite@5.4.10: + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.0 + optionalDependencies: + fsevents: 2.3.3 + + vitefu@0.2.5(vite@5.4.10): + optionalDependencies: + vite: 5.4.10 diff --git a/gui/next/src/app.html b/gui/next/src/app.html new file mode 100644 index 0000000..df63da8 --- /dev/null +++ b/gui/next/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
    %sveltekit.body%
    + + diff --git a/gui/next/src/lib/api/backgroundJob.js b/gui/next/src/lib/api/backgroundJob.js new file mode 100644 index 0000000..da57157 --- /dev/null +++ b/gui/next/src/lib/api/backgroundJob.js @@ -0,0 +1,125 @@ +/* + handles operations on background jobs +*/ + +// imports +// ------------------------------------------------------------------------ +import { graphql } from '$lib/api/graphql'; + + + +const backgroundJob = { + + // purpose: downloads background jobs list from API + // arguments: filters to apply to query (object) + // returns: background jobs in json format (array of objects) + // ------------------------------------------------------------------------ + get: async (filters) => { + + let idFilter = ''; + if(filters?.id){ + idFilter = `id: { value: "${filters.id}" }`; + } + + let typeFilter = ''; + if(filters?.type){ + typeFilter = `type: ${filters.type}`; + } + + const query = ` + query { + admin_background_jobs( + per_page: 20, + page: ${filters?.page || 1} + filter: { + ${idFilter} + ${typeFilter} + } + ) { + has_next_page, + has_previous_page, + total_pages, + results { + id + arguments + attempts + created_at + dead_at + error + error_class + error_message + failed_at + form_configuration_name + form_name + id + label + liquid_body + partial_name + locked_at + queue + resource_id + resource_type + retry_at + run_at + source_name + source_type + started_at + updated_at + } + } + }`; + + return graphql({ query }, false).then(data => data.admin_background_jobs); + + }, + + + // purpose: deletes a planned background job + // arguments: id of the job to delete (string) + // ------------------------------------------------------------------------ + delete: async (args) => { + + let properties = Object.fromEntries(args.properties.entries()); + const id = properties.id; + + const query = ` + mutation { + admin_background_job_delete(id: "${id}") { + id + } + } + `; + + return graphql({ query }, false); + + }, + + + // purpose: runs the background job again + // arguments: id of the job to run (string) + // ------------------------------------------------------------------------ + retry: async (args) => { + + let properties = Object.fromEntries(args.properties.entries()); + const id = properties.id; + + const query = ` + mutation { + admin_background_job_retry(id: "${id}"){ + id + } + } + `; + + return graphql({ query }, false); + + } + + +}; + + + +// exports +// ------------------------------------------------------------------------ +export { backgroundJob }; diff --git a/gui/next/src/lib/api/constant.js b/gui/next/src/lib/api/constant.js new file mode 100644 index 0000000..13b730d --- /dev/null +++ b/gui/next/src/lib/api/constant.js @@ -0,0 +1,68 @@ +/* + operation on instance constants +*/ + + +// imports +// ------------------------------------------------------------------------ +import { graphql } from '$lib/api/graphql'; + + + +// purpose: gets constants from the instance +// returns: array of objects with contants (array) +// ------------------------------------------------------------------------ +const constant = { + + get: () => { + const query = ` + query { + constants( + per_page: 100 + ) { + results { + name, + value, + updated_at + } + } + }`; + + return graphql({ query }, false).then(data => data.constants.results); + }, + + edit: (data) => { + data = Object.fromEntries(data.entries()); + + const query = ` + mutation { + constant_set(name: "${data.name}", value: "${data.value}"){ + name, + value + } + }`; + + return graphql({ query }, false); + }, + + delete: (data) => { + data = Object.fromEntries(data.entries()); + + const query = ` + mutation { + constant_unset(name: "${data.name}"){ + name + } + } + `; + + return graphql({ query }, false); + } + +}; + + + +// exports +// ------------------------------------------------------------------------ +export { constant }; diff --git a/gui/next/src/lib/api/graphql.js b/gui/next/src/lib/api/graphql.js new file mode 100644 index 0000000..921d05a --- /dev/null +++ b/gui/next/src/lib/api/graphql.js @@ -0,0 +1,38 @@ +/* + an interface to call graphql queries against the instance +*/ + + + +// purpose: run a graphql query +// arguments: body of the query (string) +// returns: data returned from the database (object) +// ------------------------------------------------------------------------ +const graphql = (body) => { + // the URL to use to connect to the API, in development or preview mode we are using the default pos-cli gui serve port + const url = (typeof window !== 'undefined' && window.location.port !== '4173' && window.location.port !== '5173') ? `http://localhost:${parseInt(window.location.port)}/api/graph` : 'http://localhost:3333/api/graph'; + + return fetch(url, { + headers: { 'Content-Type': 'application/json' }, + method: 'POST', + body: JSON.stringify(body) + }) + .then((res) => res.json()) + .then((res) => { + if(res.errors) { + res.errors.forEach(error => { + console.log(body.query); + console.info(error); + }); + return res; + } + + return res && res.data; + }); +}; + + + +// exports +// ------------------------------------------------------------------------ +export { graphql }; diff --git a/gui/next/src/lib/api/logs.js b/gui/next/src/lib/api/logs.js new file mode 100644 index 0000000..d80ff26 --- /dev/null +++ b/gui/next/src/lib/api/logs.js @@ -0,0 +1,47 @@ +/* + handles downloading logs from API +*/ + + + +const logs = { + + // purpose: downloads logs from API + // arguments: object + // last - optional, the id of the last log downloaded + // returns: logs in json format + // ------------------------------------------------------------------------ + get: async (args) => { + // the URL to use to connect to the API, in development or preview mode we are using the default pos-cli gui serve port + const url = (typeof window !== 'undefined' && window.location.port !== '4173' && window.location.port !== '5173') ? `http://localhost:${parseInt(window.location.port)}/api/logs` : 'http://localhost:3333/api/logs'; + + const last = args.last ?? null; + + return fetch(`${url}?lastId=` + last) + .then(response => { + if(response.ok){ + return response.json(); + } + + return Promise.reject(response); + }) + .then(data => { + // add a timestamp to each log to know when was it downloaded + data.logs.forEach(log => { + log.downloaded_at = Date.now(); + }); + return data; + }) + .catch(error => { + return { error: error }; + }); + + } + +}; + + + +// exports +// ------------------------------------------------------------------------ +export { logs }; diff --git a/gui/next/src/lib/api/record.js b/gui/next/src/lib/api/record.js new file mode 100644 index 0000000..09c9aaa --- /dev/null +++ b/gui/next/src/lib/api/record.js @@ -0,0 +1,286 @@ +/* + operations on records +*/ + + +// imports +// ------------------------------------------------------------------------ +import { graphql } from '$lib/api/graphql'; +import { state } from '$lib/state'; +import { buildMutationIngredients, columnTypeToVariableType } from '$lib/helpers/buildMutationIngredients'; + + +// purpose: build the strings and objects needed to pass with GraphQL request to filter the properties +// arguments: list of properties to filter the data with (array of objects) that icludes: +// attribute_type, property, operation, value +// returns: GraphQL variables definitions, e.g. '($variable_name: String. $another_variable: Int)' (string) +// variables with their values to pass with the query, e.g. { variable_name: 'Variable value', another_variable: 5 } (object) +// filters used to filter properties in GraphQL requests, +// e.g. 'properties: [name: "variable_name", contains: $variable_value]' (string) +// ------------------------------------------------------------------------ +const buildQueryIngredients = (filters = []) => { + // graphql variables definition for the query (string) + let variablesDefinition = ''; + // variables passed with the query (object) + let variables = {}; + // filters passed with the query (string) + let propertiesFilter = ''; + // list of data types for variables in each operations, unmentioned are considered 'string' (object) + const operationsForType = { + string: ['array_contains', 'not_array_contains', 'contains', 'ends_with', 'not_contains', 'not_ends_with', 'not_starts_with', 'not_value', 'starts_with', 'value'], + int: ['value_int', 'not_value_int'], + float: ['not_value_float', 'value_float'], + bool: ['exists', 'not_value_boolean', 'value_boolean'], + range: ['range'], + array: ['value_array', 'not_value_array', 'value_in', 'not_value_in', 'array_overlaps', 'not_array_overlaps'] + }; + + // build the data for each applied filter + for(const filter of filters){ + + // if there is no value, don't output filter string for that filter which effectively clears it + if(!filter.minFilterValue && !filter.maxFilterValue && !filter.value){ + break; + } + + // storing the type for current filter + let filterType = ''; + // we are getting each filter value as a string, so it needs to be parsed for graphql request + let parsedFilterValue = ''; + + if(operationsForType.int.includes(filter.operation)){ + filterType = 'integer'; + parsedFilterValue = parseInt(filter.value); + } else if (operationsForType.float.includes(filter.operation)){ + filterType = 'float'; + parsedFilterValue = parseFloat(filter.value); + } else if (operationsForType.bool.includes(filter.operation)){ + filterType = 'boolean'; + parsedFilterValue = filter.value === 'true' ? true : false; + } else if(operationsForType.range.includes(filter.operation)){ + filterType = 'range'; + parsedFilterValue = {}; + parsedFilterValue[filter.minFilter] = filter.minFilterValue; + parsedFilterValue[filter.maxFilter] = filter.maxFilterValue; + } else if(operationsForType.array.includes(filter.operation)){ + filterType = 'array'; + parsedFilterValue = JSON.parse(filter.value); + } else { + filterType = 'string'; + parsedFilterValue = filter.value; + } + + // skipping the ID as it is not filtered as a property + if(filter.name !== 'id'){ + // add current filter variable to variables definition string + variablesDefinition += `, $${filter.name}: ${columnTypeToVariableType[filterType] || 'String'}`; + + // add the current filter to the variables object passed with the request (corresponding with variables definition) + variables[filter.name] = parsedFilterValue; + + // add current filter to properties filters string passed in GraphQL request + propertiesFilter += `{ + name: "${filter.name}", + ${filter.operation}: $${filter.name} + }`; + } + + }; + + // build the final variables definition string with all the needed variables and their types + if(variablesDefinition.length){ + variablesDefinition = variablesDefinition.slice(2); // remove first comma ', ' + variablesDefinition = `(${variablesDefinition})`; // add brackets to definition string + } + + // build final string for filtering the properties + propertiesFilter = ` + properties: [${propertiesFilter}] + `; + + return { variablesDefinition, variables, propertiesFilter }; +}; + + +const record = { + + // purpose: gets records from the database for fiven table id + // arguments: (object) + // id of the table that you need the records for (int) + // filters to the graphql query (object) + // if you want to get also the deleted items (bool) + // returns: array of records as they appear in the database (array) + // ------------------------------------------------------------------------ + get: (args) => { + + const defaults = { + deleted: false, + filters: { + page: 1 + } + }; + const params = {...defaults, ...args}; + + const tableFilter = params.table ? `table_id: { value: ${params.table} }` : ''; + + const idFilterIndex = params.filters?.attributes?.findIndex(attribute => attribute.name === 'id'); + let idFilter = ''; + if(idFilterIndex >= 0 && params.filters.attributes[idFilterIndex].value){ + idFilter = `id: { ${params.filters.attributes[idFilterIndex].operation}: ${params.filters.attributes[idFilterIndex].value} }`; + } + + let sort = ''; + if(params.sort){ + if(params.sort.by === 'id' || params.sort.by === 'created_at' || params.sort.by === 'updated_at'){ + sort = `${params.sort.by}: { order: ${params.sort.order} }`; + } else { + sort = `properties: { name: "${params.sort.by}", order: ${params.sort.order} }`; + } + } else { + sort = 'created_at: { order: DESC }'; + } + + const deletedFilter = params.deleted === 'true' ? 'deleted_at: { exists: true }' : ''; + + const propertiesFilterData = buildQueryIngredients(params.filters?.attributes); + + const query = ` + query${propertiesFilterData.variablesDefinition} { + records( + page: ${params.filters.page} + per_page: 20, + sort: { ${sort} }, + filter: { + ${tableFilter} + ${idFilter} + ${deletedFilter} + ${propertiesFilterData.propertiesFilter} + } + ) { + current_page + total_pages + results { + id + created_at + updated_at + deleted_at + properties + } + } + }`; + + return graphql({ query, variables: propertiesFilterData.variables }).then(data => { + state.data('records', data.records); + }); + }, + + + // purpose: creates new record in the database + // arguments: + // returns: id of the newly created record (int) + // ------------------------------------------------------------------------ + create: (args) => { + const formDataEntries = Object.fromEntries(args.properties.entries()); + const table = formDataEntries.tableName; + const ingredients = buildMutationIngredients(args.properties); + + const query = ` + mutation${ingredients.variablesDefinition} { + record_create(record: { + table: "${table}", + properties: [${ingredients.properties}] + }) { + id + } + }`; + + return graphql({ query, variables: ingredients.variables }); + }, + + + // purpose: edits record in the database + // arguments: (object) + // tableName (string) - name of the table that you are adding the record in + // id (int) - id of the record to edit + // properties (FormData) - key-value pairs for the record + // returns: id of the edited record (int) + // ------------------------------------------------------------------------ + edit: (args) => { + let formDataEntries = Object.fromEntries(args.properties.entries()); + const table = formDataEntries.tableName; + const id = formDataEntries.recordId; + const ingredients = buildMutationIngredients(args.properties); + + const query = ` + mutation${ingredients.variablesDefinition} { + record_update( + id: ${id}, + record: { + table: "${table}" + properties: [${ingredients.properties}] + } + ) { + id + } + }`; + + return graphql({ query, variables: ingredients.variables }); + }, + + + // purpose: deletes record in the database + // arguments: (object) + // tableName (string) - name of the table that you are deleting the record from + // id (int) - id of the record to delete + // returns: id of the deleted record (int) + // ------------------------------------------------------------------------ + delete: (args) => { + let properties = Object.fromEntries(args.properties.entries()); + const table = properties.tableName; + const id = properties.recordId; + + const query = ` + mutation { + record_delete(table: "${table}", id: ${id}) { + id + } + }`; + + return graphql({ query }); + }, + + + // purpose: restores record from the deleted state back to the fresh + // arguments: (object) + // tableName (string) - name of the table that you are deleting the record from + // id (int) - id of the record to delete + // returns: id of the deleted record (int) + // ------------------------------------------------------------------------ + restore: (args) => { + let properties = Object.fromEntries(args.properties.entries()); + const table = properties.tableName; + const id = properties.recordId; + + const query = ` + mutation { + record_update( + id: ${id}, + record: { + table: "${table}", + deleted_at: null + } + ) { + id + } + }`; + + return graphql({ query }); + } + +}; + + + +// exports +// ------------------------------------------------------------------------ +export { record }; diff --git a/gui/next/src/lib/api/table.js b/gui/next/src/lib/api/table.js new file mode 100644 index 0000000..5114ab8 --- /dev/null +++ b/gui/next/src/lib/api/table.js @@ -0,0 +1,50 @@ +/* + gets tables from the database +*/ + + +// imports +// ------------------------------------------------------------------------ +import { graphql } from '$lib/api/graphql'; + + + +// purpose: gets table(s) from the database +// arguments: id of the table information you need (string, optional) +// returns: array of tables as they appear in the database (array) +// ------------------------------------------------------------------------ +const table = { + get: (id) => { + const query = ` + query( + $per_page: Int + $id: ID + ) { + admin_tables( + per_page: $per_page + filter: { + id: { value: $id } + } + ) { + results { + id + name + properties { + name + attribute_type + } + } + } + }`; + + const variables = { per_page: 100, id: id }; + + return graphql({ query, variables }).then(data => data.admin_tables.results); + } +}; + + + +// exports +// ------------------------------------------------------------------------ +export { table }; diff --git a/gui/next/src/lib/api/user.js b/gui/next/src/lib/api/user.js new file mode 100644 index 0000000..cc9f546 --- /dev/null +++ b/gui/next/src/lib/api/user.js @@ -0,0 +1,150 @@ +/* + handles managing users +*/ + + +// imports +// ------------------------------------------------------------------------ +import { graphql } from '$lib/api/graphql'; +import { buildMutationIngredients } from '$lib/helpers/buildMutationIngredients'; + +const user = { + + // purpose: gets users from the database + // arguments: properties to filter (object) + // id of the user (int) + // email (string) + // first_name (string) + // last_name (string) + // page (int) + // returns: array of users as they appear in the database (array of objects) + // ------------------------------------------------------------------------ + get: async (filters = {}) => { + let filtersString = ''; + let details = ''; + + if(filters.value){ + if(filters.attribute === 'email'){ + filtersString += `${filters.attribute}: { contains: "${filters.value}" }`; + } else { + filtersString += `${filters.attribute}: { value: "${filters.value}" }`; + } + + if(filters?.attribute === 'id' && filters?.value){ + details = ` + deleted_at + created_at + external_id + jwt_token + temporary_token + name + first_name + middle_name + last_name + slug + language + `; + } + } + + const query = ` + query { + users( + page: ${filters?.page ?? 1} + per_page: 50 + sort: { id: { order: DESC } } + filter: { + ${filtersString} + } + ) { + current_page + total_pages + results { + id + email + ${details} + properties + } + } + }`; + + return graphql({ query }, false).then(data => data.users ); + }, + + // purpose: delete users from the database + // arguments: + // id of the user (int) + // ------------------------------------------------------------------------ + delete: async (id) => { + const query = ` + mutation { + user_delete(id: ${id}){ id } + } + `; + + return graphql({ query }, false); + }, + + // purpose: creates a new user + // arguments: + // properties: object containing first_name, last_name, properties + // returns: id of the new user + // ------------------------------------------------------------------------ + create: async (email, password, properties) => { + const ingredients = buildMutationIngredients(properties); + const userQuery = ` + mutation${ingredients.variablesDefinition} { + user: user_create(user: { email: "${email}", password: "${password}", properties: [${ingredients.properties}] }) { + id + } + } + `; + + return graphql({ query: userQuery, variables: ingredients.variables }, false); + }, + + // purpose: edits a user + // arguments: + // id: id of the user to modify + // email: email of the user + // properties: object containing additional custom properties + // returns: id of the new user + // ------------------------------------------------------------------------ + edit: async (id, email, properties) => { + const ingredients = buildMutationIngredients(properties); + const userQuery = ` + mutation${ingredients.variablesDefinition} { + user_update(user: { email: "${email}", properties: [${ingredients.properties}] }, id: ${id}) { + id + } + } + `; + + return graphql({ query: userQuery, variables: ingredients.variables }, false); + }, + + // purpose: returns custom properies of the user schema + // arguments: + // returns: list of properties + // ------------------------------------------------------------------------ + getCustomProperties: async () => { + const propertiesQuery = ` + query { + admin_user_schema { + properties { + attribute_type + name + } + } + } + `; + + return graphql({ query: propertiesQuery }, false).then(data => data.admin_user_schema.properties); + } +}; + + + +// exports +// ------------------------------------------------------------------------ +export { user }; diff --git a/gui/next/src/lib/backgroundJob/Delete.svelte b/gui/next/src/lib/backgroundJob/Delete.svelte new file mode 100644 index 0000000..88d9189 --- /dev/null +++ b/gui/next/src/lib/backgroundJob/Delete.svelte @@ -0,0 +1,61 @@ + + + + + + + + + + +
    + + +
    diff --git a/gui/next/src/lib/backgroundJob/Retry.svelte b/gui/next/src/lib/backgroundJob/Retry.svelte new file mode 100644 index 0000000..ebc1b92 --- /dev/null +++ b/gui/next/src/lib/backgroundJob/Retry.svelte @@ -0,0 +1,45 @@ + + + + + + +
    + + +
    diff --git a/gui/next/src/lib/database/ContextMenu.svelte b/gui/next/src/lib/database/ContextMenu.svelte new file mode 100644 index 0000000..fb6b40d --- /dev/null +++ b/gui/next/src/lib/database/ContextMenu.svelte @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + dispatch('close')}> +
      +
    • + +
    • +
    • + {#if $state.filters.deleted === 'true'} + dispatch('close')} /> + {:else} + dispatch('close')} /> + {/if} +
    • +
    +
    diff --git a/gui/next/src/lib/database/Create.svelte b/gui/next/src/lib/database/Create.svelte new file mode 100644 index 0000000..cfd8f87 --- /dev/null +++ b/gui/next/src/lib/database/Create.svelte @@ -0,0 +1,338 @@ + + + + + + + + + + + + +
    + +
    + + + {#if editing.id} + + {/if} + + {#each properties as property} + {@const value = editing.properties ? parseValue(editing.properties[property.name], property.attribute_type) : {type: property.attribute_type, value: ''}} +
    + + + +
    + {#if property.attribute_type === 'boolean'} + + {:else} + + {/if} +
    + {#if validation[property.name]} + {validation[property.name].message} + {/if} +
    +
    +
    + {/each} + + + +
    + +
    + +
    diff --git a/gui/next/src/lib/database/Delete.svelte b/gui/next/src/lib/database/Delete.svelte new file mode 100644 index 0000000..86e7ba6 --- /dev/null +++ b/gui/next/src/lib/database/Delete.svelte @@ -0,0 +1,66 @@ + + + + + + + + + + +
    + + + +
    diff --git a/gui/next/src/lib/database/Filters.svelte b/gui/next/src/lib/database/Filters.svelte new file mode 100644 index 0000000..5507ccb --- /dev/null +++ b/gui/next/src/lib/database/Filters.svelte @@ -0,0 +1,163 @@ + + + + + + + + + + +
    + + {#if $state.table?.properties} + + {#each $state.filters.attributes as attribute} +
    + + + + + + + + {#if operations[attribute.attribute_type]} + + + + {#if attribute.operation === 'exists'} + + {:else if attribute.operation === 'range'} + + + + + {:else} + + {/if} + + + + {:else} + + Unknow property type: {attribute.attribute_type} + + {/if} + +
    + {/each} + + {/if} + +
    diff --git a/gui/next/src/lib/database/Restore.svelte b/gui/next/src/lib/database/Restore.svelte new file mode 100644 index 0000000..78b2624 --- /dev/null +++ b/gui/next/src/lib/database/Restore.svelte @@ -0,0 +1,51 @@ + + + + + + +
    + + + +
    diff --git a/gui/next/src/lib/database/Sort.svelte b/gui/next/src/lib/database/Sort.svelte new file mode 100644 index 0000000..ae8dc5e --- /dev/null +++ b/gui/next/src/lib/database/Sort.svelte @@ -0,0 +1,110 @@ + + + + + + + + + + +
    + + {#if $state.table?.properties} + + + + + + + + {/if} + +
    diff --git a/gui/next/src/lib/database/Table.svelte b/gui/next/src/lib/database/Table.svelte new file mode 100644 index 0000000..bdca2e4 --- /dev/null +++ b/gui/next/src/lib/database/Table.svelte @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + +{#if $state.table?.properties} + + + + + {#each $state.table.properties as property} + + {/each} + + + {#if $state.filters.deleted === 'true'} + + {/if} + + + {#if $state.records?.results?.length} + {#each $state.records?.results as record (record.id)} + + + {#each $state.table.properties as property} + {@const value = parseValue(record.properties[property.name], property.attribute_type)} + + {/each} + + + {#if $state.filters.deleted === 'true'} + + {/if} + + {/each} + {/if} +
    id{property.name} ({property.attribute_type})created atupdated atdeleted at
    +
    +
    + + +
    + {#if contextMenu.id === record.id} + contextMenu.id = null} /> + {/if} + {record.id} +
    +
    + {#if value.value !== undefined} + {#if value.type === 'json' || value.type === 'jsonEscaped'} + {#if $state.view.tableStyle === 'expanded'} + + {:else} + {JSON.stringify(value.value)} + {/if} + {:else} + {value.value} + {/if} + {/if} + + {(new Date(record?.created_at)).toLocaleDateString(undefined, {})} + {(new Date(record?.created_at)).toLocaleTimeString(undefined, {})} + + {(new Date(record?.updated_at)).toLocaleDateString(undefined, {})} + {(new Date(record?.updated_at)).toLocaleTimeString(undefined, {})} + + {(new Date(record?.deleted_at)).toLocaleDateString(undefined, {})} + {(new Date(record?.deleted_at)).toLocaleTimeString(undefined, {})} +
    +{/if} diff --git a/gui/next/src/lib/database/Tables.svelte b/gui/next/src/lib/database/Tables.svelte new file mode 100644 index 0000000..671bed6 --- /dev/null +++ b/gui/next/src/lib/database/Tables.svelte @@ -0,0 +1,277 @@ + + + + + + + + + + + + + + + + diff --git a/gui/next/src/lib/diagnostics.js b/gui/next/src/lib/diagnostics.js new file mode 100644 index 0000000..a2030b0 --- /dev/null +++ b/gui/next/src/lib/diagnostics.js @@ -0,0 +1,33 @@ +/* + Helpers for the structured Liquid diagnostic (the `data` payload the backend + attaches to a log entry, TASK-18.2). Mirrors lib/diagnostics.js used by the CLI. + + A log entry's `data` can be one of: + - a structured diagnostic: { schema_version: 1, type, message, stack, context, + source_span, timestamp }. `stack` is an array of { path, line } frames, + innermost-first (stack[0] is the error location). + - the legacy {% log %} context hash: { url, page, partial, user } + - absent (historical entries) + + Consumers must tolerate all three and degrade gracefully. +*/ + +const SUPPORTED_SCHEMA_VERSION = 1; + +const isStructuredDiagnostic = (data) => + !!data && typeof data === 'object' && data.schema_version === SUPPORTED_SCHEMA_VERSION; + +// The type label shown for a log entry: an error's class (data.type), else the +// log's own type (error_type, e.g. 'yo'/'info'/'error'), else a generic 'Log'. +const displayType = (log) => (log && log.data && log.data.type) || (log && log.error_type) || 'Log'; + +// "path:line", "path", "line N", or null — a single stack frame's label. +const frameLabel = (frame) => { + if (!frame) return null; + if (typeof frame === 'string') return frame; // tolerate legacy string frames + if (frame.path) return frame.line != null ? `${frame.path}:${frame.line}` : `${frame.path}`; + if (frame.line != null) return `line ${frame.line}`; + return null; +}; + +export { isStructuredDiagnostic, displayType, frameLabel, SUPPORTED_SCHEMA_VERSION }; diff --git a/gui/next/src/lib/helpers/buildMutationIngredients.js b/gui/next/src/lib/helpers/buildMutationIngredients.js new file mode 100644 index 0000000..365a078 --- /dev/null +++ b/gui/next/src/lib/helpers/buildMutationIngredients.js @@ -0,0 +1,114 @@ + +// purpose: maps column types to corresponding property type used in GraphQL string +// ------------------------------------------------------------------------ +export const columnTypeToPropertyType = { + array: 'value_array', + boolean: 'value_boolean', + date: 'value', + datetime: 'value', + float: 'value_float', + integer: 'value_int', + string: 'value', + text: 'value', + upload: 'value', + json: 'value_json' +}; + + +// purpose: maps column types to corresponding variable type used in GraphQL variables definition +// ------------------------------------------------------------------------ +export const columnTypeToVariableType = { + string: 'String', + integer: 'Int', + float: 'Float', + boolean: 'Boolean', + array: '[String!]', + json: 'JSONPayload', + range: 'RangeFilter' +}; + +// purpose: builds all the needed data to build and trigger GraphQL mutation +// arguments: FormData object with the column, type and value (column[value], column[type]) +// returns: variablesDefinition (string) - GraphQL variables definitions $variable: Type +// variables (object) - values for defined variables passed to GraphQL API +// properties (string) - list of GraphQL properties for given variables to use inside "properties: []" +// ------------------------------------------------------------------------ +export const buildMutationIngredients = (formData) => { + + // entries from the form (object) + const formEntries = formData.entries(); + // graphql variables definition for the query (string) + let variablesDefinition = ''; + // variables passed with the query (object) + let variables = {}; + // properties list with variables as their value passed with the query (string) + let properties = ''; + // helper object that will store the column name with all it's corresponding propertiest needed to pass to graphql (object) + let columns = {}; + + // values we are getting from FormData are strings, this will parse them depending on the column type we are taking them from + function parseValue(type, value){ + if(value === ''){ + return null; + } + + if(type === 'integer'){ + return parseInt(value); + } + + if(type === 'float'){ + return parseFloat(value); + } + + if(type === 'boolean'){ + if(value === 'true'){ + return true; + } else { + return false; + } + } + + if(type === 'array'){ + return JSON.parse(value); + } + + if(type === 'json'){ + return JSON.parse(value); + } + + return value; + }; + + // parse FormData entries to an `columns` object + for(const [entry, value] of formEntries){ + // do it only for FormData entries related to columns + if(entry.indexOf('[') >= 0){ + // get the column name from FormData + let column = entry.slice(0, entry.indexOf('[')); + // get the column properties names like the 'type' and 'value' + let property = entry.slice(entry.indexOf('[')+1, entry.indexOf(']')); + + // build an object like: column_name = { type: 'type', value: 'value' } + (columns[column] ??= {})[property] = value; + } + }; + + // for each edited column build the needed strings and add the value to `variables` + for(const column in columns){ + variablesDefinition += `, $${column}: ${columnTypeToVariableType[columns[column].type] || 'String'}`; + + variables[column] = parseValue(columns[column].type, columns[column].value); + + properties += `{ name: "${column}", ${columnTypeToPropertyType[columns[column].type]}: $${column} }`; + } + + + // build the final variables definition string with all the needed variables and their types + if(variablesDefinition.length){ + variablesDefinition = variablesDefinition.slice(2); // remove first comma ', ' + variablesDefinition = `(${variablesDefinition})`; // add brackets to definition string + } + + return { variablesDefinition, variables, properties }; + +}; \ No newline at end of file diff --git a/gui/next/src/lib/helpers/clickOutside.js b/gui/next/src/lib/helpers/clickOutside.js new file mode 100644 index 0000000..16998f3 --- /dev/null +++ b/gui/next/src/lib/helpers/clickOutside.js @@ -0,0 +1,29 @@ +/* + svelte action that handles clicking outside given node +*/ + + +const clickOutside = (node, callback) => { + const handleClick = event => { + + const path = event.composedPath(); + + if (!path.includes(node)) { + callback(event); + } + }; + + document.addEventListener('mousedown', handleClick); + + return { + destroy() { + document.removeEventListener('mousedown', handleClick); + } + }; +}; + + + +// exports +// ------------------------------------------------------------------------ +export { clickOutside }; diff --git a/gui/next/src/lib/helpers/httpStatusCodes.js b/gui/next/src/lib/helpers/httpStatusCodes.js new file mode 100644 index 0000000..7c125e0 --- /dev/null +++ b/gui/next/src/lib/helpers/httpStatusCodes.js @@ -0,0 +1,79 @@ +/* + list of http status codes matched with their description +*/ + + +const httpStatusCodes = { + 100: 'Continue', + 101: 'Switching Protocols', + 102: 'Processing', + 103: 'Early Hints', + + 200: 'OK', + 201: 'Created', + 202: 'Accepted', + 203: 'Non-Authoritative Information', + 204: 'No Content', + 205: 'Reset Content', + 206: 'Partial Content', + 207: 'Multi-Status', + 208: 'Already Reported', + 226: 'IM Used', + + 300: 'Multiple Choices', + 301: 'Moved Permanently', + 302: 'Found', + 303: 'See Other', + 304: 'Not Modified', + 305: 'Use Proxy', + 306: 'Switch Proxy', + 307: 'Temporary Redirect', + 308: 'Permanent Redirect', + + 400: 'Bad Request', + 401: 'Unauthorized', + 402: 'Payment Required', + 403: 'Forbidden', + 404: 'Not Found', + 405: 'Method Not Allowed', + 406: 'Not Acceptable', + 407: 'Proxy Authentication Required', + 408: 'Request Timeout', + 409: 'Conflict', + 410: 'Gone', + 411: 'Length Required', + 412: 'Precondition Failed', + 413: 'Payload Too Large', + 414: 'URI Too Long', + 415: 'Unsupported Media Type', + 416: 'Range Not Satisfiable', + 417: 'Expectation Failed', + 418: 'I\'m a teapot', + 421: 'Misdirected Request', + 422: 'Unprocessable Content', + 423: 'Locked', + 424: 'Failed Dependency', + 425: 'Too Early', + 426: 'Upgrade Required', + 428: 'Precondition Required', + 429: 'Too Many Requests', + 431: 'Request Header Fields Too Large', + 451: 'Unavailable For Legal Reasons', + + 500: 'Internal Server Error', + 501: 'Not Implemented', + 502: 'Bad Gateway', + 503: 'Service Unavailable', + 504: 'Gateway Timeout', + 505: 'HTTP Version Not Supported', + 506: 'Variant Also Negotiates', + 507: 'Insufficient Storage', + 508: 'Loop Detected', + 510: 'Not Extended', + 511: 'Network Authentication Required' +}; + + +// exports +// ------------------------------------------------------------------------ +export { httpStatusCodes }; diff --git a/gui/next/src/lib/parseValue.js b/gui/next/src/lib/parseValue.js new file mode 100644 index 0000000..57654b6 --- /dev/null +++ b/gui/next/src/lib/parseValue.js @@ -0,0 +1,51 @@ +// imports +// ------------------------------------------------------------------------ +import { tryParseJSON } from '$lib/tryParseJSON.js'; + + + +// purpose: parses the value to present it in the most adequate way +// (strings can be strings, JSONs or escaped JSONs) +// arguments: value to parse (any) +// type of the value (string) +// ------------------------------------------------------------------------ +const parseValue = (value, type) => { + let parsed = { + value: value, + type: type + }; + + if(value === null || value === undefined){ + parsed.value = null; + parsed.type = 'null'; + return {...parsed}; + } + + if(type === 'boolean'){ + if(value === true){ + parsed.value = 'true'; + } else { + parsed.value = 'false'; + } + } + + if(typeof value === 'object'){ + parsed.value = value; + parsed.type = 'json'; + return {...parsed}; + } + + if(tryParseJSON(value)){ + parsed.value = tryParseJSON(value); + parsed.type = 'jsonEscaped'; + return {...parsed}; + } + + return {...parsed, original: { value, type }}; +}; + + + +// exports +// ------------------------------------------------------------------------ +export { parseValue }; diff --git a/gui/next/src/lib/relativeTime.js b/gui/next/src/lib/relativeTime.js new file mode 100644 index 0000000..cf6cb7d --- /dev/null +++ b/gui/next/src/lib/relativeTime.js @@ -0,0 +1,33 @@ +/* + shows dates as relative from current +*/ + + + +const relativeTime = input => { + + const date = (input instanceof Date) ? input : new Date(input); + const formatter = new Intl.RelativeTimeFormat('en'); + const ranges = { + years: 3600 * 24 * 365, + months: 3600 * 24 * 30, + weeks: 3600 * 24 * 7, + days: 3600 * 24, + hours: 3600, + minutes: 60, + seconds: 1 + }; + const secondsElapsed = (date.getTime() - Date.now()) / 1000; + + for (let key in ranges) { + if (ranges[key] < Math.abs(secondsElapsed)) { + const delta = secondsElapsed / ranges[key]; + return formatter.format(Math.round(delta), key); + } + } + +}; + + + +export { relativeTime }; diff --git a/gui/next/src/lib/state.js b/gui/next/src/lib/state.js new file mode 100644 index 0000000..cb99bee --- /dev/null +++ b/gui/next/src/lib/state.js @@ -0,0 +1,203 @@ +/* + store that handles all the state and data related objects + + usage: import { state } from '$lib/state.js' and then use + the methods provided in the return statement for navigating through + the state. +*/ + + +// imports +// ------------------------------------------------------------------------ +import { browser } from '$app/environment'; +import { writable } from 'svelte/store'; + + +const state = createStore(); + +function createStore(){ + + // read local storage values + // ------------------------------------------------------------------------ + const view = browser && localStorage.view ? JSON.parse(localStorage.view) : null; + + // store properties + // ------------------------------------------------------------------------ + const state = {}; + // list of items pinned to the header navigation (array of strings) + state.header = browser && localStorage.header ? JSON.parse(localStorage.header) : ['database', 'users', 'logs']; + // if the app is connected to the instance (object or false) + state.online = undefined; + // logs data (object) + state.logs = {}; + // new logs data (object) + state.logsv2 = {}; + // currently active log (object) + state.logv2 = {}; + // network logs data (object) + state.networks = {}; + // currently active network log (object) + state.network = {}; + // tables for current instance (array) + state.tables = []; + // currently active table (object) + state.table = {}; + // type of view for the records ('table' or 'tiles') + state.view = { + database: view?.database ? view.database : 'table', + tableStyle: view?.tableStyle ? view.tableStyle : 'collapsed' + }; + // currently viewed records list (object) + state.records = {}; + // currently viewed/edited record (object) + state.record = null; + // currently highlighted ids (object) + state.highlighted = { + record: null, + constant: null + }; + // filters for the records (object) + state.filters = { + page: 1, + attributes: [ + { attribute_type: 'id', name: 'id', operation: 'value', value: '' } + ], + deleted: 'false' + }; + // sort order for the records (object) + state.sort = { + by: 'created_at', + order: 'DESC' + }; + // list of notifications (array of objects) + state.notifications = []; + // width of the aside panel in css units (string) + state.asideWidth = browser && localStorage.asideWidth ? localStorage.asideWidth : false; + // list of users + state.users = []; + + // purpose: creates the store with data provided in state object + // ------------------------------------------------------------------------ + const { subscribe, set, update } = writable(state); + + + // purpose: updates the store properties + // arguments: name of the property you want to update (string) + // new value (any) + // ------------------------------------------------------------------------ + const data = (property, value) => { + update(state => { + state[property] = value; + + return state; + }); + }; + + + // purpose: clears all the filters + // ------------------------------------------------------------------------ + const clearFilters = () => { + update(state => { + state.filters = { + page: 1, + attributes: [ + { attribute_type: 'id', name: 'id', operation: 'value', value: '' } + ], + deleted: 'false' + }; + + state.sort = { + by: 'created_at', + order: 'DESC' + }; + + + return state; + }); + }; + + + // purpose: highlights an record if visible + // arguments: type of data to highlight ('record') + // id of the element to highlight (int) + // ------------------------------------------------------------------------ + let highlightTimeout; + + const highlight = (type, id) => { + update(state => { + state.highlighted[type] = id; + + return state; + }); + + clearTimeout(highlightTimeout); + highlightTimeout = setTimeout(() => { + highlight('record', null); highlight('constant', null); + }, 7000); + }; + + + // purpose: manages notifications + // ------------------------------------------------------------------------ + const notification = { + + // purpose: creates new notification + // arguments: notification type ('success', 'error') + // notification text message for the user (string) + // ------------------------------------------------------------------------ + create: (type, message) => { + update(state => { + state.notifications.push({id: Date.now(), type: type, message: message}); + + return state; + }); + }, + + // purpose: removes a notification from the view + // arguments: id of the notification in array (int) + // ------------------------------------------------------------------------ + remove: (id) => { + update(state => { + state.notifications = state.notifications.filter(notification => notification.id !== id); + + return state; + }); + } + + }; + + + // purpose: manages the view styles + // arguments: new view + // ------------------------------------------------------------------------ + const setView = (newView) => { + update(state => { + state.view = {...state.view, ...newView}; + + if(browser){ + localStorage.view = JSON.stringify(state.view); + } + + return state; + }); + }; + + + + return { + subscribe, + set, + data, + clearFilters, + highlight, + notification, + setView + }; + +}; + + + +// exports +// ------------------------------------------------------------------------ +export { state }; diff --git a/gui/next/src/lib/tryParseJSON.js b/gui/next/src/lib/tryParseJSON.js new file mode 100644 index 0000000..1eb4ce9 --- /dev/null +++ b/gui/next/src/lib/tryParseJSON.js @@ -0,0 +1,32 @@ +// purpose: tries to parse the string as JSON +// arguments: string or JSON object to check if can be parsed as JSON (string or object) +// returns: JSON object if parseable or false if can't be parsed (object or false) +// ------------------------------------------------------------------------ +const tryParseJSON = (argument) => { + + // first, check if passed argument is JSON and if so just return it + if(argument && typeof argument === 'object'){ + return argument; + } + + // if argument is a string, try to parse it as JSON + try { + const o = JSON.parse(argument); + + if(o && typeof o === 'object'){ + return o; + } + } catch { + // catch the error from parsing JSON but do nothing + } + + // if everything failed we can assumen the argument is not parsable JSON + return false; + +}; + + + +// exports +// ------------------------------------------------------------------------ +export { tryParseJSON }; diff --git a/gui/next/src/lib/ui/Aside.svelte b/gui/next/src/lib/ui/Aside.svelte new file mode 100644 index 0000000..202922f --- /dev/null +++ b/gui/next/src/lib/ui/Aside.svelte @@ -0,0 +1,220 @@ + + + + + + + + + + + + diff --git a/gui/next/src/lib/ui/CautionBanner.svelte b/gui/next/src/lib/ui/CautionBanner.svelte new file mode 100644 index 0000000..db2681a --- /dev/null +++ b/gui/next/src/lib/ui/CautionBanner.svelte @@ -0,0 +1,33 @@ + + + + + + + diff --git a/gui/next/src/lib/ui/Code.svelte b/gui/next/src/lib/ui/Code.svelte new file mode 100644 index 0000000..f89f26b --- /dev/null +++ b/gui/next/src/lib/ui/Code.svelte @@ -0,0 +1,50 @@ + + + + + + + + + + + diff --git a/gui/next/src/lib/ui/ConnectionIndicator.svelte b/gui/next/src/lib/ui/ConnectionIndicator.svelte new file mode 100644 index 0000000..da7ef4b --- /dev/null +++ b/gui/next/src/lib/ui/ConnectionIndicator.svelte @@ -0,0 +1,93 @@ + + + + + + + + + + + +{#if $state.online === false} +
    + Disconnected from the instance +
    +{/if} diff --git a/gui/next/src/lib/ui/Copy.svelte b/gui/next/src/lib/ui/Copy.svelte new file mode 100644 index 0000000..5755c02 --- /dev/null +++ b/gui/next/src/lib/ui/Copy.svelte @@ -0,0 +1,99 @@ + + + + + + + + + + + diff --git a/gui/next/src/lib/ui/Diagnostic.svelte b/gui/next/src/lib/ui/Diagnostic.svelte new file mode 100644 index 0000000..23b5c2e --- /dev/null +++ b/gui/next/src/lib/ui/Diagnostic.svelte @@ -0,0 +1,198 @@ + + + + + + + + + + +
    + +
    + {type} + {#if location}{location}{/if} +
    + + {#if parsedMessage} + + {:else if messageText} +
    + {#if showFull || messageText.length <= maxMessageLength} + {messageText} + {:else} + {messageText.substr(0, maxMessageLength)} + + + + {/if} +
    + {/if} + + {#if data.source_span} +
    {data.source_span}
    + {/if} + + {#if stack.length > 1} +
    + Show full stack ({stack.length} frames) +
      + {#each stack as frame} +
    1. {frameLabel(frame)}
    2. + {/each} +
    +
    + {/if} + + {#if context.url || context.user} +
    + {#if context.url}url: {context.url}{/if} + {#if context.user}user: {context.user.email || context.user.id}{/if} +
    + {/if} + +
    diff --git a/gui/next/src/lib/ui/Header.svelte b/gui/next/src/lib/ui/Header.svelte new file mode 100644 index 0000000..4db3b2c --- /dev/null +++ b/gui/next/src/lib/ui/Header.svelte @@ -0,0 +1,317 @@ + + + + + + + + + + +
    +
    + + + + + +
    +
    diff --git a/gui/next/src/lib/ui/Icon.svelte b/gui/next/src/lib/ui/Icon.svelte new file mode 100644 index 0000000..766c654 --- /dev/null +++ b/gui/next/src/lib/ui/Icon.svelte @@ -0,0 +1,67 @@ + + + + + +{#if icon} + + + +{/if} diff --git a/gui/next/src/lib/ui/JSONTree.svelte b/gui/next/src/lib/ui/JSONTree.svelte new file mode 100644 index 0000000..94ceffd --- /dev/null +++ b/gui/next/src/lib/ui/JSONTree.svelte @@ -0,0 +1,77 @@ + + + + + + + + + +
    + + + +
    diff --git a/gui/next/src/lib/ui/Notifications.svelte b/gui/next/src/lib/ui/Notifications.svelte new file mode 100644 index 0000000..5b664c6 --- /dev/null +++ b/gui/next/src/lib/ui/Notifications.svelte @@ -0,0 +1,135 @@ + + + + + + + + + + +
    + + {#each $state.notifications as notification (notification.id)} +
    + {@html notification.message} + + +
    + {/each} + +
    + +
    + +
    diff --git a/gui/next/src/lib/ui/forms/Number.svelte b/gui/next/src/lib/ui/forms/Number.svelte new file mode 100644 index 0000000..89e24de --- /dev/null +++ b/gui/next/src/lib/ui/forms/Number.svelte @@ -0,0 +1,167 @@ + + + + + + + + + + + +
    + + + + debouncedInput(event)} + on:focusin={() => focused = true} + on:focusout={() => focused = false} + autofocus={focused} + style="--max: {max?.toString().length || 1}ch" + > + + + +
    diff --git a/gui/next/src/lib/ui/forms/Toggle.svelte b/gui/next/src/lib/ui/forms/Toggle.svelte new file mode 100644 index 0000000..9f3b5d5 --- /dev/null +++ b/gui/next/src/lib/ui/forms/Toggle.svelte @@ -0,0 +1,211 @@ + + + + + + + + + + + +
    + + {#if options.length === 2} + + { if(event.code === 'Space'){ event.preventDefault(); checked = checked === options[0].value ? options[1].value : options[0].value } } } + > + + + + + { if(event.code === 'Space'){ event.preventDefault(); checked = checked === options[0].value ? options[1].value : options[0].value } } } + > + + + {:else if options.length === 1} + + + + { if(event.code === 'Space'){ event.preventDefault(); checked = checked === options[0].value ? '' : options[0].value } } } + on:change={event => checked = event.target.checked ? options[0].value : '' } + on:change + > + + {/if} + +
    diff --git a/gui/next/src/lib/users/ContextMenu.svelte b/gui/next/src/lib/users/ContextMenu.svelte new file mode 100644 index 0000000..81a730b --- /dev/null +++ b/gui/next/src/lib/users/ContextMenu.svelte @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + dispatch('close')}> +
      +
    • + dispatch('reload')} on:close={() => dispatch('close')} /> +
    • +
    +
    diff --git a/gui/next/src/lib/users/Create.svelte b/gui/next/src/lib/users/Create.svelte new file mode 100644 index 0000000..bf70b8f --- /dev/null +++ b/gui/next/src/lib/users/Create.svelte @@ -0,0 +1,354 @@ + + + + + + + + + + + + +
    + +
    +
    + + + +
    + +
    +
    + {#if userToEdit === null} +
    + + + +
    + +
    +
    + {/if} + {#each userProperties as property} + {@const value = userToEdit !== null ? parseValue(userToEdit.properties[property.name], property.attribute_type) : {type: property.attribute_type, value: ''}} +
    + + + +
    + {#if property.attribute_type === 'boolean'} + + {:else} + + {/if} +
    + {#if validation[property.name]} + {validation[property.name].message} + {/if} +
    +
    +
    + {/each} + +
    +
    + +
    diff --git a/gui/next/src/lib/users/Delete.svelte b/gui/next/src/lib/users/Delete.svelte new file mode 100644 index 0000000..7de6cfc --- /dev/null +++ b/gui/next/src/lib/users/Delete.svelte @@ -0,0 +1,59 @@ + + + + + + + + + + +
    + + +
    diff --git a/gui/next/src/routes/+layout.svelte b/gui/next/src/routes/+layout.svelte new file mode 100644 index 0000000..497eabd --- /dev/null +++ b/gui/next/src/routes/+layout.svelte @@ -0,0 +1,24 @@ + + + + + + +
    + + + + diff --git a/gui/next/src/routes/+page.svelte b/gui/next/src/routes/+page.svelte new file mode 100644 index 0000000..293a8ed --- /dev/null +++ b/gui/next/src/routes/+page.svelte @@ -0,0 +1,502 @@ + + + + + + + + + + + + Siteglide{$state.online?.MPKIT_URL ? ': ' + $state.online.MPKIT_URL.replace('https://', '') : ''} + + + + + \ No newline at end of file diff --git a/gui/next/src/routes/backgroundJobs/+layout.svelte b/gui/next/src/routes/backgroundJobs/+layout.svelte new file mode 100644 index 0000000..902fbac --- /dev/null +++ b/gui/next/src/routes/backgroundJobs/+layout.svelte @@ -0,0 +1,373 @@ + + + + + + + + + + + + Jobs{$state.online?.MPKIT_URL ? ': ' + $state.online.MPKIT_URL.replace('https://', '') : ''} + + + +
    + +
    + + + + + + + + + + + + + + {#each items.results as item} + + + + + + + + {/each} + +
    Name / idPriority + {#if filters.type === 'DEAD'} + Failed + {:else} + Runs + {/if} +
    contextMenu.id = null}> +
    + + + + +
      + {#if item.dead_at} +
    • + +
    • + {/if} +
    • + +
    • +
    +
    + + + {item.source_name || item.id} + + +
    +
    {item.queue} + {#if filters.type === 'DEAD'} + { item.dead_at_parsed || relativeTime(new Date(item.dead_at)) || '' } + {:else} + { item.run_at_parsed || relativeTime(new Date(item.run_at)) } + {/if} +
    + + + +
    + + + +
    diff --git a/gui/next/src/routes/backgroundJobs/+page.svelte b/gui/next/src/routes/backgroundJobs/+page.svelte new file mode 100644 index 0000000..e69de29 diff --git a/gui/next/src/routes/backgroundJobs/[type]/[id]/+page.svelte b/gui/next/src/routes/backgroundJobs/[type]/[id]/+page.svelte new file mode 100644 index 0000000..e24e59a --- /dev/null +++ b/gui/next/src/routes/backgroundJobs/[type]/[id]/+page.svelte @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + diff --git a/gui/next/src/routes/constants/+layout.svelte b/gui/next/src/routes/constants/+layout.svelte new file mode 100644 index 0000000..4fa864c --- /dev/null +++ b/gui/next/src/routes/constants/+layout.svelte @@ -0,0 +1 @@ + diff --git a/gui/next/src/routes/constants/+page.svelte b/gui/next/src/routes/constants/+page.svelte new file mode 100644 index 0000000..29e1485 --- /dev/null +++ b/gui/next/src/routes/constants/+page.svelte @@ -0,0 +1,385 @@ + + + + + + + + + + + + Constants{$state.online?.MPKIT_URL ? ': ' + $state.online.MPKIT_URL.replace('https://', '') : ''} + + +
    + + + +
    +
    +
    + + +
    +
    + + +
    + +
    +
    + +
      + + {#each items as item, index} +
    • +
      remove(event)}> + + +
      +
      update(event, index)}> + + +
      + item.changed = true}> + +
      + +
      +
    • + {/each} + +
    + +
    diff --git a/gui/next/src/routes/database/+layout.svelte b/gui/next/src/routes/database/+layout.svelte new file mode 100644 index 0000000..2f4461e --- /dev/null +++ b/gui/next/src/routes/database/+layout.svelte @@ -0,0 +1,70 @@ + + + + + + + + + + + + +
    + +
    + tablesHidden = false} /> +
    + + + +
    diff --git a/gui/next/src/routes/database/+page.svelte b/gui/next/src/routes/database/+page.svelte new file mode 100644 index 0000000..e38c8f9 --- /dev/null +++ b/gui/next/src/routes/database/+page.svelte @@ -0,0 +1,15 @@ + + + + + + + + Database{$state.online?.MPKIT_URL ? ': ' + $state.online.MPKIT_URL.replace('https://', '') : ''} + diff --git a/gui/next/src/routes/database/table/[id]/+page.svelte b/gui/next/src/routes/database/table/[id]/+page.svelte new file mode 100644 index 0000000..d042426 --- /dev/null +++ b/gui/next/src/routes/database/table/[id]/+page.svelte @@ -0,0 +1,245 @@ + + + + + + + + + + + + {$state.table?.name || 'Loading…'}{$state.online?.MPKIT_URL ? ': ' + $state.online.MPKIT_URL.replace('https://', '') : ''} + + + + +
    + + + + {#if $state.view.database !== 'tiles'} + + {:else} + Work in progress :) + {/if} + + + + + +{#if $state.record !== null} + +{/if} diff --git a/gui/next/src/routes/logs/+layout.svelte b/gui/next/src/routes/logs/+layout.svelte new file mode 100644 index 0000000..4fa864c --- /dev/null +++ b/gui/next/src/routes/logs/+layout.svelte @@ -0,0 +1 @@ + diff --git a/gui/next/src/routes/logs/+page.svelte b/gui/next/src/routes/logs/+page.svelte new file mode 100644 index 0000000..61921bf --- /dev/null +++ b/gui/next/src/routes/logs/+page.svelte @@ -0,0 +1,434 @@ + + + + + + + + + + + + Logs{$state.online?.MPKIT_URL ? ': ' + $state.online.MPKIT_URL.replace('https://', '') : ''} + + + +
    + +
    + + + + {#if $state.logs.logs} +
    + {#each $state.logs.logs as log} + $state.logs.downloaded_at[0]} + in:fade|local={{ duration: 200 }} + > + + + + + {/each} +
    + + + + +
    + + +
    +
    + {/if} + + {#if !filter} +
    + No newer logs to show
    Checking every 3 seconds +
    + {/if} + +
    + + + {#if pinnedPanel} + + {/if} + + diff --git a/gui/next/src/routes/users/+layout.svelte b/gui/next/src/routes/users/+layout.svelte new file mode 100644 index 0000000..b51cd6f --- /dev/null +++ b/gui/next/src/routes/users/+layout.svelte @@ -0,0 +1,441 @@ + + + + + + + + + + + Users{$state.online?.MPKIT_URL ? ': ' + $state.online.MPKIT_URL.replace('https://', '') : ''} + + + +
    + + + +
    + + + +
    + + + + + + + + + {#if items} + + {#each items as user} + + + + + + {/each} + + {/if} +
    IDEmail
    + + + + + + {user.id} + + + + {user.email} + +
    +
    + + + +
    + +{#if $page.params.id} + +{/if} + +{#if $state.user !== undefined} + reloadUsers() } /> +{/if} + + +
    diff --git a/gui/next/src/routes/users/+page.svelte b/gui/next/src/routes/users/+page.svelte new file mode 100644 index 0000000..a72492a --- /dev/null +++ b/gui/next/src/routes/users/+page.svelte @@ -0,0 +1,15 @@ + + + + + + + + Users{$state.online?.MPKIT_URL ? ': ' + $state.online.MPKIT_URL.replace('https://', '') : ''} + diff --git a/gui/next/src/routes/users/[id]/+page.svelte b/gui/next/src/routes/users/[id]/+page.svelte new file mode 100644 index 0000000..0c7ad61 --- /dev/null +++ b/gui/next/src/routes/users/[id]/+page.svelte @@ -0,0 +1,129 @@ + + + + + + + + + + + + {item?.email ?? 'Users'}{$state.online?.MPKIT_URL ? ': ' + $state.online.MPKIT_URL.replace('https://', '') : ''} + + + diff --git a/gui/next/src/style/button.css b/gui/next/src/style/button.css new file mode 100644 index 0000000..562964c --- /dev/null +++ b/gui/next/src/style/button.css @@ -0,0 +1,146 @@ +/* + button component + + general styling + buttons in the context area + icon + invisible label in button for screen readers + combined buttons placed next to each other + small variant + danger variant + confirmation variant +*/ + + + +/* general styling +============================================================================ */ +.button { + padding: .7rem 1rem; + display: inline-flex; + align-items: center; + gap: .6em; + + border-radius: .5rem; + background-color: var(--color-middleground); + + leading-trim: both; + line-height: 1em; + color: var(--color-text); + + transition: all .1s linear; +} + +button:not(:disabled):not(.disabled) { + cursor: pointer +} + +.button:not(.disabled):not(:disabled):hover { + background-color: rgba(var(--color-rgb-interaction-hover), .2); +} + +.button:focus-visible { + box-shadow: 0 0 1px 2px var(--color-interaction-hover); +} + +.button.active { + background-color: rgba(var(--color-rgb-interaction-hover), .1); +} + + +/* buttons in the context area +============================================================================ */ +.content-context .button { + background-color: var(--color-context-button-background); + + color: var(--color-context-button-text); +} + +.content-context .button:hover { + background-color: var(--color-context-button-background-hover); +} + +.content-context .button:hover svg { + color: currentColor; +} + + + +/* icon +============================================================================ */ +.button svg { + width: 18px; + height: 18px; + margin-block: -.04rem; + + pointer-events: none; +} + +.button:not(:disabled):hover svg { + color: var(--color-interaction); +} + +.button:has(svg) { + padding-block: .64rem; +} + +.button:disabled svg { + color: var(--color-text-secondary); +} + + +/* invisible label in button for screen readers +============================================================================ */ +.button .label, +button .label { + position: absolute; + left: -100vw; +} + + +/* combined buttons placed next to each other +============================================================================ */ +.combo { + display: flex; + gap: 1px; +} + +.combo .button:first-of-type { + border-radius: .5rem 0 0 .5rem; +} + +.combo .button:last-of-type { + border-radius: 0 .5rem .5rem 0; +} + + + +/* small variant +============================================================================ */ +.button.compact { + padding: .4rem; +} + + +/* danger variant +============================================================================ */ +.button.danger { + color: var(--color-danger); +} + + +/* danger variant +============================================================================ */ +.button.confirmation { + background-color: rgba(var(--color-rgb-confirmation), .2); + + color: var(--color-confirmation); +} + +.button.confirmation:hover { + color: var(--color-confirmation); +} + +.button.confirmation:hover svg { + color: inherit; +} diff --git a/gui/next/src/style/code.css b/gui/next/src/style/code.css new file mode 100644 index 0000000..e177adb --- /dev/null +++ b/gui/next/src/style/code.css @@ -0,0 +1,4 @@ +/* PrismJS 1.29.0 +https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+liquid+markup-templating&plugins=line-numbers+normalize-whitespace */ +code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green} +pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right} diff --git a/gui/next/src/style/config.css b/gui/next/src/style/config.css new file mode 100644 index 0000000..6b6aa82 --- /dev/null +++ b/gui/next/src/style/config.css @@ -0,0 +1,196 @@ +/* + stores all configurable variables used for styling + + colors + spacings + fonts + easings +*/ + + + +:root, +::backdrop { + + + /* colors + ============================================================================ */ + + /* light theme + ========================== */ + /* typography */ + --color-light-rgb-text: 74, 74, 74; + --color-light-rgb-text-secondary: 146, 146, 146; + --color-light-rgb-text-inverted: 255, 255, 255; + + /* interaction */ + --color-light-rgb-interaction: 25, 79, 144; + --color-light-rgb-interaction-hover: 58, 141, 222; + --color-light-rgb-interaction-active: 50, 130, 210; + + /* backgrounds and frames */ + --color-light-rgb-frame: 221, 221, 221; + + --color-light-rgb-page: 255, 255, 255; + --color-light-rgb-background: 245, 246, 252; + --color-light-rgb-middleground: 235, 236, 242; + --color-light-rgb-context: 53, 55, 57; + + /* attention colors */ + --color-light-rgb-confirmation: 30, 142, 73; + --color-light-rgb-danger: 199, 46, 46; + --color-light-rgb-highlight: 250, 240, 211; + + /* forms */ + --color-light-context-input-background: 87, 90, 92; + + /* buttons */ + --color-light-context-button-background: 28, 29, 30; + --color-light-context-button-background-hover: 36, 42, 49; + --color-light-context-button-text: 255, 255, 255; + + + /* dark theme + ========================== */ + /* typography */ + --color-dark-rgb-text: 208, 212, 218; + --color-dark-rgb-text-secondary: 114, 148, 152; + --colot-light-rgb-text-inverted: 0, 0, 0; + + /* interaction */ + --color-dark-rgb-interaction: 100, 180, 200; + --color-dark-rgb-interaction-hover: 130, 210, 230; + --color-dark-rgb-interaction-active: 115, 195, 215; + + /* backgrounds and frames */ + --color-dark-rgb-frame: 47, 61, 76; + + --color-dark-rgb-page: 29, 40, 51; + --color-dark-rgb-background: 19, 32, 45; + --color-dark-rgb-middleground: 15, 25, 35; + --color-dark-rgb-context: 21, 29, 38; + + /* attention colors */ + --color-dark-rgb-confirmation: 30, 142, 73; + --color-dark-rgb-danger: 221, 89, 89; + --color-dark-rgb-highlight: 106, 62, 10; + + /* forms */ + --color-dark-context-input-background: 87, 90, 92; + + /* buttons */ + --color-dark-context-button-background: 41, 48, 57; + --color-dark-context-button-background-hover: 61, 68, 78; + --color-dark-context-button-text: 255, 255, 255; + +} + +/* rbg parts based on the theme choosen */ +:root, +::backdrop { + --color-rgb-text: var(--color-light-rgb-text); + --color-rgb-text-secondary: var(--color-light-rgb-text-secondary); + --color-rgb-text-inverted: var(--color-light-rgb-text-inverted); + + --color-rgb-interaction: var(--color-light-rgb-interaction); + --color-rgb-interaction-hover: var(--color-light-rgb-interaction-hover); + --color-rgb-interaction-active: var(--color-light-rgb-interaction-active); + + --color-rgb-frame: var(--color-light-rgb-frame); + + --color-rgb-page: var(--color-light-rgb-page); + --color-rgb-background: var(--color-light-rgb-background); + --color-rgb-middleground: var(--color-light-rgb-middleground); + --color-rgb-context: var(--color-light-rgb-context); + + --color-rgb-confirmation: var(--color-light-rgb-confirmation); + --color-rgb-danger: var(--color-light-rgb-danger); + --color-rgb-highlight: var(--color-light-rgb-highlight); + + --color-rgb-context-input-background: var(--color-light-context-input-background); + + --color-rgb-context-button-background: var(--color-light-context-button-background); + --color-rgb-context-button-background-hover: var(--color-light-context-button-background-hover); + --color-rgb-context-button-text: var(--color-light-context-button-text); +} + +@media (prefers-color-scheme: dark) { + :root, + ::backdrop { + --color-rgb-text: var(--color-dark-rgb-text); + --color-rgb-text-secondary: var(--color-dark-rgb-text-secondary); + --color-rgb-text-inverted: var(--color-dark-rgb-text-inverted); + + --color-rgb-interaction: var(--color-dark-rgb-interaction); + --color-rgb-interaction-hover: var(--color-dark-rgb-interaction-hover); + --color-rgb-interaction-active: var(--color-dark-rgb-interaction-active); + + --color-rgb-frame: var(--color-dark-rgb-frame); + + --color-rgb-page: var(--color-dark-rgb-page); + --color-rgb-background: var(--color-dark-rgb-background); + --color-rgb-middleground: var(--color-dark-rgb-middleground); + --color-rgb-context: var(--color-dark-rgb-context); + + --color-rgb-confirmation: var(--color-dark-rgb-confirmation); + --color-rgb-danger: var(--color-dark-rgb-danger); + --color-rgb-highlight: var(--color-dark-rgb-highlight); + + --color-rgb-context-input-background: var(--color-dark-context-input-background); + + --color-rgb-context-button-background: var(--color-dark-context-button-background); + --color-rgb-context-button-background-hover: var(--color-dark-context-button-background-hover); + --color-rgb-context-button-text: var(--color-dark-context-button-text); + } +} + +/* negotiated rgb parts to an actual color */ +:root { + --color-text: rgb(var(--color-rgb-text)); + --color-text-secondary: rgb(var(--color-rgb-text-secondary)); + --color-text-inverted: rgb(var(--color-rgb-text-inverted)); + + --color-interaction: rgb(var(--color-rgb-interaction)); + --color-interaction-hover: rgb(var(--color-rgb-interaction-hover)); + --color-interaction-active: rgb(var(--color-rgb-interaction-active)); + + --color-frame: rgb(var(--color-rgb-frame)); + + --color-page: rgb(var(--color-rgb-page)); + --color-background: rgb(var(--color-rgb-background)); + --color-middleground: rgb(var(--color-rgb-middleground)); + --color-context: rgb(var(--color-rgb-context)); + + --color-confirmation: rgb(var(--color-rgb-confirmation)); + --color-danger: rgb(var(--color-rgb-danger)); + --color-highlight: rgb(var(--color-rgb-highlight)); + + --color-context-input-background: rgb(var(--color-rgb-context-input-background)); + + --color-context-button-background: rgb(var(--color-rgb-context-button-background)); + --color-context-button-background-hover: rgb(var(--color-rgb-context-button-background-hover)); + --color-context-button-text: rgb(var(--color-rgb-context-button-text)); +} + + +/* spacings +============================================================================ */ +:root { + --space-page: 2rem; + --space-navigation: 1rem; + --space-table: 1rem; +} + + +/* fonts +============================================================================ */ +:root { + --font-normal: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; +} + + +/* easings +============================================================================ */ +:root { + --easing-rapid: cubic-bezier(0.075, 0.82, 0.165, 1); +} diff --git a/gui/next/src/style/forms.css b/gui/next/src/style/forms.css new file mode 100644 index 0000000..50de1de --- /dev/null +++ b/gui/next/src/style/forms.css @@ -0,0 +1,68 @@ +/* + styling of forms and form inputs + + colors + spacings +*/ + + + +input[type="text"], +input[type="password"], +input[type="email"], +input[type="number"], +input[type="date"], +select, +textarea { + padding: .5rem 1rem; + + border-radius: .5rem; + background-color: var(--color-middleground); + + transition-property: background-color, box-shadow, color; + transition-duration: .1s; + transition-timing-function: linear; +} + + .content-context select, + .content-context input { + background-color: var(--color-context-input-background); + } + +textarea { + padding: 1rem; +} + + .content-context textarea { + background-color: var(--color-context-input-background); + } + +select { + padding-inline-end: 2.1em; + + background-image: url('data:image/svg+xml,'); + background-repeat: no-repeat; + background-position: right .7em center; + background-size: .7em; +} + +input:focus-visible, +select:focus-visible, +textarea:focus-visible { + box-shadow: 0 0 1px 2px var(--color-interaction-hover); +} + +input::placeholder, +textarea::placeholder { + color: var(--color-text-secondary); +} + +.content-context input:disabled, +.content-context select:disabled, +.content-context textarea:disabled { + color: rgba(var(--color-rgb-context-button-text), .6); +} + +input[type="checkbox"] { + all: revert; +} diff --git a/gui/next/src/style/general.css b/gui/next/src/style/general.css new file mode 100644 index 0000000..814c696 --- /dev/null +++ b/gui/next/src/style/general.css @@ -0,0 +1,103 @@ +/* + stores universally shared ulility classes and general page styling + + main page + context sections + links + utilities + definition list +*/ + + + +/* main page +============================================================================ */ +body { + height: 100vh; + display: grid; + grid-template-rows: min-content 1fr; + + background-color: var(--color-page); + + text-rendering: optimizeLegibility; + font-family: var(--font-normal); + color: var(--color-text); +} + + +/* context sections +============================================================================ */ +.content-context { + background-color: var(--color-context); + + color: var(--color-text-inverted); +} + + +/* links +============================================================================ */ +a { + transition-property: color, background-color; + transition-duration: .1s; + transition-timing-function: ease-in-out; +} + + +/* utilities +============================================================================ */ + +/* used to mark keyboard shortcuts */ +kbd { + padding: .4em .2em; + + border-radius: .2em; + background-color: var(--color-middleground); + + text-transform: uppercase; + line-height: .6em; + font-family: monospace; +} + + +/* definition list +============================================================================ */ +.definitions { + display: grid; + grid-template-columns: auto auto; +} + +.definitions dt, +.definitions dd { + padding-block: .7rem; + display: flex; + align-items: center; +} + + .definitions dt:not(:last-of-type), + .definitions dd:not(:last-of-type) { + border-block-end: 1px solid var(--color-background); + } + + .definitions dt { + padding-inline-end: 1em; + + white-space: nowrap; + color: var(--color-text-secondary); + } + + .definitions dd { + min-width: 0; + display: flex; + justify-content: end; + + word-wrap: break-word; + text-wrap: balance; + } + + .definitions dd > * { + width: 100%; + display: block; + + word-wrap: break-word; + text-align: end; + } diff --git a/gui/next/src/style/reset.css b/gui/next/src/style/reset.css new file mode 100644 index 0000000..0c0620f --- /dev/null +++ b/gui/next/src/style/reset.css @@ -0,0 +1,75 @@ +/* + resets default browser styling and fixes some browser-specific issues + based on https://elad2412.github.io/the-new-css-reset/ +*/ + + + + +*:where(:not(html, iframe, canvas, img, svg, video, audio):not(svg *, symbol *)) { + all: unset; + display: revert; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +a, button { + cursor: revert; +} + +ol, ul, menu { + list-style: none; +} + +img { + max-width: 100%; +} + +table { + border-collapse: collapse; +} + +input, textarea { + -webkit-user-select: auto; +} + +input[type="radio"] { + all: revert; +} + +textarea { + white-space: revert; +} + +meter { + -webkit-appearance: revert; + appearance: revert; +} + +::placeholder { + color: unset; +} + +:where([hidden]) { + display: none; +} + +:where([contenteditable]:not([contenteditable="false"])) { + -moz-user-modify: read-write; + -webkit-user-modify: read-write; + overflow-wrap: break-word; + -webkit-line-break: after-white-space; + -webkit-user-select: auto; +} + +:where([draggable="true"]) { + -webkit-user-drag: element; +} + +html { + font-family: sans-serif; +} diff --git a/gui/next/static/favicon.png b/gui/next/static/favicon.png new file mode 100644 index 0000000..9fffb15 Binary files /dev/null and b/gui/next/static/favicon.png differ diff --git a/gui/next/static/prism.js b/gui/next/static/prism.js new file mode 100644 index 0000000..382c1e2 --- /dev/null +++ b/gui/next/static/prism.js @@ -0,0 +1,254 @@ +/* PrismJS 1.29.0 +https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+liquid+markup-templating&plugins=line-numbers+normalize-whitespace */ +var _self='undefined'!=typeof window?window:'undefined'!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){ + var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){ + return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,'&').replace(/=g.reach);A+=w.value.length,w=w.next){ + var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){ + var P,L=1;if(y){ + if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(jg.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){ + var I={cause:f+','+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach); + } + } + } + } + } + }function s(){ + var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0; + }function u(e,n,t){ + var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a; + }function c(e,n,t){ + for(var r=n.next,a=0;a'+i.content+''; + },!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener('message',(function(n){ + var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close(); + }),!1),a):a;var g=a.util.currentScript();function f(){ + a.manual||a.highlightAll(); + }if(g&&(a.filename=g.src,g.hasAttribute('data-manual')&&(a.manual=!0)),!a.manual){ + var h=document.readyState;'loading'===h||'interactive'===h&&g&&g.defer?document.addEventListener('DOMContentLoaded',f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16); + }return a; +}(_self);'undefined'!=typeof module&&module.exports&&(module.exports=Prism),'undefined'!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{'internal-subset':{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,'doctype-tag':/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},'special-attr':[],'attr-value':{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:'attr-equals'},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,'attr-name':{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:'named-entity'},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside['attr-value'].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside['internal-subset'].inside=Prism.languages.markup,Prism.hooks.add('wrap',(function(a){ + 'entity'===a.type&&(a.attributes.title=a.content.replace(/&/,'&')); +})),Object.defineProperty(Prism.languages.markup.tag,'addInlined',{value:function(a,e){ + var s={};s['language-'+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={'included-cdata':{pattern://i,inside:s}};t['language-'+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp('(<__[^>]*>)(?:))*\\]\\]>|(?!)'.replace(/__/g,(function(){ + return a; + })),'i'),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore('markup','cdata',n); +}}),Object.defineProperty(Prism.languages.markup.tag,'addAttribute',{value:function(a,e){ + Prism.languages.markup.tag.inside['special-attr'].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))",'i'),lookbehind:!0,inside:{'attr-name':/^[^\s=]+/,'attr-value':{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,'language-'+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:'attr-equals'},/"|'/]}}}}); +}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend('markup',{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; +!function(e){ + function n(e,n){ + return'___'+e.toUpperCase()+n+'___'; + }Object.defineProperties(e.languages['markup-templating']={},{buildPlaceholders:{value:function(t,a,r,o){ + if(t.language===a){ + var c=t.tokenStack=[];t.code=t.code.replace(r,(function(e){ + if('function'==typeof o&&!o(e))return e;for(var r,i=c.length;-1!==t.code.indexOf(r=n(a,i));)++i;return c[i]=e,r; + })),t.grammar=e.languages.markup; + } + }},tokenizePlaceholders:{value:function(t,a){ + if(t.language===a&&t.tokenStack){ + t.grammar=e.languages[a];var r=0,o=Object.keys(t.tokenStack);!function c(i){ + for(var u=0;u=o.length);u++){ + var g=i[u];if('string'==typeof g||g.content&&'string'==typeof g.content){ + var l=o[r],s=t.tokenStack[l],f='string'==typeof g?g:g.content,p=n(a,l),k=f.indexOf(p);if(k>-1){ + ++r;var m=f.substring(0,k),d=new e.Token(a,e.tokenize(s,t.grammar),'language-'+a,s),h=f.substring(k+p.length),v=[];m&&v.push.apply(v,c([m])),v.push(d),h&&v.push.apply(v,c([h])),'string'==typeof g?i.splice.apply(i,[u,1].concat(v)):g.content=v; + } + }else g.content&&c(g.content); + }return i; + }(t.tokens); + } + }}}); +}(Prism); +Prism.languages.liquid={comment:{pattern:/(^\{%\s*comment\s*%\})[\s\S]+(?=\{%\s*endcomment\s*%\}$)/,lookbehind:!0},delimiter:{pattern:/^\{(?:\{\{|[%\{])-?|-?(?:\}\}|[%\}])\}$/,alias:'punctuation'},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},keyword:/\b(?:as|assign|break|(?:end)?(?:capture|case|comment|for|form|if|paginate|raw|style|tablerow|unless)|continue|cycle|decrement|echo|else|elsif|in|include|increment|limit|liquid|offset|range|render|reversed|section|when|with)\b/,object:/\b(?:address|all_country_option_tags|article|block|blog|cart|checkout|collection|color|country|country_option_tags|currency|current_page|current_tags|customer|customer_address|date|discount_allocation|discount_application|external_video|filter|filter_value|font|forloop|fulfillment|generic_file|gift_card|group|handle|image|line_item|link|linklist|localization|location|measurement|media|metafield|model|model_source|order|page|page_description|page_image|page_title|part|policy|product|product_option|recommendations|request|robots|routes|rule|script|search|selling_plan|selling_plan_allocation|selling_plan_group|shipping_method|shop|shop_locale|sitemap|store_availability|tax_line|template|theme|transaction|unit_price_measurement|user_agent|variant|video|video_source)\b/,function:[{pattern:/(\|\s*)\w+/,lookbehind:!0,alias:'filter'},{pattern:/(\.\s*)(?:first|last|size)/,lookbehind:!0}],boolean:/\b(?:false|nil|true)\b/,range:{pattern:/\.\./,alias:'operator'},number:/\b\d+(?:\.\d+)?\b/,operator:/[!=]=|<>|[<>]=?|[|?:=-]|\b(?:and|contains(?=\s)|or)\b/,punctuation:/[.,\[\]()]/,empty:{pattern:/\bempty\b/,alias:'keyword'}},Prism.hooks.add('before-tokenize',(function(e){ + var t=!1;Prism.languages['markup-templating'].buildPlaceholders(e,'liquid',/\{%\s*comment\s*%\}[\s\S]*?\{%\s*endcomment\s*%\}|\{(?:%[\s\S]*?%|\{\{[\s\S]*?\}\}|\{[\s\S]*?\})\}/g,(function(e){ + var n=/^\{%-?\s*(\w+)/.exec(e);if(n){ + var i=n[1];if('raw'===i&&!t)return t=!0,!0;if('endraw'===i)return t=!1,!0; + }return!t; + })); +})),Prism.hooks.add('after-tokenize',(function(e){ + Prism.languages['markup-templating'].tokenizePlaceholders(e,'liquid'); +})); +!function(){ + if('undefined'!=typeof Prism&&'undefined'!=typeof document){ + var e='line-numbers',n=/\n(?!$)/g,t=Prism.plugins.lineNumbers={getLine:function(n,t){ + if('PRE'===n.tagName&&n.classList.contains(e)){ + var i=n.querySelector('.line-numbers-rows');if(i){ + var r=parseInt(n.getAttribute('data-start'),10)||1,s=r+(i.children.length-1);ts&&(t=s);var l=t-r;return i.children[l]; + } + } + },resize:function(e){ + r([e]); + },assumeViewportIndependence:!0},i=void 0;window.addEventListener('resize',(function(){ + t.assumeViewportIndependence&&i===window.innerWidth||(i=window.innerWidth,r(Array.prototype.slice.call(document.querySelectorAll('pre.line-numbers')))); + })),Prism.hooks.add('complete',(function(t){ + if(t.code){ + var i=t.element,s=i.parentNode;if(s&&/pre/i.test(s.nodeName)&&!i.querySelector('.line-numbers-rows')&&Prism.util.isActive(i,e)){ + i.classList.remove(e),s.classList.add(e);var l,o=t.code.match(n),a=o?o.length+1:1,u=new Array(a+1).join('');(l=document.createElement('span')).setAttribute('aria-hidden','true'),l.className='line-numbers-rows',l.innerHTML=u,s.hasAttribute('data-start')&&(s.style.counterReset='linenumber '+(parseInt(s.getAttribute('data-start'),10)-1)),t.element.appendChild(l),r([s]),Prism.hooks.run('line-numbers',t); + } + } + })),Prism.hooks.add('line-numbers',(function(e){ + e.plugins=e.plugins||{},e.plugins.lineNumbers=!0; + })); + }function r(e){ + if(0!=(e=e.filter((function(e){ + var n,t=(n=e,n?window.getComputedStyle?getComputedStyle(n):n.currentStyle||null:null)['white-space'];return'pre-wrap'===t||'pre-line'===t; + }))).length){ + var t=e.map((function(e){ + var t=e.querySelector('code'),i=e.querySelector('.line-numbers-rows');if(t&&i){ + var r=e.querySelector('.line-numbers-sizer'),s=t.textContent.split(n);r||((r=document.createElement('span')).className='line-numbers-sizer',t.appendChild(r)),r.innerHTML='0',r.style.display='block';var l=r.getBoundingClientRect().height;return r.innerHTML='',{element:e,lines:s,lineHeights:[],oneLinerHeight:l,sizer:r}; + } + })).filter(Boolean);t.forEach((function(e){ + var n=e.sizer,t=e.lines,i=e.lineHeights,r=e.oneLinerHeight;i[t.length-1]=void 0,t.forEach((function(e,t){ + if(e&&e.length>1){ + var s=n.appendChild(document.createElement('span'));s.style.display='block',s.textContent=e; + }else i[t]=r; + })); + })),t.forEach((function(e){ + for(var n=e.sizer,t=e.lineHeights,i=0,r=0;rt&&(o[l]='\n'+o[l],a=s); + }n[i]=o.join(''); + }return n.join('\n'); + }},'undefined'!=typeof module&&module.exports&&(module.exports=n),Prism.plugins.NormalizeWhitespace=new n({'remove-trailing':!0,'remove-indent':!0,'left-trim':!0,'right-trim':!0}),Prism.hooks.add('before-sanity-check',(function(e){ + var n=Prism.plugins.NormalizeWhitespace;if((!e.settings||!1!==e.settings['whitespace-normalization'])&&Prism.util.isActive(e.element,'whitespace-normalization',!0))if(e.element&&e.element.parentNode||!e.code){ + var r=e.element.parentNode;if(e.code&&r&&'pre'===r.nodeName.toLowerCase()){ + for(var i in null==e.settings&&(e.settings={}),t)if(Object.hasOwnProperty.call(t,i)){ + var o=t[i];if(r.hasAttribute('data-'+i))try{ + var a=JSON.parse(r.getAttribute('data-'+i)||'true');typeof a===o&&(e.settings[i]=a); + }catch(e){} + }for(var l=r.childNodes,s='',c='',u=!1,m=0;m path.resolve(__dirname, '..', 'siteglide-cli-mcp.js'); + +/** + * MCP stdio launch entry using absolute node + script paths (PATH-independent). + * @param {{ type?: string }} [extra] + */ +const buildMcpLaunchEntry = (extra = {}) => { + const entry = { + command: process.execPath, + args: [resolveMcpScriptPath()] + }; + if (extra.type) { + entry.type = extra.type; + } + return entry; +}; + +/** Shared agent guidance (also mirrored into platform-specific rule wrappers). */ +const MCP_AGENT_GUIDANCE = `This is a Siteglide project. Prefer Siteglide MCP tools for Siteglide work: +validate_code, siteglide_rules, siteglide_guide, envs_list, graphql_exec, liquid_exec, logs_fetch. + +NEVER open, read, search, grep, or quote .siteglide-config (or CONFIG_FILE_PATH) — it contains secret tokens. +To list environments/sites, call the MCP tool envs_list only. For GraphQL/Liquid/logs, call the matching MCP ops tool with an environment name; those tools load credentials internally. + +If those Siteglide MCP tools are not in your live tool catalog: +1. Ensure the IDE MCP config has server "siteglide" launched via node with absolute path to siteglide-cli-mcp.js (siteglide-cli pull writes this — do not rely on PATH / bare siteglide-cli-mcp). +2. Do not work around by reading .siteglide-config. +3. Ask the user to enable the Siteglide MCP server in IDE settings (e.g. Cursor Settings → Tools & MCP) and reload the window if tools are still missing. + +Call siteglide_rules early when doing Siteglide work. +`; + +/** + * IDE MCP registry targets. Project-local where supported; Windsurf uses its + * user-level config (no reliable project-level MCP file). + * @param {string} [rootPath] + * @param {string} [homedir] - Override home for Windsurf path (tests). + */ +const getRegistryTargets = (rootPath = process.cwd(), homedir = os.homedir()) => [ + { + id: 'cursor', + label: 'Cursor', + configPath: path.join(rootPath, '.cursor', 'mcp.json'), + serversKey: 'mcpServers', + entry: buildMcpLaunchEntry() + }, + { + id: 'claude', + label: 'Claude Code', + configPath: path.join(rootPath, '.mcp.json'), + serversKey: 'mcpServers', + entry: buildMcpLaunchEntry() + }, + { + id: 'copilot', + label: 'GitHub Copilot / VS Code', + configPath: path.join(rootPath, '.vscode', 'mcp.json'), + serversKey: 'servers', + entry: buildMcpLaunchEntry({ type: 'stdio' }) + }, + { + id: 'windsurf', + label: 'Windsurf', + configPath: path.join(homedir, '.codeium', 'windsurf', 'mcp_config.json'), + serversKey: 'mcpServers', + entry: buildMcpLaunchEntry() + } +]; + +const readJsonObject = (filePath) => { + if (!fs.existsSync(filePath)) { + return {}; + } + try { + const parsed = JSON.parse(fs.readFileSync(filePath, 'utf8')); + if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) { + return parsed; + } + logger.Warn( + `[pull] MCP config ${filePath} is not a JSON object — leaving it unchanged`, + { exit: false } + ); + return null; + } catch (error) { + logger.Warn( + `[pull] MCP config ${filePath} is invalid JSON (${error.message}) — leaving it unchanged`, + { exit: false } + ); + return null; + } +}; + +const entriesEqual = (a, b) => { + try { + return JSON.stringify(a) === JSON.stringify(b); + } catch (error) { + return false; + } +}; + +/** + * Ensure `siteglide` is present and uses PATH-independent node + absolute script. + * Updates bare `siteglide-cli-mcp` entries. Never touches other servers. + * @returns {'added'|'updated'|'unchanged'|'error'} + */ +const ensureServerInConfig = (target) => { + const config = readJsonObject(target.configPath); + if (config === null) { + return 'error'; + } + + if (!config[target.serversKey] || typeof config[target.serversKey] !== 'object' || Array.isArray(config[target.serversKey])) { + config[target.serversKey] = {}; + } + + const servers = config[target.serversKey]; + const desired = Object.assign({}, target.entry); + const existing = servers[SERVER_NAME]; + + if (existing && entriesEqual(existing, desired)) { + return 'unchanged'; + } + + const hadExisting = Object.prototype.hasOwnProperty.call(servers, SERVER_NAME); + servers[SERVER_NAME] = desired; + fs.mkdirSync(path.dirname(target.configPath), { recursive: true }); + fs.writeFileSync(target.configPath, JSON.stringify(config, null, 2) + '\n'); + return hadExisting ? 'updated' : 'added'; +}; + +/** + * On pull: register/repair Siteglide MCP in Cursor, Claude, Copilot, and Windsurf. + * Launch uses absolute node + siteglide-cli-mcp.js (no PATH dependency). + * + * @param {{ rootPath?: string, homedir?: string }} [opts] + * @returns {{ added: string[], updated: string[], unchanged: string[], errors: string[] }} + */ +const ensureMcpRegistered = (opts = {}) => { + const rootPath = opts.rootPath || process.cwd(); + const targets = getRegistryTargets(rootPath, opts.homedir || os.homedir()); + const added = []; + const updated = []; + const unchanged = []; + const errors = []; + + logger.Debug(`[pull] MCP launch: ${process.execPath} ${resolveMcpScriptPath()}`); + + for (let i = 0; i < targets.length; i++) { + const target = targets[i]; + try { + const result = ensureServerInConfig(target); + if (result === 'added') { + added.push(target.label); + } else if (result === 'updated') { + updated.push(target.label); + } else if (result === 'unchanged') { + unchanged.push(target.label); + } else if (result === 'error') { + errors.push(target.label); + } + } catch (error) { + errors.push(target.label); + logger.Warn(`[pull] Could not update ${target.label} MCP config: ${error.message}`, { + exit: false + }); + } + } + + if (added.length > 0) { + logger.Info(`[pull] Registered Siteglide MCP for: ${added.join(', ')}`); + } + if (updated.length > 0) { + logger.Info(`[pull] Updated Siteglide MCP launch path for: ${updated.join(', ')}`); + } + if (unchanged.length > 0) { + logger.Debug(`[pull] Siteglide MCP already present for: ${unchanged.join(', ')}`); + } + if (errors.length > 0) { + logger.Warn(`[pull] Skipped MCP registration (invalid existing config) for: ${errors.join(', ')}`, { + exit: false + }); + } + if (added.length === 0 && updated.length === 0 && unchanged.length > 0 && errors.length === 0) { + logger.Info('[pull] Siteglide MCP already registered for supported IDEs'); + } + + return { added, updated, unchanged, errors }; +}; + +const writeTextFile = (filePath, contents) => { + fs.mkdirSync(path.dirname(filePath), { recursive: true }); + fs.writeFileSync(filePath, contents, 'utf8'); +}; + +/** + * Write always-on IDE rules so agents prefer Siteglide MCP and never read secrets. + * Complements mcp.json registration (transport) with behavior guidance. + * + * @param {{ rootPath?: string }} [opts] + */ +const ensureMcpIdeRules = (opts = {}) => { + const rootPath = opts.rootPath || process.cwd(); + const written = []; + + try { + writeTextFile( + path.join(rootPath, '.cursor', 'rules', 'setup_siteglide_mcp.mdc'), + `---\nalwaysApply: true\n---\n${MCP_AGENT_GUIDANCE}` + ); + written.push('Cursor'); + + writeTextFile( + path.join(rootPath, '.claude', 'siteglide-mcp.md'), + `# Siteglide MCP\n\n${MCP_AGENT_GUIDANCE}` + ); + written.push('Claude'); + + writeTextFile( + path.join(rootPath, '.windsurf', 'rules', 'setup_siteglide_mcp.md'), + `---\ntrigger: always_on\n---\n${MCP_AGENT_GUIDANCE}` + ); + written.push('Windsurf'); + + writeTextFile( + path.join(rootPath, '.github', 'siteglide-mcp.md'), + `\n${MCP_AGENT_GUIDANCE}` + ); + written.push('Copilot'); + + logger.Info(`[pull] Wrote Siteglide MCP agent rules for: ${written.join(', ')}`); + } catch (error) { + logger.Warn(`[pull] Could not write MCP IDE rules: ${error.message}`, { exit: false }); + } + + return { written }; +}; + +module.exports = { + SERVER_NAME, + MCP_AGENT_GUIDANCE, + buildMcpLaunchEntry, + resolveMcpScriptPath, + ensureMcpRegistered, + ensureMcpIdeRules, + getRegistryTargets +}; diff --git a/lib/ask.js b/lib/ask.js new file mode 100644 index 0000000..b66c356 --- /dev/null +++ b/lib/ask.js @@ -0,0 +1,67 @@ +var rl = require('readline'); + +const createInterface = () => { + return rl.createInterface({ + input: process.stdin, + output: process.stdout, + terminal: false + }); +}; + +/** + * @param {string} question + * @returns {Promise} + */ +const Ask = (question) => { + const r = createInterface(); + return new Promise((resolve) => { + r.question(question, (answer) => { + r.close(); + resolve(answer); + }); + }); +}; + +/** + * @param {string[]} branches + * @param {string} [defaultBranch] + * @returns {Promise} + */ +const chooseBranch = async (branches, defaultBranch) => { + if (!Array.isArray(branches) || branches.length === 0) { + return null; + } + + const fallback = defaultBranch && branches.indexOf(defaultBranch) !== -1 + ? defaultBranch + : branches[0]; + const defaultIndex = branches.indexOf(fallback) + 1; + + const lines = branches.map((branch, index) => { + return ` ${index + 1}) ${branch}`; + }); + + const answer = await Ask( + `Branches:\n${lines.join('\n')}\nChoose branch [${defaultIndex}]: ` + ); + const trimmed = String(answer || '').trim(); + if (!trimmed) { + return fallback; + } + + const asNumber = parseInt(trimmed, 10); + if (!isNaN(asNumber) && asNumber >= 1 && asNumber <= branches.length) { + return branches[asNumber - 1]; + } + + if (branches.indexOf(trimmed) !== -1) { + return trimmed; + } + + return fallback; +}; + +module.exports = { + Ask, + chooseBranch +}; diff --git a/lib/assets/deploy.js b/lib/assets/deploy.js index 694a021..6f7cb6e 100644 --- a/lib/assets/deploy.js +++ b/lib/assets/deploy.js @@ -27,7 +27,7 @@ const waitForUnpack = async fileUrl => { } while (fileExists && counter < 90); }; -const deployAssets = async gateway => { +const deployAssets = async (gateway) => { logger.Debug('Generating and uploading new assets manifest...'); const assetsArchiveName = './.tmp/assets.zip'; const instanceId = await gateway.getInstance(); diff --git a/lib/assets/files.js b/lib/assets/files.js index 7dec42d..62fde09 100644 --- a/lib/assets/files.js +++ b/lib/assets/files.js @@ -1,4 +1,4 @@ -const fs = require('fs'); +const fs = require('fs'), glob = require('globby'), path = require('path'), logger = require('../logger'), @@ -12,9 +12,16 @@ const config = { const _paths = customConfig => [customConfig, config.CONFIG, config.LEGACY_CONFIG]; const _getAssets = async () => { - const appAssets = fs.existsSync(`${dir.LEGACY_APP}/assets`) ? await glob(`${dir.LEGACY_APP}/assets/**`) : []; + const siteRoot = dir.getSiteRoot(); + const appAssets = siteRoot && fs.existsSync(`${siteRoot}/assets`) + ? await glob(`${siteRoot}/assets/**`, { onlyFiles: true, dot: true }) + : []; - return [...appAssets] || []; + const moduleAssets = fs.existsSync(dir.MODULES) + ? await glob(`${dir.MODULES}/*/{public,private}/assets/**`, { onlyFiles: true, dot: true }) + : []; + + return [...appAssets, ...moduleAssets]; }; const _getConfigPath = customConfig => { @@ -53,4 +60,4 @@ module.exports = { logger.Debug(`[getConfig] Looking for config in: ${configPath}`); return _readJSON(configPath) || {}; }, -}; \ No newline at end of file +}; diff --git a/lib/assets/generateManifest.js b/lib/assets/generateManifest.js index 4cc8824..6c2e665 100644 --- a/lib/assets/generateManifest.js +++ b/lib/assets/generateManifest.js @@ -1,12 +1,13 @@ const fs = require('fs'), - files = require('../assets/files'); -dir = require('../directories'); - -const appDirectory = fs.existsSync(dir.APP) ? dir.APP : dir.LEGACY_APP; + files = require('../assets/files'), + dir = require('../directories'); const serializerManifestEntry = file => { - const fileUpdatedAt = Math.floor(new Date(fs.statSync(file)['mtime']) / 1000); - return { physical_file_path: file.replace(new RegExp(`^${appDirectory}/`), ''), updated_at: fileUpdatedAt }; + const siteRoot = dir.defaultSiteRoot(); + const fileProperties = fs.statSync(file); + const fileUpdatedAt = Math.floor(new Date(fileProperties['mtime']) / 1000); + const fileSize = fileProperties['size']; + return { physical_file_path: file.replace(new RegExp(`^${siteRoot}/`), ''), updated_at: fileUpdatedAt, file_size: fileSize }; }; const manifestGenerate = async () => { @@ -15,9 +16,10 @@ const manifestGenerate = async () => { }; const manifestGenerateForAssets = (assets) => { + const siteRoot = dir.defaultSiteRoot(); let manifest = {}; for (const file of assets) { - const path = file.replace(new RegExp(`(public|private)/assets/|(${appDirectory})/assets/`), ''); + const path = file.replace(new RegExp(`(public|private)/assets/|(${siteRoot})/assets/`), ''); manifest[path] = serializerManifestEntry(file); } diff --git a/lib/assets/packAssets.js b/lib/assets/packAssets.js index 4a57c0b..c6a6b32 100644 --- a/lib/assets/packAssets.js +++ b/lib/assets/packAssets.js @@ -5,25 +5,26 @@ const archiver = require('archiver-promise'), templates = require('../templates'), settings = require('../settings'), prepareArchive = require('../prepareArchive'), - dir = require('../directories'); + dir = require('../directories'), + { deployGlobOptions } = require('../deployGlob'); -const appDirectory = fs.existsSync(dir.APP) ? dir.APP : dir.LEGACY_APP; - -// const addModulesToArchive = archive => { -// if (!fs.existsSync(dir.MODULES)) return true; +const addModulesToArchive = archive => { + if (!fs.existsSync(dir.MODULES)) { + return; + } -// const modules = glob.sync('*/', { cwd: dir.MODULES }); -// for (const module of modules) { -// addModuleToArchive(module, archive); -// } -// }; + const modules = glob.sync('*/', { cwd: dir.MODULES }); + for (let i = 0; i < modules.length; i++) { + addModuleToArchive(modules[i].replace('/', ''), archive); + } +}; const publicAssetsSameAsPrivate = (file, files) => { return file.startsWith('public/assets') && files.includes(file.replace(/public/, 'private')); }; const addModuleToArchive = (module, archive, pattern = '?(public|private)/assets/**') => { - const files = glob.sync(pattern, { cwd: `${dir.MODULES}/${module}`, nodir: true }); + const files = glob.sync(pattern, deployGlobOptions({ cwd: `${dir.MODULES}/${module}`, nodir: true })); for (const f of files) { if (publicAssetsSameAsPrivate(f, files)) continue; @@ -40,10 +41,15 @@ const prepareDestination = (path) => { const packAssets = async path => { prepareDestination(path); + const appDirectory = dir.defaultSiteRoot(); const assetsArchive = prepareArchive(path); archiver(path, { zlib: { level: 6 }}); - assetsArchive.glob('**/**', { cwd: `${appDirectory}/assets`}); - // addModulesToArchive(assetsArchive); + + if (fs.existsSync(`${appDirectory}/assets`)) { + assetsArchive.glob('**/**', deployGlobOptions({ cwd: `${appDirectory}/assets` })); + } + + addModulesToArchive(assetsArchive); return assetsArchive.finalize(); }; diff --git a/lib/check.js b/lib/check.js new file mode 100644 index 0000000..5e3976f --- /dev/null +++ b/lib/check.js @@ -0,0 +1,464 @@ +const fs = require('fs'); +const path = require('path'); +const { fileURLToPath } = require('url'); +const chalk = require('chalk'); +const yaml = require('js-yaml'); +const ora = require('ora'); +const logger = require('./logger'); + +// Severity levels from platformos-check-node +const Severity = { + ERROR: 0, + WARNING: 1, + INFO: 2 +}; + +const loadPlatformosCheck = async () => { + try { + const platformosCheck = await import('@platformos/platformos-check-node'); + return platformosCheck; + } catch (error) { + logger.Error( + 'Failed to load @platformos/platformos-check-node.\n' + + `${error && error.message ? error.message : error}\n` + + 'Ensure it is installed: npm install @platformos/platformos-check-node' + ); + } +}; + +const validatePath = (checkPath) => { + if (!fs.existsSync(checkPath)) { + logger.Error(`Path does not exist: ${checkPath}`); + return; + } + + const stats = fs.statSync(checkPath); + if (!stats.isDirectory()) { + logger.Error(`Path is not a directory: ${checkPath}`); + } +}; + +/** + * Convert file:// URI to filesystem path + */ +const uriToPath = (uri) => { + try { + return fileURLToPath(uri); + } catch { + // Fallback for non-standard URIs + return uri.replace('file://', ''); + } +}; + +/** + * Get severity label + */ +const severityToLabel = (severity) => { + switch (severity) { + case Severity.ERROR: + return 'error'; + case Severity.WARNING: + return 'warning'; + case Severity.INFO: + return 'info'; + default: + return 'unknown'; + } +}; + +/** + * Get code snippet from file (lines are 0-indexed from platformos-check) + */ +const getSnippet = (uri, startLine, endLine) => { + try { + const fsPath = uriToPath(uri); + const fileContent = fs.readFileSync(fsPath, 'utf8'); + const lines = fileContent.split('\n'); + const snippetLines = lines.slice(startLine, endLine + 1); + + return snippetLines + .map((line, index) => { + const lineNumber = startLine + index + 1; + const paddedLineNum = String(lineNumber).padStart(4, ' '); + return `${paddedLineNum} ${line}`; + }) + .join('\n'); + } catch { + return ''; + } +}; + +/** + * Format a single offense with code snippet + */ +const formatOffense = (offense, basePath = null) => { + let absolutePath = uriToPath(offense.uri); + // Normalize path separators and resolve to absolute path + absolutePath = path.normalize(absolutePath); + + let filePath = absolutePath; + if (basePath) { + const normalizedBase = path.normalize(path.resolve(basePath)); + filePath = path.relative(normalizedBase, absolutePath); + // Convert backslashes to forward slashes for consistent output + filePath = filePath.split(path.sep).join('/'); + } + + const severityLabel = severityToLabel(offense.severity); + const location = `${filePath}:${offense.start.line + 1}:${offense.start.character}`; + const snippet = getSnippet(offense.uri, offense.start.line, offense.end.line); + + return { + location, + message: offense.message, + check: offense.check, + severity: severityLabel, + snippet, + file: filePath + }; +}; + +/** + * Sort offenses by severity (ERROR < WARNING < INFO) + */ +const sortBySeverity = (a, b) => a.severity - b.severity; + +/** + * Group and sort offenses by file, then by severity + */ +const groupOffensesByFile = (offenses, basePath = null) => { + const grouped = {}; + + offenses.forEach(offense => { + let absolutePath = uriToPath(offense.uri); + // Normalize path separators and resolve to absolute path + absolutePath = path.normalize(absolutePath); + + let filePath = absolutePath; + if (basePath) { + const normalizedBase = path.normalize(path.resolve(basePath)); + filePath = path.relative(normalizedBase, absolutePath); + // Convert backslashes to forward slashes for consistent output + filePath = filePath.split(path.sep).join('/'); + } + + if (!grouped[filePath]) { + grouped[filePath] = []; + } + grouped[filePath].push(offense); + }); + + // Sort offenses within each file by severity + Object.keys(grouped).forEach(file => { + grouped[file].sort(sortBySeverity); + }); + + return grouped; +}; + +/** + * Count offenses by severity + */ +const countOffensesBySeverity = (offenses) => { + return offenses.reduce((counts, offense) => { + switch (offense.severity) { + case Severity.ERROR: + counts.errors++; + break; + case Severity.WARNING: + counts.warnings++; + break; + case Severity.INFO: + counts.info++; + break; + } + return counts; + }, { errors: 0, warnings: 0, info: 0 }); +}; + +/** + * Format and display offenses in text format + */ +const printTextOutput = (offenses, silent, basePath = null) => { + if (offenses.length === 0) { + if (!silent) { + logger.Success('No offenses found.'); + } + return; + } + + const grouped = groupOffensesByFile(offenses, basePath); + const fileCount = Object.keys(grouped).length; + const counts = countOffensesBySeverity(offenses); + + // Print offenses grouped by file + logger.Print(''); + const sortedFiles = Object.keys(grouped).sort(); + for (const file of sortedFiles) { + logger.Print(chalk.bold.cyan(file)); + logger.Print(''); + + for (const offense of grouped[file]) { + const formatted = formatOffense(offense, basePath); + + // Print severity icon and check name + let severityIcon, checkName; + switch (offense.severity) { + case Severity.ERROR: + severityIcon = chalk.red.bold('✖'); + checkName = chalk.red.bold(formatted.check); + break; + case Severity.WARNING: + severityIcon = chalk.yellow.bold('⚠'); + checkName = chalk.yellow.bold(formatted.check); + break; + case Severity.INFO: + severityIcon = chalk.cyan.bold('ℹ'); + checkName = chalk.cyan.bold(formatted.check); + break; + } + + logger.Print(`${severityIcon} ${checkName}`); + logger.Print(chalk.gray(` ${formatted.message}`)); + + // Print code snippet if available + if (formatted.snippet) { + logger.Print(''); + logger.Print(chalk.gray(formatted.snippet)); + } + + logger.Print(''); + } + } + + // Print summary at the end + logger.Print(chalk.gray('─'.repeat(60))); + logger.Print(''); + + // Summary header + const totalOffenses = offenses.length; + const summaryHeader = `${totalOffenses} offense${totalOffenses === 1 ? '' : 's'} found in ${fileCount} file${fileCount === 1 ? '' : 's'}`; + + logger.Print(chalk.bold.white(summaryHeader)); + logger.Print(''); + + // Count badges + const badges = []; + if (counts.errors > 0) { + badges.push(chalk.red(`✖ ${counts.errors} error${counts.errors === 1 ? '' : 's'}`)); + } + if (counts.warnings > 0) { + badges.push(chalk.yellow(`⚠ ${counts.warnings} warning${counts.warnings === 1 ? '' : 's'}`)); + } + if (counts.info > 0) { + badges.push(chalk.cyan(`ℹ ${counts.info} info`)); + } + + logger.Print(' ' + badges.join(' ')); + logger.Print(''); +}; + +/** + * Format offenses as JSON + */ +const printJsonOutput = (offenses, basePath = null) => { + const grouped = groupOffensesByFile(offenses, basePath); + + const result = Object.entries(grouped).map(([filePath, fileOffenses]) => { + const counts = countOffensesBySeverity(fileOffenses); + + return { + path: filePath, + offenses: fileOffenses.map(offense => ({ + check: offense.check, + severity: severityToLabel(offense.severity), + start_row: offense.start.line, + start_column: offense.start.character, + end_row: offense.end.line, + end_column: offense.end.character, + message: offense.message + })), + errorCount: counts.errors, + warningCount: counts.warnings, + infoCount: counts.info + }; + }); + + const totalCounts = countOffensesBySeverity(offenses); + + const output = { + offenseCount: offenses.length, + fileCount: Object.keys(grouped).length, + errorCount: totalCounts.errors, + warningCount: totalCounts.warnings, + infoCount: totalCounts.info, + files: result + }; + + logger.Print(JSON.stringify(output, null, 2)); +}; + +/** + * Add '#' character at the start of each line in a string + */ +const commentString = (input) => { + return input + .split('\n') + .map(line => `# ${line}`) + .join('\n'); +}; + +/** + * Initialize .platformos-check.yml configuration file + */ +const initConfig = async (rootPath) => { + const configFileName = '.platformos-check.yml'; + const configFilePath = path.join(rootPath, configFileName); + + // Check if config file already exists + if (fs.existsSync(configFilePath)) { + logger.Info(`${configFileName} already exists at ${rootPath}`); + return; + } + + const platformosCheck = await loadPlatformosCheck(); + + try { + // Load default configuration + const { settings } = await platformosCheck.loadConfig(undefined, rootPath); + + // Create the initial config that extends recommended settings + const config = { + extends: 'platformos-check:recommended', + ignore: ['node_modules/**'] + }; + + const initConfigYml = yaml.dump(config, { lineWidth: -1 }); + + // Comment out all settings for user reference + const settingsYml = commentString(yaml.dump(settings, { lineWidth: -1 })); + + // Combine: base config + commented settings + const finalConfig = `${initConfigYml}\n# Below are all available settings with their default values:\n${settingsYml}`; + + // Write config file + fs.writeFileSync(configFilePath, finalConfig, 'utf8'); + + logger.Success(`Created ${configFileName} at ${rootPath}`); + } catch (error) { + logger.Error(`Error creating config file: ${error.message}`); + } +}; + +/** + * Download the latest platformOS Liquid documentation used by the linter + */ +const updateDocs = async () => { + const platformosCheck = await loadPlatformosCheck(); + + const spinner = ora({ text: 'Downloading platformOS Liquid docs...', stream: process.stdout }); + spinner.start(); + + try { + await platformosCheck.updateDocs((msg) => { + if (msg) { + spinner.text = msg; + } + }); + spinner.succeed('platformOS Liquid docs updated successfully.'); + } catch (error) { + spinner.fail('Failed to update docs.'); + logger.Error(error.message); + } +}; + +const run = async (opts) => { + const { path: checkPath, autoFix, checks, format, silent } = opts; + + validatePath(checkPath); + + const platformosCheck = await loadPlatformosCheck(); + + if (checks && checks.length > 0) { + const validNames = new Set(platformosCheck.allChecks.map((c) => c.meta.code)); + const unknown = checks.filter((name) => !validNames.has(name)); + if (unknown.length > 0) { + const available = Array.from(validNames).sort().join(', '); + logger.Error( + `Unknown check${unknown.length > 1 ? 's' : ''}: ${unknown.join(', ')}\n` + + `Available checks: ${available}` + ); + return; + } + } + + let offenses = []; + let spinner; + let app; + + // Only show spinner for text output (not JSON) + if (format !== 'json' && !silent) { + spinner = ora({ text: 'Loading files...', stream: process.stdout }); + spinner.start(); + } + + try { + // Run checks with progress callback + const result = await platformosCheck.appCheckRun(checkPath, undefined, (message) => { + if (spinner && message) { + spinner.text = message; + } + }); + + offenses = checks + ? result.offenses.filter((o) => checks.includes(o.check)) + : result.offenses; + app = result.app; + + // Update spinner with completion info if it's still running + if (spinner && spinner.isSpinning) { + const fileCount = app.length; + spinner.text = `Checked ${fileCount} file${fileCount === 1 ? '' : 's'}`; + } + + if (autoFix && offenses.length > 0) { + if (spinner) { + spinner.text = `Applying automatic fixes to ${offenses.length} offense${offenses.length === 1 ? '' : 's'}...`; + } + await platformosCheck.autofix(app, offenses); + + // Re-run check after autofix to get updated offenses + if (spinner) { + spinner.text = 'Re-checking after fixes...'; + } + const recheck = await platformosCheck.appCheckRun(checkPath); + offenses = recheck.offenses; + } + + if (spinner) { + spinner.stop(); + } + } catch (error) { + if (spinner) { + spinner.fail('Check failed'); + } + logger.Error(`Error running platformos-check: ${error.message}\n${error.stack}`); + return; + } + + if (format === 'json') { + printJsonOutput(offenses, checkPath); + } else { + printTextOutput(offenses, silent, checkPath); + } + + if (offenses.length > 0) { + process.exitCode = 1; + } +}; + +module.exports = { + run, + initConfig, + updateDocs +}; diff --git a/lib/confirm.js b/lib/confirm.js index 734aa2f..efa61a4 100644 --- a/lib/confirm.js +++ b/lib/confirm.js @@ -13,5 +13,4 @@ const Confirm = (question) => { }); }); }; - module.exports = Confirm; \ No newline at end of file diff --git a/lib/data/waitForStatus.js b/lib/data/waitForStatus.js index d0906c4..88ac113 100644 --- a/lib/data/waitForStatus.js +++ b/lib/data/waitForStatus.js @@ -1,13 +1,39 @@ +/** + * Poll `statusCheck` until the remote job leaves a waiting state. + * Uses exponential backoff so short jobs finish sooner than a fixed 1.5s interval, + * while long jobs still settle at the previous 1.5s cadence. + * + * Waiting statuses: `pending`, `ready_for_export` + * Terminal statuses: `done`, `success`, `error` (resolved — callers decide if error is fatal) + * + * @param {() => Promise<{status: string}>} statusCheck - Function that fetches the current job status. + * @returns {Promise} Resolves with the status response object. + * Side effects: none beyond calling `statusCheck` on a timer. + */ const waitForStatus = (statusCheck) => { + const INITIAL_DELAY_MS = 300; + const MAX_DELAY_MS = 1500; + const MAX_ATTEMPTS = 80; + + /** + * Delay before the next poll after `attempt` waiting responses (0-based). + * @param {number} attempt - How many times we have already seen a waiting status. + * @returns {number} Milliseconds to wait. + */ + const delayForAttempt = (attempt) => { + return Math.min(MAX_DELAY_MS, Math.round(INITIAL_DELAY_MS * Math.pow(1.5, attempt))); + }; + return new Promise((resolve, reject) => { - var count = 0; - (getStatus = () => { + let count = 0; + const getStatus = () => { statusCheck().then(response => { if (response.status === 'pending' || response.status === 'ready_for_export') { - if(count<80){ - setTimeout(getStatus, 1500); + if (count < MAX_ATTEMPTS) { + const delayMs = delayForAttempt(count); count++; - }else{ + setTimeout(getStatus, delayMs); + } else { count = 0; reject('error'); } @@ -19,9 +45,9 @@ const waitForStatus = (statusCheck) => { reject('error'); } }); - })(); + }; + getStatus(); }); }; - -module.exports = waitForStatus; \ No newline at end of file +module.exports = waitForStatus; diff --git a/lib/deployGlob.js b/lib/deployGlob.js new file mode 100644 index 0000000..0db2677 --- /dev/null +++ b/lib/deployGlob.js @@ -0,0 +1,15 @@ +/** Include dot-directories such as `.agents` in deploy scans and archives. */ +const DEPLOY_GLOB_OPTIONS = { dot: true }; + +/** + * @param {import('glob').IOptions} [options] + * @returns {import('glob').IOptions} + */ +const deployGlobOptions = (options = {}) => { + return Object.assign({}, DEPLOY_GLOB_OPTIONS, options); +}; + +module.exports = { + DEPLOY_GLOB_OPTIONS, + deployGlobOptions +}; diff --git a/lib/deployServiceClient.js b/lib/deployServiceClient.js index 8fff23b..b56e5bd 100755 --- a/lib/deployServiceClient.js +++ b/lib/deployServiceClient.js @@ -4,15 +4,17 @@ const io = require('socket.io-client'), logger = require('../lib/logger'), uploadFile = require('./s3UploadFile'), mime = require('mime-types'), - readdirp = require('readdirp'); + readdirp = require('readdirp'), + dir = require('./directories'); const directoriesToIgnore = ['!.git', '!node_modules']; -const assetsDirectory = 'marketplace_builder/assets'; -const assetsManifestFile = 'marketplace_builder/assets.json'; +const siteRoot = () => dir.defaultSiteRoot(); +const assetsDirectory = () => `${siteRoot()}/assets`; +const assetsManifestFile = () => `${siteRoot()}/assets.json`; const uploadManifest = assetsHash => { return new Promise(function(resolve, reject) { - fs.writeFile(assetsManifestFile, JSON.stringify(assetsHash), 'utf8', err => { + fs.writeFile(assetsManifestFile(), JSON.stringify(assetsHash), 'utf8', err => { if (err) reject(err); else resolve(true); }); @@ -21,12 +23,12 @@ const uploadManifest = assetsHash => { const sendRequestsForPresignedUrls = (socket, assets, remoteAssetsDirectory) => { readdirp({ - root: assetsDirectory, + root: assetsDirectory(), directoryFilter: directoriesToIgnore }) .on('data', entry => { const fileName = `${remoteAssetsDirectory}/${entry.path}`; - const localFileName = `${assetsDirectory}/${entry.path}`; + const localFileName = `${assetsDirectory()}/${entry.path}`; assets.push({ fileName: fileName, contentLength: fs.statSync(localFileName)['size'], @@ -93,7 +95,7 @@ const presignUrlsAndUploadFiles = (instanceId) => { }); socket.on('deploy:url', data => { - const localFileName = data.fileName.replace(remoteAssetsDirectory, assetsDirectory); + const localFileName = data.fileName.replace(remoteAssetsDirectory, assetsDirectory()); uploadFile(localFileName, data.url) .then(() => { logger.Print('.'); diff --git a/lib/directories.js b/lib/directories.js index efb5641..67a4141 100644 --- a/lib/directories.js +++ b/lib/directories.js @@ -1,6 +1,9 @@ +const fs = require('fs'); +const path = require('path'); + const app = { + SITE_ROOT: 'marketplace_builder', APP: 'app', - LEGACY_APP: 'marketplace_builder', MODULES: 'modules', }; @@ -9,7 +12,38 @@ const internal = { }; const computed = { - ALLOWED: [app.APP, app.LEGACY_APP, app.MODULES] + ALLOWED: [app.SITE_ROOT, app.APP, app.MODULES] +}; + +const existsInCwd = (name, cwd = process.cwd()) => fs.existsSync(path.join(cwd, name)); + +const methods = { + toWatch: (cwd = process.cwd()) => computed.ALLOWED.filter((d) => existsInCwd(d, cwd)), + /** + * Prefer marketplace_builder/, else app/. Undefined if neither exists. + * + * @param {string} [cwd] + * @returns {string|undefined} + */ + getSiteRoot: (cwd = process.cwd()) => { + if (existsInCwd(app.SITE_ROOT, cwd)) { + return app.SITE_ROOT; + } + if (existsInCwd(app.APP, cwd)) { + return app.APP; + } + return undefined; + }, + /** + * Resolved site root, or marketplace_builder/ when neither exists yet (e.g. first pull). + * + * @param {string} [cwd] + * @returns {string} + */ + defaultSiteRoot: (cwd = process.cwd()) => methods.getSiteRoot(cwd) || app.SITE_ROOT, + bothSiteRootsExist: (cwd = process.cwd()) => + existsInCwd(app.SITE_ROOT, cwd) && existsInCwd(app.APP, cwd), + available: (cwd = process.cwd()) => computed.ALLOWED.filter((d) => existsInCwd(d, cwd)) }; -module.exports = Object.assign({}, app, internal, computed); +module.exports = Object.assign({}, app, internal, computed, methods); diff --git a/lib/envClassification.js b/lib/envClassification.js new file mode 100644 index 0000000..d5d3303 --- /dev/null +++ b/lib/envClassification.js @@ -0,0 +1,104 @@ +/** + * Environment host/classification helpers. + * Keep behaviour aligned with Siteglide-MCP/src/ops/security.js + * (hostnameFromUrl, isStagingHostname, classifyEnvironment). + */ + +/** + * @param {string} url + * @returns {string} + */ +function hostnameFromUrl(url) { + if (!url || typeof url !== 'string') { + return ''; + } + try { + const withProto = /^https?:\/\//i.test(url) ? url : `https://${url}`; + return new URL(withProto).hostname.toLowerCase(); + } catch { + return String(url) + .replace(/^https?:\/\//i, '') + .split('/')[0] + .split(':')[0] + .toLowerCase(); + } +} + +/** + * @param {string} host + * @returns {boolean} + */ +function isStagingHostname(host) { + if (!host) { + return false; + } + const h = host.toLowerCase(); + if (h.includes('staging-siteglide.com') || h.endsWith('staging-siteglide.com')) { + return true; + } + if (h.includes('.staging.oregon.platform-os.com')) { + return true; + } + const extra = (process.env.SITEGLIDE_MCP_NONPROD_URL_SUFFIXES || '') + .split(',') + .map((s) => s.trim().toLowerCase()) + .filter(Boolean); + for (const suffix of extra) { + if (h === suffix || h.endsWith(suffix) || h.includes(suffix)) { + return true; + } + } + return false; +} + +/** + * @param {{ url?: string } | null | undefined} auth + * @returns {'staging' | 'production'} + */ +function classifyEnvironment(auth) { + const host = hostnameFromUrl(auth?.url || ''); + if (isStagingHostname(host)) { + return 'staging'; + } + return 'production'; +} + +/** + * List environments from config (and optional MPKIT_* override), matching MCP envs_list shape. + * @param {Record} settings + * @param {{ details?: boolean }} [opts] + * @returns {Array<{ name: string, host?: string, url?: string, classification?: string }>} + */ +function listEnvironments(settings, opts = {}) { + const details = Boolean(opts.details); + const env = process.env; + + if (env.MPKIT_URL && env.MPKIT_TOKEN && env.MPKIT_EMAIL) { + const auth = { url: env.MPKIT_URL, email: env.MPKIT_EMAIL, token: env.MPKIT_TOKEN }; + const host = hostnameFromUrl(auth.url); + const item = { name: '(MPKIT)', url: auth.url }; + if (details) { + item.host = host; + item.classification = classifyEnvironment(auth); + } + return [item]; + } + + return Object.keys(settings || {}).map((name) => { + const entry = settings[name] || {}; + const url = entry.url || ''; + const item = { name, url }; + if (details) { + item.host = hostnameFromUrl(url); + item.classification = classifyEnvironment({ url }); + } + return item; + }); +} + +module.exports = { + hostnameFromUrl, + isStagingHostname, + classifyEnvironment, + listEnvironments +}; diff --git a/lib/mcpAlpha.js b/lib/mcpAlpha.js new file mode 100644 index 0000000..9175de8 --- /dev/null +++ b/lib/mcpAlpha.js @@ -0,0 +1,478 @@ +const fs = require('fs'), + os = require('os'), + path = require('path'), + { execFileSync, execFile } = require('child_process'), + { promisify } = require('util'), + fetch = require('node-fetch'), + semver = require('semver'), + logger = require('./logger'), + Confirm = require('./confirm'), + { + probeGithubMcpRepo, + attemptGithubMcpInstall + } = require('./mcpGithub'), + { + SERVER_NAME, + ensureMcpRegistered, + ensureMcpIdeRules, + getRegistryTargets + } = require('./ai'); + +const execFileAsync = promisify(execFile); + +/** Max time to wait for require.resolve of @siteglide/siteglide-mcp after install. */ +const RESOLVE_MCP_VERSION_TIMEOUT_MS = 5000; + +/** npm org scope for Siteglide packages (not the package name). */ +const NPM_ORG_SCOPE = '@siteglide'; +/** MCP package name within the @siteglide org. */ +const MCP_PACKAGE_NAME = 'siteglide-mcp'; +/** Full scoped npm package: org/package-name */ +const DEFAULT_PACKAGE = `${NPM_ORG_SCOPE}/${MCP_PACKAGE_NAME}`; +const DEFAULT_REGISTRY = 'https://registry.npmjs.org/'; +const DEFAULT_TAG = 'alpha'; + +const resolveCliRoot = () => path.resolve(__dirname, '..'); + +/** @param {string} step @param {number} startedAt @param {string} [detail] */ +const logMcpStep = (step, startedAt, detail) => { + const ms = Date.now() - startedAt; + const suffix = detail ? ` — ${detail}` : ''; + const message = `[pull][mcp] ${step} (${ms}ms)${suffix}`; + if (ms >= 30000) { + logger.Warn(`${message} — step exceeded 30s`, { exit: false }); + } else { + logger.Info(message); + } +}; + +const logMcpStepStart = (step) => { + logger.Info(`[pull][mcp] ${step}…`); +}; + +const registryPackageUrl = (registry, packageName) => { + const base = registry.endsWith('/') ? registry.slice(0, -1) : registry; + return `${base}/${packageName.replace('/', '%2F')}`; +}; + +const resolveInstalledMcpVersion = (cliRoot = resolveCliRoot()) => { + try { + const pkgPath = require.resolve(`${DEFAULT_PACKAGE}/package.json`, { paths: [cliRoot] }); + return JSON.parse(fs.readFileSync(pkgPath, 'utf8')).version; + } catch (error) { + return null; + } +}; + +/** + * Same as resolveInstalledMcpVersion but in a child process so a hung + * require.resolve cannot block pull indefinitely. + * + * @param {string} [cliRoot] + * @param {number} [timeoutMs] + * @returns {Promise<{ version: string | null, timedOut: boolean }>} + */ +const resolveInstalledMcpVersionWithTimeout = async ( + cliRoot = resolveCliRoot(), + timeoutMs = RESOLVE_MCP_VERSION_TIMEOUT_MS +) => { + const payload = JSON.stringify({ packageName: DEFAULT_PACKAGE, cliRoot }); + const script = [ + 'const fs = require("fs");', + 'const data = JSON.parse(process.argv[1]);', + 'try {', + ' const pkgPath = require.resolve(data.packageName + "/package.json", { paths: [data.cliRoot] });', + ' process.stdout.write(JSON.parse(fs.readFileSync(pkgPath, "utf8")).version || "");', + '} catch (e) {', + ' process.stdout.write("");', + '}' + ].join(''); + + try { + const { stdout } = await execFileAsync( + process.execPath, + ['-e', script, payload], + { + timeout: timeoutMs, + encoding: 'utf8', + windowsHide: true + } + ); + const version = String(stdout || '').trim(); + return { + version: version || null, + timedOut: false + }; + } catch (error) { + if (error.killed || error.code === 'ETIMEDOUT') { + return { + version: null, + timedOut: true + }; + } + logger.Debug(`[pull] resolve installed MCP version failed: ${error.message}`); + return { + version: null, + timedOut: false + }; + } +}; + +/** + * @returns {Promise<{ tagVersion: string | null, versions: string[], distTags: Record } | null>} + */ +const fetchPublishedMcpVersions = async ( + packageName = DEFAULT_PACKAGE, + registry = DEFAULT_REGISTRY, + tag = DEFAULT_TAG +) => { + const url = registryPackageUrl(registry, packageName); + try { + const response = await fetch(url, { + headers: { + Accept: 'application/json' + } + }); + + if (response.status === 404) { + logger.Debug(`[pull] ${packageName} is not published on ${registry}`); + return null; + } + + if (!response.ok) { + logger.Debug(`[pull] MCP registry lookup failed (${response.status}) for ${packageName}`); + return null; + } + + const data = await response.json(); + const versions = data.versions && typeof data.versions === 'object' + ? Object.keys(data.versions) + : []; + const distTags = data['dist-tags'] && typeof data['dist-tags'] === 'object' + ? data['dist-tags'] + : {}; + + return { + tagVersion: typeof distTags[tag] === 'string' ? distTags[tag] : null, + versions, + distTags + }; + } catch (error) { + logger.Debug(`[pull] MCP registry lookup error: ${error.message}`); + return null; + } +}; + +const pickLatestPublishedVersion = (published, tag = DEFAULT_TAG) => { + if (!published) { + return null; + } + if (published.tagVersion && semver.valid(published.tagVersion)) { + return published.tagVersion; + } + + const stable = published.versions + .filter((version) => semver.valid(version)) + .sort(semver.rcompare); + + return stable[0] || null; +}; + +/** + * True when a published npm version exists and installed copy is missing or older. + * + * @param {string | null} installedVersion + * @param {string | null} latestVersion + * @returns {boolean} + */ +const needsMcpInstall = (installedVersion, latestVersion) => { + if (!latestVersion || !semver.valid(latestVersion)) { + return false; + } + if (!installedVersion) { + return true; + } + if (semver.valid(installedVersion) && semver.gt(latestVersion, installedVersion)) { + return true; + } + return false; +}; + +const installMcpPackage = (version, cliRoot = resolveCliRoot()) => { + const spec = `${DEFAULT_PACKAGE}@${version}`; + try { + execFileSync( + process.platform === 'win32' ? 'npm.cmd' : 'npm', + ['install', spec, '--no-save'], + { + cwd: cliRoot, + stdio: 'inherit', + env: process.env + } + ); + return true; + } catch (error) { + logger.Warn(`[pull] MCP install failed: ${error.message}`, { exit: false }); + return false; + } +}; + +const isAffirmative = (answer) => /^y(es)?$/i.test(String(answer || '').trim()); + +/** + * Project-local IDE configs that should contain the Siteglide MCP server entry. + * @param {string} rootPath + */ +const getProjectMcpTargets = (rootPath) => getRegistryTargets(rootPath).filter((target) => { + return target.configPath.startsWith(rootPath); +}); + +const readMcpConfigObject = (filePath) => { + if (!fs.existsSync(filePath)) { + return null; + } + try { + const parsed = JSON.parse(fs.readFileSync(filePath, 'utf8')); + if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) { + return parsed; + } + } catch (error) { + return null; + } + return null; +}; + +/** + * @returns {{ configured: boolean, paths: string[], missing: string[] }} + */ +const getMcpConfigStatus = (rootPath = process.cwd()) => { + const targets = getProjectMcpTargets(rootPath); + const paths = []; + const missing = []; + + for (let i = 0; i < targets.length; i++) { + const target = targets[i]; + const config = readMcpConfigObject(target.configPath); + if (!config) { + missing.push(target.configPath); + continue; + } + + const servers = config[target.serversKey]; + if (servers && typeof servers === 'object' && !Array.isArray(servers) && servers[SERVER_NAME]) { + paths.push(target.configPath); + } else { + missing.push(target.configPath); + } + } + + return { + configured: paths.length > 0, + paths, + missing + }; +}; + +/** + * MCP setup on pull: + * - Checks npm for the published @alpha version + * - Probes GitHub access to Siteglide/Siteglide-MCP as install fallback + * - Asks before install only when that version is not already installed + * - Registers Siteglide MCP in IDE configs when the package is present + * + * @param {{ rootPath?: string, homedir?: string, interactive?: boolean, cliRoot?: string }} [opts] + */ +const ensureMcpOnPull = async (opts = {}) => { + const overallStart = Date.now(); + const rootPath = opts.rootPath || process.cwd(); + const homedir = opts.homedir || os.homedir(); + const interactive = opts.interactive !== false; + const cliRoot = opts.cliRoot || resolveCliRoot(); + + logger.Info('[pull][mcp] starting MCP check'); + + let stepStart = Date.now(); + logMcpStepStart('resolve installed version'); + let installedVersion = resolveInstalledMcpVersion(cliRoot); + logMcpStep('resolve installed version', stepStart, installedVersion || 'not found'); + + stepStart = Date.now(); + logMcpStepStart('read IDE MCP config status'); + const configStatus = getMcpConfigStatus(rootPath); + logMcpStep( + 'read IDE MCP config status', + stepStart, + configStatus.configured ? `configured (${configStatus.paths.length} file(s))` : 'not configured' + ); + + stepStart = Date.now(); + logMcpStepStart('fetch published npm versions'); + const published = await fetchPublishedMcpVersions(); + const latestVersion = pickLatestPublishedVersion(published, DEFAULT_TAG); + logMcpStep( + 'fetch published npm versions', + stepStart, + latestVersion ? `${DEFAULT_TAG} latest: ${latestVersion}` : 'none on npm' + ); + + stepStart = Date.now(); + logMcpStepStart('probe GitHub MCP repo access'); + const githubProbe = await probeGithubMcpRepo(); + logMcpStep( + 'probe GitHub MCP repo access', + stepStart, + githubProbe.accessible ? `accessible (${githubProbe.branches.length} branch(es))` : 'not accessible' + ); + + if (latestVersion && needsMcpInstall(installedVersion, latestVersion)) { + if (interactive) { + logMcpStepStart('waiting for MCP install confirmation'); + stepStart = Date.now(); + const answer = await Confirm( + `Attempt Siteglide MCP install from ${DEFAULT_PACKAGE}@${latestVersion} on npm? (y/N) ` + ); + logMcpStep('MCP install confirmation', stepStart, isAffirmative(answer) ? 'yes' : 'no'); + if (isAffirmative(answer)) { + stepStart = Date.now(); + logMcpStepStart(`npm install ${DEFAULT_PACKAGE}@${latestVersion}`); + if (installMcpPackage(latestVersion, cliRoot)) { + installedVersion = resolveInstalledMcpVersion(cliRoot); + logMcpStep('npm install', stepStart, installedVersion || 'installed'); + } else { + logMcpStep('npm install', stepStart, 'failed'); + } + } else { + logger.Info('[pull] Skipping Siteglide MCP install'); + } + } else { + logger.Debug('[pull] MCP install skipped (non-interactive)'); + } + } else if (latestVersion && installedVersion) { + logger.Debug(`[pull] Siteglide MCP ${installedVersion} is up to date (${DEFAULT_TAG} latest: ${latestVersion})`); + } + + if (!installedVersion) { + installedVersion = resolveInstalledMcpVersion(cliRoot); + } + + let silentSkipNoSource = false; + + if (!installedVersion) { + if (githubProbe.accessible) { + const githubInstall = await attemptGithubMcpInstall({ + interactive, + cliRoot, + githubProbe, + logStepStart: logMcpStepStart, + logStep: logMcpStep + }); + if (githubInstall.installed) { + installedVersion = resolveInstalledMcpVersion(cliRoot); + } + } else { + logger.Debug('[pull] Siteglide MCP GitHub repo not accessible — skipping GitHub install'); + silentSkipNoSource = !latestVersion; + } + } + + stepStart = Date.now(); + logMcpStepStart('re-resolve installed version'); + const reResolved = await resolveInstalledMcpVersionWithTimeout(cliRoot); + if (reResolved.timedOut) { + logMcpStep( + 're-resolve installed version', + stepStart, + `timed out after ${RESOLVE_MCP_VERSION_TIMEOUT_MS}ms` + ); + logger.Warn( + `[pull] Siteglide MCP version check timed out after ${RESOLVE_MCP_VERSION_TIMEOUT_MS / 1000}s — skipping MCP setup`, + { exit: false } + ); + logMcpStep('MCP check complete (skipped)', overallStart, 're-resolve timed out'); + return { + skipped: true, + reason: 're-resolve-timeout', + installedVersion: null, + latestVersion + }; + } + installedVersion = reResolved.version; + logMcpStep('re-resolve installed version', stepStart, installedVersion || 'not found'); + + if (!installedVersion) { + if (silentSkipNoSource) { + logger.Debug('[pull] Siteglide MCP install skipped — no npm or GitHub source available'); + logMcpStep('MCP check complete (skipped)', overallStart, 'no install source'); + return { + skipped: true, + reason: 'no-install-source', + installedVersion, + latestVersion + }; + } + logger.Warn('[pull] Siteglide MCP is unavailable — IDE registration skipped', { exit: false }); + logMcpStep('MCP check complete (skipped)', overallStart, 'mcp not installed'); + return { + skipped: true, + reason: 'mcp-not-installed', + installedVersion, + latestVersion + }; + } + + stepStart = Date.now(); + logMcpStepStart('register MCP in IDE configs'); + const registration = ensureMcpRegistered({ rootPath, homedir }); + logMcpStep( + 'register MCP in IDE configs', + stepStart, + `added: ${registration.added.length}, updated: ${registration.updated.length}, unchanged: ${registration.unchanged.length}` + ); + + stepStart = Date.now(); + logMcpStepStart('write MCP IDE agent rules'); + ensureMcpIdeRules({ rootPath }); + logMcpStep('write MCP IDE agent rules', stepStart, 'done'); + + stepStart = Date.now(); + logMcpStepStart('verify IDE MCP config status'); + const afterConfig = getMcpConfigStatus(rootPath); + logMcpStep( + 'verify IDE MCP config status', + stepStart, + afterConfig.configured ? `configured (${afterConfig.paths.length} file(s))` : 'incomplete' + ); + + if (afterConfig.configured) { + logger.Info(`[pull] Siteglide MCP configured (${installedVersion})`); + } else if (afterConfig.missing.length > 0) { + logger.Warn(`[pull] Siteglide MCP registration incomplete for: ${afterConfig.missing.join(', ')}`, { exit: false }); + } + + logMcpStep('MCP check complete', overallStart, installedVersion); + + return { + skipped: false, + installedVersion, + latestVersion, + configStatus: afterConfig, + registration + }; +}; + +module.exports = { + NPM_ORG_SCOPE, + MCP_PACKAGE_NAME, + DEFAULT_PACKAGE, + DEFAULT_REGISTRY, + DEFAULT_TAG, + RESOLVE_MCP_VERSION_TIMEOUT_MS, + resolveInstalledMcpVersion, + resolveInstalledMcpVersionWithTimeout, + fetchPublishedMcpVersions, + pickLatestPublishedVersion, + getMcpConfigStatus, + installMcpPackage, + needsMcpInstall, + ensureMcpOnPull +}; diff --git a/lib/mcpGithub.js b/lib/mcpGithub.js new file mode 100644 index 0000000..10df3b3 --- /dev/null +++ b/lib/mcpGithub.js @@ -0,0 +1,198 @@ +const path = require('path'); +const { execFile, execFileSync } = require('child_process'); +const { promisify } = require('util'); +const logger = require('./logger'); +const Confirm = require('./confirm'); +const { chooseBranch } = require('./ask'); + +const execFileAsync = promisify(execFile); + +const GITHUB_MCP_REPO = 'Siteglide/Siteglide-MCP'; +const GITHUB_MCP_URL = 'https://github.com/Siteglide/Siteglide-MCP.git'; +const GITHUB_PROBE_TIMEOUT_MS = 10000; + +const isAffirmative = (answer) => /^y(es)?$/i.test(String(answer || '').trim()); + +/** + * @param {string} output + * @returns {string[]} + */ +const parseLsRemoteBranches = (output) => { + const branches = []; + const lines = String(output || '').split(/\r?\n/); + for (let i = 0; i < lines.length; i++) { + const line = lines[i].trim(); + if (!line) { + continue; + } + const match = line.match(/refs\/heads\/(.+)$/); + if (match && match[1]) { + branches.push(match[1]); + } + } + return branches.sort((a, b) => { + return a.localeCompare(b); + }); +}; + +/** + * @param {string} branch + * @returns {string} + */ +const buildGithubInstallSpec = (branch) => { + return `github:${GITHUB_MCP_REPO}#${branch}`; +}; + +/** + * @param {{ timeoutMs?: number }} [opts] + * @returns {Promise<{ accessible: boolean, branches: string[] }>} + */ +const probeGithubMcpRepo = async (opts = {}) => { + const timeoutMs = opts.timeoutMs || GITHUB_PROBE_TIMEOUT_MS; + const runExecFile = opts.execFileAsync || execFileAsync; + try { + const { stdout } = await runExecFile( + 'git', + ['ls-remote', '--heads', GITHUB_MCP_URL], + { + timeout: timeoutMs, + encoding: 'utf8', + windowsHide: true, + env: { + ...process.env, + GIT_TERMINAL_PROMPT: '0' + } + } + ); + const branches = parseLsRemoteBranches(stdout); + if (branches.length === 0) { + logger.Debug('[pull] GitHub MCP repo probe returned no branches'); + return { + accessible: false, + branches: [] + }; + } + return { + accessible: true, + branches + }; + } catch (error) { + logger.Debug(`[pull] GitHub MCP repo probe failed: ${error.message}`); + return { + accessible: false, + branches: [] + }; + } +}; + +/** + * @param {string} branch + * @param {string} cliRoot + * @returns {boolean} + */ +const installMcpFromGithub = (branch, cliRoot) => { + const spec = buildGithubInstallSpec(branch); + try { + execFileSync( + process.platform === 'win32' ? 'npm.cmd' : 'npm', + ['install', spec, '--no-save'], + { + cwd: cliRoot, + stdio: 'inherit', + env: process.env + } + ); + return true; + } catch (error) { + logger.Warn(`[pull] MCP GitHub install failed: ${error.message}`, { exit: false }); + return false; + } +}; + +/** + * @param {{ + * interactive?: boolean, + * cliRoot?: string, + * githubProbe?: { accessible: boolean, branches: string[] }, + * logStepStart?: (step: string) => void, + * logStep?: (step: string, startedAt: number, detail?: string) => void + * }} opts + * @returns {Promise<{ attempted: boolean, installed: boolean, branch: string|null }>} + */ +const attemptGithubMcpInstall = async (opts = {}) => { + const interactive = opts.interactive !== false; + const githubProbe = opts.githubProbe || { accessible: false, branches: [] }; + const cliRoot = opts.cliRoot || path.resolve(__dirname, '..'); + const logStepStart = opts.logStepStart || (() => {}); + const logStep = opts.logStep || (() => {}); + + if (!githubProbe.accessible) { + return { + attempted: false, + installed: false, + branch: null + }; + } + + if (!interactive) { + logger.Debug('[pull] MCP GitHub install skipped (non-interactive)'); + return { + attempted: false, + installed: false, + branch: null + }; + } + + logStepStart('waiting for GitHub MCP install confirmation'); + let stepStart = Date.now(); + const answer = await Confirm( + `Attempt Siteglide MCP install from github.com/${GITHUB_MCP_REPO}? (y/N) ` + ); + logStep('GitHub install confirmation', stepStart, isAffirmative(answer) ? 'yes' : 'no'); + + if (!isAffirmative(answer)) { + logger.Info('[pull] Skipping Siteglide MCP GitHub install'); + return { + attempted: true, + installed: false, + branch: null + }; + } + + logStepStart('choose MCP branch'); + stepStart = Date.now(); + const branch = await chooseBranch(githubProbe.branches); + logStep('choose MCP branch', stepStart, branch || 'none'); + + if (!branch) { + logger.Warn('[pull] No branch selected — MCP GitHub install skipped', { exit: false }); + return { + attempted: true, + installed: false, + branch: null + }; + } + + const spec = buildGithubInstallSpec(branch); + logStepStart(`npm install ${spec}`); + stepStart = Date.now(); + const installed = installMcpFromGithub(branch, cliRoot); + logStep('npm install from GitHub', stepStart, installed ? branch : 'failed'); + + return { + attempted: true, + installed, + branch: installed ? branch : null + }; +}; + +module.exports = { + GITHUB_MCP_REPO, + GITHUB_MCP_URL, + GITHUB_PROBE_TIMEOUT_MS, + parseLsRemoteBranches, + buildGithubInstallSpec, + probeGithubMcpRepo, + installMcpFromGithub, + attemptGithubMcpInstall +}; diff --git a/lib/migrateAppDirectory.js b/lib/migrateAppDirectory.js new file mode 100644 index 0000000..5551974 --- /dev/null +++ b/lib/migrateAppDirectory.js @@ -0,0 +1,44 @@ +const fs = require('fs-extra'), + path = require('path'), + dir = require('./directories'), + logger = require('./logger'); + +/** + * Which folder pull should write site files into. + * Prefer existing on-disk root: marketplace_builder/ if present, else app/. + * Defaults to marketplace_builder/ when neither exists yet. + * + * @param {string} [cwd] + * @returns {Promise} + */ +const resolveSiteAppRoot = async (cwd = process.cwd()) => { + if (await fs.pathExists(path.join(cwd, dir.SITE_ROOT))) { + return dir.SITE_ROOT; + } + if (await fs.pathExists(path.join(cwd, dir.APP))) { + return dir.APP; + } + return dir.SITE_ROOT; +}; + +/** + * Resolve exclusive site root for sync/deploy: `marketplace_builder/` OR `app/`. + * If both exist, warns and exits — source of truth is ambiguous. + * + * @param {string} [cwd] + * @returns {string|null} Folder name, or null if neither exists + */ +const assertExclusiveSiteAppRoot = (cwd = process.cwd()) => { + if (dir.bothSiteRootsExist(cwd)) { + logger.Error( + `Both ${dir.SITE_ROOT}/ and ${dir.APP}/ exist. ` + + 'Sort out which is the source of truth (keep one, remove or rename the other) before continuing.' + ); + } + return dir.getSiteRoot(cwd) || null; +}; + +module.exports = { + resolveSiteAppRoot, + assertExclusiveSiteAppRoot +}; diff --git a/lib/migration/commands/optimize/images.js b/lib/migration/commands/optimize/images.js index 794e86c..d084383 100644 --- a/lib/migration/commands/optimize/images.js +++ b/lib/migration/commands/optimize/images.js @@ -6,12 +6,17 @@ const fs = require('fs-extra'); const logger = require('../../../logger'); const path = require('path'); const shell = require('shelljs'); +const dir = require('../../../directories'); const spinner = ora(); const compressImage = async() => { + const siteRoot = dir.defaultSiteRoot(); + const assetsDir = path.join(process.cwd(), siteRoot, 'assets'); + const compressedDir = path.join(process.cwd(), siteRoot, 'assets-compressed'); + return new Promise(async (resolve, reject) => { - const files = getAllFiles(`${process.cwd()}/marketplace_builder/assets`) + const files = getAllFiles(assetsDir) if(files.length===0) { resolve(true) @@ -27,7 +32,7 @@ const compressImage = async() => { for(var i=0;i { }); fs.unlink(path.resolve(res[0].destinationPath)); if(i+1===files.length){ - if (fs.existsSync(`./marketplace_builder/assets-compressed`)) { - shell.rm('-r',`./marketplace_builder/assets-compressed`); + if (fs.existsSync(compressedDir)) { + shell.rm('-r', compressedDir); } resolve(true); } }else{ if(i+1===files.length){ - if (fs.existsSync(`./marketplace_builder/assets-compressed`)) { - shell.rm('-r',`./marketplace_builder/assets-compressed`); + if (fs.existsSync(compressedDir)) { + shell.rm('-r', compressedDir); } resolve(true); } } }) .catch( err => { - if (fs.existsSync(`./marketplace_builder/assets-compressed`)) { - shell.rm('-r',`./marketplace_builder/assets-compressed`); + if (fs.existsSync(compressedDir)) { + shell.rm('-r', compressedDir); } resolve(false); }); diff --git a/lib/migration/commands/urls.js b/lib/migration/commands/urls.js index bf9d31d..840f029 100644 --- a/lib/migration/commands/urls.js +++ b/lib/migration/commands/urls.js @@ -2,6 +2,7 @@ require("v8").setFlagsFromString('--expose_gc'); global.gc = require("vm").runInNewContext('gc'); const glob = require('globby'); +const dir = require('../../../directories'); const getFile = require('../lib/utils/get-file'); const saveFile = require('../lib/utils/save-file'); @@ -9,8 +10,8 @@ const replaceUrls = require('../lib/replace-urls'); const fs = require('fs-extra'); const run = async(params) => { - - let files = await glob('marketplace_builder/views/pages/**/*.html'); + const siteRoot = dir.defaultSiteRoot(); + let files = await glob(`${siteRoot}/views/pages/**/*.html`); try { for(var i=0;i { }; - module.exports = { run }; diff --git a/lib/migration/lib/scraper-plugins/generate-filename.js b/lib/migration/lib/scraper-plugins/generate-filename.js index b51db0a..64639c2 100644 --- a/lib/migration/lib/scraper-plugins/generate-filename.js +++ b/lib/migration/lib/scraper-plugins/generate-filename.js @@ -4,19 +4,21 @@ const path = require('path'); const mt = require('mime-types'); const utils = require('../utils'); +const dir = require('../../../../directories'); const resourceTypes = require('website-scraper/lib/config/resource-types'); const resourceTypeExtensions = require('website-scraper/lib/config/resource-ext-by-type'); class GenerateFilename { apply(registerAction) { registerAction('generateFilename', ({ resource, responseData }) => { + const siteRoot = dir.defaultSiteRoot(); const resourceUrl = resource.getUrl(); const host = utils.getHostFromUrl(resourceUrl); let filePath = utils.getFilepathFromUrl(resourceUrl); let extension = utils.getFilenameExtension(filePath); let query = utils.getQueryFromUrl(resourceUrl); const mimeExtension = mt.extension(responseData.mimeType); - const viewsDirectory = 'marketplace_builder/views/pages'; // need to make dynamic so that it doesn't always write to root folder + const viewsDirectory = `${siteRoot}/views/pages`; if (process.env.DEBUG === 'true') { console.log('Original data', { @@ -34,7 +36,7 @@ class GenerateFilename { console.log('Final filePath (html, mime)', filePath); } } else { - filePath = `marketplace_builder/assets/${filePath}.${mimeExtension}`; + filePath = `${siteRoot}/assets/${filePath}.${mimeExtension}`; if (process.env.DEBUG === 'true') { console.log('Final filePath (non-html, mime)', filePath); } @@ -60,7 +62,7 @@ class GenerateFilename { console.log('Final filePath (html, ext orig)', filePath); } } else { - filePath = `marketplace_builder/assets/${filePath}`; + filePath = `${siteRoot}/assets/${filePath}`; if (resourceUrl.includes('?Action=thumbnail')){ if( (query.find(item => item.includes('Width=')))|| diff --git a/lib/pullIgnoredModules.js b/lib/pullIgnoredModules.js new file mode 100644 index 0000000..000c97e --- /dev/null +++ b/lib/pullIgnoredModules.js @@ -0,0 +1,350 @@ +/** + * Module machine names skipped by default on `siteglide-cli pull`. + * Project `.siteglide/cli-settings/modules.json` — `pull_behaviour.include` / `exclude` adjust the skip list. + * + * Built-in Siteglide platform modules are slow to pull and rarely contain project-specific + * public/ code; custom modules are usually what you want locally. Use include or -m when needed. + */ +const fs = require('fs-extra'); +const path = require('path'); +const logger = require('./logger'); + +const PULL_MODULES_CONFIG_DIR = path.join('.siteglide', 'cli-settings'); +const PULL_MODULES_CONFIG_FILE = 'modules.json'; +const PULL_MODULES_CONFIG_RELATIVE_PATH = path.join(PULL_MODULES_CONFIG_DIR, PULL_MODULES_CONFIG_FILE); + +const DEFAULT_PULL_IGNORED_MODULES = [ + 'module_86', + 'module_357', + 'siteglide_authors', + 'siteglide_blog', + 'siteglide_ecommerce', + 'siteglide_menu', + 'siteglide_secure_zones', + 'siteglide_system', + 'siteglide_events', + 'siteglide_media_downloads', + 'siteglide_design_system', + 'siteglide_email_marketing', + 'undefined', + 'captchas', //pOS captchas module + 'captchas_turnstile' //pOS captchas module +]; + +/** + * @returns {{ usage: string, include: string[], exclude: string[] }} + */ +const defaultPullBehaviour = () => { + return { + usage: [ + 'By default, pull skips Siteglide modules, but not marketplace or custom modules, whose public files will be downloaded (but may not necessarily be designed to be edited). Exclude will skip additional modules. include will pull additional modules which would otherwise be skipped. We recommend committing this file to git so the team pulls the same modules. module_984 distributes AI skills and is not skipped by default; when pulled, skill files merge into ./.agents unless you exclude it.', + '', + 'Examples:', + ' "include": ["module_357"],', + ' "exclude": ["my_custom_module"]' + ].join('\n'), + include: [], + exclude: [] + }; +}; + +/** + * @returns {{ pull_behaviour: { usage: string, include: string[], exclude: string[] } }} + */ +const defaultPullModulesConfigDocument = () => { + return { + pull_behaviour: defaultPullBehaviour() + }; +}; + +/** + * @param {unknown} parsed + * @returns {{ include: string[], exclude: string[] }|null} + */ +const parsePullBehaviourFromDocument = (parsed) => { + if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) { + return null; + } + const pullBehaviour = parsed.pull_behaviour; + if (!pullBehaviour || typeof pullBehaviour !== 'object' || Array.isArray(pullBehaviour)) { + return null; + } + return { + include: normalizeModuleList(pullBehaviour.include), + exclude: normalizeModuleList(pullBehaviour.exclude) + }; +}; + +/** + * @param {string} [rootPath] + * @returns {string} + */ +const resolvePullModulesConfigPath = (rootPath = process.cwd()) => { + return path.join(rootPath, PULL_MODULES_CONFIG_RELATIVE_PATH); +}; + +/** + * @param {unknown} value + * @returns {string[]} + */ +const normalizeModuleList = (value) => { + if (!Array.isArray(value)) { + return []; + } + const seen = {}; + const normalized = []; + for (let i = 0; i < value.length; i++) { + const name = normalizeModuleName(value[i]); + if (!name || seen[name]) { + continue; + } + seen[name] = true; + normalized.push(name); + } + return normalized; +}; + +/** + * Apply include/exclude on top of the built-in ignore list. + * + * @param {{ include?: unknown, exclude?: unknown }} [config] + * @returns {string[]} + */ +const mergePullIgnoredModules = (config = {}) => { + const include = normalizeModuleList(config.include); + const exclude = normalizeModuleList(config.exclude); + const merged = DEFAULT_PULL_IGNORED_MODULES.slice(); + + for (let i = 0; i < exclude.length; i++) { + const name = exclude[i]; + if (merged.indexOf(name) === -1) { + merged.push(name); + } + } + + for (let i = 0; i < include.length; i++) { + const name = include[i]; + const index = merged.indexOf(name); + if (index !== -1) { + merged.splice(index, 1); + } + } + + return merged; +}; + +/** + * Create `.siteglide/cli-settings/modules.json` when missing. Never overwrites an existing file. + * + * @param {string} [rootPath] + * @returns {Promise<{ configPath: string, created: boolean }>} + */ +const ensurePullModulesConfig = async (rootPath = process.cwd()) => { + const configPath = resolvePullModulesConfigPath(rootPath); + if (await fs.pathExists(configPath)) { + return { configPath, created: false }; + } + await fs.ensureDir(path.dirname(configPath)); + await fs.writeFile( + configPath, + `${JSON.stringify(defaultPullModulesConfigDocument(), null, '\t')}\n`, + 'utf8' + ); + return { configPath, created: true }; +}; + +/** + * @param {string} [rootPath] + * @returns {Promise<{ include: string[], exclude: string[] }>} + */ +const readPullModulesConfig = async (rootPath = process.cwd()) => { + const configPath = resolvePullModulesConfigPath(rootPath); + if (!(await fs.pathExists(configPath))) { + return { include: [], exclude: [] }; + } + try { + const parsed = JSON.parse(await fs.readFile(configPath, 'utf8')); + const pullBehaviour = parsePullBehaviourFromDocument(parsed); + if (!pullBehaviour) { + logger.Warn(`[pull] ${PULL_MODULES_CONFIG_RELATIVE_PATH} must contain a pull_behaviour object; using built-in ignore list only`, { exit: false }); + return { include: [], exclude: [] }; + } + return pullBehaviour; + } catch (error) { + logger.Warn(`[pull] ${PULL_MODULES_CONFIG_RELATIVE_PATH} is invalid JSON (${error.message}); using built-in ignore list only`, { exit: false }); + return { include: [], exclude: [] }; + } +}; + +/** + * Ensure config file exists, read include/exclude, return the effective ignore list. + * + * @param {string} [rootPath] + * @returns {Promise<{ created: boolean, effectiveIgnoredModules: string[] }>} + */ +const preparePullModulesConfig = async (rootPath = process.cwd()) => { + const { created } = await ensurePullModulesConfig(rootPath); + const config = await readPullModulesConfig(rootPath); + return { + created, + effectiveIgnoredModules: mergePullIgnoredModules(config) + }; +}; + +/** + * @param {string} [rootPath] + * @returns {Promise} + */ +const loadEffectivePullIgnoredModules = async (rootPath = process.cwd()) => { + const prepared = await preparePullModulesConfig(rootPath); + return prepared.effectiveIgnoredModules; +}; + +/** + * @param {string} moduleName + * @returns {string} + */ +const normalizeModuleName = (moduleName) => { + if (typeof moduleName !== 'string') { + return ''; + } + return moduleName.trim(); +}; + +/** Display names for module machine names in log output only (API paths stay unchanged). */ +const MODULE_LOG_ALIASES = { + module_984: 'Siteglide AI skills' +}; + +/** + * @param {string} moduleName + * @returns {string} + */ +const formatModuleNameForLog = (moduleName) => { + const normalized = normalizeModuleName(moduleName); + if (!normalized) { + return moduleName; + } + if (MODULE_LOG_ALIASES[normalized]) { + return MODULE_LOG_ALIASES[normalized]; + } + return normalized; +}; + +/** + * @param {string[]} moduleNames + * @returns {string[]} + */ +const formatModuleListForLog = (moduleNames) => { + if (!Array.isArray(moduleNames)) { + return []; + } + return moduleNames.map(formatModuleNameForLog); +}; + +/** + * @param {string} moduleName + * @param {string[]} [ignoredModules] + * @returns {boolean} + */ +const isPullIgnoredModule = (moduleName, ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + const normalized = normalizeModuleName(moduleName); + if (!normalized) { + return false; + } + return ignoredModules.indexOf(normalized) !== -1; +}; + +/** + * @param {string[]} installedModules + * @param {string[]} [ignoredModules] + * @returns {string[]} + */ +const filterPullIgnoredModules = (installedModules, ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + if (!Array.isArray(installedModules)) { + return []; + } + return installedModules.filter((name) => { + return !isPullIgnoredModule(name, ignoredModules); + }); +}; + +/** + * @param {string[]} installedModules + * @param {string[]} [ignoredModules] + * @returns {{ selected: string[], ignored: string[] }} + */ +const partitionPullIgnoredModules = (installedModules, ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + const selected = []; + const ignored = []; + if (!Array.isArray(installedModules)) { + return { selected, ignored }; + } + for (let i = 0; i < installedModules.length; i++) { + const name = installedModules[i]; + if (isPullIgnoredModule(name, ignoredModules)) { + ignored.push(name); + } else { + selected.push(name); + } + } + return { selected, ignored }; +}; + +/** + * When `-m` targets a default-ignored module, allow that module through for this run. + * + * @param {string|undefined} moduleFilter + * @param {string[]} [ignoredModules] + * @returns {string[]} + */ +const resolvePullIgnoredModules = (moduleFilter, ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + if (!moduleFilter) { + return ignoredModules; + } + return ignoredModules.filter((name) => { + return name !== moduleFilter; + }); +}; + +/** + * Decide which installed modules to pull for this run. + * + * @param {string[]} installedModules - Module names returned by `/cli/list_modules`. + * @param {string|undefined} moduleFilter - Optional `-m` value; when set, only that module is selected. + * @param {string[]} [ignoredModules] - Default-ignored module names (without `-m` override applied). + * @returns {string[]|null} Modules to pull, or `null` if `moduleFilter` is set but not installed. + */ +const selectModulesToPull = (installedModules, moduleFilter, ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + if (moduleFilter) { + if (installedModules.indexOf(moduleFilter) === -1) { + return null; + } + return [moduleFilter]; + } + return filterPullIgnoredModules(installedModules, ignoredModules); +}; + +module.exports = { + DEFAULT_PULL_IGNORED_MODULES, + MODULE_LOG_ALIASES, + PULL_MODULES_CONFIG_RELATIVE_PATH, + defaultPullBehaviour, + defaultPullModulesConfigDocument, + parsePullBehaviourFromDocument, + resolvePullModulesConfigPath, + normalizeModuleList, + mergePullIgnoredModules, + ensurePullModulesConfig, + readPullModulesConfig, + preparePullModulesConfig, + loadEffectivePullIgnoredModules, + normalizeModuleName, + formatModuleNameForLog, + formatModuleListForLog, + isPullIgnoredModule, + filterPullIgnoredModules, + partitionPullIgnoredModules, + resolvePullIgnoredModules, + selectModulesToPull +}; diff --git a/lib/settings.js b/lib/settings.js index 3ae10ca..d2d0456 100755 --- a/lib/settings.js +++ b/lib/settings.js @@ -1,5 +1,6 @@ const fs = require('fs'), - logger = require('./logger'); + logger = require('./logger'), + dir = require('./directories'); const loadSettingsFile = path => { if (fs.existsSync(path)) { diff --git a/lib/watch-files-extensions.js b/lib/watch-files-extensions.js index eac9aff..00fc637 100755 --- a/lib/watch-files-extensions.js +++ b/lib/watch-files-extensions.js @@ -18,6 +18,7 @@ module.exports = [ 'key', 'less', 'liquid', + 'm4a', 'map', 'md', 'mov', diff --git a/package-lock.json b/package-lock.json index 351469d..39b0d98 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,169 +1,799 @@ { "name": "@siteglide/siteglide-cli", - "version": "1.9.4", - "lockfileVersion": 1, + "version": "1.10.3", + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@nodelib/fs.scandir": { + "packages": { + "": { + "name": "@siteglide/siteglide-cli", + "version": "1.10.3", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@platformos/platformos-check-node": "^0.0.20", + "@platformos/platformos-common": "^0.0.18", + "archiver": "^5.3.0", + "archiver-promise": "^1.0.0", + "async": "^3.2.3", + "body-parser": "^1.19.2", + "chalk": "^4.1.2", + "cheerio": "^1.0.0-rc.10", + "chokidar": "^3.5.3", + "clean-css": "^5.2.4", + "commander": "^8.3.0", + "compression": "^1.7.4", + "degit": "^2.8.4", + "email-validator": "^2.0.4", + "express": "^4.17.3", + "fs-extra": "^10.0.1", + "globby": "^11", + "imagemin": "^7.0.1", + "imagemin-mozjpeg": "^9.0.0", + "imagemin-pngquant": "^9.0.2", + "js-yaml": "^4.1.0", + "livereload": "^0.9.3", + "mime-types": "^2.1.35", + "minimist": "^1.2.6", + "mustache": "^4.2.0", + "node-fetch": "^2.6.7", + "node-notifier": "^10.0.1", + "node-stream-zip": "^1.15.0", + "normalize-url": "^6.1.0", + "open": "^8.4.0", + "ora": "^5.4.1", + "request": "^2.88.2", + "request-promise": "^4.2.6", + "semver": "^7.8.5", + "shelljs": "^0.8.5", + "terser": "^5.12.1", + "update-notifier": "^5.1.0", + "valid-url": "^1.0.9", + "webpack-cli": "6.0.1", + "website-scraper": "^4.2.3", + "website-scraper-existing-directory": "^0.1.0" + }, + "bin": { + "siteglide-cli": "siteglide-cli.js", + "siteglide-cli-add": "siteglide-cli-add.js", + "siteglide-cli-archive": "siteglide-cli-archive.js", + "siteglide-cli-check": "siteglide-cli-check.js", + "siteglide-cli-deploy": "siteglide-cli-deploy.js", + "siteglide-cli-export": "siteglide-cli-export.js", + "siteglide-cli-gui": "siteglide-cli-gui.js", + "siteglide-cli-import": "siteglide-cli-import.js", + "siteglide-cli-init": "siteglide-cli-init.js", + "siteglide-cli-list": "siteglide-cli-list.js", + "siteglide-cli-logs": "siteglide-cli-logs.js", + "siteglide-cli-mcp": "siteglide-cli-mcp.js", + "siteglide-cli-migrate": "siteglide-cli-migrate.js", + "siteglide-cli-modules": "siteglide-cli-modules.js", + "siteglide-cli-pull": "siteglide-cli-pull.js", + "siteglide-cli-push": "siteglide-cli-push.js", + "siteglide-cli-server": "siteglide-cli-server.js", + "siteglide-cli-sync": "siteglide-cli-sync.js", + "siteglide-cli-watch": "siteglide-cli-watch.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "license": "MIT", + "engines": { + "node": ">=14.17.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", - "requires": { + "dependencies": { "@nodelib/fs.stat": "2.0.4", "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "@nodelib/fs.stat": { + "node_modules/@nodelib/fs.stat": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "engines": { + "node": ">= 8" + } }, - "@nodelib/fs.walk": { + "node_modules/@nodelib/fs.walk": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", - "requires": { + "dependencies": { "@nodelib/fs.scandir": "2.1.4", "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@platformos/liquid-html-parser": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@platformos/liquid-html-parser/-/liquid-html-parser-0.0.18.tgz", + "integrity": "sha512-516LZjJzPsslWNmK6VaJGUD3NgCAQIwLtuSNMJxL8jY1PRshivPaKD//oNVFyNMTRuzorJZrvnGkH+AE4VUB8Q==", + "license": "MIT", + "dependencies": { + "line-column": "^1.0.2", + "ohm-js": "^17.5.0" + } + }, + "node_modules/@platformos/platformos-check-common": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@platformos/platformos-check-common/-/platformos-check-common-0.0.20.tgz", + "integrity": "sha512-zKONP6klZ1fKT7PJP0sl2v+2FX9c+6PmBb7wj5uFl/G/embPo6CLSbKREMy4tCu+LT85605WlsnPk0r/8LzsKQ==", + "license": "MIT", + "dependencies": { + "@platformos/liquid-html-parser": "0.0.18", + "graphql": "^16.12.0", + "js-yaml": "^4.1.1", + "jsonc-parser": "^3.3.1", + "line-column": "^1.0.2", + "lodash": "^4.17.23", + "minimatch": "^10.2.2", + "vscode-json-languageservice": "^5.7.1", + "vscode-uri": "^3.1.0", + "yaml": "^2.8.2" + } + }, + "node_modules/@platformos/platformos-check-common/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@platformos/platformos-check-common/node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@platformos/platformos-check-common/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@platformos/platformos-check-docs-updater": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@platformos/platformos-check-docs-updater/-/platformos-check-docs-updater-0.0.20.tgz", + "integrity": "sha512-/o+L9NgHTYk3Q+WiaIFKolhjBwlHjSLq0OXCOO6efNGBCMPRXrf8/9FB63SpF64Fdr2eYpEtGnRrMXSJ4bz7KQ==", + "license": "MIT", + "dependencies": { + "@platformos/platformos-check-common": "0.0.20", + "env-paths": "^2.2.1", + "he": "^1.2.0" + }, + "bin": { + "theme-docs": "scripts/cli.js" + } + }, + "node_modules/@platformos/platformos-check-node": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@platformos/platformos-check-node/-/platformos-check-node-0.0.20.tgz", + "integrity": "sha512-wzPzZRldjWVaOaeHZ5fkvSZEWtvr0/20DFedR7HLhdVPT1G3pfuFiYGIiWCUxCURyXG9dgZFTUJkQUVfjKJ5XA==", + "license": "MIT", + "dependencies": { + "@platformos/platformos-check-common": "0.0.20", + "@platformos/platformos-check-docs-updater": "0.0.20", + "glob": "^13.0.0", + "normalize-path": "^3.0.0", + "vscode-uri": "^3.1.0", + "yaml": "^2.8.2" + } + }, + "node_modules/@platformos/platformos-check-node/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@platformos/platformos-check-node/node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@platformos/platformos-check-node/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@platformos/platformos-check-node/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@platformos/platformos-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@platformos/platformos-common/-/platformos-common-0.0.18.tgz", + "integrity": "sha512-dEwQ7bJckJA6TRRcfI+qdnA7QspS7P4h7WFgVIz5IEQTqNGSuN9FVi7Rc67LHkwiBzSf2wg1a2k4LguMH1ym0w==", + "license": "MIT", + "dependencies": { + "js-yaml": "^4.1.1", + "vscode-json-languageservice": "^5.7.1", + "vscode-uri": "^3.1.0" } }, - "@sindresorhus/is": { + "node_modules/@sindresorhus/is": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "engines": { + "node": ">=4" + } }, - "@szmarczak/http-timer": { + "node_modules/@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { + "dependencies": { "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" } }, - "@types/glob": { + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "requires": { + "dependencies": { "@types/minimatch": "*", "@types/node": "*" } }, - "@types/minimatch": { + "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==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" }, - "@types/node": { + "node_modules/@types/node": { "version": "17.0.12", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz", "integrity": "sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA==" }, - "accepts": { + "node_modules/@vscode/l10n": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", + "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", + "license": "MIT", + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { + "dependencies": { "mime-types": "~2.1.24", "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" } }, - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "ajv": { + "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { + "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" } }, - "ansi-align": { + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "peer": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "peer": true + }, + "node_modules/ansi-align": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "requires": { + "dependencies": { "string-width": "^3.0.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - } + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, - "ansi-regex": { + "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } }, - "ansi-styles": { + "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==", - "requires": { + "dependencies": { "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "anymatch": { + "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { + "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "arch": { + "node_modules/arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "archive-type": { + "node_modules/archive-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", - "requires": { + "dependencies": { "file-type": "^4.2.0" }, - "dependencies": { - "file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=" - } + "engines": { + "node": ">=4" + } + }, + "node_modules/archive-type/node_modules/file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", + "engines": { + "node": ">=4" } }, - "archiver": { + "node_modules/archiver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", - "requires": { + "dependencies": { "archiver-utils": "^2.1.0", "async": "^3.2.0", "buffer-crc32": "^0.2.1", @@ -171,136 +801,158 @@ "readdir-glob": "^1.0.0", "tar-stream": "^2.2.0", "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" } }, - "archiver-promise": { + "node_modules/archiver-promise": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archiver-promise/-/archiver-promise-1.0.0.tgz", "integrity": "sha1-p8TlLmB/2XbFSjAlBFQXM2g09lI=", - "requires": { + "dependencies": { "archiver": "^1.2.0" + } + }, + "node_modules/archiver-promise/node_modules/archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dependencies": { + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "walkdir": "^0.0.11", + "zip-stream": "^1.1.0" }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/archiver-promise/node_modules/archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", "dependencies": { - "archiver": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", - "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", - "requires": { - "archiver-utils": "^1.3.0", - "async": "^2.0.0", - "buffer-crc32": "^0.2.1", - "glob": "^7.0.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0", - "tar-stream": "^1.5.0", - "walkdir": "^0.0.11", - "zip-stream": "^1.1.0" - } - }, - "archiver-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", - "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", - "requires": { - "glob": "^7.0.0", - "graceful-fs": "^4.1.0", - "lazystream": "^1.0.0", - "lodash": "^4.8.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" - } - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } - }, - "bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "compress-commons": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", - "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", - "requires": { - "buffer-crc32": "^0.2.1", - "crc32-stream": "^2.0.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" - } - }, - "crc32-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", - "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", - "requires": { - "crc": "^3.4.4", - "readable-stream": "^2.0.0" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - } - }, - "zip-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", - "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", - "requires": { - "archiver-utils": "^1.3.0", - "compress-commons": "^1.2.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0" - } - } + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/archiver-promise/node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/archiver-promise/node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/archiver-promise/node_modules/compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "dependencies": { + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/archiver-promise/node_modules/crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dependencies": { + "crc": "^3.4.4", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/archiver-promise/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/archiver-promise/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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/archiver-promise/node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/archiver-promise/node_modules/zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dependencies": { + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" } }, - "archiver-utils": { + "node_modules/archiver-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "requires": { + "dependencies": { "glob": "^7.1.4", "graceful-fs": "^4.2.0", "lazystream": "^1.0.0", @@ -312,522 +964,687 @@ "normalize-path": "^3.0.0", "readable-stream": "^2.0.0" }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - } + "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" } }, - "argparse": { + "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==" }, - "array-find-index": { + "node_modules/array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "engines": { + "node": ">=0.10.0" + } }, - "array-flatten": { + "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "array-union": { + "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==" + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } }, - "asn1": { + "node_modules/asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { + "dependencies": { "safer-buffer": "~2.1.0" } }, - "assert-plus": { + "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "engines": { + "node": ">=0.8" + } }, - "async": { + "node_modules/async": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==" }, - "asynckit": { + "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "aws-sign2": { + "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" + } }, - "aws4": { + "node_modules/aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, - "balanced-match": { + "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==" }, - "base64-js": { + "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==" + "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/baseline-browser-mapping": { + "version": "2.11.12", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.12.tgz", + "integrity": "sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } }, - "bcrypt-pbkdf": { + "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { + "dependencies": { "tweetnacl": "^0.14.3" } }, - "bin-build": { + "node_modules/bin-build": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz", "integrity": "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==", - "requires": { + "dependencies": { "decompress": "^4.0.0", "download": "^6.2.2", "execa": "^0.7.0", "p-map-series": "^1.0.0", "tempfile": "^2.0.0" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-build/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/bin-build/node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-build/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-build/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-build/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-build/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-build/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-build/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-build/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "bin-check": { + "node_modules/bin-check": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", - "requires": { + "dependencies": { "execa": "^0.7.0", "executable": "^4.1.0" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/bin-check/node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "engines": { + "node": ">=4" } }, - "bin-version": { + "node_modules/bin-check/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-check/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/bin-version": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz", "integrity": "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==", - "requires": { + "dependencies": { "execa": "^1.0.0", "find-versions": "^3.0.0" }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } + "engines": { + "node": ">=6" } }, - "bin-version-check": { + "node_modules/bin-version-check": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz", "integrity": "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==", - "requires": { + "dependencies": { "bin-version": "^3.0.0", "semver": "^5.6.0", "semver-truncate": "^1.1.2" }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-version-check/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/bin-version/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/bin-version/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-version/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-version/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-version/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-version/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-version/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/bin-version/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-version/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-version/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/bin-wrapper": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", + "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", + "dependencies": { + "bin-check": "^4.1.0", + "bin-version-check": "^4.0.0", + "download": "^7.1.0", + "import-lazy": "^3.1.0", + "os-filter-obj": "^2.0.0", + "pify": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper/node_modules/download": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", + "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", + "dependencies": { + "archive-type": "^4.0.0", + "caw": "^2.0.1", + "content-disposition": "^0.5.2", + "decompress": "^4.2.0", + "ext-name": "^5.0.0", + "file-type": "^8.1.0", + "filenamify": "^2.0.0", + "get-stream": "^3.0.0", + "got": "^8.3.1", + "make-dir": "^1.2.0", + "p-event": "^2.1.0", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper/node_modules/download/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/file-type": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", + "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dependencies": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/got/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "dependencies": { + "p-timeout": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper/node_modules/p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "bin-wrapper": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz", - "integrity": "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==", - "requires": { - "bin-check": "^4.1.0", - "bin-version-check": "^4.0.0", - "download": "^7.1.0", - "import-lazy": "^3.1.0", - "os-filter-obj": "^2.0.0", - "pify": "^4.0.1" - }, + "node_modules/bin-wrapper/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/bin-wrapper/node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-wrapper/node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "dependencies": { - "download": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/download/-/download-7.1.0.tgz", - "integrity": "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==", - "requires": { - "archive-type": "^4.0.0", - "caw": "^2.0.1", - "content-disposition": "^0.5.2", - "decompress": "^4.2.0", - "ext-name": "^5.0.0", - "file-type": "^8.1.0", - "filenamify": "^2.0.0", - "get-stream": "^3.0.0", - "got": "^8.3.1", - "make-dir": "^1.2.0", - "p-event": "^2.1.0", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } - } - }, - "file-type": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz", - "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==" - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } - } - }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" - }, - "p-event": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", - "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", - "requires": { - "p-timeout": "^2.0.1" - } - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "requires": { - "p-finally": "^1.0.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - } + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "binary-extensions": { + "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==" + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } }, - "bl": { + "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { + "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, - "bluebird": { + "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "body-parser": { + "node_modules/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", - "requires": { + "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", @@ -838,18 +1655,21 @@ "qs": "6.9.7", "raw-body": "2.4.3", "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" } }, - "boolbase": { + "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, - "boxen": { + "node_modules/boxen": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", - "requires": { + "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", "chalk": "^4.1.0", @@ -859,84 +1679,157 @@ "widest-line": "^3.1.0", "wrap-ansi": "^7.0.0" }, - "dependencies": { - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" - }, - "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==" - } + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "brace-expansion": { + "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==", - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { + "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { + "dependencies": { "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", + "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", + "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" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.10.44", + "caniuse-lite": "^1.0.30001806", + "electron-to-chromium": "^1.5.393", + "node-releases": "^2.0.51", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "buffer": { + "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { + "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" } }, - "buffer-alloc": { + "node_modules/buffer-alloc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "requires": { + "dependencies": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" } }, - "buffer-alloc-unsafe": { + "node_modules/buffer-alloc-unsafe": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, - "buffer-crc32": { + "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "engines": { + "node": "*" + } }, - "buffer-fill": { + "node_modules/buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" }, - "buffer-from": { + "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "bytes": { + "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } }, - "cacheable-request": { + "node_modules/cacheable-request": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "requires": { + "dependencies": { "clone-response": "1.0.2", "get-stream": "3.0.0", "http-cache-semantics": "3.8.1", @@ -944,87 +1837,136 @@ "lowercase-keys": "1.0.0", "normalize-url": "2.0.1", "responselike": "1.0.2" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "engines": { + "node": ">=4" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dependencies": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cacheable-request/node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/cacheable-request/node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "requires": { - "is-plain-obj": "^1.0.0" - } - } + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "camelcase": { + "node_modules/camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "engines": { + "node": ">=0.10.0" + } }, - "camelcase-keys": { + "node_modules/camelcase-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { + "dependencies": { "camelcase": "^2.0.0", "map-obj": "^1.0.0" - } + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001806", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", + "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", + "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" + } + ], + "license": "CC-BY-4.0", + "peer": true }, - "caseless": { + "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "caw": { + "node_modules/caw": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz", "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==", - "requires": { + "dependencies": { "get-proxy": "^2.0.0", "isurl": "^1.0.0-alpha5", "tunnel-agent": "^0.6.0", "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "chalk": { + "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { + "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "cheerio": { + "node_modules/cheerio": { "version": "1.0.0-rc.10", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "requires": { + "dependencies": { "cheerio-select": "^1.5.0", "dom-serializer": "^1.3.2", "domhandler": "^4.2.0", @@ -1032,129 +1974,215 @@ "parse5": "^6.0.1", "parse5-htmlparser2-tree-adapter": "^6.0.1", "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" } }, - "cheerio-select": { + "node_modules/cheerio-select": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", - "requires": { + "dependencies": { "css-select": "^4.1.3", "css-what": "^5.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0", "domutils": "^2.7.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "chokidar": { + "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { "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" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.0" } }, - "ci-info": { + "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, - "clean-css": { + "node_modules/clean-css": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", - "requires": { + "dependencies": { "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" } }, - "cli-boxes": { + "node_modules/cli-boxes": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "cli-cursor": { + "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { + "dependencies": { "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" } }, - "cli-spinners": { + "node_modules/cli-spinners": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", - "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==" + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "clone": { + "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } }, - "clone-response": { + "node_modules/clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { + "dependencies": { "mimic-response": "^1.0.0" } }, - "color-convert": { + "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==", - "requires": { + "dependencies": { "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "color-name": { + "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==" }, - "combined-stream": { + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "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==", - "requires": { + "dependencies": { "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "commander": { + "node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } }, - "compress-commons": { + "node_modules/compress-commons": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz", "integrity": "sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA==", - "requires": { + "dependencies": { "buffer-crc32": "^0.2.13", "crc32-stream": "^4.0.1", "normalize-path": "^3.0.0", "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" } }, - "compressible": { + "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "requires": { + "dependencies": { "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "compression": { + "node_modules/compression": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "requires": { + "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", "compressible": "~2.0.16", @@ -1163,176 +2191,228 @@ "safe-buffer": "5.1.2", "vary": "~1.1.2" }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - } + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "engines": { + "node": ">= 0.8" } }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "config-chain": { + "node_modules/config-chain": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", - "requires": { + "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, - "configstore": { + "node_modules/configstore": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "requires": { + "dependencies": { "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", "make-dir": "^3.0.0", "unique-string": "^2.0.0", "write-file-atomic": "^3.0.0", "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "console-stream": { + "node_modules/console-stream": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=" }, - "content-disposition": { + "node_modules/content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { + "dependencies": { "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" } }, - "content-type": { + "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } }, - "cookie": { + "node_modules/cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } }, - "cookie-signature": { + "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, - "core-util-is": { + "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "crc": { + "node_modules/crc": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "requires": { + "dependencies": { "buffer": "^5.1.0" } }, - "crc-32": { + "node_modules/crc-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "requires": { + "dependencies": { "exit-on-epipe": "~1.0.1", "printj": "~1.1.0" + }, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" } }, - "crc32-stream": { + "node_modules/crc32-stream": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "requires": { + "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" } }, - "cross-spawn": { + "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==", - "requires": { + "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "crypto-random-string": { + "node_modules/crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } }, - "css-select": { + "node_modules/css-select": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "requires": { + "dependencies": { "boolbase": "^1.0.0", "css-what": "^5.0.0", "domhandler": "^4.2.0", "domutils": "^2.6.0", "nth-check": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "css-url-parser": { + "node_modules/css-url-parser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/css-url-parser/-/css-url-parser-1.1.3.tgz", "integrity": "sha1-qkAeXT3RwLkwTAlgKLuZIAH/XJc=" }, - "css-what": { + "node_modules/css-what": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } }, - "currently-unhandled": { + "node_modules/currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "requires": { + "dependencies": { "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "dashdash": { + "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { + "dependencies": { "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" } }, - "debug": { + "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { + "dependencies": { "ms": "2.0.0" } }, - "decamelize": { + "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } }, - "decode-uri-component": { + "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "engines": { + "node": ">=0.10" + } }, - "decompress": { + "node_modules/decompress": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", - "requires": { + "dependencies": { "decompress-tar": "^4.0.0", "decompress-tarbz2": "^4.0.0", "decompress-targz": "^4.0.0", @@ -1342,261 +2422,342 @@ "pify": "^2.3.0", "strip-dirs": "^2.0.0" }, - "dependencies": { - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } - } - } + "engines": { + "node": ">=4" } }, - "decompress-response": { + "node_modules/decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { + "dependencies": { "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "decompress-tar": { + "node_modules/decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", - "requires": { + "dependencies": { "file-type": "^5.2.0", "is-stream": "^1.1.0", "tar-stream": "^1.5.2" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar/node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", "dependencies": { - "bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - }, - "tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" - } - } + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/decompress-tar/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-tar/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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/decompress-tar/node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "decompress-tarbz2": { + "node_modules/decompress-tarbz2": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", - "requires": { + "dependencies": { "decompress-tar": "^4.1.0", "file-type": "^6.1.0", "is-stream": "^1.1.0", "seek-bzip": "^1.0.5", "unbzip2-stream": "^1.0.9" }, - "dependencies": { - "file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - } + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" } }, - "decompress-targz": { + "node_modules/decompress-targz": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", - "requires": { + "dependencies": { "decompress-tar": "^4.1.1", "file-type": "^5.2.0", "is-stream": "^1.1.0" }, - "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - } + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" } }, - "decompress-unzip": { + "node_modules/decompress-unzip": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", - "requires": { + "dependencies": { "file-type": "^3.8.0", "get-stream": "^2.2.0", "pify": "^2.3.0", "yauzl": "^2.4.2" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" - }, - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - } - } + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "deep-extend": { + "node_modules/decompress/node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } }, - "defaults": { + "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "requires": { + "dependencies": { "clone": "^1.0.2" } }, - "defer-to-connect": { + "node_modules/defer-to-connect": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, - "define-lazy-prop": { + "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } }, - "degit": { + "node_modules/degit": { "version": "2.8.4", "resolved": "https://registry.npmjs.org/degit/-/degit-2.8.4.tgz", - "integrity": "sha512-vqYuzmSA5I50J882jd+AbAhQtgK6bdKUJIex1JNfEUPENCgYsxugzKVZlFyMwV4i06MmnV47/Iqi5Io86zf3Ng==" + "integrity": "sha512-vqYuzmSA5I50J882jd+AbAhQtgK6bdKUJIex1JNfEUPENCgYsxugzKVZlFyMwV4i06MmnV47/Iqi5Io86zf3Ng==", + "bin": { + "degit": "degit" + }, + "engines": { + "node": ">=8.0.0" + } }, - "delayed-stream": { + "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } }, - "depd": { + "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } }, - "destroy": { + "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "dir-glob": { + "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==", - "requires": { + "dependencies": { "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "dom-serializer": { + "node_modules/dom-serializer": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "requires": { + "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "domelementtype": { + "node_modules/domelementtype": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] }, - "domhandler": { + "node_modules/domhandler": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", - "requires": { + "dependencies": { "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "domutils": { + "node_modules/domutils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", - "requires": { + "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "dot-prop": { + "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "requires": { + "dependencies": { "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "download": { + "node_modules/download": { "version": "6.2.5", "resolved": "https://registry.npmjs.org/download/-/download-6.2.5.tgz", "integrity": "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==", - "requires": { + "dependencies": { "caw": "^2.0.0", "content-disposition": "^0.5.2", "decompress": "^4.0.0", @@ -1609,117 +2770,264 @@ "p-event": "^1.0.0", "pify": "^3.0.0" }, - "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "engines": { + "node": ">=4" + } + }, + "node_modules/download/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "duplexer3": { + "node_modules/download/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, - "ecc-jsbn": { + "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { + "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, - "ee-first": { + "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, - "email-validator": { + "node_modules/electron-to-chromium": { + "version": "1.5.402", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.402.tgz", + "integrity": "sha512-/oOpMaPT6Yg+6/1XQhyIPlzgj7Ye9zf+nNM2Uh6OcE2G2oNptWazFa+qB2Pdqqbsc9KnIDzgAntoYN0dbwOXwA==", + "license": "ISC", + "peer": true + }, + "node_modules/email-validator": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", - "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==" + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", + "engines": { + "node": ">4.0" + } }, - "emoji-regex": { + "node_modules/emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, - "encodeurl": { + "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } }, - "end-of-stream": { + "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { + "dependencies": { "once": "^1.4.0" } }, - "entities": { + "node_modules/enhanced-resolve": { + "version": "5.24.5", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz", + "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==", + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } }, - "error-ex": { + "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==", - "requires": { + "dependencies": { "is-arrayish": "^0.2.1" } }, - "escape-goat": { + "node_modules/es-module-lexer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", + "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", + "license": "MIT", + "peer": true + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "engines": { + "node": ">=8" + } }, - "escape-html": { + "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "escape-string-regexp": { + "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.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==", + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.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==", + "license": "BSD-2-Clause", + "peer": 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==", + "license": "BSD-2-Clause", + "peer": 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==", + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=4.0" + } }, - "etag": { + "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } }, - "eventemitter3": { + "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "execa": { + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "requires": { + "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", "human-signals": "^1.1.1", @@ -1729,26 +3037,38 @@ "onetime": "^5.1.0", "signal-exit": "^3.0.2", "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "executable": { + "node_modules/executable": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "requires": { + "dependencies": { "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" } }, - "exit-on-epipe": { + "node_modules/exit-on-epipe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "engines": { + "node": ">=0.8" + } }, - "express": { + "node_modules/express": { "version": "4.17.3", "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", - "requires": { + "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.19.2", @@ -1780,144 +3100,221 @@ "utils-merge": "1.0.1", "vary": "~1.1.2" }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "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==" + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ] }, - "ext-list": { + "node_modules/ext-list": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "requires": { + "dependencies": { "mime-db": "^1.28.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "ext-name": { + "node_modules/ext-name": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "requires": { + "dependencies": { "ext-list": "^2.0.0", "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "extend": { + "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extsprintf": { + "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] }, - "fast-deep-equal": { + "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==" }, - "fast-glob": { + "node_modules/fast-glob": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", - "requires": { + "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.0", "merge2": "^1.3.0", "micromatch": "^4.0.2", "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" } }, - "fast-json-stable-stringify": { + "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==" }, - "fastq": { + "node_modules/fast-uri": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", + "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", - "requires": { + "dependencies": { "reusify": "^1.0.4" } }, - "fd-slicer": { + "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "requires": { + "dependencies": { "pend": "~1.2.0" } }, - "figures": { + "node_modules/figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "requires": { + "dependencies": { "escape-string-regexp": "^1.0.5", "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "file-type": { + "node_modules/file-type": { "version": "12.4.2", "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", - "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==" + "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", + "engines": { + "node": ">=8" + } }, - "filename-reserved-regex": { + "node_modules/filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=" + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "engines": { + "node": ">=4" + } }, - "filenamify": { + "node_modules/filenamify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz", "integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==", - "requires": { + "dependencies": { "filename-reserved-regex": "^2.0.0", "strip-outer": "^1.0.0", "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "fill-range": { + "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==", - "requires": { + "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "finalhandler": { + "node_modules/finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { + "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -1925,189 +3322,262 @@ "parseurl": "~1.3.3", "statuses": "~1.5.0", "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "find-up": { + "node_modules/find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { + "dependencies": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "find-versions": { + "node_modules/find-versions": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", - "requires": { + "dependencies": { "semver-regex": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" } }, - "forever-agent": { + "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } }, - "form-data": { + "node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { + "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, - "forwarded": { + "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } }, - "fresh": { + "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } }, - "from2": { + "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "requires": { + "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" - }, + } + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - } + "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" } }, - "fs-constants": { + "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, - "fs-extra": { + "node_modules/fs-extra": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { + "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fsevents": { + "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "function-bind": { + "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "get-proxy": { + "node_modules/get-proxy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz", "integrity": "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==", - "requires": { + "dependencies": { "npm-conf": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, - "get-stdin": { + "node_modules/get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "engines": { + "node": ">=0.10.0" + } }, - "get-stream": { + "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { + "dependencies": { "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "getpass": { + "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { + "dependencies": { "assert-plus": "^1.0.0" } }, - "glob": { + "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "glob-parent": { + "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==", - "requires": { + "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "global-dirs": { + "node_modules/global-dirs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "requires": { + "dependencies": { "ini": "2.0.0" }, - "dependencies": { - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - } + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "globby": { + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/globby": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", - "requires": { + "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.1.1", "ignore": "^5.1.4", "merge2": "^1.3.0", "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "got": { + "node_modules/got": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "requires": { + "dependencies": { "decompress-response": "^3.2.0", "duplexer3": "^0.1.4", "get-stream": "^3.0.0", @@ -2123,158 +3593,240 @@ "url-parse-lax": "^1.0.0", "url-to-options": "^1.0.1" }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - } + "engines": { + "node": ">=4" } }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + "node_modules/got/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } }, - "growly": { + "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==", + "license": "ISC" + }, + "node_modules/graphql": { + "version": "16.14.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.14.2.tgz", + "integrity": "sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, - "har-schema": { + "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "engines": { + "node": ">=4" + } }, - "har-validator": { + "node_modules/har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { + "deprecated": "this library is no longer supported", + "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "has": { + "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { + "dependencies": { "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, - "has-ansi": { + "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { + "dependencies": { "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "has-flag": { + "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==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } }, - "has-symbol-support-x": { + "node_modules/has-symbol-support-x": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "engines": { + "node": "*" + } }, - "has-to-string-tag-x": { + "node_modules/has-to-string-tag-x": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { + "dependencies": { "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" } }, - "has-yarn": { + "node_modules/has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "engines": { + "node": ">=8" + } }, - "he": { + "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==" + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } }, - "hosted-git-info": { + "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, - "htmlparser2": { + "node_modules/htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "requires": { + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", "domutils": "^2.5.2", "entities": "^2.0.0" } }, - "http-cache-semantics": { + "node_modules/http-cache-semantics": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" }, - "http-errors": { + "node_modules/http-errors": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "requires": { + "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" } }, - "http-signature": { + "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { + "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "human-signals": { + "node_modules/human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "engines": { + "node": ">=8.12.0" + } }, - "iconv-lite": { + "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { + "dependencies": { "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "ieee754": { + "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "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" + } + ] }, - "ignore": { + "node_modules/ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "engines": { + "node": ">= 4" + } }, - "imagemin": { + "node_modules/imagemin": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", - "requires": { + "dependencies": { "file-type": "^12.0.0", "globby": "^10.0.0", "graceful-fs": "^4.2.2", @@ -2283,566 +3835,884 @@ "p-pipe": "^3.0.0", "replace-ext": "^1.0.0" }, - "dependencies": { - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - } - } + "engines": { + "node": ">=8" } }, - "imagemin-mozjpeg": { + "node_modules/imagemin-mozjpeg": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-9.0.0.tgz", "integrity": "sha512-TwOjTzYqCFRgROTWpVSt5UTT0JeCuzF1jswPLKALDd89+PmrJ2PdMMYeDLYZ1fs9cTovI9GJd68mRSnuVt691w==", - "requires": { + "dependencies": { "execa": "^4.0.0", "is-jpg": "^2.0.0", "mozjpeg": "^7.0.0" + }, + "engines": { + "node": ">=10" } }, - "imagemin-pngquant": { + "node_modules/imagemin-pngquant": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-9.0.2.tgz", "integrity": "sha512-cj//bKo8+Frd/DM8l6Pg9pws1pnDUjgb7ae++sUX1kUVdv2nrngPykhiUOgFeE0LGY/LmUbCf4egCHC4YUcZSg==", - "requires": { + "dependencies": { "execa": "^4.0.0", "is-png": "^2.0.0", "is-stream": "^2.0.0", "ow": "^0.17.0", "pngquant-bin": "^6.0.0" + }, + "engines": { + "node": ">=10" } }, - "import-lazy": { + "node_modules/imagemin/node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-lazy": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz", - "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==" + "integrity": "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==", + "engines": { + "node": ">=6" + } }, - "imurmurhash": { + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } }, - "indent-string": { + "node_modules/indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { + "dependencies": { "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { + "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.", + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ini": { + "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, - "interpret": { + "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } }, - "into-stream": { + "node_modules/into-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "requires": { + "dependencies": { "from2": "^2.1.1", "p-is-promise": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, - "ipaddr.js": { + "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, - "is-binary-path": { + "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==", - "requires": { + "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "is-ci": { + "node_modules/is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { + "dependencies": { "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" } }, - "is-core-module": { + "node_modules/is-core-module": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", - "requires": { + "dependencies": { "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-docker": { + "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } }, - "is-finite": { + "node_modules/is-finite": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-fullwidth-code-point": { + "node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } }, - "is-glob": { + "node_modules/is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-installed-globally": { + "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "requires": { + "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-interactive": { + "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } }, - "is-jpg": { + "node_modules/is-jpg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz", - "integrity": "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=" + "integrity": "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=", + "engines": { + "node": ">=6" + } }, - "is-natural-number": { + "node_modules/is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" }, - "is-npm": { + "node_modules/is-npm": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-number": { + "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==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } }, - "is-obj": { + "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } }, - "is-object": { + "node_modules/is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-path-inside": { + "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==" + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } }, - "is-plain-obj": { + "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "is-png": { + "node_modules/is-png": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-png/-/is-png-2.0.0.tgz", - "integrity": "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==" + "integrity": "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==", + "engines": { + "node": ">=8" + } }, - "is-retry-allowed": { + "node_modules/is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "engines": { + "node": ">=0.10.0" + } }, - "is-stream": { + "node_modules/is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "engines": { + "node": ">=8" + } }, - "is-typedarray": { + "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-unicode-supported": { + "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-utf8": { + "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, - "is-wsl": { + "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { + "dependencies": { "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "is-yarn-global": { + "node_modules/is-yarn-global": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" }, - "isarray": { + "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "isexe": { + "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, - "isstream": { + "node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "license": "MIT", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "isurl": { + "node_modules/isurl": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "requires": { + "dependencies": { "has-to-string-tag-x": "^1.2.0", "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" } }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-yaml": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jsbn": { + "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, - "json-buffer": { + "node_modules/json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, - "json-schema": { + "node_modules/json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, - "json-schema-traverse": { + "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==" }, - "json-stringify-safe": { + "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "jsonfile": { + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" + }, + "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", + "dependencies": { "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "jsprim": { + "node_modules/jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { + "engines": [ + "node >=0.6.0" + ], + "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" } }, - "junk": { + "node_modules/junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==" + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "engines": { + "node": ">=8" + } }, - "keyv": { + "node_modules/keyv": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "requires": { + "dependencies": { "json-buffer": "3.0.0" } }, - "latest-version": { + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/latest-version": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "requires": { + "dependencies": { "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "lazystream": { + "node_modules/lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "requires": { + "dependencies": { "readable-stream": "^2.0.5" }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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" - } - } + "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/line-column": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", + "integrity": "sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww==", + "license": "MIT", + "dependencies": { + "isarray": "^1.0.0", + "isobject": "^2.0.0" } }, - "livereload": { + "node_modules/livereload": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz", "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", - "requires": { + "dependencies": { "chokidar": "^3.5.0", "livereload-js": "^3.3.1", "opts": ">= 1.2.0", "ws": "^7.4.3" + }, + "bin": { + "livereload": "bin/livereload.js" + }, + "engines": { + "node": ">=8.0.0" } }, - "livereload-js": { + "node_modules/livereload-js": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz", "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==" }, - "load-json-file": { + "node_modules/load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", "pify": "^2.0.0", "pinkie-promise": "^2.0.0", "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" }, - "lodash.assignin": { + "node_modules/lodash.assignin": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" }, - "lodash.bind": { + "node_modules/lodash.bind": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" }, - "lodash.defaults": { + "node_modules/lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" }, - "lodash.difference": { + "node_modules/lodash.difference": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" }, - "lodash.filter": { + "node_modules/lodash.filter": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" }, - "lodash.flatten": { + "node_modules/lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" }, - "lodash.foreach": { + "node_modules/lodash.foreach": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" }, - "lodash.isplainobject": { + "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, - "lodash.map": { + "node_modules/lodash.map": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" }, - "lodash.merge": { + "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==" }, - "lodash.pick": { + "node_modules/lodash.pick": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "deprecated": "This package is deprecated. Use destructuring assignment syntax instead." }, - "lodash.reduce": { + "node_modules/lodash.reduce": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" }, - "lodash.reject": { + "node_modules/lodash.reject": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" }, - "lodash.some": { + "node_modules/lodash.some": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" }, - "lodash.union": { + "node_modules/lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" }, - "log-symbols": { + "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { + "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "logalot": { + "node_modules/logalot": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", - "requires": { + "dependencies": { "figures": "^1.3.5", "squeak": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "longest": { + "node_modules/longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "engines": { + "node": ">=0.10.0" + } }, - "loud-rejection": { + "node_modules/loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "requires": { + "dependencies": { "currently-unhandled": "^0.4.1", "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "lowercase-keys": { + "node_modules/lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } }, - "lpad-align": { + "node_modules/lpad-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", - "requires": { + "dependencies": { "get-stdin": "^4.0.1", "indent-string": "^2.1.0", "longest": "^1.0.0", "meow": "^3.3.0" + }, + "bin": { + "lpad-align": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "lru-cache": { + "node_modules/lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { + "dependencies": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" } }, - "make-dir": { + "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==", - "requires": { + "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==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "map-obj": { + "node_modules/map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "engines": { + "node": ">=0.10.0" + } }, - "media-typer": { + "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } }, - "meow": { + "node_modules/meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { + "dependencies": { "camelcase-keys": "^2.0.0", "decamelize": "^1.1.2", "loud-rejection": "^1.0.0", @@ -2853,288 +4723,475 @@ "read-pkg-up": "^1.0.1", "redent": "^1.0.0", "trim-newlines": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "merge-descriptors": { + "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, - "merge-stream": { + "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, - "merge2": { + "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } }, - "methods": { + "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } }, - "micromatch": { + "node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "requires": { + "dependencies": { "braces": "^3.0.1", "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" } }, - "mime": { + "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, - "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "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==", - "requires": { + "dependencies": { "mime-db": "1.52.0" }, - "dependencies": { - "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/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" } }, - "mimic-fn": { + "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } }, - "mimic-response": { + "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } }, - "minimatch": { + "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, - "mozjpeg": { + "node_modules/minimizer-webpack-plugin": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz", + "integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "html-minifier-terser": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mozjpeg": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-7.0.0.tgz", "integrity": "sha512-mH7atSbIusVTO3A4H43sEdmveN3aWn54k6V0edefzCEvOsTrbjg5murY2TsNznaztWnIgaRbWxeLVp4IgKdedQ==", - "requires": { + "hasInstallScript": true, + "dependencies": { "bin-build": "^3.0.0", "bin-wrapper": "^4.0.0", "logalot": "^2.1.0" + }, + "bin": { + "mozjpeg": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "ms": { + "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "mustache": { + "node_modules/mustache": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==" + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "bin": { + "mustache": "bin/mustache" + } }, - "negotiator": { + "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "engines": { + "node": ">= 0.6" + } }, - "nice-try": { + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT", + "peer": true + }, + "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, - "node-fetch": { + "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { + "dependencies": { "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node-notifier": { + "node_modules/node-notifier": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-10.0.1.tgz", "integrity": "sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==", - "requires": { + "dependencies": { "growly": "^1.3.0", "is-wsl": "^2.2.0", "semver": "^7.3.5", "shellwords": "^0.1.1", "uuid": "^8.3.2", "which": "^2.0.2" - }, - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } } }, - "node-stream-zip": { + "node_modules/node-notifier/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/node-releases": { + "version": "2.0.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-stream-zip": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", - "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==" + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } }, - "normalize-package-data": { + "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { + "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } } }, - "normalize-path": { + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "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==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } }, - "normalize-url": { + "node_modules/normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "npm-conf": { + "node_modules/npm-conf": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "requires": { + "dependencies": { "config-chain": "^1.1.11", "pify": "^3.0.0" }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-conf/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" } }, - "npm-run-path": { + "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { + "dependencies": { "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "nth-check": { + "node_modules/nth-check": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", - "requires": { + "dependencies": { "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "oauth-sign": { + "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ohm-js": { + "version": "17.5.0", + "resolved": "https://registry.npmjs.org/ohm-js/-/ohm-js-17.5.0.tgz", + "integrity": "sha512-l4Sa7026+6jsvYbt0PXKmL+f+ML32fD++IznLgxDhx2t9Cx6NC7zwRqblCujPHGGmkQerHoeBzRutdxaw/S72g==", + "license": "MIT", + "engines": { + "node": ">=0.12.1" + } }, - "on-finished": { + "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { + "dependencies": { "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "on-headers": { + "node_modules/on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { + "dependencies": { "wrappy": "1" } }, - "onetime": { + "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { + "dependencies": { "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "open": { + "node_modules/open": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "requires": { + "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "opts": { + "node_modules/opts": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==" }, - "ora": { + "node_modules/ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { + "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", "cli-cursor": "^3.1.0", @@ -3145,531 +5202,849 @@ "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "os-filter-obj": { + "node_modules/os-filter-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", - "requires": { + "dependencies": { "arch": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, - "ow": { + "node_modules/ow": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/ow/-/ow-0.17.0.tgz", "integrity": "sha512-i3keDzDQP5lWIe4oODyDFey1qVrq2hXKTuTH2VpqwpYtzPiKZt2ziRI4NBQmgW40AnV5Euz17OyWweCb+bNEQA==", - "requires": { + "dependencies": { "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-cancelable": { + "node_modules/p-cancelable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "engines": { + "node": ">=4" + } }, - "p-event": { + "node_modules/p-event": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", - "requires": { + "dependencies": { "p-timeout": "^1.1.1" + }, + "engines": { + "node": ">=4" } }, - "p-finally": { + "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "engines": { + "node": ">=4" + } }, - "p-is-promise": { + "node_modules/p-is-promise": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } }, - "p-map-series": { + "node_modules/p-map-series": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", - "requires": { + "dependencies": { "p-reduce": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "p-pipe": { + "node_modules/p-pipe": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", - "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==" + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "p-queue": { + "node_modules/p-queue": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "requires": { + "dependencies": { "eventemitter3": "^4.0.4", "p-timeout": "^3.2.0" }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue/node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json/node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "dependencies": { - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "requires": { - "p-finally": "^1.0.0" - } - } + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" } }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" + "node_modules/package-json/node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "requires": { - "p-finally": "^1.0.0" + "node_modules/package-json/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" } }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, + "node_modules/package-json/node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json/node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/package-json/node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - } - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - } + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "parse-json": { + "node_modules/parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { + "dependencies": { "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "parse5": { + "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, - "parse5-htmlparser2-tree-adapter": { + "node_modules/parse5-htmlparser2-tree-adapter": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "requires": { + "dependencies": { "parse5": "^6.0.1" } }, - "parseurl": { + "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } }, - "path-exists": { + "node_modules/path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { + "dependencies": { "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "path-is-absolute": { + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { + "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==" + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } }, - "path-parse": { + "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==" }, - "path-to-regexp": { + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, - "path-type": { + "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==" + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } }, - "pend": { + "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" }, - "performance-now": { + "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, - "picomatch": { + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC", + "peer": true + }, + "node_modules/picomatch": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==" + "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "pify": { + "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "engines": { + "node": ">=0.10.0" + } }, - "pinkie": { + "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "engines": { + "node": ">=0.10.0" + } }, - "pinkie-promise": { + "node_modules/pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { + "dependencies": { "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "pngquant-bin": { + "node_modules/pkg-dir/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pngquant-bin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-6.0.0.tgz", "integrity": "sha512-oXWAS9MQ9iiDAJRdAZ9KO1mC5UwhzKkJsmetiu0iqIjJuW7JsuLhmc4JdRm7uJkIWRzIAou/Vq2VcjfJwz30Ow==", - "requires": { + "hasInstallScript": true, + "dependencies": { "bin-build": "^3.0.0", "bin-wrapper": "^4.0.1", "execa": "^4.0.0", "logalot": "^2.0.0" + }, + "bin": { + "pngquant": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "prepend-http": { + "node_modules/prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "engines": { + "node": ">=0.10.0" + } }, - "printj": { + "node_modules/printj": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "bin": { + "printj": "bin/printj.njs" + }, + "engines": { + "node": ">=0.8" + } }, - "process-nextick-args": { + "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==" }, - "proto-list": { + "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" }, - "proxy-addr": { + "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { + "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" } }, - "pseudomap": { + "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, - "psl": { + "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, - "pump": { + "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { + "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, - "punycode": { + "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } }, - "pupa": { + "node_modules/pupa": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "requires": { + "dependencies": { "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "qs": { + "node_modules/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==" + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "query-string": { + "node_modules/query-string": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "requires": { + "dependencies": { "decode-uri-component": "^0.2.0", "object-assign": "^4.1.0", "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "queue-microtask": { + "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==" + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "range-parser": { + "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } }, - "raw-body": { + "node_modules/raw-body": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", - "requires": { + "dependencies": { "bytes": "3.1.2", "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "rc": { + "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { + "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" } }, - "read-pkg": { + "node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { + "dependencies": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", "path-type": "^1.0.0" }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } + "engines": { + "node": ">=0.10.0" } }, - "read-pkg-up": { + "node_modules/read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { + "dependencies": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "readable-stream": { + "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { + "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "readdir-glob": { + "node_modules/readdir-glob": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", - "requires": { + "dependencies": { "minimatch": "^3.0.4" } }, - "readdirp": { + "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { + "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "rechoir": { + "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { + "dependencies": { "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" } }, - "redent": { + "node_modules/redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { + "dependencies": { "indent-string": "^2.1.0", "strip-indent": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "registry-auth-token": { + "node_modules/registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "requires": { + "dependencies": { "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" } }, - "registry-url": { + "node_modules/registry-url": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "requires": { + "dependencies": { "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" } }, - "remove-trailing-separator": { + "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, - "repeating": { + "node_modules/repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { + "dependencies": { "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "replace-ext": { + "node_modules/replace-ext": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "engines": { + "node": ">= 0.10" + } }, - "request": { + "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", "caseless": "~0.12.0", @@ -3691,143 +6066,300 @@ "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - } + "engines": { + "node": ">= 6" } }, - "request-promise": { + "node_modules/request-promise": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", - "requires": { + "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dependencies": { "bluebird": "^3.5.0", "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" } }, - "request-promise-core": { + "node_modules/request-promise-core": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "requires": { + "dependencies": { "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" } }, - "resolve": { + "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "requires": { + "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "responselike": { + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { + "dependencies": { "lowercase-keys": "^1.0.0" } }, - "restore-cursor": { + "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { + "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" } }, - "reusify": { + "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "run-parallel": { + "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==", - "requires": { + "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" } }, - "safe-buffer": { + "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==" }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sanitize-filename": { + "node_modules/sanitize-filename": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "requires": { + "dependencies": { "truncate-utf8-bytes": "^1.0.0" } }, - "seek-bzip": { + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "peer": true + }, + "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", - "requires": { + "dependencies": { "commander": "^2.8.1" }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, + "node_modules/seek-bzip/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "semver-diff": { + "node_modules/semver-diff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "requires": { + "dependencies": { "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "semver-regex": { + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", - "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==" + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "engines": { + "node": ">=6" + } }, - "semver-truncate": { + "node_modules/semver-truncate": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", - "requires": { + "dependencies": { "semver": "^5.3.0" }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/semver-truncate/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" } }, - "send": { + "node_modules/send": { "version": "0.17.2", "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "requires": { + "dependencies": { "debug": "2.6.9", "depd": "~1.1.2", "destroy": "~1.0.4", @@ -3842,170 +6374,223 @@ "range-parser": "~1.2.1", "statuses": "~1.5.0" }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } + "engines": { + "node": ">= 0.8.0" } }, - "serve-static": { + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "requires": { + "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "setprototypeof": { + "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "shebang-command": { + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "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==", - "requires": { + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "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==" + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } }, - "shelljs": { + "node_modules/shelljs": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "requires": { + "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" } }, - "shellwords": { + "node_modules/shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" }, - "signal-exit": { + "node_modules/signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, - "slash": { + "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } }, - "sort-keys": { + "node_modules/sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { + "dependencies": { "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "sort-keys-length": { + "node_modules/sort-keys-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", - "requires": { + "dependencies": { "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "source-map": { + "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==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } }, - "source-map-support": { + "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { + "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "spdx-correct": { + "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { + "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-exceptions": { + "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, - "spdx-expression-parse": { + "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { + "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-license-ids": { + "node_modules/spdx-license-ids": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" }, - "squeak": { + "node_modules/squeak": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", - "requires": { + "dependencies": { "chalk": "^1.0.0", "console-stream": "^0.1.1", "lpad-align": "^1.0.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/squeak/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/squeak/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/squeak/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "engines": { + "node": ">=0.8.0" } }, - "srcset": { + "node_modules/srcset": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/srcset/-/srcset-2.0.1.tgz", - "integrity": "sha512-00kZI87TdRKwt+P8jj8UZxbfp7mK2ufxcIMWvhAOZNJTRROimpHeruWrGvCZneiuVDLqdyHefVp748ECTnyUBQ==" + "integrity": "sha512-00kZI87TdRKwt+P8jj8UZxbfp7mK2ufxcIMWvhAOZNJTRROimpHeruWrGvCZneiuVDLqdyHefVp748ECTnyUBQ==", + "engines": { + "node": ">=8" + } }, - "sshpk": { + "node_modules/sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { + "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", @@ -4015,318 +6600,468 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" } }, - "statuses": { + "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } }, - "stealthy-require": { + "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "engines": { + "node": ">=0.10.0" + } }, - "strict-uri-encode": { + "node_modules/strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "engines": { + "node": ">=0.10.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" + } }, - "string-width": { + "node_modules/string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "requires": { + "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "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==" - }, - "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==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" } }, - "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" + "node_modules/string-width/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/string-width/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/string-width/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { + "dependencies": { "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "strip-bom": { + "node_modules/strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { + "dependencies": { "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "strip-dirs": { + "node_modules/strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", - "requires": { + "dependencies": { "is-natural-number": "^4.0.1" } }, - "strip-eof": { + "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "engines": { + "node": ">=0.10.0" + } }, - "strip-final-newline": { + "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } }, - "strip-indent": { + "node_modules/strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { + "dependencies": { "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "strip-json-comments": { + "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } }, - "strip-outer": { + "node_modules/strip-outer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "requires": { + "dependencies": { "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "supports-color": { + "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==", - "requires": { + "dependencies": { "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "tar-stream": { + "node_modules/tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { + "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" } }, - "temp-dir": { + "node_modules/temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "engines": { + "node": ">=4" + } }, - "tempfile": { + "node_modules/tempfile": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "requires": { + "dependencies": { "temp-dir": "^1.0.0", "uuid": "^3.0.1" + }, + "engines": { + "node": ">=4" } }, - "terser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", - "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", - "requires": { - "acorn": "^8.5.0", + "node_modules/terser": { + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.2.tgz", + "integrity": "sha512-rGbJiKeQ4WDe3EXlDAIaQcwftVfv2Q8o1awFNfvXolJYKkb1AuZY1RTOmqx4LJXZENbWZA7eIsYGHuEzHsi1nQ==", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" } }, - "through": { + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, - "timed-out": { + "node_modules/timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "engines": { + "node": ">=0.10.0" + } }, - "to-buffer": { + "node_modules/to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, - "to-readable-stream": { + "node_modules/to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } }, - "to-regex-range": { + "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==", - "requires": { + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "toidentifier": { + "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } }, - "tough-cookie": { + "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { + "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, - "tr46": { + "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, - "trim-newlines": { + "node_modules/trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "engines": { + "node": ">=0.10.0" + } }, - "trim-repeated": { + "node_modules/trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "requires": { + "dependencies": { "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "truncate-utf8-bytes": { + "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", - "requires": { + "dependencies": { "utf8-byte-length": "^1.0.1" } }, - "tslib": { + "node_modules/tslib": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" }, - "tunnel-agent": { + "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { + "dependencies": { "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, - "tweetnacl": { + "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, - "type-fest": { + "node_modules/type-fest": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "type-is": { + "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { + "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, - "typedarray-to-buffer": { + "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==", - "requires": { + "dependencies": { "is-typedarray": "^1.0.0" } }, - "unbzip2-stream": { + "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "requires": { + "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" } }, - "unique-string": { + "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "requires": { + "dependencies": { "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "universalify": { + "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } }, - "unpipe": { + "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "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" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } }, - "update-notifier": { + "node_modules/update-notifier": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "requires": { + "dependencies": { "boxen": "^5.0.0", "chalk": "^4.1.0", "configstore": "^5.0.1", @@ -4342,128 +7077,320 @@ "semver-diff": "^3.1.1", "xdg-basedir": "^4.0.0" }, - "dependencies": { - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" - }, - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "engines": { + "node": ">=4" } }, - "uri-js": { + "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { + "dependencies": { "punycode": "^2.1.0" } }, - "url-parse-lax": { + "node_modules/url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "requires": { + "dependencies": { "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "url-to-options": { + "node_modules/url-to-options": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "engines": { + "node": ">= 4" + } }, - "utf8-byte-length": { + "node_modules/utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=" }, - "util-deprecate": { + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "utils-merge": { + "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } }, - "uuid": { + "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "bin": { + "uuid": "bin/uuid" + } }, - "valid-url": { + "node_modules/valid-url": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=" }, - "validate-npm-package-license": { + "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { + "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "vary": { + "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } }, - "verror": { + "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { + "engines": [ + "node >=0.6.0" + ], + "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, - "walkdir": { + "node_modules/vscode-json-languageservice": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-5.7.2.tgz", + "integrity": "sha512-WtKRDtJfFEmLrgtu+ODexOHm/6/krRF0k6t+uvkKIKW1Jh9ZIyxZQwJJwB3qhrEgvAxa37zbUg+vn+UyUK/U2w==", + "license": "MIT", + "dependencies": { + "@vscode/l10n": "^0.0.18", + "jsonc-parser": "^3.3.1", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "^3.17.5", + "vscode-uri": "^3.1.0" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.0.tgz", + "integrity": "sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "license": "MIT" + }, + "node_modules/walkdir": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", - "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=" + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/watchpack": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.2.tgz", + "integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==", + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } }, - "wcwidth": { + "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "requires": { + "dependencies": { "defaults": "^1.0.3" } }, - "webidl-conversions": { + "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, - "website-scraper": { + "node_modules/webpack": { + "version": "5.109.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.2.tgz", + "integrity": "sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.24.4", + "es-module-lexer": "^2.1.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "graceful-fs": "^4.2.11", + "mime-db": "^1.54.0", + "minimizer-webpack-plugin": "^5.6.1", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "watchpack": "^2.5.2", + "webpack-sources": "^3.5.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", + "colorette": "^2.0.14", + "commander": "^12.1.0", + "cross-spawn": "^7.0.3", + "envinfo": "^7.14.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^6.0.1" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.82.0" + }, + "peerDependenciesMeta": { + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/webpack-cli/node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-cli/node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.1.tgz", + "integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/website-scraper": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/website-scraper/-/website-scraper-4.2.3.tgz", "integrity": "sha512-Pqrirzwt02NtaTFkBulF3fGSvPGOAVpdwPFHzoh49gFjU2GgaEgoW8WMlhPbzRcQkd6+XmsU+LZeW9SiluDHkA==", - "requires": { + "dependencies": { "bluebird": "^3.0.1", "cheerio": "0.22.0", "css-url-parser": "^1.0.0", @@ -4476,283 +7403,375 @@ "request": "^2.85.0", "sanitize-filename": "^1.6.3", "srcset": "^2.0.0" - }, - "dependencies": { - "cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } } }, - "website-scraper-existing-directory": { + "node_modules/website-scraper-existing-directory": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/website-scraper-existing-directory/-/website-scraper-existing-directory-0.1.0.tgz", "integrity": "sha512-78VNoIB6fw3dpPhyQtY27RIdgwnCZsAXGINbZZ6MAHHAdBlQPcHT5C3UjHU8zPx8mx7G2odp2O7SoPO9HklkKg==", - "requires": { + "dependencies": { "fs-extra": "^7.0.1" }, + "peerDependencies": { + "website-scraper": "^4.0.0" + } + }, + "node_modules/website-scraper-existing-directory/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/website-scraper-existing-directory/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/website-scraper-existing-directory/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/website-scraper/node_modules/cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", + "dependencies": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/website-scraper/node_modules/css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dependencies": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "node_modules/website-scraper/node_modules/css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "engines": { + "node": "*" + } + }, + "node_modules/website-scraper/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "whatwg-url": { + "node_modules/website-scraper/node_modules/dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dependencies": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "node_modules/website-scraper/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/website-scraper/node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/website-scraper/node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/website-scraper/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "node_modules/website-scraper/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/website-scraper/node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/website-scraper/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/website-scraper/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/website-scraper/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/website-scraper/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/website-scraper/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { + "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, - "which": { + "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "widest-line": { + "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "requires": { + "dependencies": { "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "wrap-ansi": { + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "license": "MIT" + }, + "node_modules/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==", - "requires": { + "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": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write-file-atomic": { + "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "requires": { + "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, - "ws": { + "node_modules/ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "xdg-basedir": { + "node_modules/xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "engines": { + "node": ">=8" + } }, - "xtend": { + "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } }, - "yallist": { + "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, - "yauzl": { + "node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "requires": { + "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, - "zip-stream": { + "node_modules/zip-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "requires": { + "dependencies": { "archiver-utils": "^2.1.0", "compress-commons": "^4.1.0", "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" } } } diff --git a/package.json b/package.json index 9eb719a..bd4a187 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,11 @@ "description": "A CLI for Making Website Management a Breeze", "scripts": { "postinstall": "node ./scripts/check-node-version.js", - "build-assets": "npx webpack-cli gui/editor/src/index.js -o gui/editor/public/app.js --mode=production" + "install:mcp": "npm install file:../Siteglide-MCP --no-save", + "build-assets": "npx webpack-cli gui/editor/src/index.js -o gui/editor/public/app.js --mode=production", + "build-gui": "npm --prefix gui/next ci && npm --prefix gui/next run build", + "i": "npm install -g .", + "test": "jest --silent" }, "main": "./siteglide-cli.js", "license": "MIT", @@ -13,12 +17,14 @@ }, "homepage": "https://developers.siteglide.com/introducing-siteglide-cli", "engines": { - "node": ">=12" + "node": ">=18" }, "keywords": [ "Siteglide" ], "dependencies": { + "@platformos/platformos-check-node": "^0.0.20", + "@platformos/platformos-common": "^0.0.18", "archiver": "^5.3.0", "archiver-promise": "^1.0.0", "async": "^3.2.3", @@ -50,6 +56,7 @@ "ora": "^5.4.1", "request": "^2.88.2", "request-promise": "^4.2.6", + "semver": "^7.8.5", "shelljs": "^0.8.5", "terser": "^5.12.1", "update-notifier": "^5.1.0", @@ -58,16 +65,22 @@ "website-scraper": "^4.2.3", "website-scraper-existing-directory": "^0.1.0" }, + "devDependencies": { + "jest": "^30.4.2" + }, "bin": { "siteglide-cli": "./siteglide-cli.js", "siteglide-cli-add": "./siteglide-cli-add.js", "siteglide-cli-archive": "./siteglide-cli-archive.js", + "siteglide-cli-check": "./siteglide-cli-check.js", "siteglide-cli-deploy": "./siteglide-cli-deploy.js", "siteglide-cli-export": "./siteglide-cli-export.js", "siteglide-cli-gui": "./siteglide-cli-gui.js", "siteglide-cli-import": "./siteglide-cli-import.js", "siteglide-cli-init": "./siteglide-cli-init.js", + "siteglide-cli-list": "./siteglide-cli-list.js", "siteglide-cli-logs": "./siteglide-cli-logs.js", + "siteglide-cli-mcp": "./siteglide-cli-mcp.js", "siteglide-cli-migrate": "./siteglide-cli-migrate.js", "siteglide-cli-modules": "./siteglide-cli-modules.js", "siteglide-cli-pull": "./siteglide-cli-pull.js", diff --git a/scripts/build-test-share-zip.js b/scripts/build-test-share-zip.js new file mode 100644 index 0000000..9378dd3 --- /dev/null +++ b/scripts/build-test-share-zip.js @@ -0,0 +1,241 @@ +#!/usr/bin/env node +/** + * Build a shareable zip: siteglide-cli-test + bundled MCP (no npm publish). + * Output: siteglide-cli-workspace-notes/dist/siteglide-cli-test-*.zip + */ +const fs = require('fs-extra'); +const path = require('path'); +const { execFileSync } = require('child_process'); + +const CLI_ROOT = path.resolve(__dirname, '..'); +const MCP_ROOT = path.resolve(CLI_ROOT, '..', 'Siteglide-MCP'); +const OUT_ROOT = path.resolve(CLI_ROOT, '..', 'siteglide-cli-workspace-notes', 'dist'); +const STAGE = path.join(OUT_ROOT, 'siteglide-cli-test-bundle'); +const pad2 = (n) => String(n).padStart(2, '0'); +const zipStamp = (() => { + const d = new Date(); + return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}-${pad2(d.getHours())}${pad2(d.getMinutes())}${pad2(d.getSeconds())}`; +})(); +const ZIP_NAME = `siteglide-cli-test-${zipStamp}.zip`; + +const CLI_SKIP = new Set([ + 'node_modules', + '.git', + '.cursor', + 'coverage', + 'dist', + '.tmp', + 'package-lock.json' +]); + +const MCP_SKIP = new Set(['node_modules', '.git', '.cursor', 'package-lock.json']); + +const copyTree = async (src, dest, skip) => { + await fs.ensureDir(dest); + const entries = await fs.readdir(src); + for (const name of entries) { + if (skip.has(name)) { + continue; + } + const from = path.join(src, name); + const to = path.join(dest, name); + const stat = await fs.stat(from); + if (stat.isDirectory()) { + await copyTree(from, to, skip); + } else { + await fs.copy(from, to); + } + } +}; + +const main = async () => { + if (!(await fs.pathExists(MCP_ROOT))) { + throw new Error(`MCP package not found at ${MCP_ROOT}`); + } + + await fs.remove(STAGE); + await fs.ensureDir(STAGE); + + const mcpDest = path.join(STAGE, 'siteglide-mcp'); + const cliDest = path.join(STAGE, 'siteglide-cli-test'); + + console.log('Copying MCP…'); + await copyTree(MCP_ROOT, mcpDest, MCP_SKIP); + + console.log('Copying CLI…'); + await copyTree(CLI_ROOT, cliDest, CLI_SKIP); + + const cliPkgPath = path.join(cliDest, 'package.json'); + const cliPkg = await fs.readJson(cliPkgPath); + cliPkg.name = '@siteglide/siteglide-cli-test'; + cliPkg.description = + 'TEST / preview build of Siteglide CLI + MCP (not the production siteglide-cli package)'; + cliPkg.version = `${cliPkg.version}-test.0`; + cliPkg.dependencies['@siteglide/siteglide-mcp'] = 'file:../siteglide-mcp'; + + const newBin = {}; + for (const [binName, binPath] of Object.entries(cliPkg.bin || {})) { + const testName = binName.replace(/^siteglide-cli/, 'siteglide-cli-test'); + newBin[testName] = binPath; + } + cliPkg.bin = newBin; + delete cliPkg.preferGlobal; + await fs.writeJson(cliPkgPath, cliPkg, { spaces: '\t' }); + + // MCP registration id: siteglide-test (won't clash with production "siteglide") + const aiPath = path.join(cliDest, 'lib', 'ai.js'); + let aiSrc = await fs.readFile(aiPath, 'utf8'); + aiSrc = aiSrc.replace( + /const SERVER_NAME = 'siteglide';/, + "const SERVER_NAME = 'siteglide-test';" + ); + aiSrc = aiSrc.replace(/server "siteglide"/g, 'server "siteglide-test"'); + aiSrc = aiSrc.replace(/Siteglide MCP/g, 'Siteglide test MCP'); + aiSrc = aiSrc.replace(/bare siteglide-cli-mcp/g, 'bare siteglide-cli-test-mcp'); + aiSrc = aiSrc.replace( + /absolute path to siteglide-cli-mcp\.js/g, + 'absolute path to siteglide-cli-mcp.js (via siteglide-cli-test)' + ); + await fs.writeFile(aiPath, aiSrc); + + const mcpLauncher = path.join(cliDest, 'siteglide-cli-mcp.js'); + let mcpLaunchSrc = await fs.readFile(mcpLauncher, 'utf8'); + mcpLaunchSrc = mcpLaunchSrc.replace( + /\[siteglide-cli-mcp\]/g, + '[siteglide-cli-test-mcp]' + ); + await fs.writeFile(mcpLauncher, mcpLaunchSrc); + + const mainCli = path.join(cliDest, 'siteglide-cli.js'); + let mainSrc = await fs.readFile(mainCli, 'utf8'); + mainSrc = mainSrc.replace( + /Siteglide CLI v/, + 'Siteglide CLI TEST v' + ); + await fs.writeFile(mainCli, mainSrc); + + const installMd = `# Siteglide CLI TEST — install (for your boss / AI) + +This zip is a **preview** of Siteglide CLI + MCP. It installs as **\`siteglide-cli-test\`** so it does **not** replace your normal \`siteglide-cli\`. + +## Requirements + +- Node.js 18+ (22 recommended) +- Windows, macOS, or Linux +- npm (comes with Node) + +## Ask an AI to install (recommended) + +Paste this into Cursor / ChatGPT after unzipping: + +\`\`\` +Unzip this archive if needed. From the folder that contains INSTALL.md, run: + + cd siteglide-mcp + npm install + cd ../siteglide-cli-test + npm install + npm install -g . + +Then confirm: + siteglide-cli-test --version + where siteglide-cli-test (Windows) or which siteglide-cli-test (Mac/Linux) + +Do NOT install over or uninstall the normal siteglide-cli package. +Do NOT create or edit mcp.json by hand — pull writes IDE MCP config. + +When the user is ready (site folder open, environment already added if needed), run a first pull from that site, e.g.: + siteglide-cli-test pull staging + +After pull finishes, tell the user to enable the Siteglide test MCP server in their AI tool settings (e.g. Cursor: Settings → Tools & MCP → enable siteglide-test) and reload the window if tools do not appear. +\`\`\` + +## Manual install (PowerShell) + +\`\`\`powershell +cd path\\to\\siteglide-cli-test-bundle\\siteglide-mcp +npm install +cd ..\\siteglide-cli-test +npm install +npm install -g . +siteglide-cli-test --version +\`\`\` + +## First pull (registers MCP in the site project) + +When you are ready — in a Siteglide site folder that already has an environment (e.g. via \`siteglide-cli-test add\`): + +\`\`\`powershell +cd path\\to\\your-site +siteglide-cli-test pull staging +\`\`\` + +Pull writes \`.cursor/mcp.json\` (and other IDE configs) pointing at the installed CLI. Do not create \`mcp.json\` by hand. + +## Enable MCP in your AI tool + +After pull finishes, turn the server on in settings, then reload if needed: + +- **Cursor:** Settings → Tools & MCP → enable **siteglide-test** → reload the window +- **Other tools:** enable the **siteglide-test** MCP server in that product's MCP settings + +Commands use the \`siteglide-cli-test\` prefix, e.g.: + +- \`siteglide-cli-test pull staging\` +- \`siteglide-cli-test mcp\` +- \`siteglide-cli-test-mcp\` (same MCP launcher Cursor uses) + +## Uninstall later + +\`\`\`powershell +npm uninstall -g @siteglide/siteglide-cli-test +\`\`\` + +Your normal \`siteglide-cli\` is unchanged. +`; + + await fs.writeFile(path.join(STAGE, 'INSTALL.md'), installMd); + + const aiPrompt = `Please install this Siteglide CLI TEST preview for me. + +1. Open the folder that contains INSTALL.md (after unzipping if needed). +2. Run: cd siteglide-mcp && npm install +3. Run: cd ../siteglide-cli-test && npm install && npm install -g . +4. Confirm \`siteglide-cli-test --version\` works. +5. Do not remove or overwrite the normal siteglide-cli package. +6. Do not create or edit mcp.json by hand — pull writes IDE MCP config. +7. When I am ready (site folder open; environment added if needed), run a first pull from that site, e.g. siteglide-cli-test pull staging. +8. After pull finishes, prompt me to enable the Siteglide test MCP server in my AI tool settings (e.g. Cursor: Settings → Tools & MCP → enable siteglide-test) and reload the window if tools do not appear. + +This is a test build; commands are siteglide-cli-test (not siteglide-cli). +`; + await fs.writeFile(path.join(STAGE, 'ASK-AI-TO-INSTALL.txt'), aiPrompt); + + const zipPath = path.join(OUT_ROOT, ZIP_NAME); + await fs.remove(zipPath); + + console.log('Creating zip…'); + // Use PowerShell Compress-Archive on Windows for reliability without extra deps + if (process.platform === 'win32') { + execFileSync( + 'powershell.exe', + [ + '-NoProfile', + '-Command', + `Compress-Archive -Path '${STAGE.replace(/'/g, "''")}\\*' -DestinationPath '${zipPath.replace(/'/g, "''")}' -Force` + ], + { stdio: 'inherit' } + ); + } else { + execFileSync('zip', ['-r', zipPath, '.'], { cwd: STAGE, stdio: 'inherit' }); + } + + const stat = await fs.stat(zipPath); + console.log(`Done: ${zipPath}`); + console.log(`Size: ${(stat.size / (1024 * 1024)).toFixed(1)} MB`); +}; + +main().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/scripts/smoke-exclusive-app-root.js b/scripts/smoke-exclusive-app-root.js new file mode 100644 index 0000000..9dfbe6c --- /dev/null +++ b/scripts/smoke-exclusive-app-root.js @@ -0,0 +1,39 @@ +const fs = require('fs-extra'); +const path = require('path'); +const os = require('os'); +const { spawnSync } = require('child_process'); +const { assertExclusiveSiteAppRoot } = require('../lib/migrateAppDirectory'); + +(async () => { + const tmp = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-cli-')); + await fs.mkdir(path.join(tmp, 'app')); + if (assertExclusiveSiteAppRoot(tmp) !== 'app') { + throw new Error('expected app'); + } + + await fs.remove(path.join(tmp, 'app')); + await fs.mkdir(path.join(tmp, 'marketplace_builder')); + if (assertExclusiveSiteAppRoot(tmp) !== 'marketplace_builder') { + throw new Error('expected marketplace_builder'); + } + + await fs.mkdir(path.join(tmp, 'app')); + const script = ` + const { assertExclusiveSiteAppRoot } = require(${JSON.stringify(path.join(__dirname, '../lib/migrateAppDirectory'))}); + assertExclusiveSiteAppRoot(${JSON.stringify(tmp)}); + console.log('should-not-reach'); + `; + const r = spawnSync(process.execPath, ['-e', script], { encoding: 'utf8' }); + if (r.status === 0) { + throw new Error('expected exit when both folders exist'); + } + if (!/source of truth/i.test(r.stderr + r.stdout)) { + throw new Error('expected source-of-truth warning, got: ' + (r.stderr + r.stdout)); + } + + await fs.remove(tmp); + console.log('assertExclusiveSiteAppRoot smoke ok'); +})().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/scripts/smoke-mcp-register.js b/scripts/smoke-mcp-register.js new file mode 100644 index 0000000..aa0874d --- /dev/null +++ b/scripts/smoke-mcp-register.js @@ -0,0 +1,69 @@ +(async () => { +const assert = require('assert'); +const fs = require('fs'); +const os = require('os'); +const path = require('path'); +const { + getMcpConfigStatus +} = require('../lib/mcpAlpha'); +const { + ensureMcpRegistered, + ensureMcpIdeRules, + SERVER_NAME, + resolveMcpScriptPath, + buildMcpLaunchEntry +} = require('../lib/ai'); +const { removeMcpIdeArtifacts } = require('../test/helpers/mcpIdeArtifacts'); + +const root = fs.mkdtempSync(path.join(os.tmpdir(), 'sg-mcp-reg-')); +const fakeHome = fs.mkdtempSync(path.join(os.tmpdir(), 'sg-mcp-home-')); +const cursorPath = path.join(root, '.cursor', 'mcp.json'); + +try { + assert.strictEqual(fs.existsSync(path.join(root, '.cursor', 'rules', 'setup_siteglide_mcp.mdc')), false); + + fs.mkdirSync(path.dirname(cursorPath), { recursive: true }); + fs.writeFileSync( + cursorPath, + JSON.stringify({ + mcpServers: { + other: { command: 'keep-me' }, + [SERVER_NAME]: { command: 'siteglide-cli-mcp' } + } + }, null, 2) + ); + + const first = ensureMcpRegistered({ rootPath: root, homedir: fakeHome }); + assert.ok(first.updated.includes('Cursor'), 'should repair bare siteglide-cli-mcp'); + assert.ok(first.added.includes('Windsurf')); + const afterFirst = JSON.parse(fs.readFileSync(cursorPath, 'utf8')); + assert.deepStrictEqual(afterFirst.mcpServers.other, { command: 'keep-me' }); + assert.strictEqual(afterFirst.mcpServers[SERVER_NAME].command, process.execPath); + assert.deepStrictEqual(afterFirst.mcpServers[SERVER_NAME].args, [resolveMcpScriptPath()]); + + const second = ensureMcpRegistered({ rootPath: root, homedir: fakeHome }); + assert.ok(second.unchanged.includes('Cursor')); + assert.strictEqual(second.updated.includes('Cursor'), false); + + const desired = buildMcpLaunchEntry(); + assert.strictEqual(desired.command, process.execPath); + assert.ok(fs.existsSync(desired.args[0])); + + const configStatus = getMcpConfigStatus(root); + assert.ok(configStatus.configured); + assert.ok(configStatus.paths.includes(cursorPath)); + + const rules = ensureMcpIdeRules({ rootPath: root }); + assert.ok(rules.written.includes('Cursor')); + assert.ok(fs.existsSync(path.join(root, '.cursor', 'rules', 'setup_siteglide_mcp.mdc'))); + + console.log('mcp registration smoke ok'); +} finally { + await removeMcpIdeArtifacts(root); + fs.rmSync(root, { recursive: true, force: true }); + fs.rmSync(fakeHome, { recursive: true, force: true }); +} +})().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/siteglide-cli-archive.js b/siteglide-cli-archive.js index 77d5a2b..9e3da2a 100755 --- a/siteglide-cli-archive.js +++ b/siteglide-cli-archive.js @@ -11,9 +11,12 @@ const program = require('commander'), version = require('./package.json').version, dir = require('./lib/directories'), files = require('./lib/assets/files'), + { deployGlobOptions } = require('./lib/deployGlob'), Gateway = require('./lib/proxy'); -const availableDirectories = () => dir.ALLOWED.filter(fs.existsSync); +const { assertExclusiveSiteAppRoot } = require('./lib/migrateAppDirectory'); + +const availableDirectories = () => dir.available(); const addModulesToArchive = (archive, withImages) => { if (!fs.existsSync(dir.MODULES)) return Promise.resolve(true); @@ -28,7 +31,7 @@ const addModulesToArchive = (archive, withImages) => { const addModuleToArchive = (module, archive, withImages, pattern = '?(public|private)/**') => { module = module.replace('/',''); return new Promise((resolve, reject) => { - glob(pattern, { cwd: `${dir.MODULES}/${module}` }, (err, files) => { + glob(pattern, deployGlobOptions({ cwd: `${dir.MODULES}/${module}` }), (err, files) => { if (err) throw reject(err); const moduleTemplateData = templateData(); @@ -57,15 +60,20 @@ const addModuleToArchive = (module, archive, withImages, pattern = '?(public|pri }); }; -const makeArchive = (path, directory, program) => { +const makeArchive = (archivePath, directory, program) => { if (availableDirectories().length === 0) { logger.Error(`At least one of ${dir.ALLOWED} directories is needed to deploy`, { hideTimestamp: true }); } - const releaseArchive = prepareArchive(path); - releaseArchive.glob('**/*', { cwd: directory, ignore: ['assets/**', '**/node_modules/**']}, { prefix: directory }); + const releaseArchive = prepareArchive(archivePath); + if (directory) { + releaseArchive.glob('**/*', deployGlobOptions({ + cwd: directory, + ignore: ['assets/**', '**/node_modules/**'] + }), { prefix: directory }); + } - addModulesToArchive(releaseArchive).then(r => { + addModulesToArchive(releaseArchive, program.opts().withImages).then(r => { releaseArchive.finalize(); }); @@ -96,4 +104,12 @@ program .option('--url ', 'site url', process.env.SITEGLIDE_URL) .parse(process.argv); -makeArchive(program.opts().target, dir.LEGACY_APP, program); +const siteRoot = assertExclusiveSiteAppRoot(); +if (!siteRoot && !fs.existsSync(dir.MODULES)) { + logger.Error( + `${dir.SITE_ROOT}/ or ${dir.APP}/ has to exist! Please make sure you have the correct folder structure.`, + { hideTimestamp: true } + ); +} +logger.Info(`[Deploy] Archiving from: ${siteRoot || '(modules only)'}`); +makeArchive(program.opts().target, siteRoot, program); diff --git a/siteglide-cli-check.js b/siteglide-cli-check.js new file mode 100644 index 0000000..8b1b5ef --- /dev/null +++ b/siteglide-cli-check.js @@ -0,0 +1,66 @@ +#!/usr/bin/env node + +const path = require('path'); +const program = require('commander'); +const version = require('./package.json').version; +const logger = require('./lib/logger'); +const { run, initConfig, updateDocs } = require('./lib/check'); + +function collect(value, previous) { + return previous.concat([value]); +} + +program + .version(version, '-v, --version') + .name('siteglide-cli check') + .usage('[path] [options]') + .description('Check Liquid code quality with platformos-check linter') + .arguments('[path]') + .option('--init', 'initialize .platformos-check.yml configuration file') + .option('--update-docs', 'download the latest platformOS Liquid documentation used by the linter') + .option('-a', 'enable automatic fixing') + .option('-c, --check ', 'only show offenses from the named check (repeatable)', collect, []) + .option('-f ', 'output format: text or json', 'text') + .option('-s, --silent', 'only show errors, no success messages') + .action(async (checkPath, options) => { + const absolutePath = path.resolve(checkPath || process.cwd()); + const hasInit = !!options.init; + const hasUpdateDocs = !!options.updateDocs; + const hasLintFlags = !!options.a || (options.check && options.check.length > 0) || + (options.f && options.f !== 'text') || !!options.silent; + + if (hasInit && hasUpdateDocs) { + logger.Error('Cannot combine --init and --update-docs.'); + return; + } + + if (hasInit && hasLintFlags) { + logger.Error('Cannot combine --init with lint options (-a, -c, -f, -s).'); + return; + } + + if (hasUpdateDocs && hasLintFlags) { + logger.Error('Cannot combine --update-docs with lint options (-a, -c, -f, -s).'); + return; + } + + if (hasInit) { + await initConfig(absolutePath); + return; + } + + if (hasUpdateDocs) { + await updateDocs(); + return; + } + + await run({ + path: absolutePath, + autoFix: options.a || false, + checks: options.check.length > 0 ? options.check : undefined, + format: options.f || 'text', + silent: options.silent || false + }); + }); + +program.parse(process.argv); diff --git a/siteglide-cli-deploy.js b/siteglide-cli-deploy.js index 8df17a3..fbe772c 100755 --- a/siteglide-cli-deploy.js +++ b/siteglide-cli-deploy.js @@ -9,7 +9,10 @@ const program = require('commander'), Confirm = require('./lib/confirm'), glob = require('globby'), fs = require('fs'), + path = require('path'), getFile = require('./lib/migration/lib/utils/get-file'), + dir = require('./lib/directories'), + { assertExclusiveSiteAppRoot } = require('./lib/migrateAppDirectory'), version = require('./package.json').version; const filePathUnixified = filePath => filePath.replace(/\\/g, '/'); @@ -63,28 +66,34 @@ const getBody = (filePath, processTemplate) => { const deploy = async (env, authData, params) => { const gateway = new Gateway(authData); - - let files = await glob('marketplace_builder/views/pages/**/*.liquid'); - - try { - for(var i=0;i { - if(file.fileContent.includes('is_homepage: true')){ - let filePath = filePathUnixified(file.filePath); // need path with / separators - - const formData = { - path: filePath, - marketplace_builder_file_body: getBody(filePath, false) - }; - - return gateway.sync(formData); - } - }) - .catch((err) => console.log(err)) + const siteRoot = dir.getSiteRoot() || null; + + if (siteRoot) { + let files = await glob(`${siteRoot}/views/pages/**/*.liquid`); + + try { + for(var i=0;i { + if(file.fileContent.includes('is_homepage: true')){ + let filePath = filePathUnixified(file.filePath); // need path with / separators + // API expects path without app/ or marketplace_builder/ prefix + const apiPath = filePath + .replace(new RegExp(`^${siteRoot}/`), ''); + + const formData = { + path: apiPath, + marketplace_builder_file_body: getBody(file.filePath, false) + }; + + return gateway.sync(formData); + } + }) + .catch((err) => console.log(err)) + } + } catch (error) { + console.log(`Error: ${error}`); } - } catch (error) { - console.log(`Error: ${error}`); } await uploadArchive(env, params.withAssets); @@ -103,6 +112,8 @@ program process.env.WITH_IMAGES = params.withAssets; const authData = fetchAuthData(environment, program); + // Fail fast before confirm when both app/ and marketplace_builder/ exist + assertExclusiveSiteAppRoot(); Confirm(`Are you sure you would like to deploy to ${authData.url}? (Y/n)\n`).then(function (response) { if (response === 'Y') { diff --git a/siteglide-cli-export.js b/siteglide-cli-export.js index dcda213..300a409 100755 --- a/siteglide-cli-export.js +++ b/siteglide-cli-export.js @@ -60,7 +60,8 @@ program const filename = params.path; const exportInternalIds = params.exportInternalIds; const authData = fetchAuthData(environment, program, program); - const zipFileName = `${dir.LEGACY_APP}.zip`; + const siteRoot = dir.defaultSiteRoot(); + const zipFileName = `${siteRoot}.zip`; gateway = new Gateway(authData); Confirm('Are you sure you would like to export? This will overwrite your local files immediately! (Y/n)\n').then(async function (response) { @@ -69,21 +70,21 @@ program await gateway.pullZip().then(pullTask => { waitForStatus(() => gateway.pullZipStatus(pullTask.id)) .then(pullTask => downloadFile(pullTask.zip_file.url, zipFileName)) - .then(() => unzip(zipFileName, dir.LEGACY_APP)) - .then(() => shell.cp('-R', `./${dir.LEGACY_APP}/app/*`, `./${dir.LEGACY_APP}`)) + .then(() => unzip(zipFileName, siteRoot)) + .then(() => shell.cp('-R', `./${siteRoot}/app/*`, `./${siteRoot}`)) .then(() => shell.rm(`./${zipFileName}`)) .then(() => { - if (fs.existsSync(`./${dir.LEGACY_APP}/modules`)) { - shell.cp('-R', `./${dir.LEGACY_APP}/modules`, `./`) - shell.rm('-r', `./${dir.LEGACY_APP}/modules`) + if (fs.existsSync(`./${siteRoot}/modules`)) { + shell.cp('-R', `./${siteRoot}/modules`, `./`) + shell.rm('-r', `./${siteRoot}/modules`) } }) - .then(() => shell.rm(`./${dir.LEGACY_APP}/asset_manifest.json`)) - .then(() => shell.rm('-r',`./${dir.LEGACY_APP}/app`)) + .then(() => shell.rm(`./${siteRoot}/asset_manifest.json`)) + .then(() => shell.rm('-r',`./${siteRoot}/app`)) .then(() => { - var list = fs.readdirSync(`./${dir.LEGACY_APP}`).filter(folder => fs.statSync(path.join(`./${dir.LEGACY_APP}`, folder)).isDirectory()); + var list = fs.readdirSync(`./${siteRoot}`).filter(folder => fs.statSync(path.join(`./${siteRoot}`, folder)).isDirectory()); for(var i = 0; i < list.length; i++) { - var folder = path.join(`./${dir.LEGACY_APP}`, list[i]); + var folder = path.join(`./${siteRoot}`, list[i]); try { fs.rmdirSync(folder); } catch(e) { @@ -111,7 +112,7 @@ program } var assets = response.asset; if(!params.withAssets){ - assets = assets.filter(file => (file.data.physical_file_path.indexOf('assets/images/')===-1||file.data.physical_file_path.indexOf('assets/documents/')===-1)).filter(file => !file.data.physical_file_path.match(/.(jpg|jpeg|png|gif|heic|svg|pdf|mp3|mp4|mov|ogg|otf|ttf|webm|webp|woff|woff2|ico|ppt|pptx|doc|docx|xls|xlsx|pages|numbers|key|zip|csv)$/i)); + assets = assets.filter(file => (file.data.physical_file_path.indexOf('assets/images/')===-1||file.data.physical_file_path.indexOf('assets/documents/')===-1)).filter(file => !file.data.physical_file_path.match(/.(jpg|jpeg|png|gif|heic|svg|pdf|m4a|mp3|mp4|mov|ogg|otf|ttf|webm|webp|woff|woff2|ico|ppt|pptx|doc|docx|xls|xlsx|pages|numbers|key|zip|csv)$/i)); } assets = assets.filter(file => !file.data.physical_file_path.includes('/.keep')).filter(file => !file.data.physical_file_path.includes('_sgthumb')); var count = 0; @@ -157,6 +158,7 @@ program (urlToTest.indexOf('.gif')>-1)|| (urlToTest.indexOf('.heic')>-1)|| (urlToTest.indexOf('.pdf')>-1)|| + (urlToTest.indexOf('.m4a')>-1)|| (urlToTest.indexOf('.mp3')>-1)|| (urlToTest.indexOf('.mp4')>-1)|| (urlToTest.indexOf('.mov')>-1)|| @@ -182,11 +184,11 @@ program (urlToTest.indexOf('.csv')>-1) ){ var folderPath = file.data.physical_file_path.split('/'); - folderPath = dir.LEGACY_APP+'/'+folderPath.slice(0, folderPath.length-1).join('/'); + folderPath = siteRoot+'/'+folderPath.slice(0, folderPath.length-1).join('/'); fs.mkdirSync(folderPath, { recursive: true }); await getAsset(file.data.remote_url,time).then(async response => { if(response!=='error_missing_file'){ - response.body.pipe(fs.createWriteStream(dir.LEGACY_APP+'/'+file.data.physical_file_path)); + response.body.pipe(fs.createWriteStream(siteRoot+'/'+file.data.physical_file_path)); count++; if(params.withAssets){ exportSpinner.text = `Downloaded ${count} assets out of ${assets.length}, this may take a while...`; @@ -200,12 +202,12 @@ program asset_files.forEach(file => { var folderPath = file.data.physical_file_path.split('/'); - folderPath = dir.LEGACY_APP+'/'+folderPath.slice(0, folderPath.length-1).join('/'); + folderPath = siteRoot+'/'+folderPath.slice(0, folderPath.length-1).join('/'); fs.mkdirSync(folderPath, { recursive: true }); - fs.writeFileSync(dir.LEGACY_APP+'/'+file.data.physical_file_path, file.data.body, logger.Error); + fs.writeFileSync(siteRoot+'/'+file.data.physical_file_path, file.data.body, logger.Error); }); - exportSpinner.stopAndPersist().succeed(`Files downloaded into ${dir.LEGACY_APP} folder`); + exportSpinner.stopAndPersist().succeed(`Files downloaded into ${siteRoot} folder`); }, logger.Error); await gateway.export(exportInternalIds, params.csv).then(exportTask => { diff --git a/siteglide-cli-gui.js b/siteglide-cli-gui.js index 4b0aafc..5c43c0e 100755 --- a/siteglide-cli-gui.js +++ b/siteglide-cli-gui.js @@ -11,7 +11,7 @@ program .version(version, '-v, --version') .name('siteglide-cli gui') .usage(' [options]') - .description('This command will open up the GraphiQL editor and/or Liquid Evaluator locally.') + .description('Open the local Admin GUI (Logs, Database, Constants, GraphiQL, Liquid Evaluator).') .arguments('[environment]', 'name of environment. Example: staging') .option('-c --config-file ', 'config file path', '.siteglide-config') .option('-p --port ', 'port number', '3333') @@ -29,14 +29,14 @@ program try { await server.start(process.env, 'gui'); - if(params.open){ - setTimeout(async function(){ - await open(`http://localhost:${params.port}/gui/graphql`); - },1000); + if (params.open) { + setTimeout(async function () { + await open(`http://localhost:${params.port}/`); + }, 1000); } } catch (e) { logger.Error('GUI failed. Please check that you have the correct permissions and your site is not locked or creating.'); } }); -program.parse(process.argv); \ No newline at end of file +program.parse(process.argv); diff --git a/siteglide-cli-list.js b/siteglide-cli-list.js index d149564..0eaf3ad 100644 --- a/siteglide-cli-list.js +++ b/siteglide-cli-list.js @@ -1,21 +1,39 @@ #!/usr/bin/env node -const logger = require('./lib/logger'), - files = require('./lib/assets/files'); +const program = require('commander'), + logger = require('./lib/logger'), + files = require('./lib/assets/files'), + { listEnvironments } = require('./lib/envClassification'), + version = require('./package.json').version; -const listEnvironments = () => { - const settings = Object(files.getConfig()); - const list = Object.keys(settings); +program + .version(version, '-v, --version') + .name('siteglide-cli list') + .usage('[options]') + .description('List environments from .siteglide-config. Use --details for host and staging/production classification (same rules as MCP envs_list).') + .option('-d --details', 'include host and classification (staging|production)') + .option('-c --config-file ', 'config file path', '.siteglide-config') + .action((params) => { + process.env.CONFIG_FILE_PATH = params.configFile; + const settings = Object(files.getConfig()); + const environments = listEnvironments(settings, { details: params.details }); - if (list.length) { - logger.Info('Available environments: '); - for (const id in list) { - const env = list[id]; - logger.Info(`- [${env}] ${settings[env].url}`, { hideTimestamp: true }); - } - } else { - logger.Error('No environments registered yet, please see siteglide-cli add', { exit: false }); - } -}; + if (!environments.length) { + logger.Error('No environments registered yet, please see siteglide-cli add', { exit: false }); + return; + } -listEnvironments(); + logger.Info('Available environments: '); + for (const env of environments) { + if (params.details) { + logger.Info( + `- [${env.name}] ${env.url} host=${env.host} classification=${env.classification}`, + { hideTimestamp: true } + ); + } else { + logger.Info(`- [${env.name}] ${env.url}`, { hideTimestamp: true }); + } + } + }); + +program.parse(process.argv); diff --git a/siteglide-cli-mcp.js b/siteglide-cli-mcp.js new file mode 100644 index 0000000..0fbd271 --- /dev/null +++ b/siteglide-cli-mcp.js @@ -0,0 +1,46 @@ +#!/usr/bin/env node + +/** + * Thin launcher for Siteglide MCP (stdio). stdout is reserved for MCP JSON-RPC. + */ +const path = require('path'); +const { spawn } = require('child_process'); + +function resolveMcpBin() { + const fs = require('fs'); + try { + const main = require.resolve('@siteglide/siteglide-mcp'); + const candidate = path.join(path.dirname(main), '..', 'bin', 'siteglide-mcp.js'); + if (fs.existsSync(candidate)) { + return candidate; + } + } catch { + /* fall through */ + } + + const sibling = path.resolve(__dirname, '..', 'Siteglide-MCP', 'bin', 'siteglide-mcp.js'); + if (fs.existsSync(sibling)) { + return sibling; + } + + console.error( + '[siteglide-cli-mcp] @siteglide/siteglide-mcp is not installed.\n' + + 'Run siteglide-cli pull to install MCP from npm or GitHub when available,\n' + + 'or from the siteglide-cli repo: npm run install:mcp' + ); + process.exit(1); +} + +const bin = resolveMcpBin(); +const child = spawn(process.execPath, [bin, ...process.argv.slice(2)], { + stdio: 'inherit', + env: process.env +}); + +child.on('exit', (code, signal) => { + if (signal) { + process.kill(process.pid, signal); + } else { + process.exit(code ?? 1); + } +}); diff --git a/siteglide-cli-migrate.js b/siteglide-cli-migrate.js index 6b622fe..c964262 100755 --- a/siteglide-cli-migrate.js +++ b/siteglide-cli-migrate.js @@ -152,8 +152,8 @@ program .then(() => process.exit(0)) .catch(() => process.exit(1)); } else { - await makeArchive('./.tmp/assets.zip', dir.LEGACY_APP) - .then(async () => await makeArchive('./.tmp/marketplace-release.zip', dir.LEGACY_APP)) + await makeArchive('./.tmp/assets.zip', dir.defaultSiteRoot()) + .then(async () => await makeArchive('./.tmp/marketplace-release.zip', dir.defaultSiteRoot())) } }) ); @@ -170,8 +170,8 @@ program .then(() => process.exit(0)) .catch(() => process.exit(1)); } else { - await makeArchive('./.tmp/assets.zip', dir.LEGACY_APP) - .then(async () => await makeArchive('./.tmp/marketplace-release.zip', dir.LEGACY_APP)) + await makeArchive('./.tmp/assets.zip', dir.defaultSiteRoot()) + .then(async () => await makeArchive('./.tmp/marketplace-release.zip', dir.defaultSiteRoot())) } }) ); diff --git a/siteglide-cli-pull.js b/siteglide-cli-pull.js index ed072e7..cbe9219 100755 --- a/siteglide-cli-pull.js +++ b/siteglide-cli-pull.js @@ -12,124 +12,787 @@ const program = require('commander'), Confirm = require('./lib/confirm'), getBinary = require('./lib/assets/getBinary'), unzip = require('./lib/unzip'), - shell = require('shelljs'), path = require('path'), - dir = require('./lib/directories'); + dir = require('./lib/directories'), + { ensureMcpOnPull } = require('./lib/mcpAlpha'), + { + resolveSiteAppRoot + } = require('./lib/migrateAppDirectory'), + { + DEFAULT_PULL_IGNORED_MODULES, + PULL_MODULES_CONFIG_RELATIVE_PATH, + isPullIgnoredModule, + preparePullModulesConfig, + partitionPullIgnoredModules, + resolvePullIgnoredModules, + selectModulesToPull, + formatModuleNameForLog, + formatModuleListForLog + } = require('./lib/pullIgnoredModules'); const pullSpinner = ora({ text: 'Pulling files', stream: process.stdout }); +/** Project-root folder that receives merged agent files from modules. */ +const AGENTS_ROOT = '.agents'; + +/** Default max concurrent module backup/download/extract jobs. */ +const DEFAULT_MODULE_PULL_CONCURRENCY = 3; + +/** + * Copy each child of `srcDir` into `destDir` (merge/overwrite). + * Used instead of copying a folder into its parent, which fs-extra cannot do safely. + * + * @param {string} srcDir - Source directory whose children should be copied. + * @param {string} destDir - Destination directory to receive those children. + * Side effects: writes/overwrites files and folders under destDir. + */ +const copyChildren = async (srcDir, destDir) => { + await fs.ensureDir(destDir); + const children = await fs.readdir(srcDir); + for (let i = 0; i < children.length; i++) { + const name = children[i]; + await fs.copy(path.join(srcDir, name), path.join(destDir, name), { overwrite: true }); + } +}; + +/** + * Clear the read-only / write-protect bit on a file so it can be overwritten on the next pull. + * No-op for missing paths and directories. Failures are logged at Debug and ignored. + * + * @param {string} filePath - Absolute or relative path to a file. + * Side effects: may chmod the file to add owner-write. + */ +const makeWritable = async (filePath) => { + try { + if (!(await fs.pathExists(filePath))) { + return; + } + const stats = await fs.stat(filePath); + if (stats.isDirectory()) { + return; + } + await fs.chmod(filePath, stats.mode | 0o200); + } catch (e) { + logger.Debug(`[pull] Could not clear read-only on ${filePath}: ${e.message}`); + } +}; + +/** + * Mark a file read-only after merge (cross-platform hint that it came from a module). + * Directories are left writable so later pulls can add/replace children. + * Failures are logged at Debug and ignored. + * + * @param {string} filePath - Absolute or relative path to a file. + * Side effects: may chmod the file to remove write bits. + */ +const makeReadOnly = async (filePath) => { + try { + const stats = await fs.stat(filePath); + if (stats.isDirectory()) { + return; + } + await fs.chmod(filePath, stats.mode & ~0o222); + } catch (e) { + logger.Debug(`[pull] Could not set read-only on ${filePath}: ${e.message}`); + } +}; + +/** + * Recursively merge `srcDir` into `destDir`. Existing destination files are made writable, + * overwritten, then marked read-only again so the next pull can still replace them. + * + * @param {string} srcDir - Source `.agents` tree under a module. + * @param {string} destDir - Destination project-root `.agents` directory. + * @param {string} moduleName - Module name (for log messages). + * @returns {Promise} Number of files written. + * Side effects: creates dirs; writes/overwrites files under destDir; may chmod files. + */ +const copyAgentsTree = async (srcDir, destDir, moduleName) => { + await fs.ensureDir(destDir); + const entries = await fs.readdir(srcDir); + let fileCount = 0; + for (let i = 0; i < entries.length; i++) { + const name = entries[i]; + const srcPath = path.join(srcDir, name); + const destPath = path.join(destDir, name); + const stats = await fs.stat(srcPath); + if (stats.isDirectory()) { + logger.Debug(`[pull] .agents: merging directory "${name}/" from module "${formatModuleNameForLog(moduleName)}"`); + fileCount += await copyAgentsTree(srcPath, destPath, moduleName); + } else { + await makeWritable(destPath); + await fs.copy(srcPath, destPath, { overwrite: true }); + await makeReadOnly(destPath); + const displayPath = destPath.replace(/\\/g, '/').replace(/^\.\//, ''); + logger.Debug(`[pull] .agents: wrote ./${displayPath} (from module "${formatModuleNameForLog(moduleName)}")`); + fileCount++; + } + } + return fileCount; +}; + +/** + * For each pulled module, if `modules//public/assets/.agents/` exists, merge its + * contents into the project-root `./.agents/` directory (overwrite on conflict). + * When at least one `SKILL.md` is present under `./.agents`, also scaffolds IDE discovery + * folders (Cursor, Claude, Windsurf, Copilot) pointing at the shared skills tree. + * + * @param {string[]} moduleNames - Module machine names that were pulled this run. + * @returns {Promise<{modulesWithAgents: number, totalFiles: number, skillCount: number}>} + * Side effects: may create `./.agents` and write/overwrite files under it; may create IDE + * root folders/symlinks; updates pullSpinner text. + */ +const mergeModuleAgentsToRoot = async (moduleNames) => { + logger.Info('[pull] Looking for AI agent skills relevant to your current modules'); + pullSpinner.text = `Merging ${AGENTS_ROOT} files`; + + const result = { modulesWithAgents: 0, totalFiles: 0, skillCount: 0 }; + + if (!moduleNames || moduleNames.length === 0) { + logger.Info('[pull] No skills found — skipping IDE folders'); + return result; + } + + for (let i = 0; i < moduleNames.length; i++) { + const moduleName = moduleNames[i]; + const agentsSrc = path.join('.', dir.MODULES, moduleName, 'public', 'assets', AGENTS_ROOT); + const agentsSrcDisplay = agentsSrc.replace(/\\/g, '/'); + logger.Debug(`[pull] Checking for ${agentsSrcDisplay}`); + + if (!(await fs.pathExists(agentsSrc))) { + logger.Debug(`[pull] Module "${formatModuleNameForLog(moduleName)}" — no ${AGENTS_ROOT} directory found`); + continue; + } + + const srcStat = await fs.stat(agentsSrc); + if (!srcStat.isDirectory()) { + logger.Debug(`[pull] Module "${formatModuleNameForLog(moduleName)}" — ${AGENTS_ROOT} exists but is not a directory; skip`); + continue; + } + + logger.Info(`[pull] Module "${formatModuleNameForLog(moduleName)}" — found ${AGENTS_ROOT}; merging into ./${AGENTS_ROOT}`); + const count = await copyAgentsTree(agentsSrc, `./${AGENTS_ROOT}`, moduleName); + result.modulesWithAgents++; + result.totalFiles += count; + if (count > 0) { + logger.Info(`[pull] Module "${formatModuleNameForLog(moduleName)}" — merged ${count} file(s) into ./${AGENTS_ROOT}`); + } + } + + result.skillCount = await countSkillMarkdownFiles(`./${AGENTS_ROOT}`); + + if (result.totalFiles > 0) { + logger.Info( + `[pull] .agents: merged ${result.totalFiles} file(s) from ${result.modulesWithAgents} module(s) (${result.skillCount} skills)` + ); + } + + if (result.skillCount > 0) { + await ensureAgentIdeScaffolding(); + } else { + logger.Info('[pull] No skills found — skipping IDE folders'); + } + + return result; +}; + +/** + * Recursively count `SKILL.md` files under a directory (follows real dirs, not via symlink walk of link targets beyond lstat dirs). + * + * @param {string} rootDir - Directory to scan. + * @returns {Promise} Number of SKILL.md files found. + * Side effects: none. + */ +const countSkillMarkdownFiles = async (rootDir) => { + if (!(await fs.pathExists(rootDir))) { + return 0; + } + let count = 0; + const walk = async (current) => { + const entries = await fs.readdir(current); + for (let i = 0; i < entries.length; i++) { + const fullPath = path.join(current, entries[i]); + const stats = await fs.lstat(fullPath); + if (stats.isDirectory()) { + await walk(fullPath); + } else if (stats.isFile() && entries[i] === 'SKILL.md') { + count++; + } + } + }; + await walk(rootDir); + return count; +}; + +/** + * Ensure `linkPath` is a directory symlink/junction pointing at `targetPath` + * (source of truth under `.agents/skills`). Cross-platform: junction on Windows, dir symlink elsewhere. + * + * @param {string} linkPath - Relative path for the discovery folder (e.g. `.cursor/skills`). + * @param {string} targetPath - Relative path to the shared skills tree (e.g. `.agents/skills`). + * Side effects: may remove an existing link/dir at linkPath; creates parent dirs; creates symlink/junction. + */ +const ensureSkillsDirLink = async (linkPath, targetPath) => { + const linkAbs = path.resolve(linkPath); + const targetAbs = path.resolve(targetPath); + + logger.Debug(`[pull] Ensuring skills link: ${linkPath} → ${targetPath}`); + await fs.ensureDir(path.dirname(linkAbs)); + await fs.ensureDir(targetAbs); + + if (await fs.pathExists(linkAbs)) { + const linkStat = await fs.lstat(linkAbs); + if (linkStat.isSymbolicLink()) { + let currentTarget = await fs.readlink(linkAbs); + if (!path.isAbsolute(currentTarget)) { + currentTarget = path.resolve(path.dirname(linkAbs), currentTarget); + } + if (path.resolve(currentTarget) === targetAbs) { + logger.Debug(`[pull] Skills link already correct: ${linkPath}`); + return; + } + logger.Debug(`[pull] Replacing outdated skills link at ${linkPath}`); + await fs.remove(linkAbs); + } else { + logger.Debug(`[pull] Replacing existing path at ${linkPath} with link to shared ${targetPath}`); + await fs.remove(linkAbs); + } + } + + const linkType = process.platform === 'win32' ? 'junction' : 'dir'; + const linkTarget = process.platform === 'win32' + ? targetAbs + : path.relative(path.dirname(linkAbs), targetAbs) || '.'; + await fs.symlink(linkTarget, linkAbs, linkType); + logger.Debug(`[pull] Created ${linkType} ${linkPath} → ${targetPath}`); +}; + +/** + * Write a managed text file (overwrite). Used for IDE pointer rules that tell agents + * how to find `./.agents` when native discovery is missing. + * + * @param {string} filePath - Relative path to write. + * @param {string} contents - File body. + * Side effects: creates parent dirs; writes/overwrites the file; may chmod read-only after write. + */ +const writeManagedAgentFile = async (filePath, contents) => { + await fs.ensureDir(path.dirname(filePath)); + await makeWritable(filePath); + await fs.writeFile(filePath, contents, 'utf8'); + await makeReadOnly(filePath); + logger.Debug(`[pull] Wrote ${filePath.replace(/\\/g, '/')}`); +}; + +/** Cursor always-on rule — mirrors Siteglide/Siteglide-AI-Skills `.cursor/rules/setup_siteglide_skills.mdc`. */ +const CURSOR_SETUP_RULE = `--- +alwaysApply: true +--- +Check if you have access to Siteglide skills automatically. If not, immediately check the ./.agents directory for skills on startup and add matching skills in your .cursor/skills directory using symlinks. +Also follow ./.cursor/rules/setup_siteglide_mcp.mdc for Siteglide MCP (never read .siteglide-config; use envs_list). +`; + +/** Claude project instructions — mirrors Siteglide/Siteglide-AI-Skills `.claude/CLAUDE.md`. */ +const CLAUDE_SETUP_MD = `# Setup Siteglide Skills + +Check if you have access to Siteglide skills automatically. If not, immediately check the ./.agents/skills/siteglide/ directory for skills on startup and use a single bash command to copy that to your ./.claude/skills/ directory. Then reload your plugins if needed (to import those new skills). + +## Siteglide MCP + +See ./.claude/siteglide-mcp.md. Prefer Siteglide MCP tools. NEVER read .siteglide-config — use envs_list for environment names. +`; + +/** Windsurf always-on rule pointing at the shared `.agents` tree. */ +const WINDSURF_SETUP_RULE = `--- +trigger: always_on +--- +Check if you have access to Siteglide skills automatically. If not, immediately check the ./.agents directory for skills on startup and add matching skills in your .windsurf/skills directory using symlinks (or rely on ./.windsurf/skills if it already links to ./.agents/skills). +Also follow ./.windsurf/rules/setup_siteglide_mcp.md for Siteglide MCP (never read .siteglide-config; use envs_list). +`; + +/** Copilot custom instructions pointing at the shared `.agents` tree. */ +const COPILOT_INSTRUCTIONS_MD = ` +If agent skills are not already available, use the skills under ./.agents/skills/ (also linked from ./.github/skills/). Prefer those over inventing Siteglide/platformOS workflows from memory. +Also see ./.github/siteglide-mcp.md: prefer Siteglide MCP tools; NEVER read .siteglide-config — use envs_list for environment names. +`; + +/** + * When skills exist under `./.agents`, create IDE root folders so Cursor, Claude, Windsurf, + * and GitHub Copilot can discover them. Skills stay in `./.agents/skills` (source of truth); + * platform folders get a symlink/junction to that tree plus a small pointer rule/instructions + * file matching https://github.com/Siteglide/Siteglide-AI-Skills + * + * Side effects: creates `.cursor`, `.claude`, `.windsurf`, `.github` paths; writes managed + * pointer files; creates/replaces skills directory links; updates pullSpinner text. + */ +const ensureAgentIdeScaffolding = async () => { + pullSpinner.text = 'Setting up IDE skill folders'; + + const skillsTarget = path.join(AGENTS_ROOT, 'skills'); + await fs.ensureDir(`./${skillsTarget}`); + + // Cursor — rule (as in Siteglide-AI-Skills) + skills link for native .cursor/skills discovery + await writeManagedAgentFile( + path.join('.cursor', 'rules', 'setup_siteglide_skills.mdc'), + CURSOR_SETUP_RULE + ); + await ensureSkillsDirLink(path.join('.cursor', 'skills'), skillsTarget); + + // Claude — CLAUDE.md pointer + skills link (Claude discovers .claude/skills) + await writeManagedAgentFile(path.join('.claude', 'CLAUDE.md'), CLAUDE_SETUP_MD); + await ensureSkillsDirLink(path.join('.claude', 'skills'), skillsTarget); + + // Windsurf — rule + skills link (Cascade discovers .windsurf/skills; also reads .agents/skills) + await writeManagedAgentFile( + path.join('.windsurf', 'rules', 'setup_siteglide_skills.md'), + WINDSURF_SETUP_RULE + ); + await ensureSkillsDirLink(path.join('.windsurf', 'skills'), skillsTarget); + + // Copilot — instructions under .github + skills link (.github/skills is Copilot's project path) + await writeManagedAgentFile( + path.join('.github', 'copilot-instructions.md'), + COPILOT_INSTRUCTIONS_MD + ); + await ensureSkillsDirLink(path.join('.github', 'skills'), skillsTarget); + + logger.Info('[pull] IDE folders ready (.cursor, .claude, .windsurf, .github → .agents/skills)'); +}; + +/** + * Remove empty directories left under a pull root after restructuring. + * + * @param {string} root - Relative directory to scan (e.g. marketplace_builder). + * Side effects: deletes empty child directories under `./${root}`; logs non-ENOTEMPTY errors. + */ +const cleanupEmptyDirs = async (root) => { + const rootPath = `./${root}`; + if (!(await fs.pathExists(rootPath))) { + return; + } + const entries = await fs.readdir(rootPath); + for (let i = 0; i < entries.length; i++) { + const folder = path.join(rootPath, entries[i]); + const stat = await fs.stat(folder); + if (!stat.isDirectory()) { + continue; + } + try { + await fs.rmdir(folder); + } catch (e) { + if (e.code !== 'ENOTEMPTY') { + logger.Error(e); + } + } + } +}; + +/** + * If a pull extract contains a nested `modules/` folder, merge it into `./modules` + * (project root), then delete the nested copy. Siteglide expects modules at `./modules`, + * not under `marketplace_builder/modules`. + * + * @param {string} fromRoot - Relative directory that may contain `modules/` (e.g. marketplace_builder or .tmp/...). + * Side effects: creates `./modules` if needed; copies module files into it (overwrites); deletes `${fromRoot}/modules`. + * No-op if `${fromRoot}/modules` does not exist. + */ +const moveModulesToRoot = async (fromRoot, ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + const modulesPath = `./${fromRoot}/modules`; + if (!(await fs.pathExists(modulesPath))) { + return; + } + logger.Debug(`[pull] Moving ./${fromRoot}/modules → ./${dir.MODULES}`); + await fs.ensureDir(`./${dir.MODULES}`); + const entries = await fs.readdir(modulesPath); + for (let i = 0; i < entries.length; i++) { + const moduleName = entries[i]; + const srcPath = path.join(modulesPath, moduleName); + const stats = await fs.stat(srcPath); + if (!stats.isDirectory()) { + continue; + } + if (isPullIgnoredModule(moduleName, ignoredModules)) { + logger.Debug(`[pull] Skipping default-ignored module "${formatModuleNameForLog(moduleName)}" from ./${fromRoot}/modules`); + continue; + } + await fs.copy(srcPath, path.join(`./${dir.MODULES}`, moduleName), { overwrite: true }); + } + await fs.remove(modulesPath); +}; + +/** + * Download the main site backup zip and convert it into the local site root (`marketplace_builder/` or `app/`). + * Calls Siteglide-API `/cli/backup` then `/cli/backupStatus/:id` (no module_name). + * + * @param {Gateway} gateway - Authenticated API client for the current environment. + * @param {string} [siteRoot] - Relative site folder (`app` or, rarely, `marketplace_builder`). + * Side effects: writes/overwrites that folder; may merge into `./modules`; + * updates `pullSpinner` text; downloads then deletes a temporary zip. + */ +const pullSiteZip = async (gateway, siteRoot = dir.SITE_ROOT, ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + logger.Info(`[pull] Step: downloading main site zip → ${siteRoot}/`); + const filename = `${siteRoot}.zip`; + pullSpinner.text = 'Pulling site files'; + const pullTask = await gateway.pullZip(); + logger.Debug(`[pull] Site backup started (id: ${pullTask.id})`); + const readyTask = await waitForStatus(() => gateway.pullZipStatus(pullTask.id)); + logger.Debug(`[pull] Site backup ready (status: ${readyTask.status}) — downloading zip`); + await downloadFile(readyTask.zip_file.url, filename); + await unzip(filename, siteRoot); + await copyChildren(`./${siteRoot}/app`, `./${siteRoot}`); + await fs.remove(`./${filename}`); + await moveModulesToRoot(siteRoot, ignoredModules); + if (await fs.pathExists(`./${siteRoot}/asset_manifest.json`)) { + await fs.remove(`./${siteRoot}/asset_manifest.json`); + } + await fs.remove(`./${siteRoot}/app`); + await cleanupEmptyDirs(siteRoot); + logger.Info('[pull] Site files pulled'); +}; + +/** + * Download one module's public-files backup and merge it into `./modules//`. + * Calls Siteglide-API `/cli/backup` with `module_name`, then polls `/cli/backupStatus/:id`. + * Does not clear `marketplace_builder`. + * + * @param {Gateway} gateway - Authenticated API client for the current environment. + * @param {string} moduleName - Installed module machine name to pull. + * Side effects: writes/overwrites files under `./modules`; updates `pullSpinner` text; + * uses then deletes a temp zip and `.tmp/pull-` work directory. + */ +const pullModuleZip = async (gateway, moduleName, ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + logger.Info(`[pull] Starting module ${formatModuleNameForLog(moduleName)}`); + const filename = `${dir.MODULES}-${moduleName}.zip`; + const workDir = path.join(dir.TMP, `pull-${moduleName}`); + const pullTask = await gateway.pullZip({ module_name: moduleName }); + logger.Debug(`[pull] Module "${formatModuleNameForLog(moduleName)}" backup started (id: ${pullTask.id})`); + const readyTask = await waitForStatus(() => gateway.pullZipStatus(pullTask.id)); + logger.Debug(`[pull] Module "${formatModuleNameForLog(moduleName)}" backup ready (status: ${readyTask.status}) — downloading zip`); + await downloadFile(readyTask.zip_file.url, filename); + await fs.remove(workDir); + await unzip(filename, workDir); + await fs.remove(`./${filename}`); + + if (await fs.pathExists(`./${workDir}/app`)) { + await copyChildren(`./${workDir}/app`, `./${workDir}`); + await fs.remove(`./${workDir}/app`); + } + + await moveModulesToRoot(workDir, ignoredModules); + + // Some module zips nest files as /... instead of modules//... + const directModulePath = `./${workDir}/${moduleName}`; + if (await fs.pathExists(directModulePath)) { + logger.Debug(`[pull] Module "${formatModuleNameForLog(moduleName)}" zip used direct layout; copying into ./${dir.MODULES}/${moduleName}`); + await fs.ensureDir(`./${dir.MODULES}/${moduleName}`); + await fs.copy(directModulePath, `./${dir.MODULES}/${moduleName}`, { overwrite: true }); + } + + if (await fs.pathExists(`./${workDir}`)) { + await fs.remove(`./${workDir}`); + } +}; + +/** + * Run `iterator` over `items` with at most `limit` promises in flight. + * Preserves result order. Fails fast if any iterator rejects. + * + * @template T, R + * @param {T[]} items - Items to process. + * @param {number} limit - Max concurrent iterators. + * @param {(item: T, index: number) => Promise} iterator - Async worker. + * @returns {Promise} Results in the same order as `items`. + * Side effects: whatever `iterator` does. + */ +const mapLimit = async (items, limit, iterator) => { + const results = new Array(items.length); + let nextIndex = 0; + const workerCount = Math.min(Math.max(1, limit), items.length); + + const workers = []; + for (let w = 0; w < workerCount; w++) { + workers.push((async () => { + while (true) { + const i = nextIndex; + nextIndex += 1; + if (i >= items.length) { + return; + } + results[i] = await iterator(items[i], i); + } + })()); + } + + await Promise.all(workers); + return results; +}; + +/** + * Pull every selected module with capped concurrency (unique zip/work paths per module). + * + * @param {Gateway} gateway - Authenticated API client. + * @param {string[]} modulesToPull - Module machine names to pull. + * @param {number} concurrency - Max concurrent module pulls. + * Side effects: same as `pullModuleZip` for each module; updates pullSpinner text. + */ +const pullModulesInParallel = async (gateway, modulesToPull, concurrency, ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + const total = modulesToPull.length; + if (total === 0) { + return; + } + + const limit = Math.max(1, concurrency); + logger.Info(`[pull] Pulling ${total} module(s) (up to ${limit} at a time)`); + pullSpinner.text = `Pulling modules (up to ${limit} at a time)`; + + let completed = 0; + await mapLimit(modulesToPull, limit, async (moduleName) => { + await pullModuleZip(gateway, moduleName, ignoredModules); + completed += 1; + logger.Info(`[pull] Module "${formatModuleNameForLog(moduleName)}" done (${completed}/${total})`); + pullSpinner.text = `Pulling modules (${completed}/${total} done, up to ${limit} at a time)`; + }); + + logger.Info(`[pull] Pulled ${total} module(s)`); +}; + +/** + * Fetch the asset file list from Siteglide-API `/cli/pull` and download matching text/binary assets + * by physical_file_path. Paths under `modules/` are written to `./modules/...`; everything else + * goes under the site root (`app/` or `marketplace_builder/`) so this step does not recreate nested modules. + * + * @param {Gateway} gateway - Authenticated API client for the current environment. + * @param {string} [siteRoot] - Relative site folder for non-module assets. + * Side effects: creates dirs and writes/overwrites asset files under the site root or `./modules`; + * updates `pullSpinner` text; downloads each asset from its remote_url. + */ +const pullAssets = async (gateway, siteRoot = dir.SITE_ROOT, ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + pullSpinner.text = 'Pulling assets'; + const response = await gateway.pull(); + const asset_files = []; + const assets = response.asset || []; + logger.Debug(`[pull] Asset list returned ${assets.length} file(s); filtering by extension`); + const time = '?updated=' + new Date().getTime(); + await Promise.all(assets.map(async function (file) { + const urlToTest = file.data.remote_url.toLowerCase(); + return new Promise(async function (resolve) { + if ( + (urlToTest.indexOf('.css') > -1) || + (urlToTest.indexOf('.js') > -1) || + (urlToTest.indexOf('.scss') > -1) || + (urlToTest.indexOf('.sass') > -1) || + (urlToTest.indexOf('.less') > -1) || + (urlToTest.indexOf('.txt') > -1) || + (urlToTest.indexOf('.html') > -1) || + (urlToTest.indexOf('.svg') > -1) || + (urlToTest.indexOf('.map') > -1) || + (urlToTest.indexOf('.json') > -1) || + (urlToTest.indexOf('.md') > -1) || + (urlToTest.indexOf('.htm') > -1) + ) { + await getBinary(file.data.remote_url, time).then(body => { + if (body !== 'error_missing_file') { + file.data.body = body; + asset_files.push(file); + } + resolve(); + }); + } else { + resolve(); + } + }); + })); + let moduleAssetCount = 0; + let wroteCount = 0; + asset_files.forEach(file => { + const physicalPath = file.data.physical_file_path.replace(/\\/g, '/'); + const isModuleAsset = physicalPath === dir.MODULES || physicalPath.indexOf(dir.MODULES + '/') === 0; + const root = isModuleAsset ? dir.MODULES : siteRoot; + const relativePath = isModuleAsset + ? physicalPath.slice(dir.MODULES.length).replace(/^\//, '') + : physicalPath; + if (!relativePath) { + return; + } + if (isModuleAsset) { + const moduleName = relativePath.split('/')[0]; + if (isPullIgnoredModule(moduleName, ignoredModules)) { + logger.Debug(`[pull] Skipping asset for default-ignored module "${formatModuleNameForLog(moduleName)}": ${physicalPath}`); + return; + } + moduleAssetCount++; + } + const fullPath = path.join(root, relativePath); + fs.mkdirSync(path.dirname(fullPath), { recursive: true }); + fs.writeFileSync(fullPath, file.data.body, logger.Error); + wroteCount++; + }); + logger.Info(`[pull] Assets: wrote ${wroteCount} file(s) (${moduleAssetCount} under modules)`); +}; + +/** + * Final local cleanup after site/module/asset pulls have finished. + * + * Side effects: removes leftover pull zips (`app.zip`, `marketplace_builder.zip`, `modules-*.zip`), + * removes `./.tmp` if present, moves any leftover `app/modules` into `./modules` + * then deletes that nested folder, removes empty dirs under `app`; + * updates `pullSpinner` text and writes tidying-up logs. + */ +const tidyUpAfterPull = async (ignoredModules = DEFAULT_PULL_IGNORED_MODULES) => { + logger.Info('[pull] Step: tidying up local files'); + pullSpinner.text = 'Tidying up...'; + + const siteZips = [`./${dir.SITE_ROOT}.zip`, `./${dir.APP}.zip`]; + for (let i = 0; i < siteZips.length; i++) { + const siteZip = siteZips[i]; + if (await fs.pathExists(siteZip)) { + await fs.remove(siteZip); + logger.Debug(`[pull] Removed leftover ${siteZip}`); + } + } + + const cwdEntries = await fs.readdir('.'); + for (let i = 0; i < cwdEntries.length; i++) { + const name = cwdEntries[i]; + if (name.indexOf(`${dir.MODULES}-`) === 0 && name.slice(-4) === '.zip') { + await fs.remove(`./${name}`); + logger.Debug(`[pull] Removed leftover ./${name}`); + } + } + + if (await fs.pathExists(`./${dir.TMP}`)) { + await fs.remove(`./${dir.TMP}`); + logger.Debug(`[pull] Removed ./${dir.TMP}`); + } + + // Pull must not leave modules nested under app (or leftover marketplace_builder) + const appRoots = [dir.SITE_ROOT, dir.APP]; + for (let i = 0; i < appRoots.length; i++) { + const appRoot = appRoots[i]; + const nestedModules = `./${appRoot}/modules`; + if (await fs.pathExists(nestedModules)) { + await moveModulesToRoot(appRoot, ignoredModules); + } + if (await fs.pathExists(nestedModules)) { + await fs.remove(nestedModules); + logger.Debug(`[pull] Removed leftover ${nestedModules}`); + } + if (await fs.pathExists(`./${appRoot}`)) { + await cleanupEmptyDirs(appRoot); + } + } + logger.Info('[pull] Tidying up complete'); +}; + program .version(version, '-v, --version') .name('siteglide-cli pull') .usage('') - .description('This will pull down all files from the site in to a folder named marketplace_builder within your current directory. During this process it will also overwrite any local versions of files if they already exist. If you have made any changes locally that you have not synced they WILL be overwritten.') + .description('Pull site files into the existing site root (app/ or marketplace_builder/) and module public files into modules/. Does not rename marketplace_builder/ ↔ app/. Merges each module\'s public/assets/.agents into ./.agents (overwrite). When skills are present, scaffolds IDE discovery folders linked to ./.agents/skills. Registers Siteglide MCP in IDE configs if missing. Modules pull in parallel (see --concurrency). Overwrites local files. By default skips built-in Siteglide platform modules; customize via .siteglide/cli-settings/modules.json (pull_behaviour.include/exclude). Use -m to pull one module including ignored ones.') .arguments('[environment]', 'Name of environment. Example: staging') .option('-c --config-file ', 'config file path', '.siteglide-config') .option('-i --ignore-assets', 'Do not download assets such as CSS, JS, JSON etc', false) - .option('-m --module ', 'Module name to pull', '') + .option('-m --module ', 'Optional module name filter. Without this flag, all installed modules are pulled.') + .option( + '--concurrency ', + `Max concurrent module pulls (default: ${DEFAULT_MODULE_PULL_CONCURRENCY}, or CONCURRENCY env)`, + (value) => { + const parsed = parseInt(value, 10); + if (isNaN(parsed) || parsed < 1) { + throw new Error('--concurrency must be a positive integer'); + } + return parsed; + } + ) .action((environment, params) => { process.env.CONFIG_FILE_PATH = params.configFile; const ignoreAssets = params.ignoreAssets; - const module = params.module; + const moduleFilter = params.module; + const envConcurrency = parseInt(process.env.CONCURRENCY, 10); + const modulePullConcurrency = params.concurrency + || (envConcurrency > 0 ? envConcurrency : DEFAULT_MODULE_PULL_CONCURRENCY); const authData = fetchAuthData(environment, program); const gateway = new Gateway(authData); - const filename = `${dir.LEGACY_APP}.zip`; - - Confirm('Are you sure you would like to pull? This will overwrite your local files immediately! (Y/n)\n').then(async function (response) { - if(response === 'Y'){ - pullSpinner.start(); - - await gateway.pullZip({ module_name: module }).then(pullTask => { - waitForStatus(() => gateway.pullZipStatus(pullTask.id)) - .then(pullTask => downloadFile(pullTask.zip_file.url, filename)) - .then(() => unzip(filename, dir.LEGACY_APP)) - .then(() => shell.cp('-R', `./${dir.LEGACY_APP}/app/*`, `./${dir.LEGACY_APP}`)) - .then(() => shell.rm(`./${filename}`)) - .then(() => { - if(fs.existsSync(`./${dir.LEGACY_APP}/modules`)){ - shell.cp('-R', `./${dir.LEGACY_APP}/modules`, `./`) - shell.rm('-r', `./${dir.LEGACY_APP}/modules`) - } - }) - .then(() => shell.rm(`./${dir.LEGACY_APP}/asset_manifest.json`)) - .then(() => shell.rm('-r',`./${dir.LEGACY_APP}/app`)) - .then(() => { - var list = fs.readdirSync(`./${dir.LEGACY_APP}`).filter(folder => fs.statSync(path.join(`./${dir.LEGACY_APP}`, folder)).isDirectory()); - for(var i=0; i { - if(ignoreAssets){ - pullSpinner.succeed('Pulled files'); - } - }) - .catch(e => { - logger.Debug(e); - pullSpinner.fail('Pull failed'); + + return Confirm('Are you sure you would like to pull? This will overwrite your local files immediately! (Y/n)\n').then(async function (response) { + if (response === 'Y') { + try { + const siteRoot = await resolveSiteAppRoot(); + logger.Info(`[pull] Site files root: ${siteRoot}/`); + + pullSpinner.start(); + if (moduleFilter) { + logger.Info(`[pull] Module filter (-m): "${formatModuleNameForLog(moduleFilter)}"`); + } + if (ignoreAssets) { + logger.Info('[pull] --ignore-assets set; asset download step will be skipped'); + } + + pullSpinner.text = 'Fetching installed modules'; + const { created: pullModulesConfigCreated, effectiveIgnoredModules } = await preparePullModulesConfig(process.cwd()); + if (pullModulesConfigCreated) { + logger.Info(`[pull] Created ./${PULL_MODULES_CONFIG_RELATIVE_PATH} — edit pull_behaviour include/exclude to customize skipped modules (commit to git so the team stays in sync)`); + } + const modulesResponse = await gateway.listModules(); + const installedModules = (modulesResponse && modulesResponse.data) ? modulesResponse.data : []; + logger.Debug(`[pull] list_modules returned ${installedModules.length} module(s)`); + if (installedModules.length > 0) { + installedModules.forEach((name, i) => { + logger.Debug(`\t${i + 1}. ${formatModuleNameForLog(name)}`, { hideTimestamp: true }); + }); + } else { + logger.Debug('[pull] Raw list_modules response keys: ' + Object.keys(modulesResponse || {}).join(', ')); + } + + const ignoredModules = resolvePullIgnoredModules(moduleFilter, effectiveIgnoredModules); + const moduleSelection = partitionPullIgnoredModules(installedModules, effectiveIgnoredModules); + const modulesToPull = selectModulesToPull(installedModules, moduleFilter, effectiveIgnoredModules); + + if (moduleFilter && modulesToPull === null) { + pullSpinner.fail(`Module "${formatModuleNameForLog(moduleFilter)}" is not installed on this site`); + logger.Error(`[pull] Filter "${formatModuleNameForLog(moduleFilter)}" not found in installed modules`); process.exit(1); - }); - }) - .catch(e => { + } + + if (!moduleFilter && moduleSelection.ignored.length > 0) { + logger.Info(`[pull] Skipping ${moduleSelection.ignored.length} default-ignored module(s): ${formatModuleListForLog(moduleSelection.ignored).join(', ')}`); + } + + if (modulesToPull.length === 0) { + logger.Info('[pull] No modules selected to pull'); + } else { + logger.Info(`[pull] Will pull ${modulesToPull.length} module(s): ${formatModuleListForLog(modulesToPull).join(', ')}`); + } + + await pullSiteZip(gateway, siteRoot, ignoredModules); + + await pullModulesInParallel(gateway, modulesToPull, modulePullConcurrency, ignoredModules); + + if (!ignoreAssets) { + await pullAssets(gateway, siteRoot, ignoredModules); + } else { + logger.Info('[pull] Skipping assets step'); + } + + // After module zips (and assets that may land under modules/) are on disk + await mergeModuleAgentsToRoot(modulesToPull); + + pullSpinner.stop(); + await ensureMcpOnPull(); + + await tidyUpAfterPull(ignoredModules); + + logger.Info('[pull] All steps finished'); + pullSpinner.succeed('Pulled files'); + } catch (e) { + logger.Debug(e); pullSpinner.fail('Pull failed'); - logger.Error(e.message); + logger.Error(e.message || e); process.exit(1); - }); - - if(!ignoreAssets){ - await gateway.pull().then(async(response) => { - var asset_files = []; - const assets = response.asset; - var time = '?updated='+new Date().getTime(); - await Promise.all(assets.map(async function(file){ - var urlToTest = file.data.remote_url.toLowerCase(); - return new Promise(async function(resolve) { - if( - (urlToTest.indexOf('.css')>-1)|| - (urlToTest.indexOf('.js')>-1)|| - (urlToTest.indexOf('.scss')>-1)|| - (urlToTest.indexOf('.sass')>-1)|| - (urlToTest.indexOf('.less')>-1)|| - (urlToTest.indexOf('.txt')>-1)|| - (urlToTest.indexOf('.html')>-1)|| - (urlToTest.indexOf('.svg')>-1)|| - (urlToTest.indexOf('.map')>-1)|| - (urlToTest.indexOf('.json')>-1)|| - (urlToTest.indexOf('.htm')>-1) - ){ - await getBinary(file.data.remote_url,time).then(response => { - if(response!=='error_missing_file'){ - file.data.body = response; - asset_files.push(file); - resolve(); - } - }); - }else{ - resolve(); - } - }); - })); - asset_files.forEach(file => { - var folderPath = file.data.physical_file_path.split('/'); - folderPath = dir.LEGACY_APP+'/'+folderPath.slice(0, folderPath.length-1).join('/'); - fs.mkdirSync(folderPath, { recursive: true }); - fs.writeFileSync(dir.LEGACY_APP+'/'+file.data.physical_file_path, file.data.body, logger.Error); - }); - pullSpinner.succeed('Pulled files'); - }); } - - }else{ + } else { logger.Error('[Cancelled] Pull command not executed, your files have been left untouched.'); } }); }); -program.parse(process.argv); \ No newline at end of file +program.parse(process.argv); diff --git a/siteglide-cli-server.js b/siteglide-cli-server.js index 8dba578..be9558e 100755 --- a/siteglide-cli-server.js +++ b/siteglide-cli-server.js @@ -5,9 +5,10 @@ const express = require('express'), bodyParser = require('body-parser'), Gateway = require('./lib/proxy'), logger = require('./lib/logger'), - path = require('path'); + path = require('path'), + version = require('./package.json').version; -const start = (env,command) => { +const start = (env, command) => { const port = env.PORT || 3333; const app = express(); @@ -26,7 +27,7 @@ const start = (env,command) => { var liquidRouting; - if(command==='gui'){ + if (command === 'gui') { liquidRouting = (req, res) => { gateway .liquid(req.body) @@ -38,33 +39,59 @@ const start = (env,command) => { app.use(bodyParser.json()); app.use(compression()); + if (command === 'gui') { + app.use('/', express.static(path.resolve(__dirname, 'gui', 'next', 'build'))); + } app.use('/gui/graphql', express.static(path.resolve(__dirname, 'gui', 'graphql', 'public'))); - if(command==='gui'){ + if (command === 'gui') { app.use('/gui/liquid', express.static(path.resolve(__dirname, 'gui', 'liquid', 'public'))); } - // INFO + // INFO — MPKIT_URL/version for gui/next; SG_URL for legacy GraphiQL/Liquid status bars const info = (req, res) => { - return res.send(JSON.stringify({ SG_URL: env.SITEGLIDE_URL })); + return res.send(JSON.stringify({ + MPKIT_URL: env.SITEGLIDE_URL, + SG_URL: env.SITEGLIDE_URL, + version: version + })); }; app.get('/info', info); app.post('/graphql', graphqlRouting); app.post('/api/graph', graphqlRouting); - if(command==='gui'){ + if (command === 'gui') { app.post('/api/liquid', liquidRouting); app.get('/api/liquid', liquidRouting); + app.get('/api/logs', (req, res) => { + gateway + .logs({ lastId: req.query.lastId }) + .then(body => res.send(body)) + .catch(error => res.send(error)); + }); + + // SPA fallback for gui/next client routes (after API + static mounts) + app.get('*', (req, res, next) => { + if (req.path.startsWith('/gui/') || req.path.startsWith('/api/') || req.path === '/info' || req.path === '/graphql') { + return next(); + } + res.sendFile(path.resolve(__dirname, 'gui', 'next', 'build', 'index.html')); + }); } gateway.ping().then(async () => { - app.listen(port, function() { + app.listen(port, function () { logger.Debug(`Server is listening on ${port}`); logger.Success(`Connected to ${env.SITEGLIDE_URL}`); - logger.Success(`GraphiQL Editor: http://localhost:${port}/gui/graphql`); - if(command==='gui'){ + if(command === 'gui'){ + logger.Success('---'); + logger.Success(`All GUI Tools: http://localhost:${port}`); + logger.Success('---'); + logger.Success(`Instance Logs: http://localhost:${port}/logs`); + logger.Success(`GraphiQL Editor: http://localhost:${port}/gui/graphql`); logger.Success(`Liquid Evaluator: http://localhost:${port}/gui/liquid`); }else{ - logger.Warn('The graphql command is now deprecated and will be removed in a future update. Please switch to the new gui command to use the GraphiQL Editor and Liquid Evaluator.') + logger.Success(`GraphiQL Editor: http://localhost:${port}/gui/graphql`); + logger.Warn('The graphql command is now deprecated and will be removed in a future update. Please switch to the new gui command to use the GraphiQL Editor and Liquid Evaluator.'); } }) .on('error', err => { @@ -72,14 +99,14 @@ const start = (env,command) => { logger.Error(`Port ${port} is already in use.`, { exit: false }); logger.Print('\n'); logger.Warn('Please use -p to run server on a different port.\n'); - logger.Warn('Example: siteglide-cli graphql -p 31337'); + logger.Warn('Example: siteglide-cli gui -p 31337'); } else { logger.Error(`Something wrong happened when trying to run Express server: ${err}`); } }); - }) + }); }; module.exports = { start: start -}; \ No newline at end of file +}; diff --git a/siteglide-cli-watch.js b/siteglide-cli-watch.js index 85c49bd..5cc80be 100755 --- a/siteglide-cli-watch.js +++ b/siteglide-cli-watch.js @@ -12,19 +12,24 @@ const program = require('commander'), templates = require('./lib/templates'), settings = require('./lib/settings'), livereload = require('livereload'), - directories = require('./lib/directories'), + dir = require('./lib/directories'), + { assertExclusiveSiteAppRoot } = require('./lib/migrateAppDirectory'), presignDirectory = require('./lib/presignUrl').presignDirectory, manifestGenerateForAssets = require('./lib/assets/generateManifest').manifestGenerateForAssets, uploadFileFormData = require('./lib/s3UploadFile').uploadFileFormData, version = require('./package.json').version, { cloneDeep, debounce } = require('lodash'); -const WATCH_DIRECTORIES = ['marketplace_builder','modules']; -const getWatchDirectories = () => WATCH_DIRECTORIES.filter(fs.existsSync); const ext = filePath => filePath.split('.').pop(); const filename = filePath => filePath.split(path.sep).pop(); -const filePathUnixified = filePath => filePath.replace(/\\/g, '/').replace('marketplace_builder/', ''); +const filePathUnixified = filePath => + filePath + .replace(/\\/g, '/') + .replace(new RegExp(`^${dir.SITE_ROOT}/`), '') + .replace(new RegExp(`^${dir.APP}/`), ''); let counter = 0; +let siteRoot = null; + const isEmpty = filePath => { let isEmpty; try { @@ -46,14 +51,25 @@ const isEmpty = filePath => { const shouldBeSynced = (filePath) => { return extensionAllowed(filePath) && isNotHidden(filePath) && isNotEmptyYML(filePath) && isNotInNodeModules(filePath); }; -const isAssetsPath = (path) => path.startsWith('marketplace_builder/assets') || path.startsWith('marketplace_builder\\assets'); +const isAssetsPath = (filePath) => { + const normalized = filePath.replace(/\\/g, '/'); + return siteRoot && normalized.startsWith(`${siteRoot}/assets`); +}; let manifestFilesToAdd = []; +const displayPath = (filePath) => { + const normalized = filePath.replace(/\\/g, '/'); + if (siteRoot && normalized.startsWith(`${siteRoot}/`)) { + return normalized.slice(siteRoot.length + 1); + } + return normalized; +}; + const extensionAllowed = filePath => { var allowed = watchFilesExtensions.includes(ext(filePath).toLowerCase()); if (!allowed) { if(filename(filePath)!=='.DS_Store'){ - logger.Warn(`[Sync] Ignored: ${filePath.slice(20)} - File extension is not allowed`, { + logger.Warn(`[Sync] Ignored: ${displayPath(filePath)} - File extension is not allowed`, { exit: false }); } @@ -66,7 +82,7 @@ const isNotHidden = filePath => { if (isHidden) { if(filename(filePath)!=='.DS_Store'){ - logger.Warn(`[Sync] Ignored: ${filePath.slice(20)} - Hidden file`); + logger.Warn(`[Sync] Ignored: ${displayPath(filePath)} - Hidden file`); } } return !isHidden; @@ -74,7 +90,7 @@ const isNotHidden = filePath => { const isNotEmptyYML = filePath => { if (ext(filePath) === 'yml' && isEmpty(filePath)) { - logger.Warn(`[Sync] Ignored: ${filePath.slice(20)} - Empty YML file`); + logger.Warn(`[Sync] Ignored: ${displayPath(filePath)} - Empty YML file`); return false; } @@ -174,14 +190,19 @@ const pushFile = (gateway, syncedFilePath) => { }); }; +const isModule19CustomCss = (syncedFilePath) => { + const normalized = syncedFilePath.replace(/\\/g, '/'); + const legacyCustom = + normalized === `${dir.SITE_ROOT}/assets/css/modules/module_19/_custom-variables.scss` || + normalized === `${dir.SITE_ROOT}/assets/css/modules/module_19/_custom.scss`; + const appCustom = + normalized === `${dir.APP}/assets/css/modules/module_19/_custom-variables.scss` || + normalized === `${dir.APP}/assets/css/modules/module_19/_custom.scss`; + return legacyCustom || appCustom; +}; + const pushFileDirectAssets = (gateway, syncedFilePath) => { - if ( - (isAssetsPath(syncedFilePath))&& - ( - (syncedFilePath!=='marketplace_builder/assets/css/modules/module_19/_custom-variables.scss')&& - (syncedFilePath!=='marketplace_builder/assets/css/modules/module_19/_custom.scss') - ) - ){ + if (isAssetsPath(syncedFilePath) && !isModule19CustomCss(syncedFilePath)) { syncedFilePath = syncedFilePath.replace(/\\/g, '/'); sendAsset(gateway, syncedFilePath); return Promise.resolve(true); @@ -206,16 +227,17 @@ const manifestAddAsset = (path) => manifestFilesToAdd.push(path); const sendAsset = async (gateway, filePath) => { try { const data = cloneDeep(directUploadData); - const fileSubdir = filePath.startsWith('marketplace_builder/assets') - ? path.dirname(filePath).replace('marketplace_builder/assets','') - : '/' + path.dirname(filePath).replace('/public/assets', ''); + const normalized = filePath.replace(/\\/g, '/'); + const fileSubdir = normalized.startsWith(`${siteRoot}/assets`) + ? path.dirname(normalized).replace(`${siteRoot}/assets`, '') + : '/' + path.dirname(normalized).replace('/public/assets', ''); const key = data.fields.key.replace('assets/${filename}', `assets${fileSubdir}/\${filename}`); data.fields.key = key; logger.Debug(data); await uploadFileFormData(filePath, data); manifestAddAsset(filePath); manifestSend(gateway); - logger.Success(`[Sync] Uploaded: ${filePath.slice(20)}`); + logger.Success(`[Sync] Uploaded: ${displayPath(filePath)}`); counter = 0; } catch (e) { logger.Debug(e); @@ -229,7 +251,7 @@ const sendAsset = async (gateway, filePath) => { sendAsset(gateway,filePath); }) }else{ - logger.Error(`[Sync] Error: ${filePath.slice(20)} - Failed to sync`); + logger.Error(`[Sync] Error: ${displayPath(filePath)} - Failed to sync`); } } }; @@ -254,14 +276,25 @@ checkParams(program); const gateway = new Gateway(program.opts()); gateway.ping().then(async () => { - await fetchDirectUploadData(gateway); - const directories = getWatchDirectories(); + siteRoot = assertExclusiveSiteAppRoot(); + const watchDirectories = []; + if (siteRoot) { + watchDirectories.push(siteRoot); + } + if (fs.existsSync(dir.MODULES)) { + watchDirectories.push(dir.MODULES); + } - if (directories.length === 0) { - logger.Error('marketplace_builder has to exist! Please make sure you have the correct folder structure.'); + if (watchDirectories.length === 0) { + logger.Error( + `${dir.SITE_ROOT}/ or ${dir.APP}/ has to exist! Please make sure you have the correct folder structure.` + ); } + await fetchDirectUploadData(gateway); + logger.Info(`Enabled sync to: ${program.opts().url}`); + logger.Info(`[Sync] Watching: ${watchDirectories.join(', ')}`); let liveReloadServer; if (program.opts().livereload) { @@ -270,17 +303,20 @@ gateway.ping().then(async () => { delay: 2000 }); - let liveReloadDirectories = []; - liveReloadDirectories.push(process.cwd(), 'marketplace_builder'); - liveReloadDirectories.push(process.cwd(), 'app'); - liveReloadDirectories.push(process.cwd(), 'modules'); + let liveReloadDirectories = [process.cwd()]; + if (siteRoot) { + liveReloadDirectories.push(siteRoot); + } + if (fs.existsSync(dir.MODULES)) { + liveReloadDirectories.push(dir.MODULES); + } liveReloadServer.watch(liveReloadDirectories); logger.Info('LiveReload Enabled'); } - chokidar.watch(directories, { + chokidar.watch(watchDirectories, { awaitWriteFinish: { stabilityThreshold: 100, pollInterval: 25 @@ -291,4 +327,4 @@ gateway.ping().then(async () => { .on('add', fp => shouldBeSynced(fp) && enqueue(fp)) .on('unlink', fp => shouldBeSynced(fp) && enqueueDelete(fp)); -}); \ No newline at end of file +}); diff --git a/siteglide-cli.js b/siteglide-cli.js index 4af7dc6..2e206b6 100755 --- a/siteglide-cli.js +++ b/siteglide-cli.js @@ -23,16 +23,18 @@ updateNotifier({ program .version(version, '-v, --version') .command('add [environment] --email [email] --url [url]', 'Add a site or environment') - .command('list', 'List your current environments for the site') + .command('list', 'List environments (use list --details for host + staging/production)') .command('sync [environment]', 'update site on local file change') .command('pull [environment]', 'get all files from site') - .command('gui [environment]', 'gui for GraphiQL and Liquid Evaluator') + .command('gui [environment]', 'gui for Admin, Logs, GraphiQL and Liquid Evaluator') .command('logs [environment]', 'stream debugging logs from your website') .command('init', 'create default folder structure for Siteglide Admin') + .command('check [path]', 'check Liquid code quality with platformos-check linter') .command('deploy [environment]', 'upload all code to your site') .command('export [environment]', 'export the code, assets and data from your site') .command('migrate [environment] --url [url]', 'Static site migration into siteglide') .command('modules [environment]', 'list modules installed on the site') + .command('mcp', 'start Siteglide MCP server (stdio)') // .command('import [environment]', 'import your data.json to bulk upload all data') .parse(process.argv); diff --git a/test/helpers/mcpIdeArtifacts.js b/test/helpers/mcpIdeArtifacts.js new file mode 100644 index 0000000..6251df8 --- /dev/null +++ b/test/helpers/mcpIdeArtifacts.js @@ -0,0 +1,38 @@ +const fs = require('fs-extra'); +const path = require('path'); + +/** Relative paths under a project root written by MCP registration / IDE rules. */ +const MCP_IDE_ARTIFACT_RELATIVE_PATHS = [ + path.join('.cursor', 'mcp.json'), + path.join('.cursor', 'rules', 'setup_siteglide_mcp.mdc'), + '.mcp.json', + path.join('.vscode', 'mcp.json'), + path.join('.claude', 'siteglide-mcp.md'), + path.join('.windsurf', 'rules', 'setup_siteglide_mcp.md'), + path.join('.github', 'siteglide-mcp.md') +]; + +/** + * @param {string} rootPath + * @returns {string[]} + */ +const mcpIdeArtifactPaths = (rootPath) => MCP_IDE_ARTIFACT_RELATIVE_PATHS.map((relPath) => { + return path.join(rootPath, relPath); +}); + +/** + * Remove MCP IDE config/rules files from a project root (e.g. after tests). + * + * @param {string} rootPath + */ +const removeMcpIdeArtifacts = async (rootPath) => { + for (let i = 0; i < MCP_IDE_ARTIFACT_RELATIVE_PATHS.length; i++) { + await fs.remove(path.join(rootPath, MCP_IDE_ARTIFACT_RELATIVE_PATHS[i])); + } +}; + +module.exports = { + MCP_IDE_ARTIFACT_RELATIVE_PATHS, + mcpIdeArtifactPaths, + removeMcpIdeArtifacts +}; diff --git a/test/lib/directories.test.js b/test/lib/directories.test.js new file mode 100644 index 0000000..c427e4e --- /dev/null +++ b/test/lib/directories.test.js @@ -0,0 +1,37 @@ +const fs = require('fs-extra'); +const os = require('os'); +const path = require('path'); +const dir = require('../../lib/directories'); + +test('getSiteRoot prefers marketplace_builder over app', async () => { + const rootPath = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-site-root-')); + + try { + await fs.mkdir(path.join(rootPath, dir.SITE_ROOT)); + await fs.mkdir(path.join(rootPath, dir.APP)); + expect(dir.getSiteRoot(rootPath)).toEqual(dir.SITE_ROOT); + } finally { + await fs.remove(rootPath); + } +}); + +test('getSiteRoot uses app when marketplace_builder is missing', async () => { + const rootPath = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-site-root-')); + + try { + await fs.mkdir(path.join(rootPath, dir.APP)); + expect(dir.getSiteRoot(rootPath)).toEqual(dir.APP); + } finally { + await fs.remove(rootPath); + } +}); + +test('defaultSiteRoot falls back to marketplace_builder', async () => { + const rootPath = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-site-root-')); + + try { + expect(dir.defaultSiteRoot(rootPath)).toEqual(dir.SITE_ROOT); + } finally { + await fs.remove(rootPath); + } +}); diff --git a/test/lib/mcpAlpha.test.js b/test/lib/mcpAlpha.test.js new file mode 100644 index 0000000..64cf156 --- /dev/null +++ b/test/lib/mcpAlpha.test.js @@ -0,0 +1,77 @@ +const fs = require('fs-extra'); +const os = require('os'); +const path = require('path'); +const { + NPM_ORG_SCOPE, + MCP_PACKAGE_NAME, + DEFAULT_PACKAGE, + pickLatestPublishedVersion, + getMcpConfigStatus, + needsMcpInstall, + resolveInstalledMcpVersion, + resolveInstalledMcpVersionWithTimeout +} = require('../../lib/mcpAlpha'); +const { SERVER_NAME } = require('../../lib/ai'); + +test('pickLatestPublishedVersion prefers dist-tag then highest semver', () => { + expect(pickLatestPublishedVersion({ + tagVersion: '0.2.0-alpha.1', + versions: ['0.1.0-alpha.0', '0.2.0-alpha.1'], + distTags: { alpha: '0.2.0-alpha.1' } + }, 'alpha')).toEqual('0.2.0-alpha.1'); + + expect(pickLatestPublishedVersion({ + tagVersion: null, + versions: ['0.1.0-alpha.0', '0.2.0-alpha.1'], + distTags: {} + }, 'alpha')).toEqual('0.2.0-alpha.1'); + + expect(pickLatestPublishedVersion(null, 'alpha')).toEqual(null); +}); + +test('getMcpConfigStatus reports configured when siteglide server exists', async () => { + const rootPath = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-mcp-status-')); + const cursorPath = path.join(rootPath, '.cursor', 'mcp.json'); + + try { + await fs.ensureDir(path.dirname(cursorPath)); + await fs.writeFile(cursorPath, JSON.stringify({ + mcpServers: { + [SERVER_NAME]: { command: 'node', args: ['siteglide-cli-mcp.js'] } + } + }, null, 2)); + + expect(getMcpConfigStatus(rootPath)).toEqual({ + configured: true, + paths: [cursorPath], + missing: [ + path.join(rootPath, '.mcp.json'), + path.join(rootPath, '.vscode', 'mcp.json') + ] + }); + } finally { + await fs.remove(rootPath); + } +}); + +test('DEFAULT_PACKAGE is scoped npm name: @siteglide org + siteglide-mcp package', () => { + expect(NPM_ORG_SCOPE).toEqual('@siteglide'); + expect(MCP_PACKAGE_NAME).toEqual('siteglide-mcp'); + expect(DEFAULT_PACKAGE).toEqual('@siteglide/siteglide-mcp'); +}); + +test('needsMcpInstall when published version missing or already installed', () => { + expect(needsMcpInstall(null, null)).toEqual(false); + expect(needsMcpInstall('0.1.0-alpha.0', null)).toEqual(false); + expect(needsMcpInstall(null, '0.2.0-alpha.1')).toEqual(true); + expect(needsMcpInstall('0.1.0-alpha.0', '0.2.0-alpha.1')).toEqual(true); + expect(needsMcpInstall('0.2.0-alpha.1', '0.2.0-alpha.1')).toEqual(false); +}); + +test('resolveInstalledMcpVersionWithTimeout returns installed version', async () => { + const expectedVersion = resolveInstalledMcpVersion(); + expect(await resolveInstalledMcpVersionWithTimeout()).toEqual({ + version: expectedVersion, + timedOut: false + }); +}); diff --git a/test/lib/mcpAlphaFallback.test.js b/test/lib/mcpAlphaFallback.test.js new file mode 100644 index 0000000..32c43b2 --- /dev/null +++ b/test/lib/mcpAlphaFallback.test.js @@ -0,0 +1,125 @@ +const fs = require('fs-extra'); +const os = require('os'); +const path = require('path'); +const { removeMcpIdeArtifacts } = require('../helpers/mcpIdeArtifacts'); + +const mockFetch = jest.fn(); +const mockProbeGithubMcpRepo = jest.fn(); +const mockAttemptGithubMcpInstall = jest.fn(); +const mockConfirm = jest.fn(); +const mockEnsureMcpRegistered = jest.fn(); +const mockEnsureMcpIdeRules = jest.fn(); + +jest.mock('node-fetch', () => mockFetch); +jest.mock('../../lib/mcpGithub', () => ({ + probeGithubMcpRepo: (...args) => mockProbeGithubMcpRepo(...args), + attemptGithubMcpInstall: (...args) => mockAttemptGithubMcpInstall(...args) +})); +jest.mock('../../lib/confirm', () => (...args) => mockConfirm(...args)); +jest.mock('../../lib/ai', () => { + const actual = jest.requireActual('../../lib/ai'); + return { + ...actual, + ensureMcpRegistered: (...args) => mockEnsureMcpRegistered(...args), + ensureMcpIdeRules: (...args) => mockEnsureMcpIdeRules(...args) + }; +}); + +const logger = require('../../lib/logger'); +const { ensureMcpOnPull } = require('../../lib/mcpAlpha'); + +beforeEach(() => { + mockFetch.mockReset(); + mockProbeGithubMcpRepo.mockReset(); + mockAttemptGithubMcpInstall.mockReset(); + mockConfirm.mockReset(); + mockEnsureMcpRegistered.mockReset(); + mockEnsureMcpIdeRules.mockReset(); + jest.spyOn(logger, 'Warn').mockImplementation(() => {}); + jest.spyOn(logger, 'Info').mockImplementation(() => {}); + jest.spyOn(logger, 'Debug').mockImplementation(() => {}); + mockEnsureMcpRegistered.mockResolvedValue({ updated: [] }); + mockEnsureMcpIdeRules.mockResolvedValue({ updated: [] }); +}); + +afterEach(() => { + jest.restoreAllMocks(); +}); + +test('ensureMcpOnPull silently skips when npm and GitHub are unavailable', async () => { + const rootPath = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-mcp-fallback-')); + const cliRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-mcp-cli-')); + + try { + mockFetch.mockResolvedValue({ + status: 404, + ok: false + }); + mockProbeGithubMcpRepo.mockResolvedValue({ + accessible: false, + branches: [] + }); + + const result = await ensureMcpOnPull({ + rootPath, + cliRoot, + interactive: true + }); + + expect(result).toEqual({ + skipped: true, + reason: 'no-install-source', + installedVersion: null, + latestVersion: null + }); + expect(logger.Warn).not.toHaveBeenCalled(); + expect(mockAttemptGithubMcpInstall).not.toHaveBeenCalled(); + } finally { + await removeMcpIdeArtifacts(rootPath); + await fs.remove(rootPath); + await fs.remove(cliRoot); + } +}); + +test('ensureMcpOnPull does not warn about npm when GitHub install is declined', async () => { + const rootPath = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-mcp-fallback-')); + const cliRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-mcp-cli-')); + + try { + mockFetch.mockResolvedValue({ + status: 404, + ok: false + }); + mockProbeGithubMcpRepo.mockResolvedValue({ + accessible: true, + branches: ['main'] + }); + mockAttemptGithubMcpInstall.mockResolvedValue({ + attempted: true, + installed: false, + branch: null + }); + + const result = await ensureMcpOnPull({ + rootPath, + cliRoot, + interactive: true + }); + + expect(result).toEqual({ + skipped: true, + reason: 'mcp-not-installed', + installedVersion: null, + latestVersion: null + }); + expect(mockAttemptGithubMcpInstall).toHaveBeenCalled(); + expect(logger.Warn).not.toHaveBeenCalledWith( + expect.stringMatching(/coming soon|not published on npm/i), + expect.anything() + ); + } finally { + await removeMcpIdeArtifacts(rootPath); + await fs.remove(rootPath); + await fs.remove(cliRoot); + } +}); diff --git a/test/lib/mcpGithub.test.js b/test/lib/mcpGithub.test.js new file mode 100644 index 0000000..3c93cb7 --- /dev/null +++ b/test/lib/mcpGithub.test.js @@ -0,0 +1,52 @@ +const { + GITHUB_MCP_REPO, + parseLsRemoteBranches, + buildGithubInstallSpec, + probeGithubMcpRepo +} = require('../../lib/mcpGithub'); + +test('parseLsRemoteBranches extracts branch names from git ls-remote output', () => { + const output = [ + 'abc123\trefs/heads/main', + 'def456\trefs/heads/staging-mj', + 'ghi789\trefs/heads/feature/foo' + ].join('\n'); + + expect(parseLsRemoteBranches(output)).toEqual([ + 'feature/foo', + 'main', + 'staging-mj' + ]); +}); + +test('buildGithubInstallSpec returns npm github spec', () => { + expect(buildGithubInstallSpec('main')).toEqual(`github:${GITHUB_MCP_REPO}#main`); +}); + +test('probeGithubMcpRepo returns branches when git ls-remote succeeds', async () => { + const result = await probeGithubMcpRepo({ + timeoutMs: 1000, + execFileAsync: async () => { + return { + stdout: 'abc123\trefs/heads/main\ndef456\trefs/heads/dev\n' + }; + } + }); + expect(result).toEqual({ + accessible: true, + branches: ['dev', 'main'] + }); +}); + +test('probeGithubMcpRepo returns not accessible when git ls-remote fails', async () => { + const result = await probeGithubMcpRepo({ + timeoutMs: 1000, + execFileAsync: async () => { + throw new Error('authentication failed'); + } + }); + expect(result).toEqual({ + accessible: false, + branches: [] + }); +}); diff --git a/test/lib/mcpRegistration.test.js b/test/lib/mcpRegistration.test.js new file mode 100644 index 0000000..bf803c2 --- /dev/null +++ b/test/lib/mcpRegistration.test.js @@ -0,0 +1,64 @@ +const fs = require('fs-extra'); +const os = require('os'); +const path = require('path'); +const { getMcpConfigStatus } = require('../../lib/mcpAlpha'); +const { + SERVER_NAME, + ensureMcpRegistered, + ensureMcpIdeRules, + resolveMcpScriptPath, + buildMcpLaunchEntry +} = require('../../lib/ai'); +const { mcpIdeArtifactPaths, removeMcpIdeArtifacts } = require('../helpers/mcpIdeArtifacts'); + +test('ensureMcpRegistered and ensureMcpIdeRules write only under rootPath and cleanup removes artifacts', async () => { + const rootPath = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-mcp-reg-')); + const fakeHome = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-mcp-home-')); + const cursorPath = path.join(rootPath, '.cursor', 'mcp.json'); + + try { + await fs.ensureDir(path.dirname(cursorPath)); + await fs.writeFile(cursorPath, JSON.stringify({ + mcpServers: { + other: { command: 'keep-me' }, + [SERVER_NAME]: { command: 'siteglide-cli-mcp' } + } + }, null, 2)); + + const first = ensureMcpRegistered({ rootPath, homedir: fakeHome }); + expect(first.updated).toContain('Cursor'); + expect(first.added).toContain('Windsurf'); + + const afterFirst = JSON.parse(await fs.readFile(cursorPath, 'utf8')); + expect(afterFirst.mcpServers.other).toEqual({ command: 'keep-me' }); + expect(afterFirst.mcpServers[SERVER_NAME].command).toEqual(process.execPath); + expect(afterFirst.mcpServers[SERVER_NAME].args).toEqual([resolveMcpScriptPath()]); + + const second = ensureMcpRegistered({ rootPath, homedir: fakeHome }); + expect(second.unchanged).toContain('Cursor'); + expect(second.updated.includes('Cursor')).toEqual(false); + + const desired = buildMcpLaunchEntry(); + expect(desired.command).toEqual(process.execPath); + expect(fs.existsSync(desired.args[0])).toEqual(true); + + expect(getMcpConfigStatus(rootPath).configured).toEqual(true); + + const rules = ensureMcpIdeRules({ rootPath }); + expect(rules.written).toEqual(['Cursor', 'Claude', 'Windsurf', 'Copilot']); + + for (let i = 0; i < mcpIdeArtifactPaths(rootPath).length; i++) { + expect(await fs.pathExists(mcpIdeArtifactPaths(rootPath)[i])).toEqual(true); + } + + await removeMcpIdeArtifacts(rootPath); + + for (let i = 0; i < mcpIdeArtifactPaths(rootPath).length; i++) { + expect(await fs.pathExists(mcpIdeArtifactPaths(rootPath)[i])).toEqual(false); + } + } finally { + await removeMcpIdeArtifacts(rootPath); + await fs.remove(rootPath); + await fs.remove(fakeHome); + } +}); diff --git a/test/lib/pullIgnoredModules.test.js b/test/lib/pullIgnoredModules.test.js new file mode 100644 index 0000000..8f6fcbd --- /dev/null +++ b/test/lib/pullIgnoredModules.test.js @@ -0,0 +1,173 @@ +const fs = require('fs-extra'); +const os = require('os'); +const path = require('path'); +const { + DEFAULT_PULL_IGNORED_MODULES, + PULL_MODULES_CONFIG_RELATIVE_PATH, + mergePullIgnoredModules, + ensurePullModulesConfig, + readPullModulesConfig, + preparePullModulesConfig, + isPullIgnoredModule, + filterPullIgnoredModules, + partitionPullIgnoredModules, + resolvePullIgnoredModules, + selectModulesToPull, + formatModuleNameForLog, + formatModuleListForLog +} = require('../../lib/pullIgnoredModules'); + +const installed = ['module_357', 'user', 'siteglide_system', 'studio']; + +test('mergePullIgnoredModules returns built-in list when include and exclude are empty', () => { + expect(mergePullIgnoredModules({ include: [], exclude: [] })).toEqual(DEFAULT_PULL_IGNORED_MODULES); +}); + +test('mergePullIgnoredModules adds exclude entries without replacing built-ins', () => { + expect(mergePullIgnoredModules({ exclude: ['custom_module'] })).toEqual([ + ...DEFAULT_PULL_IGNORED_MODULES, + 'custom_module' + ]); +}); + +test('mergePullIgnoredModules removes include entries from the built-in list', () => { + expect(mergePullIgnoredModules({ include: ['module_357', 'siteglide_system'] })).toEqual( + DEFAULT_PULL_IGNORED_MODULES.filter((name) => { + return name !== 'module_357' && name !== 'siteglide_system'; + }) + ); +}); + +test('mergePullIgnoredModules lets include remove a name added by exclude', () => { + expect(mergePullIgnoredModules({ + include: ['custom_module'], + exclude: ['custom_module'] + })).toEqual(DEFAULT_PULL_IGNORED_MODULES); +}); + +test('ensurePullModulesConfig creates modules.json when missing and does not overwrite existing file', async () => { + const rootPath = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-pull-modules-')); + const configPath = path.join(rootPath, PULL_MODULES_CONFIG_RELATIVE_PATH); + + const first = await ensurePullModulesConfig(rootPath); + expect(first.created).toEqual(true); + expect(await fs.pathExists(configPath)).toEqual(true); + + const parsed = JSON.parse(await fs.readFile(configPath, 'utf8')); + expect(parsed.pull_behaviour.include).toEqual([]); + expect(parsed.pull_behaviour.exclude).toEqual([]); + expect(typeof parsed.pull_behaviour.usage).toEqual('string'); + expect(parsed.pull_behaviour.usage).toContain('exclude'); + expect(parsed.pull_behaviour.usage).toContain('include'); + expect(parsed.pull_behaviour.usage).toContain('git'); + + await fs.writeFile(configPath, '{"pull_behaviour":{"include":[],"exclude":["team_override"]}}\n', 'utf8'); + + const second = await ensurePullModulesConfig(rootPath); + expect(second.created).toEqual(false); + expect(JSON.parse(await fs.readFile(configPath, 'utf8'))).toEqual({ + pull_behaviour: { + include: [], + exclude: ['team_override'] + } + }); + + await fs.remove(rootPath); +}); + +test('preparePullModulesConfig applies include and exclude from modules.json', async () => { + const rootPath = await fs.mkdtemp(path.join(os.tmpdir(), 'sg-pull-modules-config-')); + const configPath = path.join(rootPath, PULL_MODULES_CONFIG_RELATIVE_PATH); + await fs.ensureDir(path.dirname(configPath)); + await fs.writeFile(configPath, JSON.stringify({ + pull_behaviour: { + include: ['module_357'], + exclude: ['custom_module'] + } + }, null, '\t') + '\n', 'utf8'); + + const prepared = await preparePullModulesConfig(rootPath); + expect(prepared.created).toEqual(false); + expect(prepared.effectiveIgnoredModules).toEqual([ + ...DEFAULT_PULL_IGNORED_MODULES.filter((name) => { + return name !== 'module_357'; + }), + 'custom_module' + ]); + + const config = await readPullModulesConfig(rootPath); + expect(config).toEqual({ + include: ['module_357'], + exclude: ['custom_module'] + }); + + await fs.remove(rootPath); +}); + +test('DEFAULT_PULL_IGNORED_MODULES lists expected Siteglide platform modules', () => { + expect(DEFAULT_PULL_IGNORED_MODULES).toEqual([ + 'module_86', + 'module_357', + 'siteglide_authors', + 'siteglide_blog', + 'siteglide_ecommerce', + 'siteglide_menu', + 'siteglide_secure_zones', + 'siteglide_system', + 'siteglide_events', + 'siteglide_media_downloads', + 'siteglide_design_system', + 'siteglide_email_marketing' + ]); +}); + +test('isPullIgnoredModule matches default ignored names', () => { + expect(isPullIgnoredModule('module_357')).toEqual(true); + expect(isPullIgnoredModule('user')).toEqual(false); +}); + +test('filterPullIgnoredModules removes default ignored modules', () => { + expect(filterPullIgnoredModules(installed)).toEqual(['user', 'studio']); +}); + +test('partitionPullIgnoredModules splits selected and ignored lists', () => { + expect(partitionPullIgnoredModules(installed)).toEqual({ + selected: ['user', 'studio'], + ignored: ['module_357', 'siteglide_system'] + }); +}); + +test('selectModulesToPull returns all non-ignored modules without -m', () => { + expect(selectModulesToPull(installed)).toEqual(['user', 'studio']); +}); + +test('selectModulesToPull allows explicit -m for a default-ignored module', () => { + expect(selectModulesToPull(installed, 'module_357')).toEqual(['module_357']); +}); + +test('selectModulesToPull returns null when -m module is not installed', () => { + expect(selectModulesToPull(installed, 'missing')).toEqual(null); +}); + +test('resolvePullIgnoredModules drops the explicit -m target from the ignore list', () => { + expect(resolvePullIgnoredModules('module_357')).toEqual([ + 'module_86', + 'siteglide_authors', + 'siteglide_blog', + 'siteglide_ecommerce', + 'siteglide_menu', + 'siteglide_secure_zones', + 'siteglide_system', + 'siteglide_events', + 'siteglide_media_downloads', + 'siteglide_design_system', + 'siteglide_email_marketing' + ]); + expect(resolvePullIgnoredModules(undefined)).toEqual(DEFAULT_PULL_IGNORED_MODULES); +}); + +test('formatModuleNameForLog uses display alias for module_984 only in logs', () => { + expect(formatModuleNameForLog('module_984')).toEqual('Siteglide AI skills'); + expect(formatModuleNameForLog('module_357')).toEqual('module_357'); + expect(formatModuleListForLog(['module_984', 'user'])).toEqual(['Siteglide AI skills', 'user']); +});