diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 3ccf435..ebc1958 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,20 +1,30 @@ module.exports = { root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended', + 'prettier' + ], parser: '@typescript-eslint/parser', - extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], - plugins: ['svelte3', '@typescript-eslint'], - ignorePatterns: ['*.cjs'], - overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], - settings: { - 'svelte3/typescript': () => require('typescript') - }, + plugins: ['@typescript-eslint'], parserOptions: { sourceType: 'module', - ecmaVersion: 2020 + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] }, env: { browser: true, es2017: true, node: true - } + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] }; diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index b5c68e5..0000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: - -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - -- OS: [e.g. iOS] -- Browser [e.g. chrome, safari] -- Version [e.g. 22] - -**Smartphone (please complete the following information):** - -- Device: [e.g. iPhone6] -- OS: [e.g. iOS8.1] -- Browser [e.g. stock browser, safari] -- Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 2f28cea..0000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: '' -assignees: '' ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index c629bb9..0000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,27 +0,0 @@ -on: - push: - branches: main - -jobs: - publish: - runs-on: ubuntu-latest - env: - CI: true - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - uses: pnpm/action-setup@v2 - name: Install pnpm - id: pnpm-install - with: - version: 8.6.1 - - run: pnpm install - - run: pnpm test:build - - run: pnpm build - #- run: pnpm test - - uses: JS-DevTools/npm-publish@v2 - with: - token: ${{ secrets.NPM_TOKEN }} - package: "package" diff --git a/.gitignore b/.gitignore index 136bbef..2ec1cc0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,12 @@ .DS_Store node_modules /build +/dist /.svelte-kit /package .env .env.* !.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* .idea -package -.vercel -pnpm-lock.yaml -dist diff --git a/.npmrc b/.npmrc index b6f27f1..0c05da4 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,2 @@ engine-strict=true +resolution-mode=highest diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 8b21a13..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 Ether Corps - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index 6f15c04..4fee31f 100644 --- a/README.md +++ b/README.md @@ -1,189 +1,58 @@ -# SvelteKit Open Graph Image Generation +# create-svelte -Dynamically generate Open Graph images from an HTML+CSS template or Svelte component using fast and efficient conversion from HTML > SVG > PNG. Based on [Satori](https://github.com/vercel/satori#documentation). No headless browser required. +Everything you need to build a Svelte library, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). -## Installation +Read more about creating a library [in the docs](https://kit.svelte.dev/docs/packaging). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! ```bash -pnpm install -D @ethercorps/sveltekit-og +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app ``` -> Using with Cloudflare Pages or Workers then you have to provide `url` polyfill by just installing it as `devDependency`. +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: ```bash -pnpm i -D url +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open ``` -## Usage +Everything inside `src/lib` is part of your library, everything inside `src/routes` can be used as a showcase or preview app. -Create a file at `/src/routes/og/+server.ts`. Alternatively, you can use JavaScript by removing the types from this example. +## Building -```typescript -// src/routes/og/+server.ts -import { ImageResponse } from '@ethercorps/sveltekit-og'; -import { RequestHandler } from './$types'; +To build your library: -const template = ` -
-
-

- Ready to dive in? - Start your free trial today. -

-
-
- Get started -
-
- Learn more -
-
-
-
-`; - -const fontFile = await fetch('https://og-playground.vercel.app/inter-latin-ext-400-normal.woff'); -const fontData: ArrayBuffer = await fontFile.arrayBuffer(); - -export const GET: RequestHandler = async () => { - return await ImageResponse(template, { - height: 630, - width: 1200, - fonts: [ - { - name: 'Inter Latin', - data: fontData, - weight: 400 - } - ] - }); -}; +```bash +npm run package ``` -Then run `npm dev` and visit `localhost:5173/og` to view your generated PNG. Remember that hot module reloading does not work with server routes, so if you change your HTML or CSS, hard refresh the route to see changes. +To create a production version of your showcase app: -## Example Output - -![Rendered OG image](static/demo.png) - -## Headers - -When run in development, image headers contain `cache-control: no-cache, no-store`. In production, image headers contain `'cache-control': 'public, immutable, no-transform, max-age=31536000'`, which caches the image for 1 year. In both cases, the `'content-type': 'image/png'` is used. - -## Styling - -Notice that our example uses TailwindCSS classes (e.g. `tw="bg-gray-50"`). Alternatively, your HTML can contain style attributes using any of [the subset of CSS supported by Satori](https://github.com/vercel/satori#css). - -Satori supports only a subset of HTML and CSS. For full details, see [Satori’s documentation](https://github.com/vercel/satori#documentation). Notably, Satori only supports flex-based layouts. - -## Fonts - -Satori supports `ttf`, `otf`, and `woff` font formats; `woff2` is not supported. To maximize the font parsing speed, `ttf` or `otf` are recommended over `woff`. - -By default, `@ethercorps/sveltekit-og` includes only 'Noto Sans' font. If you need to use other fonts, you can specify them as shown in the example. Notably, you can also import a font file that is stored locally within your project and are not required to use fetch. - -## Examples - -- `ImageResponse` · [_source_](/src/routes/new/+server.ts) · [_demo_](https://sveltekit-og-five.vercel.app/new) -- `componentToImageResponse` · [_source_](/src/routes/component-og/) · [_demo_](https://sveltekit-og-five.vercel.app/component-og) - -## API Reference - -The package exposes an `ImageResponse` and `componentToImageResponse` constructors, with the following options available: - -```typescript -import {ImageResponse, componentToImageResponse} from '@ethercorps/sveltekit-og' -import {SvelteComponent} from "svelte"; - -// ... -ImageResponse( - element : string, - options : { - width ? : number = 1200 - height ? : number = 630, - backgroundColor ? : string = "#fff" - fonts ? : { - name: string, - data: ArrayBuffer, - weight: number, - style: 'normal' | 'italic' - }[] - debug ? : boolean = false - graphemeImages ? : Record; - loadAdditionalAsset ? : (languageCode: string, segment: string) => Promise; - // Options that will be passed to the HTTP response - status ? : number = 200 - statusText ? : string - headers ? : Record - }) - -componentToImageResponse( - component : typeof SvelteComponent, - props : {}, // All export let example inside prop dictionary - options : { - width ? : number = 1200 - height ? : number = 630 - fonts ? : { - name: string, - data: ArrayBuffer, - weight: number, - style: 'normal' | 'italic' - }[] - debug ? : boolean = false - graphemeImages ? : Record; - loadAdditionalAsset ? : (languageCode: string, segment: string) => Promise; - // Options that will be passed to the HTTP response - status ? : number = 200 - statusText ? : string - headers ? : Record - }) +```bash +npm run build ``` -## Changelog +You can preview the production build with `npm run preview`. -### v1.2.3 Update (Breaking Changes) +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. -> Now you have to install dependency by yourself which will make it easier to build for all plateforms. +## Publishing +Go into the `package.json` and give your package the desired name through the `"name"` option. Also consider adding a `"license"` field and point it to a `LICENSE` file which you can create from a template (one popular option is the [MIT license](https://opensource.org/license/mit/)). + +To publish your library to [npm](https://www.npmjs.com): + +```bash +npm publish ``` -npm i @resvg/resvg-js -``` - -``` -npm i satori -``` - -> From now on their will be no issues related to build, and soon this library going to have its own documentation. - -### v1.2.2 Update (Breaking Change) - -- We don't provide access to satori from `@ethercorps/sveltekit-og`. - -### v1.0.0 Update (Breaking Changes) - -Finally, We have added html to react like element like object converter out of the box and with svelte compiler. -Now you can use `{ toReactElement }` with `"@ethercorps/sveltekit-og"` like: - -- We have changed to function based instead of class based ImageResponse and componentToImageResponse. -- Removed `@resvg/resvg-wasm` with `@resvg/resvg-js` because of internal errors. -- Removed `satori-html` because now we have `toReactElement` out of the box with svelte compiler. - > If you find a problem related to undefined a please check [_vite.config.js_](/vite.config.ts) and add ` define: { _a: 'undefined' } in config.` - -> If you find any issue and have suggestion for this project please open a ticket and if you want to contribute please create a new discussion. - -## Acknowledgements - -This project will not be possible without the following projects: - -- [Satori & @vercel/og](https://github.com/vercel/satori) -- [Noto by Google Fonts](https://fonts.google.com/noto) -- [svg2png-wasm](https://github.com/ssssota/svg2png-wasm) - -## Authors - -- [@theetherGit](https://www.github.com/theetherGit) -- [@etherCorps](https://www.github.com/etherCorps) - -## Contributors - -- [@jasongitmail](https://github.com/jasongitmail) diff --git a/examples/cf-page-build/package.json b/examples/cf-page-build/package.json index 6363986..8173f09 100644 --- a/examples/cf-page-build/package.json +++ b/examples/cf-page-build/package.json @@ -12,7 +12,7 @@ "format": "prettier --plugin-search-dir . --write ." }, "devDependencies": { - "@ethercorps/sveltekit-og": "link:../../package", + "@ethercorps/sveltekit-og": "link:../../", "@playwright/test": "^1.34.3", "@sveltejs/adapter-cloudflare": "^2.3.0", "@sveltejs/kit": "^1.20.2", diff --git a/examples/cf-page-build/pnpm-lock.yaml b/examples/cf-page-build/pnpm-lock.yaml index b89db49..f77406d 100644 --- a/examples/cf-page-build/pnpm-lock.yaml +++ b/examples/cf-page-build/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -6,8 +6,8 @@ settings: devDependencies: '@ethercorps/sveltekit-og': - specifier: link:../../package - version: link:../../package + specifier: link:../../ + version: link:../.. '@playwright/test': specifier: ^1.34.3 version: 1.34.3 diff --git a/examples/cf-workers-build/package.json b/examples/cf-workers-build/package.json index b3d9d2f..8f46d49 100644 --- a/examples/cf-workers-build/package.json +++ b/examples/cf-workers-build/package.json @@ -11,19 +11,19 @@ "format": "prettier --plugin-search-dir . --write ." }, "devDependencies": { - "@ethercorps/sveltekit-og": "link:../../package", - "@playwright/test": "^1.34.3", - "@sveltejs/adapter-cloudflare-workers": "^1.1.2", - "@sveltejs/adapter-static": "^2.0.2", - "@sveltejs/kit": "^1.20.2", - "eslint": "^8.42.0", - "eslint-config-prettier": "^8.8.0", + "@ethercorps/sveltekit-og": "link:../..", + "@playwright/test": "^1.37.1", + "@sveltejs/adapter-cloudflare-workers": "^1.1.4", + "@sveltejs/adapter-static": "^2.0.3", + "@sveltejs/kit": "^1.24.0", + "eslint": "^8.48.0", + "eslint-config-prettier": "^8.10.0", "eslint-plugin-svelte3": "^4.0.0", "prettier": "^2.8.8", "prettier-plugin-svelte": "^2.10.1", - "svelte": "^3.59.1", - "vite": "^4.3.9", - "url": "^0.11.0" + "svelte": "^3.59.2", + "url": "^0.11.1", + "vite": "^4.4.9" }, "type": "module" } diff --git a/examples/cf-workers-build/pnpm-lock.yaml b/examples/cf-workers-build/pnpm-lock.yaml index 6810049..b5b60b2 100644 --- a/examples/cf-workers-build/pnpm-lock.yaml +++ b/examples/cf-workers-build/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -6,53 +6,58 @@ settings: devDependencies: '@ethercorps/sveltekit-og': - specifier: link:../../package - version: link:../../package + specifier: link:../.. + version: link:../.. '@playwright/test': - specifier: ^1.34.3 - version: 1.34.3 + specifier: ^1.37.1 + version: 1.37.1 '@sveltejs/adapter-cloudflare-workers': - specifier: ^1.1.2 - version: 1.1.2(@sveltejs/kit@1.20.2) + specifier: ^1.1.4 + version: 1.1.4(@sveltejs/kit@1.24.0) '@sveltejs/adapter-static': - specifier: ^2.0.2 - version: 2.0.2(@sveltejs/kit@1.20.2) + specifier: ^2.0.3 + version: 2.0.3(@sveltejs/kit@1.24.0) '@sveltejs/kit': - specifier: ^1.20.2 - version: 1.20.2(svelte@3.59.1)(vite@4.3.9) + specifier: ^1.24.0 + version: 1.24.0(svelte@3.59.2)(vite@4.4.9) eslint: - specifier: ^8.42.0 - version: 8.42.0 + specifier: ^8.48.0 + version: 8.48.0 eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.42.0) + specifier: ^8.10.0 + version: 8.10.0(eslint@8.48.0) eslint-plugin-svelte3: specifier: ^4.0.0 - version: 4.0.0(eslint@8.42.0)(svelte@3.59.1) + version: 4.0.0(eslint@8.48.0)(svelte@3.59.2) prettier: specifier: ^2.8.8 version: 2.8.8 prettier-plugin-svelte: specifier: ^2.10.1 - version: 2.10.1(prettier@2.8.8)(svelte@3.59.1) + version: 2.10.1(prettier@2.8.8)(svelte@3.59.2) svelte: - specifier: ^3.59.1 - version: 3.59.1 + specifier: ^3.59.2 + version: 3.59.2 url: - specifier: ^0.11.0 - version: 0.11.0 + specifier: ^0.11.1 + version: 0.11.1 vite: - specifier: ^4.3.9 - version: 4.3.9 + specifier: ^4.4.9 + version: 4.4.9 packages: - /@cloudflare/workers-types@4.20230518.0: - resolution: {integrity: sha512-A0w1V+5SUawGaaPRlhFhSC/SCDT9oQG8TMoWOKFLA4qbqagELqEAFD4KySBIkeVOvCBLT1DZSYBMCxbXddl0kw==} + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} dev: true - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + /@cloudflare/workers-types@4.20230821.0: + resolution: {integrity: sha512-lVQSyr5E4CEkQw7WIdsrMTj+kHjsm28mJ0B5AhNFByKR+16KTFsU/RW/nGLKHHW2jxT5lvYI+HjNQMzC9QR8Ng==} + dev: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -60,8 +65,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -69,8 +74,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -78,8 +83,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -87,8 +92,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -96,8 +101,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -105,8 +110,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -114,8 +119,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -123,8 +128,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -132,8 +137,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -141,8 +146,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -150,8 +155,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -159,8 +164,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -168,8 +173,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -177,8 +182,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -186,8 +191,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -195,8 +200,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -204,8 +209,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -213,8 +218,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -222,8 +227,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -231,8 +236,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -240,8 +245,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -249,29 +254,29 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.42.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.42.0 - eslint-visitor-keys: 3.4.1 + eslint: 8.48.0 + eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + /@eslint-community/regexpp@4.8.0: + resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.0.3: - resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.5.2 - globals: 13.20.0 + espree: 9.6.1 + globals: 13.21.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -281,13 +286,13 @@ packages: - supports-color dev: true - /@eslint/js@8.42.0: - resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==} + /@eslint/js@8.48.0: + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -335,13 +340,13 @@ packages: fastq: 1.15.0 dev: true - /@playwright/test@1.34.3: - resolution: {integrity: sha512-zPLef6w9P6T/iT6XDYG3mvGOqOyb6eHaV9XtkunYs0+OzxBtrPAAaHotc0X+PJ00WPPnLfFBTl7mf45Mn8DBmw==} - engines: {node: '>=14'} + /@playwright/test@1.37.1: + resolution: {integrity: sha512-bq9zTli3vWJo8S3LwB91U0qDNQDpEXnw7knhxLM0nwDvexQAwx9tO8iKDZSqqneVq+URd/WIoz+BALMqUTgdSg==} + engines: {node: '>=16'} hasBin: true dependencies: - '@types/node': 20.2.5 - playwright-core: 1.34.3 + '@types/node': 20.5.7 + playwright-core: 1.37.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -350,27 +355,27 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@sveltejs/adapter-cloudflare-workers@1.1.2(@sveltejs/kit@1.20.2): - resolution: {integrity: sha512-akhvgvLI1hERPi/Q2kmoQdqZ9qG3MnY3TY3c89eQCSNbj8IhKEp8AMGVxREkbSM6Vcpirx7kief3r7slQziOSg==} + /@sveltejs/adapter-cloudflare-workers@1.1.4(@sveltejs/kit@1.24.0): + resolution: {integrity: sha512-HCCwCp4RN+pWnbwBJkPy2CLiNto2kVvy0pVzN8gmLfcDcj9mqHBMSdEuvPaa0kQaMzAlvcxGpzGOvg3JNrWUXQ==} peerDependencies: '@sveltejs/kit': ^1.0.0 dependencies: - '@cloudflare/workers-types': 4.20230518.0 + '@cloudflare/workers-types': 4.20230821.0 '@iarna/toml': 2.2.5 - '@sveltejs/kit': 1.20.2(svelte@3.59.1)(vite@4.3.9) - esbuild: 0.17.19 + '@sveltejs/kit': 1.24.0(svelte@3.59.2)(vite@4.4.9) + esbuild: 0.18.20 dev: true - /@sveltejs/adapter-static@2.0.2(@sveltejs/kit@1.20.2): - resolution: {integrity: sha512-9wYtf6s6ew7DHUHMrt55YpD1FgV7oWql2IGsW5BXquLxqcY9vjrqCFo0TzzDpo+ZPZkW/v77k0eOP6tsAb8HmQ==} + /@sveltejs/adapter-static@2.0.3(@sveltejs/kit@1.24.0): + resolution: {integrity: sha512-VUqTfXsxYGugCpMqQv1U0LIdbR3S5nBkMMDmpjGVJyM6Q2jHVMFtdWJCkeHMySc6mZxJ+0eZK3T7IgmUCDrcUQ==} peerDependencies: '@sveltejs/kit': ^1.5.0 dependencies: - '@sveltejs/kit': 1.20.2(svelte@3.59.1)(vite@4.3.9) + '@sveltejs/kit': 1.24.0(svelte@3.59.2)(vite@4.4.9) dev: true - /@sveltejs/kit@1.20.2(svelte@3.59.1)(vite@4.3.9): - resolution: {integrity: sha512-MtR1i+HtmYWcRgtubw1GQqT/+CWXL/z24PegE0xYAdObbhdr7YtEfmoe705D/JZMtMmoPXrmSk4W0MfL5A3lYw==} + /@sveltejs/kit@1.24.0(svelte@3.59.2)(vite@4.4.9): + resolution: {integrity: sha512-r7Gj0/VcdAIRL1yE1cJ5rurWJ5drrR7BzRv+P+NAathtvnMCi0u4FhezO7T4bj7DJdQ3TNsax3yQcrVWxh60fg==} engines: {node: ^16.14 || >=18} hasBin: true requiresBuild: true @@ -378,57 +383,57 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.1)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@3.59.2)(vite@4.4.9) '@types/cookie': 0.5.1 cookie: 0.5.0 devalue: 4.3.2 esm-env: 1.0.0 kleur: 4.1.5 - magic-string: 0.30.0 + magic-string: 0.30.3 mime: 3.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.3 - svelte: 3.59.1 + svelte: 3.59.2 tiny-glob: 0.2.9 - undici: 5.22.1 - vite: 4.3.9 + undici: 5.23.0 + vite: 4.4.9 transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.1)(vite@4.3.9): - resolution: {integrity: sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==} + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@3.59.2)(vite@4.4.9): + resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} engines: {node: ^14.18.0 || >= 16} peerDependencies: '@sveltejs/vite-plugin-svelte': ^2.2.0 - svelte: ^3.54.0 || ^4.0.0-next.0 + svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.1)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@3.59.2)(vite@4.4.9) debug: 4.3.4 - svelte: 3.59.1 - vite: 4.3.9 + svelte: 3.59.2 + vite: 4.4.9 transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.4.1(svelte@3.59.1)(vite@4.3.9): - resolution: {integrity: sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==} + /@sveltejs/vite-plugin-svelte@2.4.5(svelte@3.59.2)(vite@4.4.9): + resolution: {integrity: sha512-UJKsFNwhzCVuiZd06jM/psscyNJNDwjQC+qIeb7GBJK9iWeQCcIyfcPWDvbCudfcJggY9jtxJeeaZH7uny93FQ==} engines: {node: ^14.18.0 || >= 16} peerDependencies: - svelte: ^3.54.0 || ^4.0.0-next.0 + svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.1)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@3.59.2)(vite@4.4.9) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.0 - svelte: 3.59.1 - svelte-hmr: 0.15.2(svelte@3.59.1) - vite: 4.3.9 - vitefu: 0.2.4(vite@4.3.9) + magic-string: 0.30.3 + svelte: 3.59.2 + svelte-hmr: 0.15.3(svelte@3.59.2) + vite: 4.4.9 + vitefu: 0.2.4(vite@4.4.9) transitivePeerDependencies: - supports-color dev: true @@ -437,20 +442,20 @@ packages: resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} dev: true - /@types/node@20.2.5: - resolution: {integrity: sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==} + /@types/node@20.5.7: + resolution: {integrity: sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==} dev: true - /acorn-jsx@5.3.2(acorn@8.8.2): + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.2 + acorn: 8.10.0 dev: true - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -498,6 +503,13 @@ packages: streamsearch: 1.1.0 dev: true + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -572,34 +584,34 @@ packages: esutils: 2.0.3 dev: true - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 dev: true /escape-string-regexp@4.0.0: @@ -607,48 +619,48 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.8.0(eslint@8.42.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + /eslint-config-prettier@8.10.0(eslint@8.48.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.42.0 + eslint: 8.48.0 dev: true - /eslint-plugin-svelte3@4.0.0(eslint@8.42.0)(svelte@3.59.1): + /eslint-plugin-svelte3@4.0.0(eslint@8.48.0)(svelte@3.59.2): resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==} peerDependencies: eslint: '>=8.0.0' svelte: ^3.2.0 dependencies: - eslint: 8.42.0 - svelte: 3.59.1 + eslint: 8.48.0 + svelte: 3.59.2 dev: true - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.42.0: - resolution: {integrity: sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==} + /eslint@8.48.0: + resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.42.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/regexpp': 4.8.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.48.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -657,19 +669,18 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.1 - espree: 9.5.2 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 + globals: 13.21.0 graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -679,9 +690,8 @@ packages: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.1 + optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color @@ -691,13 +701,13 @@ packages: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} dev: true - /espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2(acorn@8.8.2) - eslint-visitor-keys: 3.4.1 + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 dev: true /esquery@1.5.0: @@ -746,7 +756,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.1.0 dev: true /find-up@5.0.0: @@ -757,11 +767,12 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} dependencies: flatted: 3.2.7 + keyv: 4.5.3 rimraf: 3.0.2 dev: true @@ -781,6 +792,27 @@ packages: dev: true optional: true + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + dev: true + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} @@ -799,8 +831,8 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + /globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -823,6 +855,23 @@ packages: engines: {node: '>=8'} dev: true + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -880,6 +929,10 @@ packages: argparse: 2.0.1 dev: true + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -888,6 +941,12 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + dependencies: + json-buffer: 3.0.1 + dev: true + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -912,8 +971,8 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /magic-string@0.30.0: - resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + /magic-string@0.30.3: + resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -955,22 +1014,26 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: true + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.3 dev: true /p-limit@3.1.0: @@ -1013,14 +1076,14 @@ packages: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - /playwright-core@1.34.3: - resolution: {integrity: sha512-2pWd6G7OHKemc5x1r1rp8aQcpvDh7goMBZlJv6Co5vCNLVcQJdhxRL09SGaY6HcyHH9aT4tiynZabMofVasBYw==} - engines: {node: '>=14'} + /playwright-core@1.37.1: + resolution: {integrity: sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA==} + engines: {node: '>=16'} hasBin: true dev: true - /postcss@8.4.24: - resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -1033,14 +1096,14 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-svelte@2.10.1(prettier@2.8.8)(svelte@3.59.1): + /prettier-plugin-svelte@2.10.1(prettier@2.8.8)(svelte@3.59.2): resolution: {integrity: sha512-Wlq7Z5v2ueCubWo0TZzKc9XHcm7TDxqcuzRuGd0gcENfzfT4JZ9yDlCbEgxWgiPmLHkBjfOtpAWkcT28MCDpUQ==} peerDependencies: prettier: ^1.16.4 || ^2.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 dependencies: prettier: 2.8.8 - svelte: 3.59.1 + svelte: 3.59.2 dev: true /prettier@2.8.8: @@ -1049,8 +1112,8 @@ packages: hasBin: true dev: true - /punycode@1.3.2: - resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: true /punycode@2.3.0: @@ -1058,10 +1121,11 @@ packages: engines: {node: '>=6'} dev: true - /querystring@0.2.0: - resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 dev: true /queue-microtask@1.2.3: @@ -1085,12 +1149,12 @@ packages: glob: 7.2.3 dev: true - /rollup@3.24.0: - resolution: {integrity: sha512-OgraHOIg2YpHQTjl0/ymWfFNBEyPucB7lmhXrQUh38qNOegxLapSPFs9sNr0qKR75awW41D93XafoR2QfhBdUQ==} + /rollup@3.28.1: + resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /run-parallel@1.2.0: @@ -1122,6 +1186,14 @@ packages: engines: {node: '>=8'} dev: true + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + dev: true + /sirv@2.0.3: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} @@ -1160,17 +1232,17 @@ packages: has-flag: 4.0.0 dev: true - /svelte-hmr@0.15.2(svelte@3.59.1): - resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} + /svelte-hmr@0.15.3(svelte@3.59.2): + resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: - svelte: ^3.19.0 || ^4.0.0-next.0 + svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 3.59.1 + svelte: 3.59.2 dev: true - /svelte@3.59.1: - resolution: {integrity: sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ==} + /svelte@3.59.2: + resolution: {integrity: sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==} engines: {node: '>= 8'} dev: true @@ -1202,8 +1274,8 @@ packages: engines: {node: '>=10'} dev: true - /undici@5.22.1: - resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} + /undici@5.23.0: + resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} engines: {node: '>=14.0'} dependencies: busboy: 1.6.0 @@ -1215,20 +1287,21 @@ packages: punycode: 2.3.0 dev: true - /url@0.11.0: - resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} + /url@0.11.1: + resolution: {integrity: sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==} dependencies: - punycode: 1.3.2 - querystring: 0.2.0 + punycode: 1.4.1 + qs: 6.11.2 dev: true - /vite@4.3.9: - resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + /vite@4.4.9: + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -1238,6 +1311,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -1247,14 +1322,14 @@ packages: terser: optional: true dependencies: - esbuild: 0.17.19 - postcss: 8.4.24 - rollup: 3.24.0 + esbuild: 0.18.20 + postcss: 8.4.29 + rollup: 3.28.1 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /vitefu@0.2.4(vite@4.3.9): + /vitefu@0.2.4(vite@4.4.9): resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: vite: ^3.0.0 || ^4.0.0 @@ -1262,7 +1337,7 @@ packages: vite: optional: true dependencies: - vite: 4.3.9 + vite: 4.4.9 dev: true /which@2.0.2: @@ -1273,11 +1348,6 @@ packages: isexe: 2.0.0 dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true - /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true diff --git a/package.json b/package.json index eee4b26..d04eb3f 100644 --- a/package.json +++ b/package.json @@ -1,69 +1,56 @@ { - "name": "@ethercorps/sveltekit-og", - "version": "2.0.1", - "private": false, + "name": "sveltekit-og", + "version": "0.0.1", "scripts": { - "dev": "vite dev --host", - "build:prod": "vite build", - "build": "svelte-kit sync && svelte-package", + "dev": "vite dev", + "build": "vite build && npm run package", "preview": "vite preview", - "prepublishOnly": "echo 'Did you mean to publish `./package/`, instead of `./`?' && exit 1", - "test:build": "pnpm build && pnpm test:vercel:build && pnpm test:netlify:build && pnpm test:pages:build && pnpm test:workers:build && pnpm test:node:build", - "test:vercel:build": "cd examples/vercel-build && pnpm install && pnpm build", - "test:netlify:build": "cd examples/netlify-build && pnpm install && pnpm build", - "test:pages:build": "cd examples/cf-page-build && pnpm install && pnpm build", - "test:workers:build": "cd examples/cf-workers-build && pnpm install && pnpm build", - "test:node:build": "cd examples/node-build && pnpm install && pnpm build", - "test": "playwright test", + "package": "svelte-kit sync && svelte-package && publint", + "prepublishOnly": "npm run package", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "test": "vitest", "lint": "prettier --plugin-search-dir . --check . && eslint .", "format": "prettier --plugin-search-dir . --write ." }, - "devDependencies": { - "@builder.io/partytown": "^0.8.0", - "@playwright/test": "^1.37.1", - "@sveltejs/adapter-auto": "next", - "@sveltejs/adapter-vercel": "^2.4.3", - "@sveltejs/kit": "^1.24.0", - "@sveltejs/package": "2.2.2", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "autoprefixer": "^10.4.15", - "brace": "^0.11.1", - "eslint": "^8.48.0", - "eslint-config-prettier": "^8.10.0", - "eslint-plugin-svelte": "^2.33.0", - "postcss": "^8.4.29", - "prettier": "^2.8.8", - "prettier-plugin-svelte": "^2.10.1", - "prism-svelte": "^0.5.0", - "prismjs": "^1.29.0", - "svelte": "^4.2.0", - "svelte-check": "^3.5.1", - "svelte-preprocess": "^5.0.4", - "tailwindcss": "^3.3.3", - "tslib": "^2.6.2", - "typescript": "^5.2.2", - "vite": "^4.4.9" + "exports": { + ".": { + "types": "./dist/index.d.ts", + "svelte": "./dist/index.js" + } }, + "files": [ + "dist", + "!dist/**/*.test.*", + "!dist/**/*.spec.*" + ], + "peerDependencies": { + "svelte": "^4.0.0" + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/kit": "^1.20.4", + "@sveltejs/package": "^2.0.0", + "@typescript-eslint/eslint-plugin": "^5.45.0", + "@typescript-eslint/parser": "^5.45.0", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-svelte": "^2.30.0", + "prettier": "^2.8.0", + "prettier-plugin-svelte": "^2.10.1", + "publint": "^0.1.9", + "svelte": "^4.0.5", + "svelte-check": "^3.4.3", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^4.4.2", + "vitest": "^0.34.0" + }, + "svelte": "./dist/index.js", + "types": "./dist/index.d.ts", "type": "module", "dependencies": { - "satori": "^0.10.3", - "svg2png-wasm": "^1.4.0" - }, - "keywords": [ - "open graph image", - "open graph", - "og image", - "og:image", - "social", - "card", - "sveltekit og", - "sveltekit-og", - "@ethercorps/sveltekit-og" - ], - "license": "MIT", - "repository": "https://github.com/etherCorps/sveltekit-og", - "homepage": "https://github.com/etherCorps/sveltekit-og#readme" + "@vercel/og": "^0.5.17", + "satori-html": "^0.3.2" + } } diff --git a/playwright.config.ts b/playwright.config.ts deleted file mode 100644 index 6ad3a7f..0000000 --- a/playwright.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; - -const config: PlaywrightTestConfig = { - webServer: { - command: 'npm run build && npm run preview', - port: 4173 - } -}; - -export default config; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd78e8e..da5b3fc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,89 +5,65 @@ settings: excludeLinksFromLockfile: false dependencies: - satori: - specifier: ^0.10.3 - version: 0.10.3 - svg2png-wasm: - specifier: ^1.4.0 - version: 1.4.0 + '@vercel/og': + specifier: ^0.5.17 + version: 0.5.17 + satori-html: + specifier: ^0.3.2 + version: 0.3.2 devDependencies: - '@builder.io/partytown': - specifier: ^0.8.0 - version: 0.8.0 - '@playwright/test': - specifier: ^1.37.1 - version: 1.37.1 '@sveltejs/adapter-auto': - specifier: next - version: 1.0.0-next.91(@sveltejs/kit@1.24.0) - '@sveltejs/adapter-vercel': - specifier: ^2.4.3 - version: 2.4.3(@sveltejs/kit@1.24.0) + specifier: ^2.0.0 + version: 2.1.0(@sveltejs/kit@1.25.1) '@sveltejs/kit': - specifier: ^1.24.0 - version: 1.24.0(svelte@4.2.0)(vite@4.4.9) + specifier: ^1.20.4 + version: 1.25.1(svelte@4.2.1)(vite@4.4.9) '@sveltejs/package': - specifier: 2.2.2 - version: 2.2.2(svelte@4.2.0)(typescript@5.2.2) + specifier: ^2.0.0 + version: 2.2.2(svelte@4.2.1)(typescript@5.2.2) '@typescript-eslint/eslint-plugin': - specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2) + specifier: ^5.45.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^5.62.0 - version: 5.62.0(eslint@8.48.0)(typescript@5.2.2) - autoprefixer: - specifier: ^10.4.15 - version: 10.4.15(postcss@8.4.29) - brace: - specifier: ^0.11.1 - version: 0.11.1 + specifier: ^5.45.0 + version: 5.62.0(eslint@8.50.0)(typescript@5.2.2) eslint: - specifier: ^8.48.0 - version: 8.48.0 + specifier: ^8.28.0 + version: 8.50.0 eslint-config-prettier: - specifier: ^8.10.0 - version: 8.10.0(eslint@8.48.0) + specifier: ^8.5.0 + version: 8.10.0(eslint@8.50.0) eslint-plugin-svelte: - specifier: ^2.33.0 - version: 2.33.0(eslint@8.48.0)(svelte@4.2.0) - postcss: - specifier: ^8.4.29 - version: 8.4.29 + specifier: ^2.30.0 + version: 2.33.2(eslint@8.50.0)(svelte@4.2.1) prettier: - specifier: ^2.8.8 + specifier: ^2.8.0 version: 2.8.8 prettier-plugin-svelte: specifier: ^2.10.1 - version: 2.10.1(prettier@2.8.8)(svelte@4.2.0) - prism-svelte: - specifier: ^0.5.0 - version: 0.5.0 - prismjs: - specifier: ^1.29.0 - version: 1.29.0 + version: 2.10.1(prettier@2.8.8)(svelte@4.2.1) + publint: + specifier: ^0.1.9 + version: 0.1.16 svelte: - specifier: ^4.2.0 - version: 4.2.0 + specifier: ^4.0.5 + version: 4.2.1 svelte-check: - specifier: ^3.5.1 - version: 3.5.1(postcss@8.4.29)(svelte@4.2.0) - svelte-preprocess: - specifier: ^5.0.4 - version: 5.0.4(postcss@8.4.29)(svelte@4.2.0)(typescript@5.2.2) - tailwindcss: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.4.3 + version: 3.5.2(postcss@8.4.30)(svelte@4.2.1) tslib: - specifier: ^2.6.2 + specifier: ^2.4.1 version: 2.6.2 typescript: - specifier: ^5.2.2 + specifier: ^5.0.0 version: 5.2.2 vite: - specifier: ^4.4.9 - version: 4.4.9 + specifier: ^4.4.2 + version: 4.4.9(@types/node@20.7.1) + vitest: + specifier: ^0.34.0 + version: 0.34.5 packages: @@ -96,11 +72,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@alloc/quick-lru@5.2.0: - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - dev: true - /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -109,20 +80,6 @@ packages: '@jridgewell/trace-mapping': 0.3.19 dev: true - /@builder.io/partytown@0.8.0: - resolution: {integrity: sha512-M6H7nSMwW2dHd1/MQ+9J1Jqdw22uhl1nKv90kIiL9G7gjFVqqouQp4qSS1oZclmtW1XjAa4Q5UnbHB4iytmxZA==} - hasBin: true - dev: true - - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -132,15 +89,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -150,15 +98,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.18.20: resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -168,15 +107,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.18.20: resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -186,15 +116,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.18.20: resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -204,15 +125,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.18.20: resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -222,15 +134,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.18.20: resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -240,15 +143,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.18.20: resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -258,15 +152,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.18.20: resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -276,15 +161,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.18.20: resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -294,15 +170,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -312,15 +179,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.18.20: resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -330,15 +188,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.18.20: resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -348,15 +197,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.18.20: resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -366,15 +206,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.18.20: resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -384,15 +215,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.18.20: resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -402,15 +224,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.18.20: resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -420,15 +233,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.18.20: resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -438,15 +242,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.18.20: resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -456,15 +251,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.18.20: resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -474,15 +260,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.18.20: resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -492,15 +269,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.18.20: resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -510,18 +278,18 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.50.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.8.0: - resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} + /@eslint-community/regexpp@4.9.0: + resolution: {integrity: sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -532,7 +300,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.21.0 + globals: 13.22.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -542,8 +310,8 @@ packages: - supports-color dev: true - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.50.0: + resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -567,6 +335,13 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -597,24 +372,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@mapbox/node-pre-gyp@1.0.11: - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - dependencies: - detect-libc: 2.0.2 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.5.4 - tar: 6.1.15 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -636,28 +393,14 @@ packages: fastq: 1.15.0 dev: true - /@playwright/test@1.37.1: - resolution: {integrity: sha512-bq9zTli3vWJo8S3LwB91U0qDNQDpEXnw7knhxLM0nwDvexQAwx9tO8iKDZSqqneVq+URd/WIoz+BALMqUTgdSg==} - engines: {node: '>=16'} - hasBin: true - dependencies: - '@types/node': 20.5.7 - playwright-core: 1.37.1 - optionalDependencies: - fsevents: 2.3.2 + /@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} dev: true - /@polka/url@1.0.0-next.21: - resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} - dev: true - - /@rollup/pluginutils@4.2.1: - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true + /@resvg/resvg-wasm@2.4.1: + resolution: {integrity: sha512-yi6R0HyHtsoWTRA06Col4WoDs7SvlXU3DLMNP2bdAgs7HK18dTEVl1weXgxRzi8gwLteGUbIg29zulxIB3GSdg==} + engines: {node: '>= 10'} + dev: false /@shuding/opentype.js@1.4.0-beta.0: resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==} @@ -668,30 +411,21 @@ packages: string.prototype.codepointat: 0.2.1 dev: false - /@sveltejs/adapter-auto@1.0.0-next.91(@sveltejs/kit@1.24.0): - resolution: {integrity: sha512-U57tQdzTfFINim8tzZSARC9ztWPzwOoHwNOpGdb2o6XrD0mEQwU9DsII7dBblvzg+xCnmd0pw7PDtXz5c5t96w==} - peerDependencies: - '@sveltejs/kit': ^1.0.0-next.587 - dependencies: - '@sveltejs/kit': 1.24.0(svelte@4.2.0)(vite@4.4.9) - import-meta-resolve: 2.2.2 + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sveltejs/adapter-vercel@2.4.3(@sveltejs/kit@1.24.0): - resolution: {integrity: sha512-3k/3udwaioFYdKDAgQcWSByB+KCbtjX+ARonYGCtYE0iuxWLStrESxy3SaU+17XD5Frh8w7tfY8ft4TV3ej3Dg==} + /@sveltejs/adapter-auto@2.1.0(@sveltejs/kit@1.25.1): + resolution: {integrity: sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==} peerDependencies: - '@sveltejs/kit': ^1.5.0 + '@sveltejs/kit': ^1.0.0 dependencies: - '@sveltejs/kit': 1.24.0(svelte@4.2.0)(vite@4.4.9) - '@vercel/nft': 0.22.6 - esbuild: 0.17.19 - transitivePeerDependencies: - - encoding - - supports-color + '@sveltejs/kit': 1.25.1(svelte@4.2.1)(vite@4.4.9) + import-meta-resolve: 3.0.0 dev: true - /@sveltejs/kit@1.24.0(svelte@4.2.0)(vite@4.4.9): - resolution: {integrity: sha512-r7Gj0/VcdAIRL1yE1cJ5rurWJ5drrR7BzRv+P+NAathtvnMCi0u4FhezO7T4bj7DJdQ3TNsax3yQcrVWxh60fg==} + /@sveltejs/kit@1.25.1(svelte@4.2.1)(vite@4.4.9): + resolution: {integrity: sha512-pD8XsvNJNgTNkFngNlM60my/X8dXWPKVzN5RghEQr0NjGZmuCjy49AfFu2cGbZjNf5pBcqd2RCNMW912P5fkhA==} engines: {node: ^16.14 || >=18} hasBin: true requiresBuild: true @@ -699,8 +433,8 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@4.2.0)(vite@4.4.9) - '@types/cookie': 0.5.1 + '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.2.1)(vite@4.4.9) + '@types/cookie': 0.5.2 cookie: 0.5.0 devalue: 4.3.2 esm-env: 1.0.0 @@ -710,15 +444,15 @@ packages: sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.3 - svelte: 4.2.0 + svelte: 4.2.1 tiny-glob: 0.2.9 - undici: 5.23.0 - vite: 4.4.9 + undici: 5.25.2 + vite: 4.4.9(@types/node@20.7.1) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/package@2.2.2(svelte@4.2.0)(typescript@5.2.2): + /@sveltejs/package@2.2.2(svelte@4.2.1)(typescript@5.2.2): resolution: {integrity: sha512-rP3sVv6cAntcdcG4r4KspLU6nZYYUrHJBAX3Arrw0KJFdgxtlsi2iDwN0Jwr/vIkgjcU0ZPWM8kkT5kpZDlWAw==} engines: {node: ^16.14 || >=18} hasBin: true @@ -729,13 +463,13 @@ packages: kleur: 4.1.5 sade: 1.8.1 semver: 7.5.4 - svelte: 4.2.0 - svelte2tsx: 0.6.21(svelte@4.2.0)(typescript@5.2.2) + svelte: 4.2.1 + svelte2tsx: 0.6.22(svelte@4.2.1)(typescript@5.2.2) transitivePeerDependencies: - typescript dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@4.2.0)(vite@4.4.9): + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.1)(vite@4.4.9): resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -743,59 +477,69 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@4.2.0)(vite@4.4.9) + '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.2.1)(vite@4.4.9) debug: 4.3.4 - svelte: 4.2.0 - vite: 4.4.9 + svelte: 4.2.1 + vite: 4.4.9(@types/node@20.7.1) transitivePeerDependencies: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.4.5(svelte@4.2.0)(vite@4.4.9): - resolution: {integrity: sha512-UJKsFNwhzCVuiZd06jM/psscyNJNDwjQC+qIeb7GBJK9iWeQCcIyfcPWDvbCudfcJggY9jtxJeeaZH7uny93FQ==} + /@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.1)(vite@4.4.9): + resolution: {integrity: sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@4.2.0)(vite@4.4.9) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.1)(vite@4.4.9) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.3 - svelte: 4.2.0 - svelte-hmr: 0.15.3(svelte@4.2.0) - vite: 4.4.9 + svelte: 4.2.1 + svelte-hmr: 0.15.3(svelte@4.2.1) + vite: 4.4.9(@types/node@20.7.1) vitefu: 0.2.4(vite@4.4.9) transitivePeerDependencies: - supports-color dev: true - /@types/cookie@0.5.1: - resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} + /@types/chai-subset@1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + dependencies: + '@types/chai': 4.3.6 dev: true - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + /@types/chai@4.3.6: + resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} dev: true - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/cookie@0.5.2: + resolution: {integrity: sha512-DBpRoJGKJZn7RY92dPrgoMew8xCWc2P71beqsjyhEI/Ds9mOyVmBwtekyfhpwFIVt1WrxTonFifiOZ62V8CnNA==} dev: true - /@types/node@20.5.7: - resolution: {integrity: sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==} + /@types/estree@1.0.2: + resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} dev: true - /@types/pug@2.0.6: - resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} + /@types/json-schema@7.0.13: + resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true - /@types/semver@7.5.1: - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} + /@types/node@20.7.1: + resolution: {integrity: sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==} dev: true - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.48.0)(typescript@5.2.2): + /@types/pug@2.0.7: + resolution: {integrity: sha512-I469DU0UXNC1aHepwirWhu9YKg5fkxohZD95Ey/5A7lovC+Siu+MCLffva87lnfThaOrw9Vb1DUN5t55oULAAw==} + dev: true + + /@types/semver@7.5.3: + resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} + dev: true + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.50.0)(typescript@5.2.2): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -806,13 +550,13 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + '@eslint-community/regexpp': 4.9.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.50.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.50.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -823,7 +567,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.48.0)(typescript@5.2.2): + /@typescript-eslint/parser@5.62.0(eslint@8.50.0)(typescript@5.2.2): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -837,7 +581,7 @@ packages: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.50.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -851,7 +595,7 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): + /@typescript-eslint/type-utils@5.62.0(eslint@8.50.0)(typescript@5.2.2): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -862,9 +606,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.50.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.50.0 tsutils: 3.21.0(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -897,19 +641,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.48.0)(typescript@5.2.2): + /@typescript-eslint/utils@5.62.0(eslint@8.50.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.48.0 + eslint: 8.50.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -925,29 +669,51 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@vercel/nft@0.22.6: - resolution: {integrity: sha512-gTsFnnT4mGxodr4AUlW3/urY+8JKKB452LwF3m477RFUJTAaDmcz2JqFuInzvdybYIeyIv1sSONEJxsxnbQ5JQ==} - engines: {node: '>=14'} - hasBin: true + /@vercel/og@0.5.17: + resolution: {integrity: sha512-/GOyUBq3MhB3ygbhTJoZ0cHvwlyKdt0g8f4npuj4mwFlp57S7j4XWwgtqILK3XdFf25esN9i77fInrDkeRJfgA==} + engines: {node: '>=16'} dependencies: - '@mapbox/node-pre-gyp': 1.0.11 - '@rollup/pluginutils': 4.2.1 - acorn: 8.10.0 - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - node-gyp-build: 4.6.1 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - supports-color + '@resvg/resvg-wasm': 2.4.1 + satori: 0.10.8 + yoga-wasm-web: 0.3.3 + dev: false + + /@vitest/expect@0.34.5: + resolution: {integrity: sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==} + dependencies: + '@vitest/spy': 0.34.5 + '@vitest/utils': 0.34.5 + chai: 4.3.9 dev: true - /abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + /@vitest/runner@0.34.5: + resolution: {integrity: sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==} + dependencies: + '@vitest/utils': 0.34.5 + p-limit: 4.0.0 + pathe: 1.1.1 + dev: true + + /@vitest/snapshot@0.34.5: + resolution: {integrity: sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==} + dependencies: + magic-string: 0.30.3 + pathe: 1.1.1 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@0.34.5: + resolution: {integrity: sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==} + dependencies: + tinyspy: 2.1.1 + dev: true + + /@vitest/utils@0.34.5: + resolution: {integrity: sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==} + dependencies: + diff-sequences: 29.6.3 + loupe: 2.3.6 + pretty-format: 29.7.0 dev: true /acorn-jsx@5.3.2(acorn@8.10.0): @@ -958,21 +724,17 @@ packages: acorn: 8.10.0 dev: true + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -994,8 +756,9 @@ packages: color-convert: 2.0.1 dev: true - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} dev: true /anymatch@3.1.3: @@ -1006,22 +769,6 @@ packages: picomatch: 2.3.1 dev: true - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: true - - /are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - dev: true - - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: true - /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true @@ -1037,24 +784,8 @@ packages: engines: {node: '>=8'} dev: true - /async-sema@3.1.1: - resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - dev: true - - /autoprefixer@10.4.15(postcss@8.4.29): - resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001524 - fraction.js: 4.3.1 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.29 - postcss-value-parser: 4.2.0 + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true /axobject-query@3.2.1: @@ -1077,12 +808,6 @@ packages: engines: {node: '>=8'} dev: true - /bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - dependencies: - file-uri-to-path: 1.0.0 - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -1090,8 +815,10 @@ packages: concat-map: 0.0.1 dev: true - /brace@0.11.1: - resolution: {integrity: sha512-Fc8Ne62jJlKHiG/ajlonC4Sd66Pq68fFwK4ihJGNZpGqboc324SQk+lRvMzpPRuJOmfrJefdG8/7JdWX4bzJ2Q==} + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 dev: true /braces@3.0.2: @@ -1101,17 +828,6 @@ packages: fill-range: 7.0.1 dev: true - /browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001524 - electron-to-chromium: 1.4.505 - node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.10) - dev: true - /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true @@ -1123,22 +839,31 @@ packages: streamsearch: 1.1.0 dev: true + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: true - /camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-lite@1.0.30001524: - resolution: {integrity: sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==} + /chai@4.3.9: + resolution: {integrity: sha512-tH8vhfA1CfuYMkALXj+wmZcqiwqOfshU9Gry+NYiiLqIddrobkBhALv6XD4yDz68qapphYI4vSaqhqAdThCAAA==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.6 + pathval: 1.1.1 + type-detect: 4.0.8 dev: true /chalk@4.1.2: @@ -1149,6 +874,12 @@ packages: supports-color: 7.2.0 dev: true + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -1164,16 +895,11 @@ packages: fsevents: 2.3.3 dev: true - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: true - /code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 acorn: 8.10.0 estree-walker: 3.0.3 periscopic: 3.1.0 @@ -1189,24 +915,10 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: true - - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true - /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: true - /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} @@ -1272,6 +984,13 @@ packages: resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} dev: true + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -1281,10 +1000,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: true - /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -1295,17 +1010,13 @@ packages: engines: {node: '>=8'} dev: true - /detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} - engines: {node: '>=8'} - dev: true - /devalue@4.3.2: resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} dev: true - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true /dir-glob@3.0.1: @@ -1315,10 +1026,6 @@ packages: path-type: 4.0.0 dev: true - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: true - /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -1326,52 +1033,14 @@ packages: esutils: 2.0.3 dev: true - /electron-to-chromium@1.4.505: - resolution: {integrity: sha512-0A50eL5BCCKdxig2SsCXhpuztnB9PfUgRMojj5tMvt8O54lbwz3t6wNgnpiTRosw5QjlJB7ixhVyeg8daLQwSQ==} - dev: true - /emoji-regex@10.2.1: resolution: {integrity: sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==} dev: false - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - /es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 - dev: true - /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} @@ -1402,11 +1071,6 @@ packages: '@esbuild/win32-x64': 0.18.20 dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: false @@ -1416,17 +1080,17 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.10.0(eslint@8.48.0): + /eslint-config-prettier@8.10.0(eslint@8.50.0): resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.48.0 + eslint: 8.50.0 dev: true - /eslint-plugin-svelte@2.33.0(eslint@8.48.0)(svelte@4.2.0): - resolution: {integrity: sha512-kk7Z4BfxVjFYJseFcOpS8kiKNio7KnAnhFagmM89h1wNSKlM7tIn+uguNQppKM9leYW+S+Us0Rjg2Qg3zsEcvg==} + /eslint-plugin-svelte@2.33.2(eslint@8.50.0)(svelte@4.2.1): + resolution: {integrity: sha512-knWmauax+E/jvQ9CmuX5dAhQKP9P4eGQZxWa5RMutEJVCcy0wFmiUvOeDND2jR4vUkbDlX4khKjaceY7QzbkYw==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0-0 @@ -1435,19 +1099,19 @@ packages: svelte: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.50.0 esutils: 2.0.3 known-css-properties: 0.28.0 - postcss: 8.4.29 - postcss-load-config: 3.1.4(postcss@8.4.29) - postcss-safe-parser: 6.0.0(postcss@8.4.29) + postcss: 8.4.30 + postcss-load-config: 3.1.4(postcss@8.4.30) + postcss-safe-parser: 6.0.0(postcss@8.4.30) postcss-selector-parser: 6.0.13 semver: 7.5.4 - svelte: 4.2.0 - svelte-eslint-parser: 0.33.0(svelte@4.2.0) + svelte: 4.2.1 + svelte-eslint-parser: 0.33.0(svelte@4.2.1) transitivePeerDependencies: - supports-color - ts-node @@ -1474,15 +1138,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + /eslint@8.50.0: + resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) - '@eslint-community/regexpp': 4.8.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/regexpp': 4.9.0 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 + '@eslint/js': 8.50.0 '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -1501,7 +1165,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.21.0 + globals: 13.22.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -1557,14 +1221,10 @@ packages: engines: {node: '>=4.0'} dev: true - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 dev: true /esutils@2.0.3: @@ -1612,10 +1272,6 @@ packages: flat-cache: 3.1.0 dev: true - /file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - dev: true - /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -1635,38 +1291,19 @@ packages: resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 + flatted: 3.2.9 keyv: 4.5.3 rimraf: 3.0.2 dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true - - /fraction.js@4.3.1: - resolution: {integrity: sha512-nx0cki48JBA6ThPeUpeKCNpdhEl/9bRS+dAEYnRUod+Z1jhFfC3K/mBLorZZntqHM+GTH3/dkkpfoT3QITYe7g==} - dev: true - - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1675,23 +1312,8 @@ packages: dev: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true /glob-parent@5.1.2: @@ -1708,17 +1330,6 @@ packages: is-glob: 4.0.3 dev: true - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -1730,8 +1341,19 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + + /globals@13.22.0: + resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -1770,30 +1392,16 @@ packages: engines: {node: '>=8'} dev: true - /has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: true - - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - /hex-rgb@4.3.0: resolution: {integrity: sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==} engines: {node: '>=6'} dev: false - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + /ignore-walk@5.0.1: + resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color + minimatch: 5.1.6 dev: true /ignore@5.2.4: @@ -1809,8 +1417,8 @@ packages: resolve-from: 4.0.0 dev: true - /import-meta-resolve@2.2.2: - resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} + /import-meta-resolve@3.0.0: + resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} dev: true /imurmurhash@0.1.4: @@ -1836,22 +1444,11 @@ packages: binary-extensions: 2.2.0 dev: true - /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} - dependencies: - has: 1.0.3 - dev: true - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -1869,21 +1466,16 @@ packages: engines: {node: '>=8'} dev: true - /is-reference@3.0.1: - resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /jiti@1.19.3: - resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} - hasBin: true - dev: true - /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -1903,6 +1495,10 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + /keyv@4.5.3: resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} dependencies: @@ -1938,8 +1534,9 @@ packages: unicode-trie: 2.0.0 dev: false - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} dev: true /locate-character@3.0.0: @@ -1957,6 +1554,12 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /loupe@2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + dependencies: + get-func-name: 2.0.2 + dev: true + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: @@ -1984,13 +1587,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.1 - dev: true - /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} dev: true @@ -2025,30 +1621,17 @@ packages: brace-expansion: 1.1.11 dev: true + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: true - - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: true - - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: true - /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -2056,10 +1639,13 @@ packages: minimist: 1.2.8 dev: true - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + dependencies: + acorn: 8.10.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.0 dev: true /mri@1.2.0: @@ -2076,14 +1662,6 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: true - /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -2105,62 +1683,32 @@ packages: tslib: 2.6.2 dev: true - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: true - - /node-gyp-build@4.6.1: - resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} - hasBin: true - dev: true - - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - dev: true - - /nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: true - /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: true - - /npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + /npm-bundled@2.0.1: + resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 + npm-normalize-package-bin: 2.0.0 dev: true - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + /npm-normalize-package-bin@2.0.0: + resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dev: true - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} + /npm-packlist@5.1.3: + resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + glob: 8.1.0 + ignore-walk: 5.0.1 + npm-bundled: 2.0.1 + npm-normalize-package-bin: 2.0.0 dev: true /once@1.4.0: @@ -2188,6 +1736,13 @@ packages: yocto-queue: 0.1.0 dev: true + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -2235,21 +1790,25 @@ packages: engines: {node: '>=8'} dev: true - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 estree-walker: 3.0.3 - is-reference: 3.0.1 + is-reference: 3.0.2 dev: true /picocolors@1.0.0: @@ -2261,45 +1820,15 @@ packages: engines: {node: '>=8.6'} dev: true - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true - - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true - - /playwright-core@1.37.1: - resolution: {integrity: sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA==} - engines: {node: '>=16'} - hasBin: true - dev: true - - /postcss-import@15.1.0(postcss@8.4.29): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: - postcss: 8.4.29 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.4 + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 dev: true - /postcss-js@4.0.1(postcss@8.4.29): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.29 - dev: true - - /postcss-load-config@3.1.4(postcss@8.4.29): + /postcss-load-config@3.1.4(postcss@8.4.30): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -2312,53 +1841,26 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.29 + postcss: 8.4.30 yaml: 1.10.2 dev: true - /postcss-load-config@4.0.1(postcss@8.4.29): - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - postcss: 8.4.29 - yaml: 2.3.2 - dev: true - - /postcss-nested@6.0.1(postcss@8.4.29): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.29 - postcss-selector-parser: 6.0.13 - dev: true - - /postcss-safe-parser@6.0.0(postcss@8.4.29): + /postcss-safe-parser@6.0.0(postcss@8.4.30): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.29 + postcss: 8.4.30 dev: true - /postcss-scss@4.0.7(postcss@8.4.29): - resolution: {integrity: sha512-xPv2GseoyXPa58Nro7M73ZntttusuCmZdeOojUFR5PZDz2BR62vfYx1w9TyOnp1+nYFowgOMipsCBhxzVkAEPw==} + /postcss-scss@4.0.8(postcss@8.4.30): + resolution: {integrity: sha512-Cr0X8Eu7xMhE96PJck6ses/uVVXDtE5ghUTKNUYgm8ozgP2TkgV3LWs3WgLV1xaSSLq8ZFiXaUrj0LVgG1fGEA==} engines: {node: '>=12.0'} peerDependencies: - postcss: ^8.4.19 + postcss: ^8.4.29 dependencies: - postcss: 8.4.29 + postcss: 8.4.30 dev: true /postcss-selector-parser@6.0.13: @@ -2371,9 +1873,10 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false - /postcss@8.4.29: - resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} + /postcss@8.4.30: + resolution: {integrity: sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -2386,14 +1889,14 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-svelte@2.10.1(prettier@2.8.8)(svelte@4.2.0): + /prettier-plugin-svelte@2.10.1(prettier@2.8.8)(svelte@4.2.1): resolution: {integrity: sha512-Wlq7Z5v2ueCubWo0TZzKc9XHcm7TDxqcuzRuGd0gcENfzfT4JZ9yDlCbEgxWgiPmLHkBjfOtpAWkcT28MCDpUQ==} peerDependencies: prettier: ^1.16.4 || ^2.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 dependencies: prettier: 2.8.8 - svelte: 4.2.0 + svelte: 4.2.1 dev: true /prettier@2.8.8: @@ -2402,13 +1905,23 @@ packages: hasBin: true dev: true - /prism-svelte@0.5.0: - resolution: {integrity: sha512-db91Bf3pRGKDPz1lAqLFSJXeW13mulUJxhycysFpfXV5MIK7RgWWK2E5aPAa71s8TCzQUXxF5JOV42/iOs6QkA==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 dev: true - /prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} + /publint@0.1.16: + resolution: {integrity: sha512-wJgk7HnXDT5Ap0DjFYbGz78kPkN44iQvDiaq8P63IEEyNU9mYXvaMd2cAyIM6OgqXM/IA3CK6XWIsRq+wjNpgw==} + engines: {node: '>=16'} + hasBin: true + dependencies: + npm-packlist: 5.1.3 + picocolors: 1.0.0 + sade: 1.8.1 dev: true /punycode@2.3.0: @@ -2420,19 +1933,8 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - dependencies: - pify: 2.3.0 - dev: true - - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true /readdirp@3.6.0: @@ -2447,20 +1949,6 @@ packages: engines: {node: '>=4'} dev: true - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} - hasBin: true - dependencies: - is-core-module: 2.13.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -2480,8 +1968,8 @@ packages: glob: 7.2.3 dev: true - /rollup@3.28.1: - resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2501,10 +1989,6 @@ packages: mri: 1.2.0 dev: true - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - /sander@0.5.1: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} dependencies: @@ -2514,8 +1998,14 @@ packages: rimraf: 2.7.1 dev: true - /satori@0.10.3: - resolution: {integrity: sha512-8tZPu7AGiRWimbOyja1s2HK0hEC4DacZ8cAKDITxlVI5tKQZbOuMiVgSB50CABwc0I4Imgtkq7o9Egj1WOJTKg==} + /satori-html@0.3.2: + resolution: {integrity: sha512-wjTh14iqADFKDK80e51/98MplTGfxz2RmIzh0GqShlf4a67+BooLywF17TvJPD6phO0Hxm7Mf1N5LtRYvdkYRA==} + dependencies: + ultrahtml: 1.5.2 + dev: false + + /satori@0.10.8: + resolution: {integrity: sha512-WlPLxgpx5kIyMuOO6qi98DhZGIbRk5XJRqENkt6D6gyDBWGyo3M5kcSl0X/oSFHUH+n4unlzwMejoPM47s4zug==} engines: {node: '>=16'} dependencies: '@shuding/opentype.js': 1.4.0-beta.0 @@ -2530,11 +2020,6 @@ packages: yoga-wasm-web: 0.3.3 dev: false - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: true - /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -2543,10 +2028,6 @@ packages: lru-cache: 6.0.0 dev: true - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true - /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} dev: true @@ -2563,15 +2044,15 @@ packages: engines: {node: '>=8'} dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true /sirv@2.0.3: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.21 + '@polka/url': 1.0.0-next.23 mrmime: 1.0.1 totalist: 3.0.1 dev: true @@ -2596,30 +2077,23 @@ packages: engines: {node: '>=0.10.0'} dev: true + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + dev: true + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} dev: true - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - /string.prototype.codepointat@0.2.1: resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} dev: false - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: true - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2639,18 +2113,10 @@ packages: engines: {node: '>=8'} dev: true - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 + acorn: 8.10.0 dev: true /supports-color@7.2.0: @@ -2660,13 +2126,8 @@ packages: has-flag: 4.0.0 dev: true - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /svelte-check@3.5.1(postcss@8.4.29)(svelte@4.2.0): - resolution: {integrity: sha512-+Zb4iHxAhdUtcUg/WJPRjlS1RJalIsWAe9Mz6G1zyznSs7dDkT7VUBdXc3q7Iwg49O/VrZgyJRvOJkjuBfKjFA==} + /svelte-check@3.5.2(postcss@8.4.30)(svelte@4.2.1): + resolution: {integrity: sha512-5a/YWbiH4c+AqAUP+0VneiV5bP8YOk9JL3jwvN+k2PEPLgpu85bjQc5eE67+eIZBBwUEJzmO3I92OqKcqbp3fw==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 @@ -2677,8 +2138,8 @@ packages: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.2.0 - svelte-preprocess: 5.0.4(postcss@8.4.29)(svelte@4.2.0)(typescript@5.2.2) + svelte: 4.2.1 + svelte-preprocess: 5.0.4(postcss@8.4.30)(svelte@4.2.1)(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - '@babel/core' @@ -2692,7 +2153,7 @@ packages: - sugarss dev: true - /svelte-eslint-parser@0.33.0(svelte@4.2.0): + /svelte-eslint-parser@0.33.0(svelte@4.2.1): resolution: {integrity: sha512-5awZ6Bs+Tb/zQwa41PSdcLynAVQTwW0HGyCBjtbAQ59taLZqDgQSMzRlDmapjZdDtzERm0oXDZNE0E+PKJ6ryg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2704,21 +2165,21 @@ packages: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.29 - postcss-scss: 4.0.7(postcss@8.4.29) - svelte: 4.2.0 + postcss: 8.4.30 + postcss-scss: 4.0.8(postcss@8.4.30) + svelte: 4.2.1 dev: true - /svelte-hmr@0.15.3(svelte@4.2.0): + /svelte-hmr@0.15.3(svelte@4.2.1): resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 dependencies: - svelte: 4.2.0 + svelte: 4.2.1 dev: true - /svelte-preprocess@5.0.4(postcss@8.4.29)(svelte@4.2.0)(typescript@5.2.2): + /svelte-preprocess@5.0.4(postcss@8.4.30)(svelte@4.2.1)(typescript@5.2.2): resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -2756,30 +2217,30 @@ packages: typescript: optional: true dependencies: - '@types/pug': 2.0.6 + '@types/pug': 2.0.7 detect-indent: 6.1.0 magic-string: 0.27.0 - postcss: 8.4.29 + postcss: 8.4.30 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.2.0 + svelte: 4.2.1 typescript: 5.2.2 dev: true - /svelte2tsx@0.6.21(svelte@4.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-v+vvbiy6WDmEQdIkJpvHYxJYG/obALfH0P6CTreYO350q/9+QmFTNCOJvx0O1o59Zpzx1Bqe+qlDxP/KtJSZEA==} + /svelte2tsx@0.6.22(svelte@4.2.1)(typescript@5.2.2): + resolution: {integrity: sha512-eFCfz0juaWeanbwGeQV21kPMwH3LKhfrUYRy1PqRmlieuHvJs8VeK7CaoHJdpBZWCXba2cltHVdywJmwOGhbww==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 typescript: ^4.9.4 || ^5.0.0 dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 - svelte: 4.2.0 + svelte: 4.2.1 typescript: 5.2.2 dev: true - /svelte@4.2.0: - resolution: {integrity: sha512-kVsdPjDbLrv74SmLSUzAsBGquMs4MPgWGkGLpH+PjOYnFOziAvENVzgJmyOCV2gntxE32aNm8/sqNKD6LbIpeQ==} + /svelte@4.2.1: + resolution: {integrity: sha512-LpLqY2Jr7cRxkrTc796/AaaoMLF/1ax7cto8Ot76wrvKQhrPmZ0JgajiWPmg9mTSDqO16SSLiD17r9MsvAPTmw==} engines: {node: '>=16'} dependencies: '@ampproject/remapping': 2.2.1 @@ -2791,76 +2252,16 @@ packages: code-red: 1.0.4 css-tree: 2.3.1 estree-walker: 3.0.3 - is-reference: 3.0.1 + is-reference: 3.0.2 locate-character: 3.0.0 magic-string: 0.30.3 periscopic: 3.1.0 dev: true - /svg2png-wasm@1.4.0: - resolution: {integrity: sha512-UH6XzvHZvHzLrgjcjxX4BCOMalzF1Z8G6EJRsBo/+DLO2jhzdUBwhA8Hl8sn21Cn6N/jBbbdeqUhCzR/FL6xYw==} - dev: false - - /tailwindcss@3.3.3: - resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.5.3 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.1 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.19.3 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.29 - postcss-import: 15.1.0(postcss@8.4.29) - postcss-js: 4.0.1(postcss@8.4.29) - postcss-load-config: 4.0.1(postcss@8.4.29) - postcss-nested: 6.0.1(postcss@8.4.29) - postcss-selector-parser: 6.0.13 - resolve: 1.22.4 - sucrase: 3.34.0 - transitivePeerDependencies: - - ts-node - dev: true - - /tar@6.1.15: - resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: true - /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: true - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: true - /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: @@ -2872,6 +2273,20 @@ packages: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} dev: false + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + dev: true + + /tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.1.1: + resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} + engines: {node: '>=14.0.0'} + dev: true + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2884,14 +2299,6 @@ packages: engines: {node: '>=6'} dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: true - - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: true - /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -2917,6 +2324,11 @@ packages: prelude-ls: 1.2.1 dev: true + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -2928,8 +2340,16 @@ packages: hasBin: true dev: true - /undici@5.23.0: - resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} + /ufo@1.3.0: + resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} + dev: true + + /ultrahtml@1.5.2: + resolution: {integrity: sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw==} + dev: false + + /undici@5.25.2: + resolution: {integrity: sha512-tch8RbCfn1UUH1PeVCXva4V8gDpGAud/w0WubD6sHC46vYQ3KDxL+xv1A2UxK0N6jrVedutuPHxe1XIoqerwMw==} engines: {node: '>=14.0'} dependencies: busboy: 1.6.0 @@ -2942,17 +2362,6 @@ packages: tiny-inflate: 1.0.3 dev: false - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.10 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -2963,7 +2372,29 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /vite@4.4.9: + /vite-node@0.34.5(@types/node@20.7.1): + resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==} + engines: {node: '>=v14.18.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.2 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 4.4.9(@types/node@20.7.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite@4.4.9(@types/node@20.7.1): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -2991,9 +2422,10 @@ packages: terser: optional: true dependencies: + '@types/node': 20.7.1 esbuild: 0.18.20 - postcss: 8.4.29 - rollup: 3.28.1 + postcss: 8.4.30 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true @@ -3006,18 +2438,72 @@ packages: vite: optional: true dependencies: - vite: 4.4.9 + vite: 4.4.9(@types/node@20.7.1) dev: true - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: true - - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + /vitest@0.34.5: + resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 + '@types/chai': 4.3.6 + '@types/chai-subset': 1.3.3 + '@types/node': 20.7.1 + '@vitest/expect': 0.34.5 + '@vitest/runner': 0.34.5 + '@vitest/snapshot': 0.34.5 + '@vitest/spy': 0.34.5 + '@vitest/utils': 0.34.5 + acorn: 8.10.0 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.9 + debug: 4.3.4 + local-pkg: 0.4.3 + magic-string: 0.30.3 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.4.3 + strip-literal: 1.3.0 + tinybench: 2.5.1 + tinypool: 0.7.0 + vite: 4.4.9(@types/node@20.7.1) + vite-node: 0.34.5(@types/node@20.7.1) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser dev: true /which@2.0.2: @@ -3028,10 +2514,13 @@ packages: isexe: 2.0.0 dev: true - /wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true dependencies: - string-width: 4.2.3 + siginfo: 2.0.0 + stackback: 0.0.2 dev: true /wrappy@1.0.2: @@ -3047,16 +2536,16 @@ packages: engines: {node: '>= 6'} dev: true - /yaml@2.3.2: - resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} - engines: {node: '>= 14'} - dev: true - /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + /yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} dev: false diff --git a/postcss.config.cjs b/postcss.config.cjs deleted file mode 100644 index 054c147..0000000 --- a/postcss.config.cjs +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {} - } -}; diff --git a/src/app.css b/src/app.css deleted file mode 100644 index aab77a5..0000000 --- a/src/app.css +++ /dev/null @@ -1,14 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@font-face { - font-family: 'Ian Mono'; - src: url('/iaw-mono-var.woff2') format('woff2'); -} - -@layer base { - html { - font-family: Ian Mono, monospace; - } -} diff --git a/src/app.d.ts b/src/app.d.ts index 20346fb..f59b884 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -1,11 +1,12 @@ -/// - // See https://kit.svelte.dev/docs/types#app // for information about these interfaces -// and what to do when importing types -declare namespace App { - // interface Locals {} - // interface PageData {} - // interface Error {} - // interface Platform {} +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface Platform {} + } } + +export {}; diff --git a/src/app.html b/src/app.html index 2e08503..d2fc6b0 100644 --- a/src/app.html +++ b/src/app.html @@ -2,36 +2,11 @@ - + - - - @ethercorps/sveltekit-og - - - - - - - - - - - - - - - - %sveltekit.head% - +
%sveltekit.body%
diff --git a/src/components/Navbar.svelte b/src/components/Navbar.svelte deleted file mode 100644 index bf62c4b..0000000 --- a/src/components/Navbar.svelte +++ /dev/null @@ -1,72 +0,0 @@ - - - - diff --git a/src/index.test.ts b/src/index.test.ts new file mode 100644 index 0000000..e07cbbd --- /dev/null +++ b/src/index.test.ts @@ -0,0 +1,7 @@ +import { describe, it, expect } from 'vitest'; + +describe('sum test', () => { + it('adds 1 + 2 to equal 3', () => { + expect(1 + 2).toBe(3); + }); +}); diff --git a/src/lib/api.ts b/src/lib/api.ts new file mode 100644 index 0000000..c55f7af --- /dev/null +++ b/src/lib/api.ts @@ -0,0 +1,78 @@ +import { html } from "satori-html"; +import {ImageResponse as IR} from "@vercel/og" +import type {SvelteComponent} from "svelte"; + +export const ImageResponse = async (htmlTemplate: string, options?: ImageResponseOptions) => { + const reactVNode = html(`${htmlTemplate}`); + console.log(reactVNode) + return new IR(reactVNode, options) +}; + +export const componentToImageResponse = async (component: SvelteComponent, props: Record, options?: ImageResponseOptions) => { + const ssrSvelte = component.render(props); + console.log(ssrSvelte); + return ImageResponse(`${ssrSvelte.html}`, options) +}; + +declare const apis: { + twemoji: (code: any) => string; + openmoji: string; + blobmoji: string; + noto: string; + fluent: (code: any) => string; + fluentFlat: (code: any) => string; +}; + +declare type EmojiType = keyof typeof apis; + +type Weight = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900; +type Style$1 = 'normal' | 'italic'; + +interface FontOptions { + data: Buffer | ArrayBuffer; + name: string; + weight?: Weight; + style?: Style$1; + lang?: string; +} + +export declare type ImageResponseOptions = ImageOptions & ConstructorParameters[1]; + +declare type ImageOptions = { + /** + * The width of the image. + * + * @type {number} + * @default 1200 + */ + width?: number; + /** + * The height of the image. + * + * @type {number} + * @default 630 + */ + height?: number; + /** + * Display debug information on the image. + * + * @type {boolean} + * @default false + */ + debug?: boolean; + /** + * A list of fonts to use. + * + * @type {{ data: ArrayBuffer; name: string; weight?: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900; style?: 'normal' | 'italic' }[]} + * @default Noto Sans Latin Regular. + */ + fonts?: FontOptions[]; + /** + * Using a specific Emoji style. Defaults to `twemoji`. + * + * @link https://github.com/vercel/og#emoji + * @type {EmojiType} + * @default 'twemoji' + */ + emoji?: EmojiType; +}; diff --git a/src/lib/index.ts b/src/lib/index.ts index ed4b818..98bb684 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,98 +1 @@ -import satori, { type SatoriOptions } from 'satori'; -import type { SvelteComponent } from 'svelte'; -import toReactElement from './toReactElement.js'; -import { svg2png, initialize, type ConvertOptions } from 'svg2png-wasm'; - -let initialized = false; - -const fontFile = await fetch('https://sveltekit-og.ethercorps.io/noto-sans.ttf'); -const fontData: ArrayBuffer = await fontFile.arrayBuffer(); - -const indexWasmRes = await fetch('https://unpkg.com/svg2png-wasm/svg2png_wasm_bg.wasm'); -const svg2PngWasmBuffer = await indexWasmRes.arrayBuffer(); - -const initSvgToPng = async () => { - await initialize(svg2PngWasmBuffer).catch((e) => console.log(e)); - initialized = true; -}; - -const ImageResponse = async (htmlTemplate: string, optionsByUser: ImageResponseOptions) => { - const options = Object.assign({ width: 1200, height: 630, debug: !1 }, optionsByUser); - const svg = await satori(toReactElement(htmlTemplate), { - width: options.width, - height: options.height, - debug: options.debug, - fonts: options.fonts || [ - { - name: 'sans serif', - data: fontData, - style: 'normal', - weight: 700 - } - ] - }); - - if (!initialized) { - await initSvgToPng(); - initialized = true; - } - - const defaultConfig: ConvertOptions = { - width: options.width, // optional - height: options.height // optional - }; - - if (Object.hasOwn(options, 'backgroundColor')) { - defaultConfig.backgroundColor = options.backgroundColor; - } - - const png = await svg2png(svg, defaultConfig); - - return new Response(png, { - headers: { - 'Content-Type': 'image/png', - 'cache-control': 'public, immutable, no-transform, max-age=31536000', - ...options.headers - }, - - status: options.status, - statusText: options.statusText - }); -}; - -const componentToImageResponse = ( - component: typeof SvelteComponent, - props = {}, - optionsByUser: ImageResponseOptions -) => { - const htmlTemplate = componentToMarkup(component, props); - return ImageResponse(htmlTemplate, optionsByUser); -}; - -const componentToMarkup = (component: typeof SvelteComponent, props = {}) => { - const SvelteRenderedMarkup = (component as any).render(props); - let htmlTemplate = `${SvelteRenderedMarkup.html}`; - if (SvelteRenderedMarkup && SvelteRenderedMarkup.css && SvelteRenderedMarkup.css.code) { - htmlTemplate = `${SvelteRenderedMarkup.html}`; - } - return htmlTemplate; -}; - -type ImageResponseOptions = ConstructorParameters[1] & ImageOptions; - -type ImageOptions = { - width?: number; - height?: number; - debug?: boolean; - fonts?: SatoriOptions['fonts']; - backgroundColor?: string; - graphemeImages?: Record; - loadAdditionalAsset?: ( - languageCode: string, - segment: string - ) => Promise; -}; - -export type ImageResponseType = typeof ImageResponse; - -export { componentToImageResponse, ImageResponse, toReactElement }; +export {componentToImageResponse, ImageResponse, type ImageResponseOptions} from "./api.js" diff --git a/src/lib/toReactElement.ts b/src/lib/toReactElement.ts deleted file mode 100644 index 93629f1..0000000 --- a/src/lib/toReactElement.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { parse, walk } from 'svelte/compiler'; -import type { Ast } from 'svelte/types/compiler/interfaces'; - -/* Start of code from satori-html for cssToObject converter*/ -const camelize = (ident: string) => ident.replace(/-([a-z])/g, (_, char) => char.toUpperCase()); -const cssToObject = (str: string) => { - const obj: Record = {}; - let t = 0; - let pair = ['', '']; - const flags: Record = {}; - for (const c of str) { - if (!flags['('] && c === ':') { - t = 1; - } else if (c === ';') { - const [decl = '', value = ''] = pair; - obj[camelize(decl.trim())] = value.trim(); - t = 0; - pair = ['', '']; - } else { - pair[t] += c; - switch (c) { - case '(': { - flags[c]++; - break; - } - case ')': { - flags['(']--; - break; - } - } - } - } - const [decl = '', value = ''] = pair; - if (decl.trim() && value.trim()) { - obj[camelize(decl.trim())] = value.trim(); - } - - return obj; -}; -const nodeMap = new WeakMap(); -interface VNode { - type: string; - props: { - style?: Record; - children?: string | VNode | VNode[]; - [prop: string]: any; - }; -} -const root: VNode = { - type: 'div', - props: { - style: { - display: 'flex', - flexDirection: 'column', - width: '100%', - height: '100%' - }, - children: [] - } -}; -/* End of satori-html */ - -export const toReactElement = (htmlString: string): VNode => { - const svelteAST: Ast = parse(htmlString); - walk(svelteAST, { - enter(node: any, parent: any, prop: any, index: any) { - let newNode: any = {}; - if (node.type === 'Fragment') { - nodeMap.set(node, root); - } else if (node.type === 'Element') { - newNode.type = node.name; - const { ...props } = node.attributes; - if (node.attributes.length > 0) { - node.attributes.forEach((attribute: any) => { - if (attribute.name === 'style') { - props['style'] = cssToObject(attribute.value[0].data) as any; - } else props[attribute.name] = attribute.value[0].data as any; - }); - delete props[0]; - } - props.children = [] as unknown as string; - Object.assign(newNode, { props }); - nodeMap.set(node, newNode); - if (parent) { - const newParent = nodeMap.get(parent); - newParent.props.children[index] = newNode; - } - } else if (node.type === 'Text') { - newNode = node.data.trim(); - if (newNode) { - if (parent && parent.type !== 'Attribute') { - const newParent = nodeMap.get(parent); - if (parent.children.length === 1) { - newParent.props.children = newNode; - } else { - newParent.props.children[index] = newNode; - } - } - } - } - } - }); - - return root; -}; - -export default toReactElement; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte deleted file mode 100644 index f6d76bd..0000000 --- a/src/routes/+layout.svelte +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - -
- - -
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte deleted file mode 100644 index 8e8c6fe..0000000 --- a/src/routes/+page.svelte +++ /dev/null @@ -1,240 +0,0 @@ - - -
-
-

Introduction

-

- SvelteKit-OG is use to dynamically generate Open Graph images from an HTML+CSS template or - Svelte component using fast and efficient conversion from
HTML > SVG > PNG. Based on Satori. - No headless browser required. -

-
- -
-

Installation

-

- Use your favourite package manager and add @ethercorps/sveltekit-og - as your devDependency. -

-
- Example: - - pnpm i -D @ethercorps/sveltekit-og - -
-
-

- If you are using it on with - cloudflare pages - - or cloudflare workers then you have - to provide polyfills for - url. You can simply add it to your - devDependency, -
To install - - pnpm i -D url - -

-
-
-
-

Usage

-

- Create a file at - /src/routes/og/+server.ts - . Alternatively, you can use JavaScript by removing the types from this example. -

-
-

- Route can be anything but it should have only one file - +server.ts -

-
-
{@html highlightedQuickEg}
-
-

- Then run pnpm run dev and visit localhost:5173/og to view your generated PNG. Remember that hot module reloading does not work with server routes, so if you change your HTML or CSS, hard refresh the route to see changes. -

-
-

- Image Output: Live Version - @ethercorps/sveltekit-og Demo OG Generated PNG -

-
- -
-

Headers

-

- Notice that our example uses TailwindCSS classes (e.g. tw="bg-gray-50"). Alternatively, your HTML can contain style attributes using any of the subset of CSS supported by Satori. -
-
- Satori supports only a subset of HTML and CSS. For full details, see Satori’s documentation. Notably, Satori only supports flex-based layouts. -

-
- -
-

Fonts

-

- Satori supports ttf, otf, and woff font formats; woff2 is not supported. To maximize the font parsing speed, ttf or otf are recommended over woff. -
-
- By default, @ethercorps/sveltekit-og includes only 'Noto Sans' font. If you need to use other fonts, you can specify them as shown in the example. Notably, you can also import a font file that is stored locally within your project and are not required to use fetch. -

-
- -
-

Examples

- -
  • ImageResponse - Source - Demo
  • -
  • componentToImageResponse - Source - Demo
  • -
    - -
    -

    Api Reference

    - -

    - The package exposes an ImageResponse and componentToImageResponse constructors, with the following options available. -

    -
    {@html highlightedApiReference}
    -
    - - -
    diff --git a/src/routes/+page.ts b/src/routes/+page.ts deleted file mode 100644 index 76f5bdc..0000000 --- a/src/routes/+page.ts +++ /dev/null @@ -1 +0,0 @@ -export let prerender = true diff --git a/src/routes/+server.ts b/src/routes/+server.ts new file mode 100644 index 0000000..d62fcba --- /dev/null +++ b/src/routes/+server.ts @@ -0,0 +1,7 @@ +import type {RequestHandler} from "@sveltejs/kit"; +import {ImageResponse} from "$lib"; + +export const GET: RequestHandler = async () => { + const html = '
    hello, world
    '; + return ImageResponse(html) +}; diff --git a/src/routes/component-og/+server.ts b/src/routes/component-og/+server.ts deleted file mode 100644 index 973d297..0000000 --- a/src/routes/component-og/+server.ts +++ /dev/null @@ -1,26 +0,0 @@ -import OG from './OG.svelte'; -import { componentToImageResponse } from '$lib'; -import type { RequestHandler } from '@sveltejs/kit'; - -const fontFile = await fetch( - 'https://raw.githubusercontent.com/etherCorps/sveltekit-og/main/static/inter-latin-ext-700-normal.woff' -); -const fontData: ArrayBuffer = await fontFile.arrayBuffer(); - -export const GET: RequestHandler = async () => { - return await componentToImageResponse( - OG, - { text: 'Ready to dive in?', spanText: 'Start your free trial today.' }, - { - height: 250, - width: 500, - fonts: [ - { - name: 'Inter Latin', - data: fontData, - weight: 700 - } - ] - } - ); -}; diff --git a/src/routes/component-og/OG.svelte b/src/routes/component-og/OG.svelte deleted file mode 100644 index bae5bcf..0000000 --- a/src/routes/component-og/OG.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - -
    -
    -

    - {text} - {spanText} -

    -
    - - -
    -
    -
    diff --git a/src/routes/new/+server.ts b/src/routes/new/+server.ts deleted file mode 100644 index 3637b08..0000000 --- a/src/routes/new/+server.ts +++ /dev/null @@ -1,50 +0,0 @@ -`/src/routes/new/+server.ts` - -import { ImageResponse } from '$lib'; -import type { RequestHandler } from '@sveltejs/kit'; - -const template = ` -
    -
    -

    - Ready to dive in? - Start your free trial today. -

    -
    - - -
    -
    -
    -`; -const fontFile400 = await fetch( - 'https://raw.githubusercontent.com/etherCorps/sveltekit-og/main/static/inter-latin-ext-400-normal.woff' -); -const fontFile700 = await fetch( - 'https://raw.githubusercontent.com/etherCorps/sveltekit-og/main/static/inter-latin-ext-700-normal.woff' -); -const fontData400: ArrayBuffer = await fontFile400.arrayBuffer(); -const fontData700: ArrayBuffer = await fontFile700.arrayBuffer(); - -export const GET: RequestHandler = async () => { - return await ImageResponse(template, { - height: 250, - width: 500, - fonts: [ - { - name: 'Inter Latin', - data: fontData400, - weight: 400 - }, - { - name: 'Inter Latin', - data: fontData700, - weight: 700 - } - ] - }); -}; diff --git a/src/routes/og/+server.ts b/src/routes/og/+server.ts deleted file mode 100644 index 072bfa1..0000000 --- a/src/routes/og/+server.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type {RequestHandler} from "@sveltejs/kit"; -import {ImageResponse} from "$lib"; -import {to_number} from "svelte/internal"; - -const htmlSrc = ` -
    -
    Design
    -
    Develop
    -
    SvelteKit OG
    -
    - -`; - -export const GET: RequestHandler = async ({request, url}) => { - return ImageResponse(htmlSrc, { - width: to_number(url.searchParams.get('w')) || 600, - height: to_number(url.searchParams.get('h')) || 420, - }) -}; diff --git a/src/routes/sc/+server.ts b/src/routes/sc/+server.ts new file mode 100644 index 0000000..7a5f95b --- /dev/null +++ b/src/routes/sc/+server.ts @@ -0,0 +1,10 @@ +import type {RequestHandler} from "@sveltejs/kit"; +import {componentToImageResponse} from "$lib"; +import OG from "./OG.svelte"; + +export const GET: RequestHandler = async () => { + return await componentToImageResponse( + OG, + { text: 'Ready to dive in?', spanText: 'Start your free trial today.' } + ); +}; diff --git a/src/routes/sc/OG.svelte b/src/routes/sc/OG.svelte new file mode 100644 index 0000000..2fa1240 --- /dev/null +++ b/src/routes/sc/OG.svelte @@ -0,0 +1,29 @@ + + +
    +
    +

    + {text} + {spanText} +

    +
    + + +
    +
    +
    diff --git a/static/demo.png b/static/demo.png deleted file mode 100644 index bb74d9c..0000000 Binary files a/static/demo.png and /dev/null differ diff --git a/static/favicon.ico b/static/favicon.ico deleted file mode 100644 index 3e1c704..0000000 Binary files a/static/favicon.ico and /dev/null differ diff --git a/static/iaw-mono-var.woff2 b/static/iaw-mono-var.woff2 deleted file mode 100644 index f2fac01..0000000 Binary files a/static/iaw-mono-var.woff2 and /dev/null differ diff --git a/static/inter-latin-ext-400-normal.woff b/static/inter-latin-ext-400-normal.woff deleted file mode 100644 index 9b73a33..0000000 Binary files a/static/inter-latin-ext-400-normal.woff and /dev/null differ diff --git a/static/inter-latin-ext-700-normal.woff b/static/inter-latin-ext-700-normal.woff deleted file mode 100644 index a128024..0000000 Binary files a/static/inter-latin-ext-700-normal.woff and /dev/null differ diff --git a/static/logo.png b/static/logo.png deleted file mode 100644 index 5837e1f..0000000 Binary files a/static/logo.png and /dev/null differ diff --git a/static/logo.webp b/static/logo.webp deleted file mode 100644 index ce3ffc3..0000000 Binary files a/static/logo.webp and /dev/null differ diff --git a/static/noto-sans.ttf b/static/noto-sans.ttf deleted file mode 100644 index 56941ac..0000000 Binary files a/static/noto-sans.ttf and /dev/null differ diff --git a/static/~partytown/debug/partytown-atomics.js b/static/~partytown/debug/partytown-atomics.js deleted file mode 100644 index 96685b5..0000000 --- a/static/~partytown/debug/partytown-atomics.js +++ /dev/null @@ -1,572 +0,0 @@ -/* Partytown 0.8.0 - MIT builder.io */ -(window => { - const isPromise = v => "object" == typeof v && v && v.then; - const noop = () => {}; - const len = obj => obj.length; - const getConstructorName = obj => { - var _a, _b, _c; - try { - const constructorName = null === (_a = null == obj ? void 0 : obj.constructor) || void 0 === _a ? void 0 : _a.name; - if (constructorName) { - return constructorName; - } - } catch (e) {} - try { - const zoneJsConstructorName = null === (_c = null === (_b = null == obj ? void 0 : obj.__zone_symbol__originalInstance) || void 0 === _b ? void 0 : _b.constructor) || void 0 === _c ? void 0 : _c.name; - if (zoneJsConstructorName) { - return zoneJsConstructorName; - } - } catch (e) {} - return ""; - }; - const startsWith = (str, val) => str.startsWith(val); - const isValidMemberName = memberName => !(startsWith(memberName, "webkit") || startsWith(memberName, "toJSON") || startsWith(memberName, "constructor") || startsWith(memberName, "toString") || startsWith(memberName, "_")); - const getNodeName = node => 11 === node.nodeType && node.host ? "#s" : node.nodeName; - const randomId = () => Math.round(Math.random() * Number.MAX_SAFE_INTEGER).toString(36); - const defineConstructorName = (Cstr, value) => ((obj, memberName, descriptor) => Object.defineProperty(obj, memberName, { - ...descriptor, - configurable: true - }))(Cstr, "name", { - value: value - }); - const htmlConstructorTags = { - Anchor: "a", - DList: "dl", - Image: "img", - OList: "ol", - Paragraph: "p", - Quote: "q", - TableCaption: "caption", - TableCell: "td", - TableCol: "colgroup", - TableRow: "tr", - TableSection: "tbody", - UList: "ul" - }; - const svgConstructorTags = { - Graphics: "g", - SVG: "svg" - }; - const InstanceIdKey = Symbol(); - const CreatedKey = Symbol(); - const instances = new Map; - const mainRefs = new Map; - const winCtxs = {}; - const windowIds = new WeakMap; - const getAndSetInstanceId = (instance, instanceId) => { - if (instance) { - if (instanceId = windowIds.get(instance)) { - return instanceId; - } - (instanceId = instance[InstanceIdKey]) || setInstanceId(instance, instanceId = randomId()); - return instanceId; - } - }; - const getInstance = (winId, instanceId, win, doc, docId) => { - if ((win = winCtxs[winId]) && win.$window$) { - if (winId === instanceId) { - return win.$window$; - } - doc = win.$window$.document; - docId = instanceId.split(".").pop(); - if ("d" === docId) { - return doc; - } - if ("e" === docId) { - return doc.documentElement; - } - if ("h" === docId) { - return doc.head; - } - if ("b" === docId) { - return doc.body; - } - } - return instances.get(instanceId); - }; - const setInstanceId = (instance, instanceId, now) => { - if (instance) { - instances.set(instanceId, instance); - instance[InstanceIdKey] = instanceId; - instance[CreatedKey] = now = Date.now(); - if (now > lastCleanup + 5e3) { - instances.forEach(((storedInstance, instanceId) => { - storedInstance[CreatedKey] < lastCleanup && storedInstance.nodeType && !storedInstance.isConnected && instances.delete(instanceId); - })); - lastCleanup = now; - } - } - }; - let lastCleanup = 0; - const mainWindow = window.parent; - const docImpl = document.implementation.createHTMLDocument(); - const config = mainWindow.partytown || {}; - const libPath = (config.lib || "/~partytown/") + "debug/"; - const logMain = msg => { - console.debug.apply(console, [ "%cMain 🌎", "background: #717171; color: white; padding: 2px 3px; border-radius: 2px; font-size: 0.8em;", msg ]); - }; - const winIds = []; - const normalizedWinId = winId => { - winIds.includes(winId) || winIds.push(winId); - return winIds.indexOf(winId) + 1; - }; - const defineCustomElement = (winId, worker, ceData) => { - const Cstr = defineConstructorName(class extends winCtxs[winId].$window$.HTMLElement {}, ceData[0]); - const ceCallbackMethods = "connectedCallback,disconnectedCallback,attributeChangedCallback,adoptedCallback".split(","); - ceCallbackMethods.map((callbackMethodName => Cstr.prototype[callbackMethodName] = function(...args) { - worker.postMessage([ 15, winId, getAndSetInstanceId(this), callbackMethodName, args ]); - })); - Cstr.observedAttributes = ceData[1]; - return Cstr; - }; - const serializeForWorker = ($winId$, value, added, type, cstrName, prevInstanceId) => void 0 !== value && (type = typeof value) ? "string" === type || "number" === type || "boolean" === type || null == value ? [ 0, value ] : "function" === type ? [ 6 ] : (added = added || new Set) && Array.isArray(value) ? added.has(value) ? [ 1, [] ] : added.add(value) && [ 1, value.map((v => serializeForWorker($winId$, v, added))) ] : "object" === type ? serializedValueIsError(value) ? [ 14, { - name: value.name, - message: value.message, - stack: value.stack - } ] : "" === (cstrName = getConstructorName(value)) ? [ 2, {} ] : "Window" === cstrName ? [ 3, [ $winId$, $winId$ ] ] : "HTMLCollection" === cstrName || "NodeList" === cstrName ? [ 7, Array.from(value).map((v => serializeForWorker($winId$, v, added)[1])) ] : cstrName.endsWith("Event") ? [ 5, serializeObjectForWorker($winId$, value, added) ] : "CSSRuleList" === cstrName ? [ 12, Array.from(value).map(serializeCssRuleForWorker) ] : startsWith(cstrName, "CSS") && cstrName.endsWith("Rule") ? [ 11, serializeCssRuleForWorker(value) ] : "CSSStyleDeclaration" === cstrName ? [ 13, serializeObjectForWorker($winId$, value, added) ] : "Attr" === cstrName ? [ 10, [ value.name, value.value ] ] : value.nodeType ? [ 3, [ $winId$, getAndSetInstanceId(value), getNodeName(value), prevInstanceId ] ] : [ 2, serializeObjectForWorker($winId$, value, added, true, true) ] : void 0 : value; - const serializeObjectForWorker = (winId, obj, added, includeFunctions, includeEmptyStrings, serializedObj, propName, propValue) => { - serializedObj = {}; - if (!added.has(obj)) { - added.add(obj); - for (propName in obj) { - if (isValidMemberName(propName)) { - propValue = "path" === propName && getConstructorName(obj).endsWith("Event") ? obj.composedPath() : obj[propName]; - (includeFunctions || "function" != typeof propValue) && (includeEmptyStrings || "" !== propValue) && (serializedObj[propName] = serializeForWorker(winId, propValue, added)); - } - } - } - return serializedObj; - }; - const serializeCssRuleForWorker = cssRule => { - let obj = {}; - let key; - for (key in cssRule) { - validCssRuleProps.includes(key) && (obj[key] = String(cssRule[key])); - } - return obj; - }; - const serializedValueIsError = value => value instanceof window.top.Error; - const deserializeFromWorker = (worker, serializedTransfer, serializedType, serializedValue) => { - if (serializedTransfer) { - serializedType = serializedTransfer[0]; - serializedValue = serializedTransfer[1]; - return 0 === serializedType ? serializedValue : 4 === serializedType ? deserializeRefFromWorker(worker, serializedValue) : 1 === serializedType ? serializedValue.map((v => deserializeFromWorker(worker, v))) : 3 === serializedType ? getInstance(serializedValue[0], serializedValue[1]) : 5 === serializedType ? constructEvent(deserializeObjectFromWorker(worker, serializedValue)) : 2 === serializedType ? deserializeObjectFromWorker(worker, serializedValue) : 8 === serializedType ? serializedValue : 9 === serializedType ? new window[serializedTransfer[2]](serializedValue) : void 0; - } - }; - const deserializeRefFromWorker = (worker, {$winId$: $winId$, $instanceId$: $instanceId$, $refId$: $refId$}, ref) => { - ref = mainRefs.get($refId$); - if (!ref) { - ref = function(...args) { - worker.postMessage([ 9, { - $winId$: $winId$, - $instanceId$: $instanceId$, - $refId$: $refId$, - $thisArg$: serializeForWorker($winId$, this), - $args$: serializeForWorker($winId$, args) - } ]); - }; - mainRefs.set($refId$, ref); - } - return ref; - }; - const constructEvent = eventProps => new ("detail" in eventProps ? CustomEvent : Event)(eventProps.type, eventProps); - const deserializeObjectFromWorker = (worker, serializedValue, obj, key) => { - obj = {}; - for (key in serializedValue) { - obj[key] = deserializeFromWorker(worker, serializedValue[key]); - } - return obj; - }; - const validCssRuleProps = "cssText,selectorText,href,media,namespaceURI,prefix,name,conditionText".split(","); - const mainAccessHandler = async (worker, accessReq) => { - let accessRsp = { - $msgId$: accessReq.$msgId$ - }; - let totalTasks = len(accessReq.$tasks$); - let i = 0; - let task; - let winId; - let applyPath; - let instance; - let rtnValue; - let isLast; - for (;i < totalTasks; i++) { - try { - isLast = i === totalTasks - 1; - task = accessReq.$tasks$[i]; - winId = task.$winId$; - applyPath = task.$applyPath$; - !winCtxs[winId] && winId.startsWith("f_") && await new Promise((resolve => { - let check = 0; - let callback = () => { - winCtxs[winId] || check++ > 1e3 ? resolve() : requestAnimationFrame(callback); - }; - callback(); - })); - if (1 === applyPath[0] && applyPath[1] in winCtxs[winId].$window$) { - setInstanceId(new winCtxs[winId].$window$[applyPath[1]](...deserializeFromWorker(worker, applyPath[2])), task.$instanceId$); - } else { - instance = getInstance(winId, task.$instanceId$); - if (instance) { - rtnValue = applyToInstance(worker, winId, instance, applyPath, isLast, task.$groupedGetters$); - task.$assignInstanceId$ && ("string" == typeof task.$assignInstanceId$ ? setInstanceId(rtnValue, task.$assignInstanceId$) : winCtxs[task.$assignInstanceId$.$winId$] = { - $winId$: task.$assignInstanceId$.$winId$, - $window$: { - document: rtnValue - } - }); - if (isPromise(rtnValue)) { - rtnValue = await rtnValue; - isLast && (accessRsp.$isPromise$ = true); - } - isLast && (accessRsp.$rtnValue$ = serializeForWorker(winId, rtnValue, void 0, void 0, void 0, task.$instanceId$)); - } else { - accessRsp.$error$ = `Error finding instance "${task.$instanceId$}" on window ${normalizedWinId(winId)}`; - console.error(accessRsp.$error$, task); - } - } - } catch (e) { - isLast ? accessRsp.$error$ = String(e.stack || e) : console.error(e); - } - } - return accessRsp; - }; - const applyToInstance = (worker, winId, instance, applyPath, isLast, groupedGetters) => { - let i = 0; - let l = len(applyPath); - let next; - let current; - let previous; - let args; - let groupedRtnValues; - for (;i < l; i++) { - current = applyPath[i]; - next = applyPath[i + 1]; - previous = applyPath[i - 1]; - try { - if (!Array.isArray(next)) { - if ("string" == typeof current || "number" == typeof current) { - if (i + 1 === l && groupedGetters) { - groupedRtnValues = {}; - groupedGetters.map((propName => groupedRtnValues[propName] = instance[propName])); - return groupedRtnValues; - } - instance = instance[current]; - } else { - if (0 === next) { - instance[previous] = deserializeFromWorker(worker, current); - return; - } - if ("function" == typeof instance[previous]) { - args = deserializeFromWorker(worker, current); - "define" === previous && "CustomElementRegistry" === getConstructorName(instance) && (args[1] = defineCustomElement(winId, worker, args[1])); - "insertRule" === previous && args[1] > len(instance.cssRules) && (args[1] = len(instance.cssRules)); - instance = instance[previous].apply(instance, args); - if ("play" === previous) { - return Promise.resolve(); - } - } - } - } - } catch (err) { - if (isLast) { - throw err; - } - console.debug("Non-blocking setter error:", err); - } - } - return instance; - }; - const readNextScript = (worker, winCtx) => { - let $winId$ = winCtx.$winId$; - let win = winCtx.$window$; - let doc = win.document; - let scriptSelector = 'script[type="text/partytown"]:not([data-ptid]):not([data-pterror])'; - let scriptElm; - let $instanceId$; - let scriptData; - if (doc && doc.body) { - scriptElm = doc.querySelector('script[type="text/partytown"]:not([data-ptid]):not([data-pterror]):not([async]):not([defer])'); - scriptElm || (scriptElm = doc.querySelector(scriptSelector)); - if (scriptElm) { - scriptElm.dataset.ptid = $instanceId$ = getAndSetInstanceId(scriptElm, $winId$); - scriptData = { - $winId$: $winId$, - $instanceId$: $instanceId$ - }; - if (scriptElm.src) { - scriptData.$url$ = scriptElm.src; - scriptData.$orgUrl$ = scriptElm.dataset.ptsrc || scriptElm.src; - } else { - scriptData.$content$ = scriptElm.innerHTML; - } - worker.postMessage([ 7, scriptData ]); - } else { - if (!winCtx.$isInitialized$) { - winCtx.$isInitialized$ = 1; - ((worker, $winId$, win) => { - let queuedForwardCalls = win._ptf; - let forwards = (win.partytown || {}).forward || []; - let i; - let mainForwardFn; - let forwardCall = ($forward$, args) => worker.postMessage([ 10, { - $winId$: $winId$, - $forward$: $forward$, - $args$: serializeForWorker($winId$, Array.from(args)) - } ]); - win._ptf = void 0; - forwards.map((forwardProps => { - mainForwardFn = win; - forwardProps.split(".").map(((_, i, arr) => { - mainForwardFn = mainForwardFn[arr[i]] = i + 1 < len(arr) ? mainForwardFn[arr[i]] || ("push" === arr[i + 1] ? [] : {}) : (...args) => forwardCall(arr, args); - })); - })); - if (queuedForwardCalls) { - for (i = 0; i < len(queuedForwardCalls); i += 2) { - forwardCall(queuedForwardCalls[i], queuedForwardCalls[i + 1]); - } - } - })(worker, $winId$, win); - doc.dispatchEvent(new CustomEvent("pt0")); - { - const winType = win === win.top ? "top" : "iframe"; - logMain(`Executed ${winType} window ${normalizedWinId($winId$)} environment scripts in ${(performance.now() - winCtx.$startTime$).toFixed(1)}ms`); - } - } - worker.postMessage([ 8, $winId$ ]); - } - } else { - requestAnimationFrame((() => readNextScript(worker, winCtx))); - } - }; - const registerWindow = (worker, $winId$, $window$) => { - if (!windowIds.has($window$)) { - windowIds.set($window$, $winId$); - const doc = $window$.document; - const history = $window$.history; - const $parentWinId$ = windowIds.get($window$.parent); - let initialised = false; - const onInitialisedQueue = []; - const onInitialised = callback => { - initialised ? callback() : onInitialisedQueue.push(callback); - }; - const sendInitEnvData = () => { - worker.postMessage([ 5, { - $winId$: $winId$, - $parentWinId$: $parentWinId$, - $url$: doc.baseURI, - $visibilityState$: doc.visibilityState - } ]); - setTimeout((() => { - initialised = true; - onInitialisedQueue.forEach((callback => { - callback(); - })); - })); - }; - const pushState = history.pushState.bind(history); - const replaceState = history.replaceState.bind(history); - const onLocationChange = (type, state, newUrl, oldUrl) => () => { - setTimeout((() => { - worker.postMessage([ 13, { - $winId$: $winId$, - type: type, - state: state, - url: doc.baseURI, - newUrl: newUrl, - oldUrl: oldUrl - } ]); - })); - }; - history.pushState = (state, _, newUrl) => { - pushState(state, _, newUrl); - onInitialised(onLocationChange(0, state, null == newUrl ? void 0 : newUrl.toString())); - }; - history.replaceState = (state, _, newUrl) => { - replaceState(state, _, newUrl); - onInitialised(onLocationChange(1, state, null == newUrl ? void 0 : newUrl.toString())); - }; - $window$.addEventListener("popstate", (event => { - onInitialised(onLocationChange(2, event.state)); - })); - $window$.addEventListener("hashchange", (event => { - onInitialised(onLocationChange(3, {}, event.newURL, event.oldURL)); - })); - $window$.addEventListener("ptupdate", (() => { - readNextScript(worker, winCtxs[$winId$]); - })); - doc.addEventListener("visibilitychange", (() => worker.postMessage([ 14, $winId$, doc.visibilityState ]))); - winCtxs[$winId$] = { - $winId$: $winId$, - $window$: $window$ - }; - winCtxs[$winId$].$startTime$ = performance.now(); - { - const winType = $winId$ === $parentWinId$ ? "top" : "iframe"; - logMain(`Registered ${winType} window ${normalizedWinId($winId$)}`); - } - "complete" === doc.readyState ? sendInitEnvData() : $window$.addEventListener("load", sendInitEnvData); - } - }; - const onMessageFromWebWorker = (worker, msg, winCtx) => { - if (4 === msg[0]) { - registerWindow(worker, randomId(), mainWindow); - } else { - winCtx = winCtxs[msg[1]]; - winCtx && (7 === msg[0] ? requestAnimationFrame((() => readNextScript(worker, winCtx))) : 6 === msg[0] && ((worker, winCtx, instanceId, errorMsg, scriptElm) => { - scriptElm = winCtx.$window$.document.querySelector(`[data-ptid="${instanceId}"]`); - if (scriptElm) { - errorMsg ? scriptElm.dataset.pterror = errorMsg : scriptElm.type += "-x"; - delete scriptElm.dataset.ptid; - } - readNextScript(worker, winCtx); - })(worker, winCtx, msg[2], msg[3])); - } - }; - const readMainInterfaces = () => { - const elms = Object.getOwnPropertyNames(mainWindow).map((interfaceName => ((doc, interfaceName, r, tag) => { - r = interfaceName.match(/^(HTML|SVG)(.+)Element$/); - if (r) { - tag = r[2]; - return "S" == interfaceName[0] ? doc.createElementNS("http://www.w3.org/2000/svg", svgConstructorTags[tag] || tag.slice(0, 2).toLowerCase() + tag.slice(2)) : doc.createElement(htmlConstructorTags[tag] || tag); - } - })(docImpl, interfaceName))).filter((elm => elm)).map((elm => [ elm ])); - return readImplementations(elms, []); - }; - const cstrs = new Set([ "Object" ]); - const readImplementations = (impls, interfaces) => { - const cstrImpls = impls.filter((implData => implData[0])).map((implData => { - const impl = implData[0]; - const interfaceType = implData[1]; - const cstrName = getConstructorName(impl); - const CstrPrototype = mainWindow[cstrName].prototype; - return [ cstrName, CstrPrototype, impl, interfaceType ]; - })); - cstrImpls.map((([cstrName, CstrPrototype, impl, intefaceType]) => readOwnImplementation(cstrs, interfaces, cstrName, CstrPrototype, impl, intefaceType))); - return interfaces; - }; - const readImplementation = (cstrName, impl, memberName) => { - let interfaceMembers = []; - let interfaceInfo = [ cstrName, "Object", interfaceMembers ]; - for (memberName in impl) { - readImplementationMember(interfaceMembers, impl, memberName); - } - return interfaceInfo; - }; - const readOwnImplementation = (cstrs, interfaces, cstrName, CstrPrototype, impl, interfaceType) => { - if (!cstrs.has(cstrName)) { - cstrs.add(cstrName); - const SuperCstr = Object.getPrototypeOf(CstrPrototype); - const superCstrName = getConstructorName(SuperCstr); - const interfaceMembers = []; - const propDescriptors = Object.getOwnPropertyDescriptors(CstrPrototype); - readOwnImplementation(cstrs, interfaces, superCstrName, SuperCstr, impl, interfaceType); - for (const memberName in propDescriptors) { - readImplementationMember(interfaceMembers, impl, memberName); - } - interfaces.push([ cstrName, superCstrName, interfaceMembers, interfaceType, getNodeName(impl) ]); - } - }; - const readImplementationMember = (interfaceMembers, implementation, memberName, value, memberType, cstrName) => { - try { - if (isValidMemberName(memberName) && isNaN(memberName[0]) && "all" !== memberName) { - value = implementation[memberName]; - memberType = typeof value; - if ("function" === memberType) { - (String(value).includes("[native") || Object.getPrototypeOf(implementation)[memberName]) && interfaceMembers.push([ memberName, 5 ]); - } else if ("object" === memberType && null != value) { - cstrName = getConstructorName(value); - "Object" !== cstrName && self[cstrName] && interfaceMembers.push([ memberName, value.nodeType || cstrName ]); - } else { - "symbol" !== memberType && (memberName.toUpperCase() === memberName ? interfaceMembers.push([ memberName, 6, value ]) : interfaceMembers.push([ memberName, 6 ])); - } - } - } catch (e) { - console.warn(e); - } - }; - const readStorage = storageName => { - let items = []; - let i = 0; - let l = len(mainWindow[storageName]); - let key; - for (;i < l; i++) { - key = mainWindow[storageName].key(i); - items.push([ key, mainWindow[storageName].getItem(key) ]); - } - return items; - }; - const getGlobalConstructor = (mainWindow, cstrName) => void 0 !== mainWindow[cstrName] ? new mainWindow[cstrName](noop) : 0; - const addGlobalConstructorUsingPrototype = ($interfaces$, mainWindow, cstrName) => { - void 0 !== mainWindow[cstrName] && $interfaces$.push([ cstrName, "Object", Object.keys(mainWindow[cstrName].prototype).map((propName => [ propName, 6 ])), 12 ]); - }; - let worker; - (async receiveMessage => { - const sharedDataBuffer = new SharedArrayBuffer(1073741824); - const sharedData = new Int32Array(sharedDataBuffer); - return (worker, msg) => { - const msgType = msg[0]; - const accessReq = msg[1]; - if (0 === msgType) { - const initData = (() => { - const elm = docImpl.createElement("i"); - const textNode = docImpl.createTextNode(""); - const comment = docImpl.createComment(""); - const frag = docImpl.createDocumentFragment(); - const shadowRoot = docImpl.createElement("p").attachShadow({ - mode: "open" - }); - const intersectionObserver = getGlobalConstructor(mainWindow, "IntersectionObserver"); - const mutationObserver = getGlobalConstructor(mainWindow, "MutationObserver"); - const resizeObserver = getGlobalConstructor(mainWindow, "ResizeObserver"); - const perf = mainWindow.performance; - const screen = mainWindow.screen; - const impls = [ [ mainWindow.history ], [ perf ], [ perf.navigation ], [ perf.timing ], [ screen ], [ screen.orientation ], [ mainWindow.visualViewport ], [ intersectionObserver, 12 ], [ mutationObserver, 12 ], [ resizeObserver, 12 ], [ textNode ], [ comment ], [ frag ], [ shadowRoot ], [ elm ], [ elm.attributes ], [ elm.classList ], [ elm.dataset ], [ elm.style ], [ docImpl ], [ docImpl.doctype ] ]; - const initialInterfaces = [ readImplementation("Window", mainWindow), readImplementation("Node", textNode) ]; - const $config$ = JSON.stringify(config, ((k, v) => { - if ("function" == typeof v) { - v = String(v); - v.startsWith(k + "(") && (v = "function " + v); - } - return v; - })); - const initWebWorkerData = { - $config$: $config$, - $interfaces$: readImplementations(impls, initialInterfaces), - $libPath$: new URL(libPath, mainWindow.location) + "", - $origin$: origin, - $localStorage$: readStorage("localStorage"), - $sessionStorage$: readStorage("sessionStorage") - }; - addGlobalConstructorUsingPrototype(initWebWorkerData.$interfaces$, mainWindow, "IntersectionObserverEntry"); - return initWebWorkerData; - })(); - initData.$sharedDataBuffer$ = sharedDataBuffer; - worker.postMessage([ 1, initData ]); - } else { - 2 === msg[0] ? worker.postMessage([ 3, readMainInterfaces() ]) : 11 === msgType ? receiveMessage(accessReq, (accessRsp => { - const stringifiedData = JSON.stringify(accessRsp); - const stringifiedDataLength = stringifiedData.length; - for (let i = 0; i < stringifiedDataLength; i++) { - sharedData[i + 1] = stringifiedData.charCodeAt(i); - } - sharedData[0] = stringifiedDataLength; - Atomics.notify(sharedData, 0); - })) : onMessageFromWebWorker(worker, msg); - } - }; - })(((accessReq, responseCallback) => mainAccessHandler(worker, accessReq).then(responseCallback))).then((onMessageHandler => { - if (onMessageHandler) { - worker = new Worker(libPath + "partytown-ww-atomics.js?v=0.8.0", { - name: "Partytown 🎉" - }); - worker.onmessage = ev => { - const msg = ev.data; - 12 === msg[0] ? mainAccessHandler(worker, msg[1]) : onMessageHandler(worker, msg); - }; - logMain("Created Partytown web worker (0.8.0)"); - worker.onerror = ev => console.error("Web Worker Error", ev); - mainWindow.addEventListener("pt1", (ev => registerWindow(worker, getAndSetInstanceId(ev.detail.frameElement), ev.detail))); - } - })); -})(window); diff --git a/static/~partytown/debug/partytown-media.js b/static/~partytown/debug/partytown-media.js deleted file mode 100644 index f71fadb..0000000 --- a/static/~partytown/debug/partytown-media.js +++ /dev/null @@ -1,374 +0,0 @@ -/* Partytown 0.8.0 - MIT builder.io */ -(self => { - const [getter, setter, callMethod, constructGlobal, definePrototypePropertyDescriptor, randomId, WinIdKey, InstanceIdKey, ApplyPathKey] = self.$bridgeToMedia$; - delete self.$bridgeToMedia$; - const ContextKey = Symbol(); - const MediaSourceKey = Symbol(); - const ReadyStateKey = Symbol(); - const SourceBuffersKey = Symbol(); - const SourceBufferTasksKey = Symbol(); - const TimeRangesKey = Symbol(); - const EMPTY_ARRAY = []; - const defineCstr = (win, cstrName, Cstr) => win[cstrName] = defineCstrName(cstrName, Cstr); - const defineCstrName = (cstrName, Cstr) => Object.defineProperty(Cstr, "name", { - value: cstrName - }); - const initCanvas = (WorkerBase, win) => { - const HTMLCanvasDescriptorMap = { - getContext: { - value(contextType, contextAttributes) { - this[ContextKey] || (this[ContextKey] = (contextType.includes("webgl") ? createContextWebGL : createContext2D)(this, contextType, contextAttributes)); - return this[ContextKey]; - } - } - }; - const WorkerCanvasGradient = defineCstr(win, "CanvasGradient", class extends WorkerBase { - addColorStop(...args) { - callMethod(this, [ "addColorStop" ], args, 2); - } - }); - const WorkerCanvasPattern = defineCstr(win, "CanvasPattern", class extends WorkerBase { - setTransform(...args) { - callMethod(this, [ "setTransform" ], args, 2); - } - }); - const createContext2D = (canvasInstance, contextType, contextAttributes) => { - const winId = canvasInstance[WinIdKey]; - const ctxInstanceId = randomId(); - const ctxInstance = { - [WinIdKey]: winId, - [InstanceIdKey]: ctxInstanceId, - [ApplyPathKey]: [] - }; - const ctx = callMethod(canvasInstance, [ "getContext" ], [ contextType, contextAttributes ], 1, ctxInstanceId); - const ctx2dGetterMethods = "getContextAttributes,getImageData,getLineDash,getTransform,isPointInPath,isPointInStroke,measureText".split(","); - const CanvasRenderingContext2D = { - get: (target, propName) => "string" == typeof propName && propName in ctx ? "function" == typeof ctx[propName] ? (...args) => { - if (propName.startsWith("create")) { - const instanceId = randomId(); - callMethod(ctxInstance, [ propName ], args, 2, instanceId); - if ("createImageData" === propName || "createPattern" === propName) { - (api => { - console.warn(`${api} not implemented`); - })(`${propName}()`); - return { - setTransform: () => {} - }; - } - return new WorkerCanvasGradient(winId, instanceId); - } - const methodCallType = ctx2dGetterMethods.includes(propName) ? 1 : 2; - return callMethod(ctxInstance, [ propName ], args, methodCallType); - } : ctx[propName] : target[propName], - set(target, propName, value) { - if ("string" == typeof propName && propName in ctx) { - ctx[propName] !== value && "function" != typeof value && setter(ctxInstance, [ propName ], value); - ctx[propName] = value; - } else { - target[propName] = value; - } - return true; - } - }; - return new Proxy(ctx, CanvasRenderingContext2D); - }; - const createContextWebGL = (canvasInstance, contextType, contextAttributes) => { - const winId = canvasInstance[WinIdKey]; - const ctxInstanceId = randomId(); - const ctxInstance = { - [WinIdKey]: winId, - [InstanceIdKey]: ctxInstanceId, - [ApplyPathKey]: [] - }; - const ctx = callMethod(canvasInstance, [ "getContext" ], [ contextType, contextAttributes ], 1, ctxInstanceId); - const WebGLRenderingContextHandler = { - get: (target, propName) => "string" == typeof propName ? "function" != typeof ctx[propName] ? ctx[propName] : (...args) => callMethod(ctxInstance, [ propName ], args, getWebGlMethodCallType(propName)) : target[propName], - set(target, propName, value) { - if ("string" == typeof propName && propName in ctx) { - ctx[propName] !== value && "function" != typeof value && setter(ctxInstance, [ propName ], value); - ctx[propName] = value; - } else { - target[propName] = value; - } - return true; - } - }; - return new Proxy(ctx, WebGLRenderingContextHandler); - }; - const ctxWebGLGetterMethods = "checkFramebufferStatus,makeXRCompatible".split(","); - const getWebGlMethodCallType = methodName => methodName.startsWith("create") || methodName.startsWith("get") || methodName.startsWith("is") || ctxWebGLGetterMethods.includes(methodName) ? 1 : 2; - defineCstr(win, "CanvasGradient", WorkerCanvasGradient); - defineCstr(win, "CanvasPattern", WorkerCanvasPattern); - definePrototypePropertyDescriptor(win.HTMLCanvasElement, HTMLCanvasDescriptorMap); - }; - const initMedia = (WorkerBase, WorkerEventTargetProxy, env, win) => { - var _a, _b; - win.Audio = defineCstrName("HTMLAudioElement", class { - constructor(src) { - const audio = env.$createNode$("audio", randomId()); - audio.src = src; - return audio; - } - }); - const WorkerAudioTrack = class extends WorkerBase { - get enabled() { - return getter(this, [ "enabled" ]); - } - set enabled(value) { - setter(this, [ "enabled" ], value); - } - get id() { - return getter(this, [ "id" ]); - } - get kind() { - return getter(this, [ "kind" ]); - } - get label() { - return getter(this, [ "label" ]); - } - get language() { - return getter(this, [ "language" ]); - } - get sourceBuffer() { - return new WorkerSourceBuffer(this); - } - }; - const WorkerAudioTrackList = class { - constructor(mediaElm) { - const winId = mediaElm[WinIdKey]; - const instanceId = mediaElm[InstanceIdKey]; - const instance = { - addEventListener(...args) { - callMethod(mediaElm, [ "audioTracks", "addEventListener" ], args, 3); - }, - getTrackById: (...args) => callMethod(mediaElm, [ "audioTracks", "getTrackById" ], args), - get length() { - return getter(mediaElm, [ "audioTracks", "length" ]); - }, - removeEventListener(...args) { - callMethod(mediaElm, [ "audioTracks", "removeEventListener" ], args, 3); - } - }; - return new Proxy(instance, { - get: (target, propName) => "number" == typeof propName ? new WorkerAudioTrack(winId, instanceId, [ "audioTracks", propName ]) : target[propName] - }); - } - }; - const WorkerSourceBufferList = defineCstr(win, "SourceBufferList", class extends Array { - constructor(mediaSource) { - super(); - this[MediaSourceKey] = mediaSource; - } - addEventListener(...args) { - callMethod(this[MediaSourceKey], [ "sourceBuffers", "addEventListener" ], args, 3); - } - removeEventListener(...args) { - callMethod(this[MediaSourceKey], [ "sourceBuffers", "removeEventListener" ], args, 3); - } - }); - const WorkerSourceBuffer = defineCstr(win, "SourceBuffer", (_b = class extends WorkerEventTargetProxy { - constructor(mediaSource) { - super(mediaSource[WinIdKey], mediaSource[InstanceIdKey], [ "sourceBuffers" ]); - this[_a] = []; - this[MediaSourceKey] = mediaSource; - } - abort() { - const sbIndex = getSourceBufferIndex(this); - callMethod(this, [ sbIndex, "appendWindowStart" ], EMPTY_ARRAY, 1); - } - addEventListener(...args) { - const sbIndex = getSourceBufferIndex(this); - callMethod(this, [ sbIndex, "addEventListener" ], args, 3); - } - appendBuffer(buf) { - this[SourceBufferTasksKey].push([ "appendBuffer", [ buf ], buf ]); - drainSourceBufferQueue(this); - } - get appendWindowStart() { - const sbIndex = getSourceBufferIndex(this); - return getter(this, [ sbIndex, "appendWindowStart" ]); - } - set appendWindowStart(value) { - const sbIndex = getSourceBufferIndex(this); - setter(this, [ sbIndex, "appendWindowStart" ], value); - } - get appendWindowEnd() { - const sbIndex = getSourceBufferIndex(this); - return getter(this, [ sbIndex, "appendWindowEnd" ]); - } - set appendWindowEnd(value) { - const sbIndex = getSourceBufferIndex(this); - setter(this, [ sbIndex, "appendWindowEnd" ], value); - } - get buffered() { - const mediaSource = this[MediaSourceKey]; - const sbIndex = getSourceBufferIndex(this); - const timeRanges = new WorkerTimeRanges(mediaSource[WinIdKey], mediaSource[InstanceIdKey], [ "sourceBuffers", sbIndex, "buffered" ]); - return timeRanges; - } - changeType(mimeType) { - const sbIndex = getSourceBufferIndex(this); - callMethod(this, [ sbIndex, "changeType" ], [ mimeType ], 2); - } - get mode() { - const sbIndex = getSourceBufferIndex(this); - return getter(this, [ sbIndex, "mode" ]); - } - set mode(value) { - const sbIndex = getSourceBufferIndex(this); - setter(this, [ sbIndex, "mode" ], value); - } - remove(start, end) { - this[SourceBufferTasksKey].push([ "remove", [ start, end ] ]); - drainSourceBufferQueue(this); - } - removeEventListener(...args) { - const sbIndex = getSourceBufferIndex(this); - callMethod(this, [ sbIndex, "removeEventListener" ], args, 3); - } - get timestampOffset() { - const sbIndex = getSourceBufferIndex(this); - return getter(this, [ sbIndex, "timestampOffset" ]); - } - set timestampOffset(value) { - const sbIndex = getSourceBufferIndex(this); - setter(this, [ sbIndex, "timestampOffset" ], value); - } - get updating() { - const sbIndex = getSourceBufferIndex(this); - return getter(this, [ sbIndex, "updating" ]); - } - }, _a = SourceBufferTasksKey, _b)); - const WorkerTimeRanges = defineCstr(win, "TimeRanges", class extends WorkerBase { - start(...args) { - return callMethod(this, [ "start" ], args); - } - end(...args) { - return callMethod(this, [ "end" ], args); - } - get length() { - return getter(this, [ "length" ]); - } - }); - const getSourceBufferIndex = sourceBuffer => { - if (sourceBuffer) { - const mediaSource = sourceBuffer[MediaSourceKey]; - const sourceBufferList = mediaSource[SourceBuffersKey]; - return sourceBufferList.indexOf(sourceBuffer); - } - return -1; - }; - const drainSourceBufferQueue = sourceBuffer => { - if (sourceBuffer[SourceBufferTasksKey].length) { - if (!sourceBuffer.updating) { - const task = sourceBuffer[SourceBufferTasksKey].shift(); - if (task) { - const sbIndex = getSourceBufferIndex(sourceBuffer); - callMethod(sourceBuffer, [ sbIndex, task[0] ], task[1], 3, void 0, task[2]); - } - } - setTimeout((() => drainSourceBufferQueue(sourceBuffer)), 50); - } - }; - const HTMLMediaDescriptorMap = { - buffered: { - get() { - if (!this[TimeRangesKey]) { - this[TimeRangesKey] = new WorkerTimeRanges(this[WinIdKey], this[InstanceIdKey], [ "buffered" ]); - setTimeout((() => { - this[TimeRangesKey] = void 0; - }), 5e3); - } - return this[TimeRangesKey]; - } - }, - readyState: { - get() { - if (4 === this[ReadyStateKey]) { - return 4; - } - if ("number" != typeof this[ReadyStateKey]) { - this[ReadyStateKey] = getter(this, [ "readyState" ]); - setTimeout((() => { - this[ReadyStateKey] = void 0; - }), 1e3); - } - return this[ReadyStateKey]; - } - } - }; - defineCstr(win, "MediaSource", class extends WorkerEventTargetProxy { - constructor() { - super(env.$winId$); - this[SourceBuffersKey] = new WorkerSourceBufferList(this); - constructGlobal(this, "MediaSource", EMPTY_ARRAY); - } - get activeSourceBuffers() { - return []; - } - addSourceBuffer(mimeType) { - const sourceBuffer = new WorkerSourceBuffer(this); - this[SourceBuffersKey].push(sourceBuffer); - callMethod(this, [ "addSourceBuffer" ], [ mimeType ]); - return sourceBuffer; - } - clearLiveSeekableRange() { - callMethod(this, [ "clearLiveSeekableRange" ], EMPTY_ARRAY, 2); - } - get duration() { - return getter(this, [ "duration" ]); - } - set duration(value) { - setter(this, [ "duration" ], value); - } - endOfStream(endOfStreamError) { - callMethod(this, [ "endOfStream" ], [ endOfStreamError ], 3); - } - get readyState() { - return getter(this, [ "readyState" ]); - } - removeSourceBuffer(sourceBuffer) { - const index = getSourceBufferIndex(sourceBuffer); - if (index > -1) { - this[SourceBuffersKey].splice(index, 1); - callMethod(this, [ "removeSourceBuffer" ], [ index ], 1); - } - } - setLiveSeekableRange(start, end) { - callMethod(this, [ "setLiveSeekableRange" ], [ start, end ], 2); - } - get sourceBuffers() { - return this[SourceBuffersKey]; - } - static isTypeSupported(mimeType) { - if (!isStaticTypeSupported.has(mimeType)) { - const isSupported = callMethod(win, [ "MediaSource", "isTypeSupported" ], [ mimeType ]); - isStaticTypeSupported.set(mimeType, isSupported); - } - return isStaticTypeSupported.get(mimeType); - } - }); - const winURL = win.URL = defineCstrName("URL", class extends URL {}); - const hasAudioTracks = "audioTracks" in win.HTMLMediaElement.prototype; - if (hasAudioTracks) { - defineCstr(win, "AudioTrackList", WorkerAudioTrackList); - defineCstr(win, "AudioTrack", WorkerAudioTrack); - HTMLMediaDescriptorMap.audioTracks = { - get() { - return new WorkerAudioTrackList(this); - } - }; - } - definePrototypePropertyDescriptor(win.HTMLMediaElement, HTMLMediaDescriptorMap); - winURL.createObjectURL = obj => callMethod(win, [ "URL", "createObjectURL" ], [ obj ]); - winURL.revokeObjectURL = obj => callMethod(win, [ "URL", "revokeObjectURL" ], [ obj ]); - }; - const isStaticTypeSupported = new Map; - self.$bridgeFromMedia$ = (WorkerBase, WorkerEventTargetProxy, env, win, windowMediaConstructors) => { - windowMediaConstructors.map((mediaCstrName => { - delete win[mediaCstrName]; - })); - initCanvas(WorkerBase, win); - initMedia(WorkerBase, WorkerEventTargetProxy, env, win); - }; -})(self); diff --git a/static/~partytown/debug/partytown-sandbox-sw.js b/static/~partytown/debug/partytown-sandbox-sw.js deleted file mode 100644 index 44b9657..0000000 --- a/static/~partytown/debug/partytown-sandbox-sw.js +++ /dev/null @@ -1,559 +0,0 @@ -/* Partytown 0.8.0 - MIT builder.io */ -(window => { - const isPromise = v => "object" == typeof v && v && v.then; - const noop = () => {}; - const len = obj => obj.length; - const getConstructorName = obj => { - var _a, _b, _c; - try { - const constructorName = null === (_a = null == obj ? void 0 : obj.constructor) || void 0 === _a ? void 0 : _a.name; - if (constructorName) { - return constructorName; - } - } catch (e) {} - try { - const zoneJsConstructorName = null === (_c = null === (_b = null == obj ? void 0 : obj.__zone_symbol__originalInstance) || void 0 === _b ? void 0 : _b.constructor) || void 0 === _c ? void 0 : _c.name; - if (zoneJsConstructorName) { - return zoneJsConstructorName; - } - } catch (e) {} - return ""; - }; - const startsWith = (str, val) => str.startsWith(val); - const isValidMemberName = memberName => !(startsWith(memberName, "webkit") || startsWith(memberName, "toJSON") || startsWith(memberName, "constructor") || startsWith(memberName, "toString") || startsWith(memberName, "_")); - const getNodeName = node => 11 === node.nodeType && node.host ? "#s" : node.nodeName; - const randomId = () => Math.round(Math.random() * Number.MAX_SAFE_INTEGER).toString(36); - const defineConstructorName = (Cstr, value) => ((obj, memberName, descriptor) => Object.defineProperty(obj, memberName, { - ...descriptor, - configurable: true - }))(Cstr, "name", { - value: value - }); - const htmlConstructorTags = { - Anchor: "a", - DList: "dl", - Image: "img", - OList: "ol", - Paragraph: "p", - Quote: "q", - TableCaption: "caption", - TableCell: "td", - TableCol: "colgroup", - TableRow: "tr", - TableSection: "tbody", - UList: "ul" - }; - const svgConstructorTags = { - Graphics: "g", - SVG: "svg" - }; - const InstanceIdKey = Symbol(); - const CreatedKey = Symbol(); - const instances = new Map; - const mainRefs = new Map; - const winCtxs = {}; - const windowIds = new WeakMap; - const getAndSetInstanceId = (instance, instanceId) => { - if (instance) { - if (instanceId = windowIds.get(instance)) { - return instanceId; - } - (instanceId = instance[InstanceIdKey]) || setInstanceId(instance, instanceId = randomId()); - return instanceId; - } - }; - const getInstance = (winId, instanceId, win, doc, docId) => { - if ((win = winCtxs[winId]) && win.$window$) { - if (winId === instanceId) { - return win.$window$; - } - doc = win.$window$.document; - docId = instanceId.split(".").pop(); - if ("d" === docId) { - return doc; - } - if ("e" === docId) { - return doc.documentElement; - } - if ("h" === docId) { - return doc.head; - } - if ("b" === docId) { - return doc.body; - } - } - return instances.get(instanceId); - }; - const setInstanceId = (instance, instanceId, now) => { - if (instance) { - instances.set(instanceId, instance); - instance[InstanceIdKey] = instanceId; - instance[CreatedKey] = now = Date.now(); - if (now > lastCleanup + 5e3) { - instances.forEach(((storedInstance, instanceId) => { - storedInstance[CreatedKey] < lastCleanup && storedInstance.nodeType && !storedInstance.isConnected && instances.delete(instanceId); - })); - lastCleanup = now; - } - } - }; - let lastCleanup = 0; - const mainWindow = window.parent; - const docImpl = document.implementation.createHTMLDocument(); - const config = mainWindow.partytown || {}; - const libPath = (config.lib || "/~partytown/") + "debug/"; - const logMain = msg => { - console.debug.apply(console, [ "%cMain 🌎", "background: #717171; color: white; padding: 2px 3px; border-radius: 2px; font-size: 0.8em;", msg ]); - }; - const winIds = []; - const normalizedWinId = winId => { - winIds.includes(winId) || winIds.push(winId); - return winIds.indexOf(winId) + 1; - }; - const defineCustomElement = (winId, worker, ceData) => { - const Cstr = defineConstructorName(class extends winCtxs[winId].$window$.HTMLElement {}, ceData[0]); - const ceCallbackMethods = "connectedCallback,disconnectedCallback,attributeChangedCallback,adoptedCallback".split(","); - ceCallbackMethods.map((callbackMethodName => Cstr.prototype[callbackMethodName] = function(...args) { - worker.postMessage([ 15, winId, getAndSetInstanceId(this), callbackMethodName, args ]); - })); - Cstr.observedAttributes = ceData[1]; - return Cstr; - }; - const serializeForWorker = ($winId$, value, added, type, cstrName, prevInstanceId) => void 0 !== value && (type = typeof value) ? "string" === type || "number" === type || "boolean" === type || null == value ? [ 0, value ] : "function" === type ? [ 6 ] : (added = added || new Set) && Array.isArray(value) ? added.has(value) ? [ 1, [] ] : added.add(value) && [ 1, value.map((v => serializeForWorker($winId$, v, added))) ] : "object" === type ? serializedValueIsError(value) ? [ 14, { - name: value.name, - message: value.message, - stack: value.stack - } ] : "" === (cstrName = getConstructorName(value)) ? [ 2, {} ] : "Window" === cstrName ? [ 3, [ $winId$, $winId$ ] ] : "HTMLCollection" === cstrName || "NodeList" === cstrName ? [ 7, Array.from(value).map((v => serializeForWorker($winId$, v, added)[1])) ] : cstrName.endsWith("Event") ? [ 5, serializeObjectForWorker($winId$, value, added) ] : "CSSRuleList" === cstrName ? [ 12, Array.from(value).map(serializeCssRuleForWorker) ] : startsWith(cstrName, "CSS") && cstrName.endsWith("Rule") ? [ 11, serializeCssRuleForWorker(value) ] : "CSSStyleDeclaration" === cstrName ? [ 13, serializeObjectForWorker($winId$, value, added) ] : "Attr" === cstrName ? [ 10, [ value.name, value.value ] ] : value.nodeType ? [ 3, [ $winId$, getAndSetInstanceId(value), getNodeName(value), prevInstanceId ] ] : [ 2, serializeObjectForWorker($winId$, value, added, true, true) ] : void 0 : value; - const serializeObjectForWorker = (winId, obj, added, includeFunctions, includeEmptyStrings, serializedObj, propName, propValue) => { - serializedObj = {}; - if (!added.has(obj)) { - added.add(obj); - for (propName in obj) { - if (isValidMemberName(propName)) { - propValue = "path" === propName && getConstructorName(obj).endsWith("Event") ? obj.composedPath() : obj[propName]; - (includeFunctions || "function" != typeof propValue) && (includeEmptyStrings || "" !== propValue) && (serializedObj[propName] = serializeForWorker(winId, propValue, added)); - } - } - } - return serializedObj; - }; - const serializeCssRuleForWorker = cssRule => { - let obj = {}; - let key; - for (key in cssRule) { - validCssRuleProps.includes(key) && (obj[key] = String(cssRule[key])); - } - return obj; - }; - const serializedValueIsError = value => value instanceof window.top.Error; - const deserializeFromWorker = (worker, serializedTransfer, serializedType, serializedValue) => { - if (serializedTransfer) { - serializedType = serializedTransfer[0]; - serializedValue = serializedTransfer[1]; - return 0 === serializedType ? serializedValue : 4 === serializedType ? deserializeRefFromWorker(worker, serializedValue) : 1 === serializedType ? serializedValue.map((v => deserializeFromWorker(worker, v))) : 3 === serializedType ? getInstance(serializedValue[0], serializedValue[1]) : 5 === serializedType ? constructEvent(deserializeObjectFromWorker(worker, serializedValue)) : 2 === serializedType ? deserializeObjectFromWorker(worker, serializedValue) : 8 === serializedType ? serializedValue : 9 === serializedType ? new window[serializedTransfer[2]](serializedValue) : void 0; - } - }; - const deserializeRefFromWorker = (worker, {$winId$: $winId$, $instanceId$: $instanceId$, $refId$: $refId$}, ref) => { - ref = mainRefs.get($refId$); - if (!ref) { - ref = function(...args) { - worker.postMessage([ 9, { - $winId$: $winId$, - $instanceId$: $instanceId$, - $refId$: $refId$, - $thisArg$: serializeForWorker($winId$, this), - $args$: serializeForWorker($winId$, args) - } ]); - }; - mainRefs.set($refId$, ref); - } - return ref; - }; - const constructEvent = eventProps => new ("detail" in eventProps ? CustomEvent : Event)(eventProps.type, eventProps); - const deserializeObjectFromWorker = (worker, serializedValue, obj, key) => { - obj = {}; - for (key in serializedValue) { - obj[key] = deserializeFromWorker(worker, serializedValue[key]); - } - return obj; - }; - const validCssRuleProps = "cssText,selectorText,href,media,namespaceURI,prefix,name,conditionText".split(","); - const mainAccessHandler = async (worker, accessReq) => { - let accessRsp = { - $msgId$: accessReq.$msgId$ - }; - let totalTasks = len(accessReq.$tasks$); - let i = 0; - let task; - let winId; - let applyPath; - let instance; - let rtnValue; - let isLast; - for (;i < totalTasks; i++) { - try { - isLast = i === totalTasks - 1; - task = accessReq.$tasks$[i]; - winId = task.$winId$; - applyPath = task.$applyPath$; - !winCtxs[winId] && winId.startsWith("f_") && await new Promise((resolve => { - let check = 0; - let callback = () => { - winCtxs[winId] || check++ > 1e3 ? resolve() : requestAnimationFrame(callback); - }; - callback(); - })); - if (1 === applyPath[0] && applyPath[1] in winCtxs[winId].$window$) { - setInstanceId(new winCtxs[winId].$window$[applyPath[1]](...deserializeFromWorker(worker, applyPath[2])), task.$instanceId$); - } else { - instance = getInstance(winId, task.$instanceId$); - if (instance) { - rtnValue = applyToInstance(worker, winId, instance, applyPath, isLast, task.$groupedGetters$); - task.$assignInstanceId$ && ("string" == typeof task.$assignInstanceId$ ? setInstanceId(rtnValue, task.$assignInstanceId$) : winCtxs[task.$assignInstanceId$.$winId$] = { - $winId$: task.$assignInstanceId$.$winId$, - $window$: { - document: rtnValue - } - }); - if (isPromise(rtnValue)) { - rtnValue = await rtnValue; - isLast && (accessRsp.$isPromise$ = true); - } - isLast && (accessRsp.$rtnValue$ = serializeForWorker(winId, rtnValue, void 0, void 0, void 0, task.$instanceId$)); - } else { - accessRsp.$error$ = `Error finding instance "${task.$instanceId$}" on window ${normalizedWinId(winId)}`; - console.error(accessRsp.$error$, task); - } - } - } catch (e) { - isLast ? accessRsp.$error$ = String(e.stack || e) : console.error(e); - } - } - return accessRsp; - }; - const applyToInstance = (worker, winId, instance, applyPath, isLast, groupedGetters) => { - let i = 0; - let l = len(applyPath); - let next; - let current; - let previous; - let args; - let groupedRtnValues; - for (;i < l; i++) { - current = applyPath[i]; - next = applyPath[i + 1]; - previous = applyPath[i - 1]; - try { - if (!Array.isArray(next)) { - if ("string" == typeof current || "number" == typeof current) { - if (i + 1 === l && groupedGetters) { - groupedRtnValues = {}; - groupedGetters.map((propName => groupedRtnValues[propName] = instance[propName])); - return groupedRtnValues; - } - instance = instance[current]; - } else { - if (0 === next) { - instance[previous] = deserializeFromWorker(worker, current); - return; - } - if ("function" == typeof instance[previous]) { - args = deserializeFromWorker(worker, current); - "define" === previous && "CustomElementRegistry" === getConstructorName(instance) && (args[1] = defineCustomElement(winId, worker, args[1])); - "insertRule" === previous && args[1] > len(instance.cssRules) && (args[1] = len(instance.cssRules)); - instance = instance[previous].apply(instance, args); - if ("play" === previous) { - return Promise.resolve(); - } - } - } - } - } catch (err) { - if (isLast) { - throw err; - } - console.debug("Non-blocking setter error:", err); - } - } - return instance; - }; - const readNextScript = (worker, winCtx) => { - let $winId$ = winCtx.$winId$; - let win = winCtx.$window$; - let doc = win.document; - let scriptSelector = 'script[type="text/partytown"]:not([data-ptid]):not([data-pterror])'; - let scriptElm; - let $instanceId$; - let scriptData; - if (doc && doc.body) { - scriptElm = doc.querySelector('script[type="text/partytown"]:not([data-ptid]):not([data-pterror]):not([async]):not([defer])'); - scriptElm || (scriptElm = doc.querySelector(scriptSelector)); - if (scriptElm) { - scriptElm.dataset.ptid = $instanceId$ = getAndSetInstanceId(scriptElm, $winId$); - scriptData = { - $winId$: $winId$, - $instanceId$: $instanceId$ - }; - if (scriptElm.src) { - scriptData.$url$ = scriptElm.src; - scriptData.$orgUrl$ = scriptElm.dataset.ptsrc || scriptElm.src; - } else { - scriptData.$content$ = scriptElm.innerHTML; - } - worker.postMessage([ 7, scriptData ]); - } else { - if (!winCtx.$isInitialized$) { - winCtx.$isInitialized$ = 1; - ((worker, $winId$, win) => { - let queuedForwardCalls = win._ptf; - let forwards = (win.partytown || {}).forward || []; - let i; - let mainForwardFn; - let forwardCall = ($forward$, args) => worker.postMessage([ 10, { - $winId$: $winId$, - $forward$: $forward$, - $args$: serializeForWorker($winId$, Array.from(args)) - } ]); - win._ptf = void 0; - forwards.map((forwardProps => { - mainForwardFn = win; - forwardProps.split(".").map(((_, i, arr) => { - mainForwardFn = mainForwardFn[arr[i]] = i + 1 < len(arr) ? mainForwardFn[arr[i]] || ("push" === arr[i + 1] ? [] : {}) : (...args) => forwardCall(arr, args); - })); - })); - if (queuedForwardCalls) { - for (i = 0; i < len(queuedForwardCalls); i += 2) { - forwardCall(queuedForwardCalls[i], queuedForwardCalls[i + 1]); - } - } - })(worker, $winId$, win); - doc.dispatchEvent(new CustomEvent("pt0")); - { - const winType = win === win.top ? "top" : "iframe"; - logMain(`Executed ${winType} window ${normalizedWinId($winId$)} environment scripts in ${(performance.now() - winCtx.$startTime$).toFixed(1)}ms`); - } - } - worker.postMessage([ 8, $winId$ ]); - } - } else { - requestAnimationFrame((() => readNextScript(worker, winCtx))); - } - }; - const registerWindow = (worker, $winId$, $window$) => { - if (!windowIds.has($window$)) { - windowIds.set($window$, $winId$); - const doc = $window$.document; - const history = $window$.history; - const $parentWinId$ = windowIds.get($window$.parent); - let initialised = false; - const onInitialisedQueue = []; - const onInitialised = callback => { - initialised ? callback() : onInitialisedQueue.push(callback); - }; - const sendInitEnvData = () => { - worker.postMessage([ 5, { - $winId$: $winId$, - $parentWinId$: $parentWinId$, - $url$: doc.baseURI, - $visibilityState$: doc.visibilityState - } ]); - setTimeout((() => { - initialised = true; - onInitialisedQueue.forEach((callback => { - callback(); - })); - })); - }; - const pushState = history.pushState.bind(history); - const replaceState = history.replaceState.bind(history); - const onLocationChange = (type, state, newUrl, oldUrl) => () => { - setTimeout((() => { - worker.postMessage([ 13, { - $winId$: $winId$, - type: type, - state: state, - url: doc.baseURI, - newUrl: newUrl, - oldUrl: oldUrl - } ]); - })); - }; - history.pushState = (state, _, newUrl) => { - pushState(state, _, newUrl); - onInitialised(onLocationChange(0, state, null == newUrl ? void 0 : newUrl.toString())); - }; - history.replaceState = (state, _, newUrl) => { - replaceState(state, _, newUrl); - onInitialised(onLocationChange(1, state, null == newUrl ? void 0 : newUrl.toString())); - }; - $window$.addEventListener("popstate", (event => { - onInitialised(onLocationChange(2, event.state)); - })); - $window$.addEventListener("hashchange", (event => { - onInitialised(onLocationChange(3, {}, event.newURL, event.oldURL)); - })); - $window$.addEventListener("ptupdate", (() => { - readNextScript(worker, winCtxs[$winId$]); - })); - doc.addEventListener("visibilitychange", (() => worker.postMessage([ 14, $winId$, doc.visibilityState ]))); - winCtxs[$winId$] = { - $winId$: $winId$, - $window$: $window$ - }; - winCtxs[$winId$].$startTime$ = performance.now(); - { - const winType = $winId$ === $parentWinId$ ? "top" : "iframe"; - logMain(`Registered ${winType} window ${normalizedWinId($winId$)}`); - } - "complete" === doc.readyState ? sendInitEnvData() : $window$.addEventListener("load", sendInitEnvData); - } - }; - const onMessageFromWebWorker = (worker, msg, winCtx) => { - if (4 === msg[0]) { - registerWindow(worker, randomId(), mainWindow); - } else { - winCtx = winCtxs[msg[1]]; - winCtx && (7 === msg[0] ? requestAnimationFrame((() => readNextScript(worker, winCtx))) : 6 === msg[0] && ((worker, winCtx, instanceId, errorMsg, scriptElm) => { - scriptElm = winCtx.$window$.document.querySelector(`[data-ptid="${instanceId}"]`); - if (scriptElm) { - errorMsg ? scriptElm.dataset.pterror = errorMsg : scriptElm.type += "-x"; - delete scriptElm.dataset.ptid; - } - readNextScript(worker, winCtx); - })(worker, winCtx, msg[2], msg[3])); - } - }; - const readMainPlatform = () => { - const elm = docImpl.createElement("i"); - const textNode = docImpl.createTextNode(""); - const comment = docImpl.createComment(""); - const frag = docImpl.createDocumentFragment(); - const shadowRoot = docImpl.createElement("p").attachShadow({ - mode: "open" - }); - const intersectionObserver = getGlobalConstructor(mainWindow, "IntersectionObserver"); - const mutationObserver = getGlobalConstructor(mainWindow, "MutationObserver"); - const resizeObserver = getGlobalConstructor(mainWindow, "ResizeObserver"); - const perf = mainWindow.performance; - const screen = mainWindow.screen; - const impls = [ [ mainWindow.history ], [ perf ], [ perf.navigation ], [ perf.timing ], [ screen ], [ screen.orientation ], [ mainWindow.visualViewport ], [ intersectionObserver, 12 ], [ mutationObserver, 12 ], [ resizeObserver, 12 ], [ textNode ], [ comment ], [ frag ], [ shadowRoot ], [ elm ], [ elm.attributes ], [ elm.classList ], [ elm.dataset ], [ elm.style ], [ docImpl ], [ docImpl.doctype ] ]; - const initialInterfaces = [ readImplementation("Window", mainWindow), readImplementation("Node", textNode) ]; - const $config$ = JSON.stringify(config, ((k, v) => { - if ("function" == typeof v) { - v = String(v); - v.startsWith(k + "(") && (v = "function " + v); - } - return v; - })); - const initWebWorkerData = { - $config$: $config$, - $interfaces$: readImplementations(impls, initialInterfaces), - $libPath$: new URL(libPath, mainWindow.location) + "", - $origin$: origin, - $localStorage$: readStorage("localStorage"), - $sessionStorage$: readStorage("sessionStorage") - }; - addGlobalConstructorUsingPrototype(initWebWorkerData.$interfaces$, mainWindow, "IntersectionObserverEntry"); - return initWebWorkerData; - }; - const readMainInterfaces = () => { - const elms = Object.getOwnPropertyNames(mainWindow).map((interfaceName => ((doc, interfaceName, r, tag) => { - r = interfaceName.match(/^(HTML|SVG)(.+)Element$/); - if (r) { - tag = r[2]; - return "S" == interfaceName[0] ? doc.createElementNS("http://www.w3.org/2000/svg", svgConstructorTags[tag] || tag.slice(0, 2).toLowerCase() + tag.slice(2)) : doc.createElement(htmlConstructorTags[tag] || tag); - } - })(docImpl, interfaceName))).filter((elm => elm)).map((elm => [ elm ])); - return readImplementations(elms, []); - }; - const cstrs = new Set([ "Object" ]); - const readImplementations = (impls, interfaces) => { - const cstrImpls = impls.filter((implData => implData[0])).map((implData => { - const impl = implData[0]; - const interfaceType = implData[1]; - const cstrName = getConstructorName(impl); - const CstrPrototype = mainWindow[cstrName].prototype; - return [ cstrName, CstrPrototype, impl, interfaceType ]; - })); - cstrImpls.map((([cstrName, CstrPrototype, impl, intefaceType]) => readOwnImplementation(cstrs, interfaces, cstrName, CstrPrototype, impl, intefaceType))); - return interfaces; - }; - const readImplementation = (cstrName, impl, memberName) => { - let interfaceMembers = []; - let interfaceInfo = [ cstrName, "Object", interfaceMembers ]; - for (memberName in impl) { - readImplementationMember(interfaceMembers, impl, memberName); - } - return interfaceInfo; - }; - const readOwnImplementation = (cstrs, interfaces, cstrName, CstrPrototype, impl, interfaceType) => { - if (!cstrs.has(cstrName)) { - cstrs.add(cstrName); - const SuperCstr = Object.getPrototypeOf(CstrPrototype); - const superCstrName = getConstructorName(SuperCstr); - const interfaceMembers = []; - const propDescriptors = Object.getOwnPropertyDescriptors(CstrPrototype); - readOwnImplementation(cstrs, interfaces, superCstrName, SuperCstr, impl, interfaceType); - for (const memberName in propDescriptors) { - readImplementationMember(interfaceMembers, impl, memberName); - } - interfaces.push([ cstrName, superCstrName, interfaceMembers, interfaceType, getNodeName(impl) ]); - } - }; - const readImplementationMember = (interfaceMembers, implementation, memberName, value, memberType, cstrName) => { - try { - if (isValidMemberName(memberName) && isNaN(memberName[0]) && "all" !== memberName) { - value = implementation[memberName]; - memberType = typeof value; - if ("function" === memberType) { - (String(value).includes("[native") || Object.getPrototypeOf(implementation)[memberName]) && interfaceMembers.push([ memberName, 5 ]); - } else if ("object" === memberType && null != value) { - cstrName = getConstructorName(value); - "Object" !== cstrName && self[cstrName] && interfaceMembers.push([ memberName, value.nodeType || cstrName ]); - } else { - "symbol" !== memberType && (memberName.toUpperCase() === memberName ? interfaceMembers.push([ memberName, 6, value ]) : interfaceMembers.push([ memberName, 6 ])); - } - } - } catch (e) { - console.warn(e); - } - }; - const readStorage = storageName => { - let items = []; - let i = 0; - let l = len(mainWindow[storageName]); - let key; - for (;i < l; i++) { - key = mainWindow[storageName].key(i); - items.push([ key, mainWindow[storageName].getItem(key) ]); - } - return items; - }; - const getGlobalConstructor = (mainWindow, cstrName) => void 0 !== mainWindow[cstrName] ? new mainWindow[cstrName](noop) : 0; - const addGlobalConstructorUsingPrototype = ($interfaces$, mainWindow, cstrName) => { - void 0 !== mainWindow[cstrName] && $interfaces$.push([ cstrName, "Object", Object.keys(mainWindow[cstrName].prototype).map((propName => [ propName, 6 ])), 12 ]); - }; - let worker; - (receiveMessage => { - const swContainer = window.navigator.serviceWorker; - return swContainer.getRegistration().then((swRegistration => { - swContainer.addEventListener("message", (ev => receiveMessage(ev.data, (accessRsp => swRegistration.active && swRegistration.active.postMessage(accessRsp))))); - return (worker, msg) => { - 0 === msg[0] ? worker.postMessage([ 1, readMainPlatform() ]) : 2 === msg[0] ? worker.postMessage([ 3, readMainInterfaces() ]) : onMessageFromWebWorker(worker, msg); - }; - })); - })(((accessReq, responseCallback) => mainAccessHandler(worker, accessReq).then(responseCallback))).then((onMessageHandler => { - if (onMessageHandler) { - worker = new Worker(libPath + "partytown-ww-sw.js?v=0.8.0", { - name: "Partytown 🎉" - }); - worker.onmessage = ev => { - const msg = ev.data; - 12 === msg[0] ? mainAccessHandler(worker, msg[1]) : onMessageHandler(worker, msg); - }; - logMain("Created Partytown web worker (0.8.0)"); - worker.onerror = ev => console.error("Web Worker Error", ev); - mainWindow.addEventListener("pt1", (ev => registerWindow(worker, getAndSetInstanceId(ev.detail.frameElement), ev.detail))); - } - })); -})(window); diff --git a/static/~partytown/debug/partytown-sw.js b/static/~partytown/debug/partytown-sw.js deleted file mode 100644 index 38101ad..0000000 --- a/static/~partytown/debug/partytown-sw.js +++ /dev/null @@ -1,59 +0,0 @@ -/* Partytown 0.8.0 - MIT builder.io */ -const resolves = new Map; - -const swMessageError = (accessReq, $error$) => ({ - $msgId$: accessReq.$msgId$, - $error$: $error$ -}); - -const httpRequestFromWebWorker = req => new Promise((async resolve => { - const accessReq = await req.clone().json(); - const responseData = await (accessReq => new Promise((async resolve => { - const clients = await self.clients.matchAll(); - const client = [ ...clients ].sort(((a, b) => a.url > b.url ? -1 : a.url < b.url ? 1 : 0))[0]; - if (client) { - const timeout = 12e4; - const msgResolve = [ resolve, setTimeout((() => { - resolves.delete(accessReq.$msgId$); - resolve(swMessageError(accessReq, "Timeout")); - }), timeout) ]; - resolves.set(accessReq.$msgId$, msgResolve); - client.postMessage(accessReq); - } else { - resolve(swMessageError(accessReq, "NoParty")); - } - })))(accessReq); - resolve(response(JSON.stringify(responseData), "application/json")); -})); - -const response = (body, contentType) => new Response(body, { - headers: { - "content-type": contentType || "text/html", - "Cache-Control": "no-store" - } -}); - -self.oninstall = () => self.skipWaiting(); - -self.onactivate = () => self.clients.claim(); - -self.onmessage = ev => { - const accessRsp = ev.data; - const r = resolves.get(accessRsp.$msgId$); - if (r) { - resolves.delete(accessRsp.$msgId$); - clearTimeout(r[1]); - r[0](accessRsp); - } -}; - -self.onfetch = ev => { - const req = ev.request; - const url = new URL(req.url); - const pathname = url.pathname; - if (pathname.endsWith("sw.html")) { - ev.respondWith(response('