From 13e7f0d8709beaabde0f5669b52630f94ff0d505 Mon Sep 17 00:00:00 2001 From: Ivan Porto Wigner <47715589+iivvaannxx@users.noreply.github.com> Date: Wed, 13 Mar 2024 15:54:10 +0000 Subject: [PATCH 1/9] chore: removed package-lock.json --- package-lock.json | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 3f67905a..00000000 --- a/package-lock.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "astro-qwik", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "astro-qwik", - "version": "0.0.1", - "devDependencies": { - "@types/node": "^20.8.9" - } - }, - "node_modules/@types/node": { - "version": "20.8.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.9.tgz", - "integrity": "sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - } - } -} From 9fe76e60f0046299d97a122602349017a38c6200 Mon Sep 17 00:00:00 2001 From: Ivan Porto Wigner <47715589+iivvaannxx@users.noreply.github.com> Date: Wed, 13 Mar 2024 15:56:18 +0000 Subject: [PATCH 2/9] docs: update contributing.md to clarify pnpm usage --- contributing.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contributing.md b/contributing.md index 5a0a02a8..42d98f52 100644 --- a/contributing.md +++ b/contributing.md @@ -12,7 +12,9 @@ You can quickly get up and running with the playground by doing the following: 2. Once the dependencies are installed, you can build by running `pnpm build` in `apps/astro-demo` -That's it! +That's it! + +Note that we only use pnpm. Please don't make any PR's that introduce lock files of other package managers. **dev:** From 93b1ff322f51ab18a1afb6afb8d29505ac4fb4ee Mon Sep 17 00:00:00 2001 From: Ivan Porto Wigner <47715589+iivvaannxx@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:00:07 +0000 Subject: [PATCH 3/9] chore: added biome for linting and formatting. --- .vscode/extensions.json | 3 ++ .vscode/settings.json | 15 +++++++ biome.json | 94 ++++++++++++++++++++++++++++++++++++++++ package.json | 11 +++-- pnpm-lock.yaml | 95 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 215 insertions(+), 3 deletions(-) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 biome.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..f95e7286 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["biomejs.biome", "usernamehw.errorlens", "astro-build.astro-vscode"] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..e96649b7 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "[javascript][typescript][json][jsonc][javascriptreact][typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "quickfix.biome": "explicit", + "source.organizeImports.biome": "always" + }, + + // Prevent conflicts between tools. + "eslint.enable": false, + "prettier.enable": false +} diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..9b8bf438 --- /dev/null +++ b/biome.json @@ -0,0 +1,94 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.6.1/schema.json", + "files": { + "ignore": [".git", "build", "dist", "node_modules"] + }, + + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "space", + "lineEnding": "lf", + "lineWidth": 90 + }, + + "javascript": { + "formatter": { + "arrowParentheses": "always", + "bracketSameLine": false, + "bracketSpacing": true, + "enabled": true, + "jsxQuoteStyle": "double", + "quoteProperties": "preserve", + "quoteStyle": "double", + "semicolons": "always", + "trailingComma": "none" + } + }, + + "json": { + "formatter": { + "enabled": true + } + }, + + "linter": { + "enabled": true, + "rules": { + "a11y": { + "recommended": true + }, + "complexity": { + "recommended": true, + "useSimplifiedLogicExpression": "warn" + }, + "correctness": { + "noUndeclaredVariables": "error", + "recommended": true + }, + "performance": { + "recommended": true + }, + "recommended": true, + "style": { + "recommended": true, + "useBlockStatements": "error", + "useCollapsedElseIf": "warn", + "useNamingConvention": { + "level": "error", + "options": { + "strictCase": false + } + }, + "useShorthandArrayType": "error", + "useShorthandAssign": "error", + "useSingleCaseStatement": "error" + }, + "suspicious": { + "noApproximativeNumericConstant": "error", + "noMisrefactoredShorthandAssign": "warn", + "recommended": true + } + } + }, + + "organizeImports": { + "enabled": true + }, + + "overrides": [ + { + "include": [".vscode/**"], + "json": { + "parser": { + "allowComments": true + } + } + } + ], + + "vcs": { + "clientKind": "git", + "enabled": true + } +} diff --git a/package.json b/package.json index 7412132a..f0dbb949 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,13 @@ { "name": "qwikdev-astro", "version": "0.0.0", - "scripts": {}, - "dependencies": { - "@changesets/cli": "^2.27.1" + "scripts": { + "check": "biome check --no-errors-on-unmatched --files-ignore-unknown=true .", + "format": "biome check --apply --no-errors-on-unmatched --files-ignore-unknown=true ." + }, + "dependencies": {}, + "devDependencies": { + "@changesets/cli": "^2.27.1", + "@biomejs/biome": "1.6.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fd88a67f..17d6b0ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,10 @@ importers: '@changesets/cli': specifier: ^2.27.1 version: 2.27.1 + devDependencies: + '@biomejs/biome': + specifier: 1.6.1 + version: 1.6.1 apps/astro-demo: dependencies: @@ -430,6 +434,94 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@biomejs/biome@1.6.1: + resolution: {integrity: sha512-SILQvA2S0XeaOuu1bivv6fQmMo7zMfr2xqDEN+Sz78pGbAKZnGmg0emsXjQWoBY/RVm9kPCgX+aGEpZZTYaM7w==} + engines: {node: '>=14.*'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.6.1 + '@biomejs/cli-darwin-x64': 1.6.1 + '@biomejs/cli-linux-arm64': 1.6.1 + '@biomejs/cli-linux-arm64-musl': 1.6.1 + '@biomejs/cli-linux-x64': 1.6.1 + '@biomejs/cli-linux-x64-musl': 1.6.1 + '@biomejs/cli-win32-arm64': 1.6.1 + '@biomejs/cli-win32-x64': 1.6.1 + dev: true + + /@biomejs/cli-darwin-arm64@1.6.1: + resolution: {integrity: sha512-KlvY00iB9T/vFi4m/GXxEyYkYnYy6aw06uapzUIIdiMMj7I/pmZu7CsZlzWdekVD0j+SsQbxdZMsb0wPhnRSsg==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-darwin-x64@1.6.1: + resolution: {integrity: sha512-jP4E8TXaQX5e3nvRJSzB+qicZrdIDCrjR0sSb1DaDTx4JPZH5WXq/BlTqAyWi3IijM+IYMjWqAAK4kOHsSCzxw==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64-musl@1.6.1: + resolution: {integrity: sha512-YdkDgFecdHJg7PJxAMaZIixVWGB6St4yH08BHagO0fEhNNiY8cAKEVo2mcXlsnEiTMpeSEAY9VxLUrVT3IVxpw==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64@1.6.1: + resolution: {integrity: sha512-nxD1UyX3bWSl/RSKlib/JsOmt+652/9yieogdSC/UTLgVCZYOF7u8L/LK7kAa0Y4nA8zSPavAQTgko7mHC2ObA==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64-musl@1.6.1: + resolution: {integrity: sha512-aSISIDmxq04NNy7tm4x9rBk2vH0ub2VDIE4outEmdC2LBtEJoINiphlZagx/FvjbsqUfygent9QUSn0oREnAXg==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64@1.6.1: + resolution: {integrity: sha512-BYAzenlMF3QdngjNFw9QVBXKGNzeecqwF3pwDgUGEvU7OJpn1/lyVkJVxYPtVGRNdjQ9e6l/s8NjKuBpW/ZR4Q==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-arm64@1.6.1: + resolution: {integrity: sha512-/eCHQKZ1kEawUpkSuXq4urtxMsD1P1678OPG3zNKt3ru16AqqspLdO3jzBe3k74xCPYnQ36e9Yqc97Mo0qgPtg==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-x64@1.6.1: + resolution: {integrity: sha512-5TUZbzBwnDLFxLVGEPsorNi6eC2Gt+z4Oei9Qvq0M/4c4/mjZ96ABgwao/tMxf4ZBr/qyy2YdvF+gX9Rc+xC0A==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@builder.io/qwik@1.5.1(@types/node@20.10.0)(undici@5.28.0): resolution: {integrity: sha512-xjGVH6xx/ADN+ACSfvoZQWIlN6B4bTcL1gpoijVKyx/Wed7U7QPgVq2VIJ92Vhr6Y+uKiUaoNlsuY5s4PhVQkQ==} engines: {node: '>=16.8.0 <18.0.0 || >=18.11'} @@ -3990,6 +4082,7 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + requiresBuild: true /safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} @@ -4312,6 +4405,7 @@ packages: /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + requiresBuild: true dependencies: safe-buffer: 5.2.1 @@ -4710,6 +4804,7 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + requiresBuild: true /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} From 7fb0a1b075fda28b13c383bde18be1d9d090f6d4 Mon Sep 17 00:00:00 2001 From: Ivan Porto Wigner <47715589+iivvaannxx@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:01:03 +0000 Subject: [PATCH 4/9] chore: removed astro extension recommendation --- .vscode/extensions.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index f95e7286..60793a3a 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["biomejs.biome", "usernamehw.errorlens", "astro-build.astro-vscode"] -} \ No newline at end of file + "recommendations": ["biomejs.biome", "usernamehw.errorlens"] +} From c47446c863b782fe6f3857dc3b46d8395383d6c1 Mon Sep 17 00:00:00 2001 From: Ivan Porto Wigner <47715589+iivvaannxx@users.noreply.github.com> Date: Wed, 13 Mar 2024 17:35:24 +0000 Subject: [PATCH 5/9] fix: some linter errors. mid process. --- apps/astro-demo/astro.config.mjs | 9 ++- .../src/components/qwik/counter.tsx | 4 +- .../astro-demo/src/components/qwik/say-hi.tsx | 1 + .../src/components/react/react-counter.tsx | 6 +- libs/qwikdev-astro/env.d.ts | 2 +- libs/qwikdev-astro/package.json | 7 +-- libs/qwikdev-astro/server.ts | 62 +++++++++---------- .../fs-move.d.ts | 9 ++- libs/qwikdev-astro/src/index.ts | 10 +-- 9 files changed, 54 insertions(+), 56 deletions(-) rename libs/qwikdev-astro/src/{cutom_types => custom_types}/fs-move.d.ts (76%) diff --git a/apps/astro-demo/astro.config.mjs b/apps/astro-demo/astro.config.mjs index 49c2688d..429ecd01 100644 --- a/apps/astro-demo/astro.config.mjs +++ b/apps/astro-demo/astro.config.mjs @@ -1,4 +1,5 @@ import { defineConfig } from "astro/config"; + import qwik from "@qwikdev/astro"; import node from "@astrojs/node"; import react from "@astrojs/react"; @@ -7,10 +8,8 @@ import react from "@astrojs/react"; export default defineConfig({ output: "server", adapter: node({ - mode: "standalone", + mode: "standalone" }), - integrations: [ - qwik({ include: "**/qwik/*" }), - react({ include: "**/react/*" }), - ], + + integrations: [qwik({ include: "**/qwik/*" }), react({ include: "**/react/*" })] }); diff --git a/apps/astro-demo/src/components/qwik/counter.tsx b/apps/astro-demo/src/components/qwik/counter.tsx index 803d90f2..329dd69b 100644 --- a/apps/astro-demo/src/components/qwik/counter.tsx +++ b/apps/astro-demo/src/components/qwik/counter.tsx @@ -5,7 +5,9 @@ export const Counter = component$<{ initial: number }>((props) => { return ( <> - + ); }); diff --git a/apps/astro-demo/src/components/qwik/say-hi.tsx b/apps/astro-demo/src/components/qwik/say-hi.tsx index 41a8cffc..951bbd9d 100644 --- a/apps/astro-demo/src/components/qwik/say-hi.tsx +++ b/apps/astro-demo/src/components/qwik/say-hi.tsx @@ -3,6 +3,7 @@ import { component$, sync$ } from "@builder.io/qwik"; export const SayHi = component$(() => { return ( ; + return ( + + ); }; diff --git a/libs/qwikdev-astro/env.d.ts b/libs/qwikdev-astro/env.d.ts index 8c34fb45..f964fe0c 100644 --- a/libs/qwikdev-astro/env.d.ts +++ b/libs/qwikdev-astro/env.d.ts @@ -1 +1 @@ -/// \ No newline at end of file +/// diff --git a/libs/qwikdev-astro/package.json b/libs/qwikdev-astro/package.json index 1a8b101b..4b1db342 100644 --- a/libs/qwikdev-astro/package.json +++ b/libs/qwikdev-astro/package.json @@ -27,12 +27,7 @@ ".": "./src/index.ts", "./package.json": "./package.json" }, - "files": [ - "src", - "src/index.ts", - "server.ts", - "env.d.ts" - ], + "files": ["src", "src/index.ts", "server.ts", "env.d.ts"], "keywords": [ "astro-integration", "astro-component", diff --git a/libs/qwikdev-astro/server.ts b/libs/qwikdev-astro/server.ts index c43e2398..5d10e94a 100644 --- a/libs/qwikdev-astro/server.ts +++ b/libs/qwikdev-astro/server.ts @@ -1,8 +1,9 @@ -import { jsx } from "@builder.io/qwik"; -import { getQwikLoaderScript, renderToString } from "@builder.io/qwik/server"; -import { manifest } from "@qwik-client-manifest"; +import { jsx, type FunctionComponent, type JSXNode } from "@builder.io/qwik"; import { isDev } from "@builder.io/qwik/build"; +import { getQwikLoaderScript, renderToString } from "@builder.io/qwik/server"; import type { QwikManifest, SymbolMapperFn } from "@builder.io/qwik/optimizer"; + +import { manifest } from "@qwik-client-manifest"; import type { SSRResult } from "astro"; const qwikLoaderAdded = new WeakMap(); @@ -11,38 +12,36 @@ type RendererContext = { result: SSRResult; }; -async function check( - this: RendererContext, - Component: any, -) { +async function check(this: RendererContext, component: unknown) { try { - if (typeof Component !== "function") return false; + if (typeof component !== "function") { + return false; + } - if (Component.name !== "QwikComponent") { + if (component.name !== "QwikComponent") { return false; } return true; } catch (error) { console.error("Error in check function of @qwikdev/astro: ", error); - return false; } } -export async function renderToStaticMarkup( +export async function renderToStaticMarkup>( this: RendererContext, - Component: any, - props: Record, + component: T, + props: Record, slotted: any ) { try { - if (Component.name !== "QwikComponent") { + if (typeof component === "function" && component.name !== "QwikComponent") { return; } - const slots: { [key: string]: any } = {}; - let defaultSlot; + const slots: { [key: string]: unknown } = {}; + let defaultSlot: JSXNode<'span'>; // getting functions from index causes a rollup issue. for (const [key, value] of Object.entries(slotted)) { @@ -50,7 +49,7 @@ export async function renderToStaticMarkup( dangerouslySetInnerHTML: String(value), style: "display: contents", ...(key !== "default" && { "q:slot": key }), - "q:key": Math.random().toString(26).split(".").pop(), + "q:key": Math.random().toString(26).split(".").pop() }); if (key === "default") { @@ -60,9 +59,9 @@ export async function renderToStaticMarkup( } } - const app = jsx(Component, { + const app = jsx(component, { ...props, - children: [defaultSlot, ...Object.values(slots)], + children: [defaultSlot, ...Object.values(slots)] }); /** @@ -74,11 +73,13 @@ export async function renderToStaticMarkup( */ const symbolMapper: SymbolMapperFn = (symbolName: string) => { /* don't want to add a file path for sync$ */ - if (symbolName === "") return; + if (symbolName === "") { + return; + } return [ symbolName, - `/${process.env.SRC_DIR}/` + symbolName.toLocaleLowerCase() + ".js", + `/${process.env.SRC_DIR}/${symbolName.toLocaleLowerCase()}.js` ]; }; @@ -98,10 +99,10 @@ export async function renderToStaticMarkup( containerAttributes: { style: "display: contents" }, manifest: isDev ? ({} as QwikManifest) : manifest, ...(manifest ? undefined : { symbolMapper }), - qwikLoader: { include: "never" }, + qwikLoader: { include: "never" } }); - const PREFETCH_SERVICE_WORKER = `((qc, c, q, v, b, h) => { + const prefetchServiceWorker = `((qc, c, q, v, b, h) => { b = qc.getAttribute("q:base"); h = qc.getAttribute("q:manifest-hash"); c.register("/qwik-prefetch-service-worker.js", { @@ -124,7 +125,7 @@ export async function renderToStaticMarkup( window.qwikPrefetchSW||(window.qwikPrefetchSW=[]) )`; - const PREFETCH_GRAPH_CODE = `((qc, q, b, h, u) => { + const prefetchGraphCode = `((qc, q, b, h, u) => { q.push([ "graph-url", b || qc.getAttribute("q:base"), @@ -153,7 +154,7 @@ export async function renderToStaticMarkup( ? "" : ` ` } @@ -162,7 +163,7 @@ export async function renderToStaticMarkup( if (!isDev && shouldPrefetchBundles) { scripts += ``; } @@ -179,13 +180,10 @@ export async function renderToStaticMarkup( return { ...result, - html: htmlWithScripts, + html: htmlWithScripts }; } catch (error) { - console.error( - "Error in renderToStaticMarkup function of @qwikdev/astro: ", - error - ); + console.error("Error in renderToStaticMarkup function of @qwikdev/astro: ", error); throw error; } } @@ -193,5 +191,5 @@ export async function renderToStaticMarkup( export default { renderToStaticMarkup, supportsAstroStaticSlot: true, - check, + check }; diff --git a/libs/qwikdev-astro/src/cutom_types/fs-move.d.ts b/libs/qwikdev-astro/src/custom_types/fs-move.d.ts similarity index 76% rename from libs/qwikdev-astro/src/cutom_types/fs-move.d.ts rename to libs/qwikdev-astro/src/custom_types/fs-move.d.ts index da00937a..a27962fd 100644 --- a/libs/qwikdev-astro/src/cutom_types/fs-move.d.ts +++ b/libs/qwikdev-astro/src/custom_types/fs-move.d.ts @@ -1,10 +1,10 @@ declare module 'fs-move' { type MoveOptions = { - overwrite?: bool, - merge?: bool, - purge?: bool, - filter?: (src: string, dest: string) => bool + overwrite?: boolean, + merge?: boolean, + purge?: boolean, + filter?: (src: string, dest: string) => boolean }; type MoveCallback = (err: any) => unknown; @@ -14,5 +14,4 @@ declare module 'fs-move' { async function move(src: string, dest: string, options: MoveOptions, callback: MoveCallback); export default move; - } \ No newline at end of file diff --git a/libs/qwikdev-astro/src/index.ts b/libs/qwikdev-astro/src/index.ts index cce0ecd7..9b01e9bf 100644 --- a/libs/qwikdev-astro/src/index.ts +++ b/libs/qwikdev-astro/src/index.ts @@ -15,7 +15,7 @@ import { qwikVite } from "@builder.io/qwik/optimizer"; // node import { dirname, join, normalize, relative, resolve } from "node:path"; import { rmSync } from "node:fs"; -import os from "os"; +import os from "node:os"; import ts from "typescript"; import fs from "node:fs"; import { lstat, readdir, readlink } from "node:fs/promises"; @@ -38,9 +38,9 @@ export default defineIntegration({ exclude: FilternPatternSchema.optional(), }), setup({ options }) { - let distDir: string = ""; - let srcDir: string = ""; - let tempDir = join("tmp-" + hash()); + let distDir = ""; + let srcDir = ""; + let tempDir = join(`tmp-${hash()}`); let astroConfig: AstroConfig | null = null; let entrypoints: Promise; const filter = createFilter(options.include, options.exclude); @@ -63,7 +63,7 @@ export default defineIntegration({ * Because Astro uses the same port for both dev and preview, we need to unregister the SW in order to avoid a stale SW in dev mode. */ if (command === "dev") { - const unregisterSW = `navigator.serviceWorker.getRegistration().then((r) => r && r.unregister())`; + const unregisterSW = "navigator.serviceWorker.getRegistration().then((r) => r && r.unregister())"; injectScript("head-inline", unregisterSW); } From 56fde605878b0244345f29e81c121b575eb543dc Mon Sep 17 00:00:00 2001 From: Ivan Porto Wigner <47715589+iivvaannxx@users.noreply.github.com> Date: Wed, 13 Mar 2024 20:27:00 +0100 Subject: [PATCH 6/9] fix: all linting errors + style:code formatting --- apps/astro-demo/astro.config.mjs | 2 +- libs/qwikdev-astro/env.d.ts | 27 ++ libs/qwikdev-astro/server.ts | 29 +- .../src/custom_types/fs-move.d.ts | 17 - libs/qwikdev-astro/src/index.ts | 170 ++++---- libs/qwikdev-astro/tsconfig.json | 8 +- pnpm-lock.yaml | 391 +++++++++--------- 7 files changed, 334 insertions(+), 310 deletions(-) delete mode 100644 libs/qwikdev-astro/src/custom_types/fs-move.d.ts diff --git a/apps/astro-demo/astro.config.mjs b/apps/astro-demo/astro.config.mjs index 429ecd01..8546a08b 100644 --- a/apps/astro-demo/astro.config.mjs +++ b/apps/astro-demo/astro.config.mjs @@ -1,8 +1,8 @@ import { defineConfig } from "astro/config"; -import qwik from "@qwikdev/astro"; import node from "@astrojs/node"; import react from "@astrojs/react"; +import qwik from "@qwikdev/astro"; // https://astro.build/config export default defineConfig({ diff --git a/libs/qwikdev-astro/env.d.ts b/libs/qwikdev-astro/env.d.ts index f964fe0c..8b16e643 100644 --- a/libs/qwikdev-astro/env.d.ts +++ b/libs/qwikdev-astro/env.d.ts @@ -1 +1,28 @@ /// + +declare module "fs-move" { + type MoveOptions = { + overwrite?: boolean; + merge?: boolean; + purge?: boolean; + filter?: (src: string, dest: string) => boolean; + }; + + type MoveCallback = (err: unknown) => unknown; + + declare function move(src: string, dest: string, callback: MoveCallback): Promise; + declare function move( + src: string, + dest: string, + options: MoveOptions = {} + ): Promise; + + declare function move( + src: string, + dest: string, + options: MoveOptions, + callback: MoveCallback + ): Promise; + + export default move; +} diff --git a/libs/qwikdev-astro/server.ts b/libs/qwikdev-astro/server.ts index 5d10e94a..83577540 100644 --- a/libs/qwikdev-astro/server.ts +++ b/libs/qwikdev-astro/server.ts @@ -1,10 +1,11 @@ -import { jsx, type FunctionComponent, type JSXNode } from "@builder.io/qwik"; -import { isDev } from "@builder.io/qwik/build"; -import { getQwikLoaderScript, renderToString } from "@builder.io/qwik/server"; +import type { SSRResult } from "astro"; + +import { type JSXNode, jsx } from "@builder.io/qwik"; import type { QwikManifest, SymbolMapperFn } from "@builder.io/qwik/optimizer"; +import { isDev } from "@builder.io/qwik/build"; +import { getQwikLoaderScript, renderToString } from "@builder.io/qwik/server"; import { manifest } from "@qwik-client-manifest"; -import type { SSRResult } from "astro"; const qwikLoaderAdded = new WeakMap(); @@ -29,19 +30,21 @@ async function check(this: RendererContext, component: unknown) { } } -export async function renderToStaticMarkup>( +export async function renderToStaticMarkup( this: RendererContext, - component: T, + // biome-ignore lint/suspicious/noExplicitAny: unknown type of component. + component: any, props: Record, + // biome-ignore lint/suspicious/noExplicitAny: unknown type of slotted. slotted: any ) { try { - if (typeof component === "function" && component.name !== "QwikComponent") { + if (component.name !== "QwikComponent") { return; } const slots: { [key: string]: unknown } = {}; - let defaultSlot: JSXNode<'span'>; + let defaultSlot: JSXNode<"span"> | undefined = undefined; // getting functions from index causes a rollup issue. for (const [key, value] of Object.entries(slotted)) { @@ -59,9 +62,10 @@ export async function renderToStaticMarkup boolean - }; - - type MoveCallback = (err: any) => unknown; - - async function move(src: string, dest: string, callback: MoveCallback); - async function move(src: string, dest: string, options: MoveOptions = {}); - async function move(src: string, dest: string, options: MoveOptions, callback: MoveCallback); - - export default move; -} \ No newline at end of file diff --git a/libs/qwikdev-astro/src/index.ts b/libs/qwikdev-astro/src/index.ts index 9b01e9bf..342f9ee3 100644 --- a/libs/qwikdev-astro/src/index.ts +++ b/libs/qwikdev-astro/src/index.ts @@ -1,50 +1,52 @@ +import fs from "node:fs"; +import os from "node:os"; +import fsExtra from "fs-extra"; +import move from "fs-move"; + +import { rmSync } from "node:fs"; +import { lstat, readdir, readlink } from "node:fs/promises"; +import { dirname, join, normalize, relative, resolve } from "node:path"; + import type { AstroConfig } from "astro"; import { z } from "astro/zod"; +import ts from "typescript"; -/** - this project uses astro integration kit. refer to the docs here: https://astro-integration-kit.netlify.app/ -*/ +import { qwikVite } from "@builder.io/qwik/optimizer"; import { createResolver, defineIntegration } from "astro-integration-kit"; import { watchIntegrationPlugin } from "astro-integration-kit/plugins"; -// vite -import { build, createFilter, type InlineConfig } from "vite"; +import { type InlineConfig, build, createFilter } from "vite"; import tsconfigPaths from "vite-tsconfig-paths"; -import { qwikVite } from "@builder.io/qwik/optimizer"; -// node -import { dirname, join, normalize, relative, resolve } from "node:path"; -import { rmSync } from "node:fs"; -import os from "node:os"; -import ts from "typescript"; -import fs from "node:fs"; -import { lstat, readdir, readlink } from "node:fs/promises"; -import fsExtra from "fs-extra"; -import move from "fs-move" - -/* similar to vite's FilterPattern */ +/* Similar to vite's FilterPattern */ const FilternPatternSchema = z.union([ z.string(), z.instanceof(RegExp), z.array(z.union([z.string(), z.instanceof(RegExp)])).readonly(), - z.null(), + z.null() ]); +/** + * This project uses Astro Integration Kit. + * @see https://astro-integration-kit.netlify.app/ + */ + export default defineIntegration({ name: "@qwikdev/astro", plugins: [watchIntegrationPlugin], optionsSchema: z.object({ include: FilternPatternSchema.optional(), - exclude: FilternPatternSchema.optional(), + exclude: FilternPatternSchema.optional() }), + setup({ options }) { let distDir = ""; let srcDir = ""; - let tempDir = join(`tmp-${hash()}`); let astroConfig: AstroConfig | null = null; let entrypoints: Promise; - const filter = createFilter(options.include, options.exclude); + const tempDir = join(`tmp-${hash()}`); + const filter = createFilter(options.include, options.exclude); const { resolve } = createResolver(import.meta.url); return { @@ -54,28 +56,23 @@ export default defineIntegration({ config, command, injectScript, - watchIntegration, + watchIntegration }) => { // Integration HMR watchIntegration(resolve()); - /** - * Because Astro uses the same port for both dev and preview, we need to unregister the SW in order to avoid a stale SW in dev mode. - */ + // Because Astro uses the same port for both dev and preview, we need to unregister the SW in order to avoid a stale SW in dev mode. if (command === "dev") { - const unregisterSW = "navigator.serviceWorker.getRegistration().then((r) => r && r.unregister())"; + const unregisterSW = + "navigator.serviceWorker.getRegistration().then((r) => r && r.unregister())"; injectScript("head-inline", unregisterSW); } // Update the global config astroConfig = config; - // Retrieve Qwik files - // from the project source directory - srcDir = relative( - astroConfig.root.pathname, - astroConfig.srcDir.pathname - ); + // Retrieve Qwik files from the project source directory + srcDir = relative(astroConfig.root.pathname, astroConfig.srcDir.pathname); // used in server.ts for dev mode process.env.SRC_DIR = relative( @@ -84,10 +81,11 @@ export default defineIntegration({ ); entrypoints = getQwikEntrypoints(srcDir, filter); + if ((await entrypoints).length !== 0) { addRenderer({ name: "@qwikdev/astro", - serverEntrypoint: resolve("../server.ts"), + serverEntrypoint: resolve("../server.ts") }); // Update the global dist directory @@ -103,10 +101,11 @@ export default defineIntegration({ build: { rollupOptions: { output: { - inlineDynamicImports: false, - }, - }, + inlineDynamicImports: false + } + } }, + plugins: [ qwikVite({ /* user passed include & exclude config (to use multiple JSX frameworks) */ @@ -120,35 +119,40 @@ export default defineIntegration({ devSsrServer: false, srcDir, client: { - /* In order to make a client build, we need to know + /* + In order to make a client build, we need to know all of the entry points to the application so that we can generate the manifest. */ - input: await entrypoints, + input: await entrypoints }, ssr: { - input: resolve("../server.ts"), - }, + input: resolve("../server.ts") + } }), tsconfigPaths(), { // HACK: override qwikVite's attempt to set `esbuild` to false during dev enforce: "post", - config(config: any) { + config(config) { + // @ts-expect-error - true is assigned, but it's not a valid value, this should be reviewed. config.esbuild = true; return config; - }, - }, - ], - }, + } + } + ] + } }); } }, + "astro:config:done": async ({ config }) => { astroConfig = config; }, + "astro:build:start": async ({ logger }) => { logger.info("astro:build:start"); + if ((await entrypoints).length > 0) { // make sure vite does not parse .astro files await build({ @@ -158,20 +162,23 @@ export default defineIntegration({ { enforce: "pre", name: "astro-noop", + load(id) { if (id.endsWith(".astro")) { return "export default function() {}"; } return null; - }, - }, - ], + } + } + ] } as InlineConfig); + await moveArtifacts(distDir, tempDir); } else { logger.info("No entrypoints found. Skipping build."); } }, + "astro:build:done": async ({ logger }) => { if ((await entrypoints).length > 0 && astroConfig) { let outputPath = @@ -184,7 +191,7 @@ export default defineIntegration({ outputPath = outputPath.substring(3); } - let normalizedPath = normalize(outputPath); + const normalizedPath = normalize(outputPath); process.env.Q_BASE = normalizedPath; await moveArtifacts(tempDir, normalizedPath); @@ -193,16 +200,12 @@ export default defineIntegration({ } else { logger.info("Build finished. No artifacts moved."); } - }, + } }; - }, + } }); -/** - * - * We need to find the Qwik entrypoints so that the client build will run successfully. - * - */ +/** We need to find the Qwik entrypoints so that the client build will run successfully. */ export async function getQwikEntrypoints( dir: string, filter: (id: unknown) => boolean @@ -227,10 +230,7 @@ export async function getQwikEntrypoints( let qwikImportFound = false; ts.forEachChild(sourceFile, function nodeVisitor(node) { - if ( - ts.isImportDeclaration(node) && - ts.isStringLiteral(node.moduleSpecifier) - ) { + if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) { if ( node.moduleSpecifier.text === "@builder.io/qwik" || node.moduleSpecifier.text === "@builder.io/qwik-react" @@ -259,6 +259,7 @@ export function hash() { export async function moveArtifacts(srcDir: string, destDir: string) { // Ensure the destination dir exists, create if not await fsExtra.ensureDir(destDir); + for (const file of await readdir(srcDir)) { // move files from source to destintation, overwrite if they exist await move(join(srcDir, file), join(destDir, file), { @@ -266,42 +267,48 @@ export async function moveArtifacts(srcDir: string, destDir: string) { merge: true, // Don't overwrite any files, as this would overwrite astro-generated files with files from public. // This matches astro's default behavior of replacing files in public with generated pages on naming-conflicts. - overwrite: false, + overwrite: false }); } } export async function crawlDirectory(dir: string): Promise { - // Absolute path for duplicate-detection - dir = resolve(dir); - /** * Recursively follows a symlink. - * + * * @param path symlink to follow * @returns `[target, stat]` where `target` is the final target path and `stat` is the {@link fs.Stats} of the target or `undefined` if the target does not exist. */ const readLinkRec = async (path: string): Promise<[string, fs.Stats | undefined]> => { const target = resolve(dirname(path), await readlink(path)); - const stat = await lstat(target).catch(e => { if (e.code === 'ENOENT') return undefined; else throw e; }); - if (stat !== undefined && stat.isSymbolicLink()) + const stat = await lstat(target).catch((e) => { + if (e.code === "ENOENT") { + return undefined; + } + + throw e; + }); + + if (stat?.isSymbolicLink()) { return readLinkRec(target); + } + return [target, stat]; - } + }; /** * Recurse on the passed directory. Follows symlinks and stops when a loop is detected (i.e., `dir` has already been visited) - * + * * @param dir The current directory to recursively list * @param visitedDirs Directories that have already been visited * @returns A recursive list of files in the passed directory */ const crawl = async (dir: string, visitedDirs: string[]): Promise => { - if (visitedDirs.includes(dir)) + if (visitedDirs.includes(dir)) { return []; + } visitedDirs.push(dir); - const entries = await readdir(dir, { withFileTypes: true }); const files = await Promise.all( @@ -309,13 +316,18 @@ export async function crawlDirectory(dir: string): Promise { const fullPath = join(dir, entry.name); if (entry.isSymbolicLink()) { - return readLinkRec(fullPath).then(([target, stat]): string | string[] | Promise => { - if (stat === undefined) return []; // target does not exist - return stat.isDirectory() ? crawl(target, visitedDirs) : target; - }); - } else { - return entry.isDirectory() ? crawl(fullPath, visitedDirs) : fullPath; + return readLinkRec(fullPath).then( + ([target, stat]): string | string[] | Promise => { + if (stat === undefined) { + return []; // target does not exist + } + + return stat.isDirectory() ? crawl(target, visitedDirs) : target; + } + ); } + + return entry.isDirectory() ? crawl(fullPath, visitedDirs) : fullPath; }) ); @@ -323,5 +335,7 @@ export async function crawlDirectory(dir: string): Promise { return files.flat(); }; - return crawl(dir, []); + // Absolute path for duplicate-detection + const absoluteDir = resolve(dir); + return crawl(absoluteDir, []); } diff --git a/libs/qwikdev-astro/tsconfig.json b/libs/qwikdev-astro/tsconfig.json index 8e8877a9..9172ea0b 100644 --- a/libs/qwikdev-astro/tsconfig.json +++ b/libs/qwikdev-astro/tsconfig.json @@ -3,15 +3,17 @@ "compilerOptions": { "jsx": "react-jsx", "jsxImportSource": "@builder.io/qwik", + "outDir": "./dist", + "module": "ESNext", "moduleResolution": "Bundler", + "noEmit": false, "allowImportingTsExtensions": false, + "baseUrl": ".", "paths": { - "@builder.io/qwik/build": [ - "node_modules/@builder.io/qwik/build/index.d.ts" - ] + "@builder.io/qwik/build": ["node_modules/@builder.io/qwik/build/index.d.ts"] } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17d6b0ab..6b09dd6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,14 +7,13 @@ settings: importers: .: - dependencies: - '@changesets/cli': - specifier: ^2.27.1 - version: 2.27.1 devDependencies: '@biomejs/biome': specifier: 1.6.1 version: 1.6.1 + '@changesets/cli': + specifier: ^2.27.1 + version: 2.27.1 apps/astro-demo: dependencies: @@ -391,7 +390,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - dev: false + dev: true /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} @@ -557,7 +556,7 @@ packages: prettier: 2.8.8 resolve-from: 5.0.0 semver: 7.5.4 - dev: false + dev: true /@changesets/assemble-release-plan@6.0.0: resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} @@ -568,13 +567,13 @@ packages: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 semver: 7.5.4 - dev: false + dev: true /@changesets/changelog-git@0.2.0: resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} dependencies: '@changesets/types': 6.0.0 - dev: false + dev: true /@changesets/cli@2.27.1: resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} @@ -612,7 +611,7 @@ packages: spawndamnit: 2.0.0 term-size: 2.2.1 tty-table: 4.2.3 - dev: false + dev: true /@changesets/config@3.0.0: resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} @@ -624,13 +623,13 @@ packages: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 micromatch: 4.0.5 - dev: false + dev: true /@changesets/errors@0.2.0: resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} dependencies: extendable-error: 0.1.7 - dev: false + dev: true /@changesets/get-dependents-graph@2.0.0: resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} @@ -640,7 +639,7 @@ packages: chalk: 2.4.2 fs-extra: 7.0.1 semver: 7.5.4 - dev: false + dev: true /@changesets/get-release-plan@4.0.0: resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} @@ -652,11 +651,11 @@ packages: '@changesets/read': 0.6.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - dev: false + dev: true /@changesets/get-version-range-type@0.4.0: resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - dev: false + dev: true /@changesets/git@3.0.0: resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} @@ -668,20 +667,20 @@ packages: is-subdir: 1.2.0 micromatch: 4.0.5 spawndamnit: 2.0.0 - dev: false + dev: true /@changesets/logger@0.1.0: resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} dependencies: chalk: 2.4.2 - dev: false + dev: true /@changesets/parse@0.4.0: resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} dependencies: '@changesets/types': 6.0.0 js-yaml: 3.14.1 - dev: false + dev: true /@changesets/pre@2.0.0: resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} @@ -691,7 +690,7 @@ packages: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - dev: false + dev: true /@changesets/read@0.6.0: resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} @@ -704,15 +703,15 @@ packages: chalk: 2.4.2 fs-extra: 7.0.1 p-filter: 2.1.0 - dev: false + dev: true /@changesets/types@4.1.0: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - dev: false + dev: true /@changesets/types@6.0.0: resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - dev: false + dev: true /@changesets/write@0.3.0: resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} @@ -722,7 +721,7 @@ packages: fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 - dev: false + dev: true /@esbuild/android-arm64@0.19.8: resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} @@ -948,7 +947,7 @@ packages: '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 - dev: false + dev: true /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} @@ -959,7 +958,7 @@ packages: fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 - dev: false + dev: true /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1131,7 +1130,7 @@ packages: /@types/minimist@1.2.5: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - dev: false + dev: true /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} @@ -1143,7 +1142,7 @@ packages: /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: false + dev: true /@types/node@20.10.0: resolution: {integrity: sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==} @@ -1152,7 +1151,7 @@ packages: /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - dev: false + dev: true /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} @@ -1178,7 +1177,7 @@ packages: /@types/semver@7.5.8: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - dev: false + dev: true /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} @@ -1218,7 +1217,7 @@ packages: /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - dev: false + dev: true /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -1239,7 +1238,6 @@ packages: engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: false /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} @@ -1271,7 +1269,7 @@ packages: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: false + dev: true /array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} @@ -1279,7 +1277,7 @@ packages: /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - dev: false + dev: true /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} @@ -1289,7 +1287,7 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.5 es-shim-unscopables: 1.0.2 - dev: false + dev: true /arraybuffer.prototype.slice@1.0.3: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} @@ -1303,12 +1301,12 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: false + dev: true /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} - dev: false + dev: true /astro-integration-kit@0.2.0(astro@4.5.2): resolution: {integrity: sha512-GsYNh0XFp/6NXvSEN4FAOz9O5cyCh/mFunB/6Wyc1Qwyq6/t/X1gFHjQp4jTieyTDsEadElt1bSowMznNw5d2A==} @@ -1406,7 +1404,7 @@ packages: engines: {node: '>= 0.4'} dependencies: possible-typed-array-names: 1.0.0 - dev: false + dev: true /axobject-query@4.0.0: resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} @@ -1436,7 +1434,7 @@ packages: engines: {node: '>=4'} dependencies: is-windows: 1.0.2 - dev: false + dev: true /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} @@ -1494,7 +1492,7 @@ packages: resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} dependencies: wcwidth: 1.0.1 - dev: false + dev: true /browserslist@4.21.10: resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} @@ -1529,7 +1527,7 @@ packages: function-bind: 1.1.2 get-intrinsic: 1.2.4 set-function-length: 1.2.1 - dev: false + dev: true /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} @@ -1538,12 +1536,12 @@ packages: camelcase: 5.3.1 map-obj: 4.3.0 quick-lru: 4.0.1 - dev: false + dev: true /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - dev: false + dev: true /camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} @@ -1569,7 +1567,7 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: false + dev: true /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} @@ -1586,7 +1584,7 @@ packages: /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: false + dev: true /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -1635,7 +1633,7 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - dev: false + dev: true /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -1644,12 +1642,12 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: false + dev: true /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - dev: false + dev: true /clsx@2.0.0: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} @@ -1724,7 +1722,7 @@ packages: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 - dev: false + dev: true /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -1744,15 +1742,15 @@ packages: /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - dev: false + dev: true /csv-parse@4.16.3: resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - dev: false + dev: true /csv-stringify@5.6.5: resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - dev: false + dev: true /csv@5.5.3: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} @@ -1762,7 +1760,7 @@ packages: csv-parse: 4.16.3 csv-stringify: 5.6.5 stream-transform: 2.1.3 - dev: false + dev: true /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -1792,12 +1790,12 @@ packages: dependencies: decamelize: 1.2.0 map-obj: 1.0.1 - dev: false + dev: true /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - dev: false + dev: true /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} @@ -1822,7 +1820,7 @@ packages: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - dev: false + dev: true /define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} @@ -1831,7 +1829,7 @@ packages: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - dev: false + dev: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} @@ -1840,7 +1838,7 @@ packages: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - dev: false + dev: true /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} @@ -1859,7 +1857,7 @@ packages: /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - dev: false + dev: true /detect-libc@2.0.2: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} @@ -1890,7 +1888,7 @@ packages: engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: false + dev: true /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -1936,7 +1934,7 @@ packages: dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - dev: false + dev: true /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} @@ -1946,7 +1944,7 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: false + dev: true /es-abstract@1.22.5: resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} @@ -1993,19 +1991,19 @@ packages: typed-array-length: 1.0.5 unbox-primitive: 1.0.2 which-typed-array: 1.1.14 - dev: false + dev: true /es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.4 - dev: false + dev: true /es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - dev: false + dev: true /es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} @@ -2017,13 +2015,13 @@ packages: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.1 - dev: false + dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: hasown: 2.0.1 - dev: false + dev: true /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} @@ -2032,7 +2030,7 @@ packages: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: false + dev: true /esbuild@0.19.8: resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} @@ -2128,7 +2126,7 @@ packages: /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - dev: false + dev: true /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} @@ -2137,7 +2135,7 @@ packages: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: false + dev: true /fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} @@ -2193,7 +2191,7 @@ packages: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - dev: false + dev: true /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} @@ -2229,7 +2227,7 @@ packages: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: false + dev: true /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} @@ -2238,7 +2236,7 @@ packages: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: false + dev: true /fs-move@6.0.0: resolution: {integrity: sha512-+HBmr7Gvdx50f5Z/5JBXn9QZY8Nth9O3zyYaJOcgSL7zaPOqvlnB9HICVBigRSO/dJKDPZMwtISbMxroclHdJw==} @@ -2264,7 +2262,7 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: false + dev: true /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} @@ -2274,11 +2272,11 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.5 functions-have-names: 1.2.3 - dev: false + dev: true /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: false + dev: true /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -2287,7 +2285,7 @@ packages: /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: false + dev: true /get-east-asian-width@1.2.0: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} @@ -2302,7 +2300,7 @@ packages: has-proto: 1.0.3 has-symbols: 1.0.3 hasown: 2.0.1 - dev: false + dev: true /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} @@ -2315,7 +2313,7 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: false + dev: true /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -2363,7 +2361,7 @@ packages: engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - dev: false + dev: true /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -2375,7 +2373,7 @@ packages: ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 - dev: false + dev: true /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -2385,14 +2383,14 @@ packages: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.4 - dev: false + dev: true /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: false + dev: true /gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} @@ -2406,11 +2404,11 @@ packages: /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} - dev: false + dev: true /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: false + dev: true /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -2419,30 +2417,30 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: false + dev: true /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: es-define-property: 1.0.0 - dev: false + dev: true /has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} - dev: false + dev: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: false + dev: true /has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: false + dev: true /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} @@ -2455,7 +2453,7 @@ packages: engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - dev: false + dev: true /hast-util-from-html@2.0.1: resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} @@ -2557,7 +2555,7 @@ packages: /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: false + dev: true /html-escaper@3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} @@ -2581,7 +2579,7 @@ packages: /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - dev: false + dev: true /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} @@ -2592,7 +2590,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: false + dev: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -2600,7 +2598,7 @@ packages: /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} - dev: false + dev: true /import-meta-resolve@4.0.0: resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} @@ -2608,7 +2606,7 @@ packages: /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - dev: false + dev: true /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -2632,7 +2630,7 @@ packages: es-errors: 1.3.0 hasown: 2.0.1 side-channel: 1.0.6 - dev: false + dev: true /is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} @@ -2640,11 +2638,11 @@ packages: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: false + dev: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: false + dev: true /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -2655,7 +2653,7 @@ packages: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - dev: false + dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -2669,7 +2667,7 @@ packages: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: false + dev: true /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} @@ -2678,7 +2676,7 @@ packages: /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - dev: false + dev: true /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} @@ -2690,7 +2688,7 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - dev: false + dev: true /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} @@ -2729,14 +2727,14 @@ packages: /is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - dev: false + dev: true /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - dev: false + dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -2745,7 +2743,7 @@ packages: /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} - dev: false + dev: true /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} @@ -2757,14 +2755,14 @@ packages: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: false + dev: true /is-shared-array-buffer@1.0.3: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - dev: false + dev: true /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -2775,28 +2773,28 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - dev: false + dev: true /is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 - dev: false + dev: true /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: false + dev: true /is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.14 - dev: false + dev: true /is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} @@ -2806,12 +2804,12 @@ packages: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.7 - dev: false + dev: true /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - dev: false + dev: true /is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} @@ -2821,7 +2819,7 @@ packages: /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: false + dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -2858,7 +2856,7 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: false + dev: true /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} @@ -2869,7 +2867,7 @@ packages: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 - dev: false + dev: true /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -2893,7 +2891,7 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false + dev: true /load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} @@ -2918,7 +2916,7 @@ packages: /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - dev: false + dev: true /log-symbols@5.1.0: resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} @@ -2947,7 +2945,7 @@ packages: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 - dev: false + dev: true /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -2969,12 +2967,12 @@ packages: /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} - dev: false + dev: true /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} - dev: false + dev: true /markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} @@ -3125,7 +3123,7 @@ packages: trim-newlines: 3.0.1 type-fest: 0.13.1 yargs-parser: 18.1.3 - dev: false + dev: true /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -3388,7 +3386,7 @@ packages: /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - dev: false + dev: true /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3410,7 +3408,7 @@ packages: arrify: 1.0.1 is-plain-obj: 1.1.0 kind-of: 6.0.3 - dev: false + dev: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -3424,7 +3422,7 @@ packages: /mixme@0.5.10: resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} engines: {node: '>= 8.0.0'} - dev: false + dev: true /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -3487,7 +3485,7 @@ packages: resolve: 1.22.5 semver: 5.7.2 validate-npm-package-license: 3.0.4 - dev: false + dev: true /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -3501,12 +3499,12 @@ packages: /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: false + dev: true /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: false + dev: true /object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} @@ -3516,7 +3514,7 @@ packages: define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: false + dev: true /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} @@ -3560,18 +3558,18 @@ packages: /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: false + dev: true /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - dev: false + dev: true /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} dependencies: p-map: 2.1.0 - dev: false + dev: true /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} @@ -3606,7 +3604,7 @@ packages: /p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} - dev: false + dev: true /p-queue@8.0.1: resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} @@ -3631,7 +3629,7 @@ packages: error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: false + dev: true /parse-latin@5.0.1: resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} @@ -3679,7 +3677,7 @@ packages: /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: false + dev: true /pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -3705,7 +3703,7 @@ packages: /possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - dev: false + dev: true /postcss@8.4.35: resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} @@ -3748,7 +3746,7 @@ packages: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true - dev: false + dev: true /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} @@ -3766,7 +3764,7 @@ packages: /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: false + dev: true /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} @@ -3787,7 +3785,7 @@ packages: /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} - dev: false + dev: true /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} @@ -3834,7 +3832,7 @@ packages: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - dev: false + dev: true /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} @@ -3844,7 +3842,7 @@ packages: normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 - dev: false + dev: true /read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} @@ -3854,7 +3852,7 @@ packages: js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 - dev: false + dev: true /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} @@ -3876,11 +3874,11 @@ packages: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - dev: false + dev: true /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: false + dev: true /regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} @@ -3890,7 +3888,7 @@ packages: define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - dev: false + dev: true /rehype-parse@9.0.0: resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} @@ -3970,16 +3968,16 @@ packages: /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: false + dev: true /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: false + dev: true /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - dev: false + dev: true /resolve@1.22.5: resolution: {integrity: sha512-qWhv7PF1V95QPvRoUGHxOtnAlEvlXBylMZcjUR9pAumMmveFtcHJRXGIr+TkjfNJVQypqv2qcDiiars2y1PsSg==} @@ -4078,7 +4076,7 @@ packages: get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: false + dev: true /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -4091,11 +4089,11 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: false + dev: true /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false + dev: true /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -4113,7 +4111,7 @@ packages: /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - dev: false + dev: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -4153,7 +4151,7 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false + dev: true /set-function-length@1.2.1: resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} @@ -4165,7 +4163,7 @@ packages: get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 - dev: false + dev: true /set-function-name@2.0.2: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} @@ -4175,7 +4173,7 @@ packages: es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - dev: false + dev: true /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -4201,7 +4199,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 - dev: false + dev: true /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -4212,7 +4210,7 @@ packages: /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} - dev: false + dev: true /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} @@ -4231,7 +4229,7 @@ packages: es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - dev: false + dev: true /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -4267,7 +4265,7 @@ packages: /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: false + dev: true /smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} @@ -4280,7 +4278,7 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 15.4.1 - dev: false + dev: true /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} @@ -4294,29 +4292,29 @@ packages: dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 - dev: false + dev: true /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.17 - dev: false + dev: true /spdx-exceptions@2.5.0: resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - dev: false + dev: true /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.17 - dev: false + dev: true /spdx-license-ids@3.0.17: resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} - dev: false + dev: true /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -4336,7 +4334,7 @@ packages: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: mixme: 0.5.10 - dev: false + dev: true /streamx@2.15.1: resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} @@ -4385,7 +4383,7 @@ packages: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.5 - dev: false + dev: true /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} @@ -4393,7 +4391,7 @@ packages: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.5 - dev: false + dev: true /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} @@ -4401,7 +4399,7 @@ packages: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.5 - dev: false + dev: true /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -4444,7 +4442,7 @@ packages: engines: {node: '>=8'} dependencies: min-indent: 1.0.1 - dev: false + dev: true /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} @@ -4463,7 +4461,7 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: false + dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -4512,14 +4510,14 @@ packages: /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} - dev: false + dev: true /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: false + dev: true /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} @@ -4542,7 +4540,7 @@ packages: /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - dev: false + dev: true /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} @@ -4584,7 +4582,7 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 yargs: 17.7.2 - dev: false + dev: true /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -4596,17 +4594,17 @@ packages: /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} - dev: false + dev: true /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} - dev: false + dev: true /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - dev: false + dev: true /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} @@ -4619,7 +4617,7 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: false + dev: true /typed-array-byte-length@1.0.1: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} @@ -4630,7 +4628,7 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: false + dev: true /typed-array-byte-offset@1.0.2: resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} @@ -4642,7 +4640,7 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: false + dev: true /typed-array-length@1.0.5: resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} @@ -4654,7 +4652,7 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: false + dev: true /typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} @@ -4672,7 +4670,7 @@ packages: has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: false + dev: true /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -4785,7 +4783,7 @@ packages: /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - dev: false + dev: true /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} @@ -4811,7 +4809,7 @@ packages: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - dev: false + dev: true /vfile-location@5.0.2: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} @@ -4947,7 +4945,7 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - dev: false + dev: true /web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -4960,11 +4958,11 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: false + dev: true /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: false + dev: true /which-pm-runs@1.1.0: resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} @@ -4993,14 +4991,14 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 - dev: false + dev: true /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 - dev: false + dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -5022,7 +5020,7 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false + dev: true /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} @@ -5031,7 +5029,6 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: false /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} @@ -5047,16 +5044,16 @@ packages: /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: false + dev: true /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: false + dev: true /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: false + dev: true /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -5070,7 +5067,7 @@ packages: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - dev: false + dev: true /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} @@ -5091,7 +5088,7 @@ packages: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 - dev: false + dev: true /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} @@ -5104,7 +5101,7 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: false + dev: true /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} From 133b7f60e4ad359b7c5fa87e31a6e383f151cc58 Mon Sep 17 00:00:00 2001 From: Ivan Porto Wigner <47715589+iivvaannxx@users.noreply.github.com> Date: Wed, 13 Mar 2024 20:35:04 +0100 Subject: [PATCH 7/9] chore: added lefthook to ensure code style before commit. --- lefthook.yaml | 5 +++ package.json | 7 +++-- pnpm-lock.yaml | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 lefthook.yaml diff --git a/lefthook.yaml b/lefthook.yaml new file mode 100644 index 00000000..63c535d2 --- /dev/null +++ b/lefthook.yaml @@ -0,0 +1,5 @@ +pre-commit: + commands: + check: + glob: "*.{js,ts,cjs,mjs,d.cts,d.mts,d.ts,jsx,tsx,json,jsonc}" + run: pnpm biome check --no-errors-on-unmatched --files-ignore-unknown=true {staged_files} diff --git a/package.json b/package.json index f0dbb949..fa965b47 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,12 @@ "version": "0.0.0", "scripts": { "check": "biome check --no-errors-on-unmatched --files-ignore-unknown=true .", - "format": "biome check --apply --no-errors-on-unmatched --files-ignore-unknown=true ." + "format": "biome check --apply --no-errors-on-unmatched --files-ignore-unknown=true .", + "postinstall": "lefthook install" }, - "dependencies": {}, "devDependencies": { + "@biomejs/biome": "1.6.1", "@changesets/cli": "^2.27.1", - "@biomejs/biome": "1.6.1" + "lefthook": "^1.6.5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b09dd6c..80b5a087 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@changesets/cli': specifier: ^2.27.1 version: 2.27.1 + lefthook: + specifier: ^1.6.5 + version: 1.6.5 apps/astro-demo: dependencies: @@ -2889,6 +2892,85 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + /lefthook-darwin-arm64@1.6.5: + resolution: {integrity: sha512-6x07sbjcJymSoTum8gbR9DVkDlA/3io1bSLNDbHk1UwJ5syPjp0JOQLW96KAuM/jxqnOWX2HUqLD0uQPrZDl8g==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /lefthook-darwin-x64@1.6.5: + resolution: {integrity: sha512-NWLNo4MoXAuYmX9Za/rP4aXavRUBWXyK/qO3VcmTolq436FhH/+obh1L21XxuH/zS4OrSuPXKd8Il1K8Pol2uw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /lefthook-freebsd-arm64@1.6.5: + resolution: {integrity: sha512-txORmAC7kayl5h60pqNh3uOM9rQ1LLp+VF2aCo24EzFsicehWqkTeIgJef3LaFOgLKEnMqyGkvsSETyK9T5CqQ==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /lefthook-freebsd-x64@1.6.5: + resolution: {integrity: sha512-kYddavV/C9kJbCVWAO/W1HlzC8IVclw7XSoke3ulNsewxH+AMr+hYgcJjRyXAowP2z2T1LgbJAdmeTUP8sZQkA==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /lefthook-linux-arm64@1.6.5: + resolution: {integrity: sha512-Aoqm0X7YGtt5xroHlVZ14JBC+LD2i3i47evBPPhhkn4MhJ6fFiVJcbB1SEkjqVqAdlBFR4L7aZGGyhHM03VCxg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lefthook-linux-x64@1.6.5: + resolution: {integrity: sha512-6jsj8XdaKEluVMlwjx45uDqgckmaeeP0lw6iq1FvvVKBSbPqIiraPJQ+9yAk6gavmtS1HbYCHU14bmMK6sCLVA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lefthook-windows-arm64@1.6.5: + resolution: {integrity: sha512-2kp8XmHWjbmqlUy0T0Y4uWfLlpsj7YOjBzn43WapEV7F3qzu5f9TxAhXhSQ++NX0beTJB2hufAvc4AKKZJe8eA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /lefthook-windows-x64@1.6.5: + resolution: {integrity: sha512-3Cm3eTXHhhu8ERHgYVzV2M6TIcthifnsHIDz53ZQvWAw7wEjQs9MR9sWLGcfsCM1yYBKB82HJAXfsgv8Lyq4cA==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /lefthook@1.6.5: + resolution: {integrity: sha512-ugOWwg2/IJNjPb2OJZce7Ol82hHTPILsnht4C22Pcn86EGHNeJsFcWmaPQDCV5MPvTbcx44mX63WPmRgojxWyg==} + hasBin: true + requiresBuild: true + optionalDependencies: + lefthook-darwin-arm64: 1.6.5 + lefthook-darwin-x64: 1.6.5 + lefthook-freebsd-arm64: 1.6.5 + lefthook-freebsd-x64: 1.6.5 + lefthook-linux-arm64: 1.6.5 + lefthook-linux-x64: 1.6.5 + lefthook-windows-arm64: 1.6.5 + lefthook-windows-x64: 1.6.5 + dev: true + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true From 562229db1f5b6a80cec80ee16af0a11f50f6e307 Mon Sep 17 00:00:00 2001 From: Ivan Porto Wigner <47715589+iivvaannxx@users.noreply.github.com> Date: Wed, 13 Mar 2024 20:56:37 +0100 Subject: [PATCH 8/9] docs: updated contributing guide to explain about code style. --- contributing.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/contributing.md b/contributing.md index 42d98f52..386644e9 100644 --- a/contributing.md +++ b/contributing.md @@ -6,7 +6,7 @@ Hey, Welcome to the contributing guide for `@qwikdev/astro`! We really appreciat You can quickly get up and running with the playground by doing the following: -1. clone this package: +1. Clone this package: https://github.com/QwikDev/astro and run the command `pnpm install` or `pnpm i` @@ -188,6 +188,19 @@ We only use the symbolMapper in dev mode. This is because we already get this in A full graph of all of the symbols and their corresponding chunks. It also knows the import graph, so if a symbol is prefetched, the service worker will also prefetch all other symbols which are needed as part of the import graph. + +### Code style + +This project uses [Biome](https://biomejs.dev/) to lint and format all the code. The tool is able to parse many different syntaxes including `ts`, `tsx`, `json` and `astro`, and many more, but these are the ones relevant to our codebase. At the time of writing, [support](https://biomejs.dev/internals/language-support/) for `astro` code is limited but working. + +If you use VSCode and install the recommended extensions present under `.vscode/extensions.json` (VSCode should prompt you to install them upon opening the project), you should be able to have a pretty good DX out of the box, with automatic formatting on save and linting errors on the editor. + +If for whatever reason you prefer to not install them, you can manually check the code style of your code by running `pnpm run check` (if you are not on the root directory add a `-w` flag to the command). Biome will then start analyzing the entire codebase and notify you if there's any inconsistency within your code (linting or formatting errors). To manually format the code **and** apply ***[safe](https://biomejs.dev/linter/rules/)*** changes you can run `pnpm run format`. + +Whenever you try to commit some change to the repo, an automatic **[git hook](https://biomejs.dev/recipes/git-hooks/)** should trigger stopping it if it has either linting or formatting errors. You will have to fix them first, otherwise you are not going to be able to commit your changes. This is possible thanks to `lefthook` and the configuration in `lefthook.yaml`. Note that the check which this tool runs applies only to the ***staged files***. It could happen that the **hook** doesn't trigger if you haven't run `lefthook install` on your local repo before commiting. Although this command is automatically executed by your package manager after running `pnpm install`, if it hasn't been executed, you would be bypassing this restriction. + +Please, ensure that Biome has analyzed the code before commiting anything. + ## Roadmap That's about it! Some exciting features we would like to add to Qwik + Astro are: From 201fb25c0d72f69e22bd6a1b84a3b938bbfa562b Mon Sep 17 00:00:00 2001 From: Ivan Porto Wigner <47715589+iivvaannxx@users.noreply.github.com> Date: Wed, 13 Mar 2024 23:03:04 +0100 Subject: [PATCH 9/9] chore: renamed format command to fix --- contributing.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contributing.md b/contributing.md index 386644e9..6373ac8b 100644 --- a/contributing.md +++ b/contributing.md @@ -195,7 +195,7 @@ This project uses [Biome](https://biomejs.dev/) to lint and format all the code. If you use VSCode and install the recommended extensions present under `.vscode/extensions.json` (VSCode should prompt you to install them upon opening the project), you should be able to have a pretty good DX out of the box, with automatic formatting on save and linting errors on the editor. -If for whatever reason you prefer to not install them, you can manually check the code style of your code by running `pnpm run check` (if you are not on the root directory add a `-w` flag to the command). Biome will then start analyzing the entire codebase and notify you if there's any inconsistency within your code (linting or formatting errors). To manually format the code **and** apply ***[safe](https://biomejs.dev/linter/rules/)*** changes you can run `pnpm run format`. +If for whatever reason you prefer to not install them, you can manually check the code style of your code by running `pnpm run check` (if you are not on the root directory add a `-w` flag to the command). Biome will then start analyzing the entire codebase and notify you if there's any inconsistency within your code (linting or formatting errors). To manually format the code **and** apply ***[safe](https://biomejs.dev/linter/rules/)*** changes you can run `pnpm run fix`. Whenever you try to commit some change to the repo, an automatic **[git hook](https://biomejs.dev/recipes/git-hooks/)** should trigger stopping it if it has either linting or formatting errors. You will have to fix them first, otherwise you are not going to be able to commit your changes. This is possible thanks to `lefthook` and the configuration in `lefthook.yaml`. Note that the check which this tool runs applies only to the ***staged files***. It could happen that the **hook** doesn't trigger if you haven't run `lefthook install` on your local repo before commiting. Although this command is automatically executed by your package manager after running `pnpm install`, if it hasn't been executed, you would be bypassing this restriction. diff --git a/package.json b/package.json index fa965b47..41dcd227 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "scripts": { "check": "biome check --no-errors-on-unmatched --files-ignore-unknown=true .", - "format": "biome check --apply --no-errors-on-unmatched --files-ignore-unknown=true .", + "fix": "biome check --apply --no-errors-on-unmatched --files-ignore-unknown=true .", "postinstall": "lefthook install" }, "devDependencies": {