From bf9f6e90f932d602dc0fbd3186d8476654d65b2f Mon Sep 17 00:00:00 2001 From: reaper Date: Mon, 17 Feb 2025 20:58:00 +0530 Subject: [PATCH 01/18] tests: inital framework --- adex/package.json | 6 +- adex/runtime/client.js | 12 +- adex/runtime/handler.js | 8 +- adex/src/head.d.ts | 2 +- adex/src/utils/isomorphic.js | 2 +- adex/src/vite.js | 67 +++- adex/tests/__snapshots__/index.spec.js.snap | 23 ++ adex/tests/fixtures/minimal/jsconfig.json | 6 + adex/tests/fixtures/minimal/package.json | 14 + .../fixtures/minimal/src/pages/about.jsx | 3 + .../fixtures/minimal/src/pages/index.jsx | 3 + .../fixtures/minimal/src/pages/workaround.jsx | 3 + adex/tests/fixtures/minimal/vite.config.js | 13 + adex/tests/index.spec.js | 14 + adex/tests/utils.js | 93 +++++ adex/vitest.config.ts | 7 + playground/vite.config.js | 1 - pnpm-lock.yaml | 331 +++++++++++++++++- pnpm-workspace.yaml | 5 + 19 files changed, 590 insertions(+), 23 deletions(-) create mode 100644 adex/tests/__snapshots__/index.spec.js.snap create mode 100644 adex/tests/fixtures/minimal/jsconfig.json create mode 100644 adex/tests/fixtures/minimal/package.json create mode 100644 adex/tests/fixtures/minimal/src/pages/about.jsx create mode 100644 adex/tests/fixtures/minimal/src/pages/index.jsx create mode 100644 adex/tests/fixtures/minimal/src/pages/workaround.jsx create mode 100644 adex/tests/fixtures/minimal/vite.config.js create mode 100644 adex/tests/index.spec.js create mode 100644 adex/tests/utils.js create mode 100644 adex/vitest.config.ts diff --git a/adex/package.json b/adex/package.json index b7a19b4..436205d 100644 --- a/adex/package.json +++ b/adex/package.json @@ -59,7 +59,8 @@ "runtime" ], "scripts": { - "next": "bumpp" + "next": "bumpp", + "test": "vitest" }, "dependencies": { "@barelyhuman/tiny-use": "^0.0.2", @@ -82,7 +83,8 @@ "adex-adapter-node": "^0.0.17", "autoprefixer": "^10.4.19", "tailwindcss": "^3.4.4", - "vite": "^5.3.1" + "vite": "^5.3.1", + "vitest": "^3.0.5" }, "peerDependenciesMeta": { "adex-adapter-node": { diff --git a/adex/runtime/client.js b/adex/runtime/client.js index d2bb424..12a906a 100644 --- a/adex/runtime/client.js +++ b/adex/runtime/client.js @@ -13,13 +13,6 @@ import 'virtual:adex:global.css' // @ts-expect-error injected by vite import { routes } from '~routes' -const withComponents = routes.map(d => { - return { - ...d, - component: lazy(d.module), - } -}) - function ComponentWrapper({ url = '' }) { return h( LocationProvider, @@ -31,8 +24,8 @@ function ComponentWrapper({ url = '' }) { h( Router, {}, - withComponents.map(d => - h(Route, { path: d.routePath, component: d.component }) + routes.map(d => + h(Route, { path: d.routePath, component: lazy(d.module) }) ) ) ) @@ -46,6 +39,7 @@ export const App = ({ url = '' }) => { async function hydrate() { preactHydrate(h(ComponentWrapper, {}), document.getElementById('app')) } + if (typeof window !== 'undefined') { hydrate() } diff --git a/adex/runtime/handler.js b/adex/runtime/handler.js index 02db02c..8a72436 100644 --- a/adex/runtime/handler.js +++ b/adex/runtime/handler.js @@ -1,7 +1,7 @@ import { CONSTANTS, emitToHooked } from 'adex/hook' import { prepareRequest, prepareResponse } from 'adex/http' import { toStatic } from 'adex/ssr' -import { renderToString } from 'adex/utils/isomorphic' +import { renderToStringAsync } from 'adex/utils/isomorphic' import { h } from 'preact' // @ts-expect-error injected by vite @@ -60,9 +60,7 @@ export async function handler(req, res) { // @ts-expect-error global.location = new URL(req.url, 'http://localhost') - const rendered = await renderToString( - h(App, { url: [baseURL, search].filter(Boolean).join('?') }) - ) + const rendered = await renderToStringAsync(h(App, { url: req.url }), {}) const htmlString = HTMLTemplate({ metas, @@ -73,7 +71,7 @@ export async function handler(req, res) { routeParams: Buffer.from(JSON.stringify(routeParams), 'utf8').toString( 'base64' ), - body: rendered.html, + body: rendered, }) const modifiableContext = { req: req, diff --git a/adex/src/head.d.ts b/adex/src/head.d.ts index d8d30d2..2aa3fd2 100644 --- a/adex/src/head.d.ts +++ b/adex/src/head.d.ts @@ -1,4 +1,4 @@ -export type { +export { useHead, useLang, useLink, diff --git a/adex/src/utils/isomorphic.js b/adex/src/utils/isomorphic.js index 16f21ee..022cea8 100644 --- a/adex/src/utils/isomorphic.js +++ b/adex/src/utils/isomorphic.js @@ -1,2 +1,2 @@ export { parse as pathToRegex } from 'regexparam' -export { prerender as renderToString } from 'preact-iso' +export { renderToStringAsync } from 'preact-render-to-string' diff --git a/adex/src/vite.js b/adex/src/vite.js index 17ad98d..555b988 100644 --- a/adex/src/vite.js +++ b/adex/src/vite.js @@ -61,6 +61,71 @@ export function adex({ 'virtual:adex:handler', readFileSync(join(__dirname, '../runtime/handler.js'), 'utf8') ), + createVirtualModule( + 'virtual:adex:server', + `import { createServer } from '${adapterMap[adapter]}' + import { dirname, join } from 'node:path' + import { fileURLToPath } from 'node:url' + import { existsSync, readFileSync } from 'node:fs' + import { env } from 'adex/env' + + import 'virtual:adex:font.css' + import 'virtual:adex:global.css' + + const __dirname = dirname(fileURLToPath(import.meta.url)) + + const PORT = parseInt(env.get('PORT', '3000'), 10) + const HOST = env.get('HOST', 'localhost') + + const paths = { + assets: join(__dirname, './assets'), + islands: join(__dirname, './islands'), + client: join(__dirname, '../client'), + } + + function getServerManifest() { + const manifestPath = join(__dirname, 'manifest.json') + if (existsSync(manifestPath)) { + const manifestFile = readFileSync(manifestPath, 'utf8') + return parseManifest(manifestFile) + } + return {} + } + + function getClientManifest() { + const manifestPath = join(__dirname, '../client/manifest.json') + if (existsSync(manifestPath)) { + const manifestFile = readFileSync(manifestPath, 'utf8') + return parseManifest(manifestFile) + } + return {} + } + + function parseManifest(manifestString) { + try { + const manifestJSON = JSON.parse(manifestString) + return manifestJSON + } catch (err) { + return {} + } + } + + const server = createServer({ + port: PORT, + host: HOST, + adex:{ + manifests:{server:getServerManifest(),client:getClientManifest()}, + paths, + } + }) + + if ('run' in server) { + server.run() + } + + export default server.fetch + ` + ), addFontsPlugin(fonts), adexDevServer({ islands }), adexBuildPrep({ islands }), @@ -655,7 +720,7 @@ function adexGuards() { // ignore usage of `process.env` in `adex/env` const envLoadId = await this.resolve('adex/env') - if (id === envLoadId.id) return + if (id === envLoadId?.id) return if (code.includes('process.env')) { this.error( diff --git a/adex/tests/__snapshots__/index.spec.js.snap b/adex/tests/__snapshots__/index.spec.js.snap new file mode 100644 index 0000000..9007e62 --- /dev/null +++ b/adex/tests/__snapshots__/index.spec.js.snap @@ -0,0 +1,23 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`ssr minimal > basic response 1`] = ` +" + + + + + + + + + + + + + + +

Hello World

+ + + " +`; diff --git a/adex/tests/fixtures/minimal/jsconfig.json b/adex/tests/fixtures/minimal/jsconfig.json new file mode 100644 index 0000000..ada9d24 --- /dev/null +++ b/adex/tests/fixtures/minimal/jsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions":{ + "jsx":"react-jsx", + "jsxImportSource": "preact" + } +} \ No newline at end of file diff --git a/adex/tests/fixtures/minimal/package.json b/adex/tests/fixtures/minimal/package.json new file mode 100644 index 0000000..abbf00a --- /dev/null +++ b/adex/tests/fixtures/minimal/package.json @@ -0,0 +1,14 @@ +{ + "name": "minimal", + "type": "module", + "dependencies": { + "adex": "workspace:*", + "preact": "catalog:", + "@preact/preset-vite": "catalog:" + }, + + "devDependencies": { + "vite": "^5.4.8" + } + +} diff --git a/adex/tests/fixtures/minimal/src/pages/about.jsx b/adex/tests/fixtures/minimal/src/pages/about.jsx new file mode 100644 index 0000000..0202b3b --- /dev/null +++ b/adex/tests/fixtures/minimal/src/pages/about.jsx @@ -0,0 +1,3 @@ +export default function AboutPage() { + return

About

+} diff --git a/adex/tests/fixtures/minimal/src/pages/index.jsx b/adex/tests/fixtures/minimal/src/pages/index.jsx new file mode 100644 index 0000000..15a9b6e --- /dev/null +++ b/adex/tests/fixtures/minimal/src/pages/index.jsx @@ -0,0 +1,3 @@ +export default function Page() { + return

Hello World

+} diff --git a/adex/tests/fixtures/minimal/src/pages/workaround.jsx b/adex/tests/fixtures/minimal/src/pages/workaround.jsx new file mode 100644 index 0000000..7858d0e --- /dev/null +++ b/adex/tests/fixtures/minimal/src/pages/workaround.jsx @@ -0,0 +1,3 @@ +export default function workaroundPage() { + return <> +} diff --git a/adex/tests/fixtures/minimal/vite.config.js b/adex/tests/fixtures/minimal/vite.config.js new file mode 100644 index 0000000..b05212f --- /dev/null +++ b/adex/tests/fixtures/minimal/vite.config.js @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite' +import { adex } from "adex" +import preact from "@preact/preset-vite" + +export default defineConfig({ + plugins: [ + adex({ + islands: false, + ssr: true, + }), + preact(), + ], +}) diff --git a/adex/tests/index.spec.js b/adex/tests/index.spec.js new file mode 100644 index 0000000..03b0cfa --- /dev/null +++ b/adex/tests/index.spec.js @@ -0,0 +1,14 @@ +import { beforeAll, describe, expect, it } from 'vitest' + +import { devServerURL, launchDemoDevServer } from './utils.js' + +describe('ssr minimal', () => { + beforeAll(async () => { + await launchDemoDevServer('tests/fixtures/minimal') + }) + + it('basic response', async () => { + const response = await fetch(devServerURL).then(d => d.text()) + expect(response).toMatchSnapshot() + }) +}) diff --git a/adex/tests/utils.js b/adex/tests/utils.js new file mode 100644 index 0000000..fe17822 --- /dev/null +++ b/adex/tests/utils.js @@ -0,0 +1,93 @@ +import { spawn } from 'node:child_process' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +export const dir = (...args) => path.join(__dirname, '..', ...args) + +export const devServerURL = new URL('http://localhost:5173/') + +/** + * Wait for vite dev server to start + * @param {import('node:child_process').ChildProcess} devServerProc + * @returns {Promise} + */ +function waitForServerStart(devServerProc) { + return new Promise((resolve, reject) => { + function onError(err) { + cleanup() + reject(err) + } + + /** @param {number | null} code */ + function onClose(code) { + cleanup() + reject(new Error(`Dev server closed unexpectedly with code "${code}"`)) + } + + let serverReady = false + let stdout = '' + /** @param {Buffer | string} chunk */ + function onData(chunk) { + try { + /** @type {string} */ + const data = Buffer.isBuffer(chunk) + ? chunk.toString('utf-8') + : chunk.toString() + + stdout += data + + if (stdout.match(/ready\sin\s[0-9]+\sms/g) != null) { + serverReady = true + } + + if (stdout.match(/localhost:(\d+)/) != null) { + const matchedPort = stdout.match(/localhost:(\d+)/) + devServerURL.port = matchedPort[1] + if (serverReady) { + cleanup() + resolve() + } + } + } catch (e) { + reject(e) + } + } + + function cleanup() { + try { + devServerProc.stdout?.off('data', onData) + devServerProc.off('error', onError) + devServerProc.off('close', onClose) + } catch (e) { + reject(e) + } + } + + devServerProc.stdout?.on('data', onData) + devServerProc.on('error', onError) + devServerProc.on('close', onClose) + }) +} + +/** +* @param {string} fixturePath +*/ +export async function launchDemoDevServer(fixturePath) { + console.log(`launching on ${dir(fixturePath)}`) + /** @type {import('node:child_process').ChildProcess} */ + const devServerProc = spawn( + process.execPath, + [dir('node_modules/vite/bin/vite.js')], + { cwd: dir(fixturePath), stdio: 'pipe' } + ) + + await waitForServerStart(devServerProc) + + // Ensure the server remains active until the test completes. + process.once('exit', () => { + devServerProc.kill() + }) + + return devServerProc +} diff --git a/adex/vitest.config.ts b/adex/vitest.config.ts new file mode 100644 index 0000000..d9fc9dc --- /dev/null +++ b/adex/vitest.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' + +export default defineConfig({ + test: { + testTimeout: 10_000, + }, +}) diff --git a/playground/vite.config.js b/playground/vite.config.js index 4026052..2ddcaeb 100644 --- a/playground/vite.config.js +++ b/playground/vite.config.js @@ -8,7 +8,6 @@ export default defineConfig({ plugins: [ adex({ islands: false, - ssr: false, fonts: { providers: [providers.google()], families: [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dcc7e5d..2ebaf00 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,15 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +catalogs: + default: + '@preact/preset-vite': + specifier: 2.9.1 + version: 2.9.1 + preact: + specifier: 10.24.2 + version: 10.24.2 + overrides: cross-spawn@>=7.0.0 <7.0.5: '>=7.0.5' @@ -90,6 +99,25 @@ importers: vite: specifier: ^5.3.1 version: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) + vitest: + specifier: ^3.0.5 + version: 3.0.5(@types/node@20.16.10)(lightningcss@1.25.1) + + adex/tests/fixtures/minimal: + dependencies: + '@preact/preset-vite': + specifier: 'catalog:' + version: 2.9.1(@babel/core@7.24.7)(preact@10.24.2)(vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1)) + adex: + specifier: workspace:* + version: link:../../.. + preact: + specifier: 'catalog:' + version: 10.24.2 + devDependencies: + vite: + specifier: ^5.4.8 + version: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) create-adex: dependencies: @@ -850,6 +878,35 @@ packages: '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==, tarball: https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz} + '@vitest/expect@3.0.5': + resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==, tarball: https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz} + + '@vitest/mocker@3.0.5': + resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==, tarball: https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.0.5': + resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==, tarball: https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz} + + '@vitest/runner@3.0.5': + resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==, tarball: https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz} + + '@vitest/snapshot@3.0.5': + resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==, tarball: https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz} + + '@vitest/spy@3.0.5': + resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==, tarball: https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz} + + '@vitest/utils@3.0.5': + resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==, tarball: https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz} + JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, tarball: https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz} hasBin: true @@ -956,6 +1013,10 @@ packages: array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==, tarball: https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, tarball: https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz} + engines: {node: '>=12'} + astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==, tarball: https://registry.npmjs.org/astring/-/astring-1.9.0.tgz} hasBin: true @@ -1040,6 +1101,10 @@ packages: caniuse-lite@1.0.30001667: resolution: {integrity: sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==, tarball: https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==, tarball: https://registry.npmjs.org/chai/-/chai-5.2.0.tgz} + engines: {node: '>=12'} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, tarball: https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz} engines: {node: '>=4'} @@ -1051,6 +1116,10 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, tarball: https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==, tarball: https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz} + engines: {node: '>= 16'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz} engines: {node: '>= 8.10.0'} @@ -1222,6 +1291,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==, tarball: https://registry.npmjs.org/debug/-/debug-4.4.0.tgz} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dedent@1.5.3: resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==, tarball: https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz} peerDependencies: @@ -1230,6 +1308,10 @@ packages: babel-plugin-macros: optional: true + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==, tarball: https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz} + engines: {node: '>=6'} + deepmerge-ts@5.1.0: resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==, tarball: https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz} engines: {node: '>=16.0.0'} @@ -1314,6 +1396,9 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, tarball: https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==, tarball: https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz} + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz} engines: {node: '>=12'} @@ -1330,6 +1415,9 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, tarball: https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, tarball: https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, tarball: https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz} @@ -1337,6 +1425,10 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==, tarball: https://registry.npmjs.org/execa/-/execa-8.0.1.tgz} engines: {node: '>=16.17'} + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==, tarball: https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz} + engines: {node: '>=12.0.0'} + exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==, tarball: https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz} @@ -1797,12 +1889,18 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, tarball: https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz} hasBin: true + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==, tarball: https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz} + magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz} engines: {node: '>=12'} @@ -1903,6 +2001,9 @@ packages: ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, tarball: https://registry.npmjs.org/ms/-/ms-2.1.2.tgz} + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, tarball: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz} + mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==, tarball: https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -2140,6 +2241,13 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==, tarball: https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, tarball: https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==, tarball: https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz} + engines: {node: '>= 14.16'} + perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==, tarball: https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz} @@ -2376,6 +2484,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz} engines: {node: '>=8'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, tarball: https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz} @@ -2453,6 +2564,12 @@ packages: resolution: {integrity: sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==, tarball: https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz} engines: {node: '>=16'} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, tarball: https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz} + + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==, tarball: https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==, tarball: https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz} engines: {node: '>=0.6.19'} @@ -2526,6 +2643,24 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, tarball: https://registry.npmjs.org/through/-/through-2.3.8.tgz} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, tarball: https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==, tarball: https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz} + + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==, tarball: https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==, tarball: https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==, tarball: https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz} + engines: {node: '>=14.0.0'} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, tarball: https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz} engines: {node: '>=0.6.0'} @@ -2636,6 +2771,11 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, tarball: https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + vite-node@3.0.5: + resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==, tarball: https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + vite@5.4.8: resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==, tarball: https://registry.npmjs.org/vite/-/vite-5.4.8.tgz} engines: {node: ^18.0.0 || >=20.0.0} @@ -2667,6 +2807,34 @@ packages: terser: optional: true + vitest@3.0.5: + resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==, tarball: https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.0.5 + '@vitest/ui': 3.0.5 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + walk-up-path@3.0.1: resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==, tarball: https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz} @@ -2687,6 +2855,11 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, tarball: https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz} + engines: {node: '>=8'} + hasBin: true + wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==, tarball: https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz} @@ -2784,7 +2957,7 @@ snapshots: '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 convert-source-map: 2.0.0 - debug: 4.3.5 + debug: 4.4.0 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -2915,7 +3088,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.24.7 '@babel/types': 7.24.7 - debug: 4.3.5 + debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3523,7 +3696,7 @@ snapshots: '@prefresh/vite': 2.4.6(preact@10.24.2)(vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.24.7) - debug: 4.3.5 + debug: 4.4.0 kolorist: 1.8.0 magic-string: 0.30.5 node-html-parser: 6.1.13 @@ -3676,6 +3849,46 @@ snapshots: '@types/wrap-ansi@3.0.0': {} + '@vitest/expect@3.0.5': + dependencies: + '@vitest/spy': 3.0.5 + '@vitest/utils': 3.0.5 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.0.5(vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1))': + dependencies: + '@vitest/spy': 3.0.5 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) + + '@vitest/pretty-format@3.0.5': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.0.5': + dependencies: + '@vitest/utils': 3.0.5 + pathe: 2.0.3 + + '@vitest/snapshot@3.0.5': + dependencies: + '@vitest/pretty-format': 3.0.5 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.0.5': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.0.5': + dependencies: + '@vitest/pretty-format': 3.0.5 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -3761,6 +3974,8 @@ snapshots: array-ify@1.0.0: {} + assertion-error@2.0.1: {} + astring@1.9.0: {} autoprefixer@10.4.20(postcss@8.4.47): @@ -3862,6 +4077,14 @@ snapshots: caniuse-lite@1.0.30001667: {} + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -3872,6 +4095,8 @@ snapshots: chardet@0.7.0: {} + check-error@2.1.1: {} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -4041,8 +4266,14 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.4.0: + dependencies: + ms: 2.1.3 + dedent@1.5.3: {} + deep-eql@5.0.2: {} + deepmerge-ts@5.1.0: {} defaults@1.0.4: @@ -4113,6 +4344,8 @@ snapshots: dependencies: is-arrayish: 0.2.1 + es-module-lexer@1.6.0: {} + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -4145,6 +4378,10 @@ snapshots: estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + eventemitter3@5.0.1: {} execa@8.0.1: @@ -4159,6 +4396,8 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + expect-type@1.1.0: {} + exponential-backoff@3.1.1: {} external-editor@3.1.0: @@ -4583,12 +4822,18 @@ snapshots: dependencies: js-tokens: 4.0.0 + loupe@3.1.3: {} + lru-cache@10.4.3: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + magic-string@0.30.5: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -4687,6 +4932,8 @@ snapshots: ms@2.1.2: {} + ms@2.1.3: {} + mute-stream@1.0.0: {} mz@2.7.0: @@ -4945,6 +5192,10 @@ snapshots: pathe@1.1.2: {} + pathe@2.0.3: {} + + pathval@2.0.0: {} + perfect-debounce@1.0.0: {} picocolors@1.1.0: {} @@ -5160,6 +5411,8 @@ snapshots: shebang-regex@3.0.0: {} + siginfo@2.0.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -5234,6 +5487,10 @@ snapshots: stack-trace@1.0.0-pre2: {} + stackback@0.0.2: {} + + std-env@3.8.0: {} + string-argv@0.3.2: {} string-width@4.2.3: @@ -5336,6 +5593,16 @@ snapshots: through@2.3.8: {} + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -5426,6 +5693,24 @@ snapshots: validate-npm-package-name@5.0.1: {} + vite-node@3.0.5(@types/node@20.16.10)(lightningcss@1.25.1): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1): dependencies: esbuild: 0.21.5 @@ -5436,6 +5721,41 @@ snapshots: fsevents: 2.3.3 lightningcss: 1.25.1 + vitest@3.0.5(@types/node@20.16.10)(lightningcss@1.25.1): + dependencies: + '@vitest/expect': 3.0.5 + '@vitest/mocker': 3.0.5(vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1)) + '@vitest/pretty-format': 3.0.5 + '@vitest/runner': 3.0.5 + '@vitest/snapshot': 3.0.5 + '@vitest/spy': 3.0.5 + '@vitest/utils': 3.0.5 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.1.0 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.8.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) + vite-node: 3.0.5(@types/node@20.16.10)(lightningcss@1.25.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 20.16.10 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + walk-up-path@3.0.1: {} wcwidth@1.0.1: @@ -5452,6 +5772,11 @@ snapshots: dependencies: isexe: 3.1.1 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + wide-align@1.1.5: dependencies: string-width: 4.2.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ac5f7db..e0a1b25 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,3 +3,8 @@ packages: - create-adex - playground - packages/**/* + - adex/tests/**/* + +catalog: + "preact": 10.24.2 + "@preact/preset-vite": 2.9.1 From 662c37e7d2d9e2bed9b8d822d9c0b9b1c9fe4e73 Mon Sep 17 00:00:00 2001 From: "Siddharth Gelera (reaper)" Date: Mon, 17 Feb 2025 23:06:56 +0530 Subject: [PATCH 02/18] Update index.spec.js --- adex/tests/index.spec.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/adex/tests/index.spec.js b/adex/tests/index.spec.js index 03b0cfa..7f57a66 100644 --- a/adex/tests/index.spec.js +++ b/adex/tests/index.spec.js @@ -10,5 +10,8 @@ describe('ssr minimal', () => { it('basic response', async () => { const response = await fetch(devServerURL).then(d => d.text()) expect(response).toMatchSnapshot() + + const response = await fetch(new URL('/about', devServerURL)).then(d => d.text()) + expect(response).toMatchSnapshot() }) }) From feb14565443f879e9843666e95092ea01a28d1de Mon Sep 17 00:00:00 2001 From: "Siddharth Gelera (reaper)" Date: Mon, 17 Feb 2025 23:07:32 +0530 Subject: [PATCH 03/18] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c6da7fc..a9b6851 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "author": "reaper", "scripts": { "play": "pnpm --filter='playground' -r dev", - "test": "echo 'true'", + "test": "pnpm -r test", "publish:ci": "lerna publish from-git --registry 'https://registry.npmjs.org' --yes", "next": "lerna version --sync-workspace-lock", "nuke": "pnpm -r exec rm -rvf node_modules" From 0d68df8a79f2a75d53bcff6da981cb27ed996c00 Mon Sep 17 00:00:00 2001 From: "Siddharth Gelera (reaper)" Date: Mon, 17 Feb 2025 23:55:55 +0530 Subject: [PATCH 04/18] Update test.yml --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a85c8ff..0277255 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,6 +20,7 @@ jobs: - name: Deps run: | + npm i -g corepack@latest corepack enable pnpm i --frozen-lockfile From c8b91c1cedc6358ec8ef2ed3983611e8dd914b64 Mon Sep 17 00:00:00 2001 From: "Siddharth Gelera (reaper)" Date: Mon, 17 Feb 2025 23:57:37 +0530 Subject: [PATCH 05/18] Update index.spec.js --- adex/tests/index.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adex/tests/index.spec.js b/adex/tests/index.spec.js index 7f57a66..7ff8e56 100644 --- a/adex/tests/index.spec.js +++ b/adex/tests/index.spec.js @@ -11,7 +11,7 @@ describe('ssr minimal', () => { const response = await fetch(devServerURL).then(d => d.text()) expect(response).toMatchSnapshot() - const response = await fetch(new URL('/about', devServerURL)).then(d => d.text()) - expect(response).toMatchSnapshot() + const response2 = await fetch(new URL('/about', devServerURL)).then(d => d.text()) + expect(response2).toMatchSnapshot() }) }) From c2878da369fc2d58988ca3497aed8f839f5c8f71 Mon Sep 17 00:00:00 2001 From: reaper Date: Tue, 18 Feb 2025 00:35:42 +0530 Subject: [PATCH 06/18] chore: add basic cases --- adex/tests/__snapshots__/index.spec.js.snap | 22 +++++++++++++++++++ .../fixtures/minimal/src/pages/workaround.jsx | 3 --- adex/tests/index.spec.js | 4 +++- 3 files changed, 25 insertions(+), 4 deletions(-) delete mode 100644 adex/tests/fixtures/minimal/src/pages/workaround.jsx diff --git a/adex/tests/__snapshots__/index.spec.js.snap b/adex/tests/__snapshots__/index.spec.js.snap index 9007e62..e9ccb10 100644 --- a/adex/tests/__snapshots__/index.spec.js.snap +++ b/adex/tests/__snapshots__/index.spec.js.snap @@ -21,3 +21,25 @@ exports[`ssr minimal > basic response 1`] = ` " `; + +exports[`ssr minimal > basic response 2`] = ` +" + + + + + + + + + + + + + + +

About

+ + + " +`; diff --git a/adex/tests/fixtures/minimal/src/pages/workaround.jsx b/adex/tests/fixtures/minimal/src/pages/workaround.jsx deleted file mode 100644 index 7858d0e..0000000 --- a/adex/tests/fixtures/minimal/src/pages/workaround.jsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function workaroundPage() { - return <> -} diff --git a/adex/tests/index.spec.js b/adex/tests/index.spec.js index 7ff8e56..10b8f5c 100644 --- a/adex/tests/index.spec.js +++ b/adex/tests/index.spec.js @@ -11,7 +11,9 @@ describe('ssr minimal', () => { const response = await fetch(devServerURL).then(d => d.text()) expect(response).toMatchSnapshot() - const response2 = await fetch(new URL('/about', devServerURL)).then(d => d.text()) + const response2 = await fetch(new URL('/about', devServerURL)).then(d => + d.text() + ) expect(response2).toMatchSnapshot() }) }) From c74baab3d3afcea4a755718705e5ba7c8b1d5f40 Mon Sep 17 00:00:00 2001 From: reaper Date: Tue, 18 Feb 2025 00:36:07 +0530 Subject: [PATCH 07/18] test: update for CI --- adex/vitest.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adex/vitest.config.ts b/adex/vitest.config.ts index d9fc9dc..6f683bf 100644 --- a/adex/vitest.config.ts +++ b/adex/vitest.config.ts @@ -2,6 +2,6 @@ import { defineConfig } from 'vite' export default defineConfig({ test: { - testTimeout: 10_000, + testTimeout: 30_000, }, }) From 29d1bc2e7b8e47babc9a499ce1d678488d54f946 Mon Sep 17 00:00:00 2001 From: reaper Date: Tue, 18 Feb 2025 00:36:15 +0530 Subject: [PATCH 08/18] chore: pkg update --- pnpm-lock.yaml | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2ebaf00..0a56730 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1282,15 +1282,6 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==, tarball: https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz} engines: {node: '>= 12'} - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==, tarball: https://registry.npmjs.org/debug/-/debug-4.3.5.tgz} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==, tarball: https://registry.npmjs.org/debug/-/debug-4.4.0.tgz} engines: {node: '>=6.0'} @@ -1998,9 +1989,6 @@ packages: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==, tarball: https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz} engines: {node: '>=10'} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, tarball: https://registry.npmjs.org/ms/-/ms-2.1.2.tgz} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, tarball: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz} @@ -3932,7 +3920,7 @@ snapshots: agent-base@7.1.1: dependencies: - debug: 4.3.5 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -4262,10 +4250,6 @@ snapshots: data-uri-to-buffer@4.0.1: {} - debug@4.3.5: - dependencies: - ms: 2.1.2 - debug@4.4.0: dependencies: ms: 2.1.3 @@ -4573,14 +4557,14 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.4.0 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -4930,8 +4914,6 @@ snapshots: mrmime@2.0.0: {} - ms@2.1.2: {} - ms@2.1.3: {} mute-stream@1.0.0: {} @@ -5443,7 +5425,7 @@ snapshots: socks-proxy-agent@8.0.4: dependencies: agent-base: 7.1.1 - debug: 4.3.5 + debug: 4.4.0 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -5628,7 +5610,7 @@ snapshots: tuf-js@2.2.1: dependencies: '@tufjs/models': 2.0.1 - debug: 4.3.5 + debug: 4.4.0 make-fetch-happen: 13.0.1 transitivePeerDependencies: - supports-color From 7329787c2049ad841dd18b670e6c685f340bdbed Mon Sep 17 00:00:00 2001 From: reaper Date: Tue, 18 Feb 2025 00:39:01 +0530 Subject: [PATCH 09/18] chore: increase timeout --- adex/vitest.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adex/vitest.config.ts b/adex/vitest.config.ts index 6f683bf..6770d6a 100644 --- a/adex/vitest.config.ts +++ b/adex/vitest.config.ts @@ -2,6 +2,6 @@ import { defineConfig } from 'vite' export default defineConfig({ test: { - testTimeout: 30_000, + testTimeout: 40_000, }, }) From a9307af5bac14713cd03e74a933d11813d04c6d5 Mon Sep 17 00:00:00 2001 From: reaper Date: Tue, 18 Feb 2025 01:05:59 +0530 Subject: [PATCH 10/18] chore: change to the actual directory --- .github/workflows/test.yml | 2 +- adex/package.json | 3 ++- package.json | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0277255..8933693 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,4 +25,4 @@ jobs: pnpm i --frozen-lockfile - name: Test - run: pnpm -r test + run: cd adex; pnpm test:ci diff --git a/adex/package.json b/adex/package.json index 436205d..07ffa2c 100644 --- a/adex/package.json +++ b/adex/package.json @@ -60,7 +60,8 @@ ], "scripts": { "next": "bumpp", - "test": "vitest" + "test": "vitest", + "test:ci":"vitest --run" }, "dependencies": { "@barelyhuman/tiny-use": "^0.0.2", diff --git a/package.json b/package.json index a9b6851..e4a2f25 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "scripts": { "play": "pnpm --filter='playground' -r dev", "test": "pnpm -r test", + "test:ci": "pnpm -r test:ci", "publish:ci": "lerna publish from-git --registry 'https://registry.npmjs.org' --yes", "next": "lerna version --sync-workspace-lock", "nuke": "pnpm -r exec rm -rvf node_modules" From 383db1f48e674241c1507e71bc407148a7777dea Mon Sep 17 00:00:00 2001 From: reaper Date: Tue, 18 Feb 2025 01:09:40 +0530 Subject: [PATCH 11/18] chore: force add 30s --- adex/tests/index.spec.js | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/adex/tests/index.spec.js b/adex/tests/index.spec.js index 10b8f5c..ca1e75c 100644 --- a/adex/tests/index.spec.js +++ b/adex/tests/index.spec.js @@ -2,18 +2,24 @@ import { beforeAll, describe, expect, it } from 'vitest' import { devServerURL, launchDemoDevServer } from './utils.js' -describe('ssr minimal', () => { - beforeAll(async () => { - await launchDemoDevServer('tests/fixtures/minimal') - }) +describe( + 'ssr minimal', + { + timeout: 30_000, + }, + () => { + beforeAll(async () => { + await launchDemoDevServer('tests/fixtures/minimal') + }) - it('basic response', async () => { - const response = await fetch(devServerURL).then(d => d.text()) - expect(response).toMatchSnapshot() + it('basic response', async () => { + const response = await fetch(devServerURL).then(d => d.text()) + expect(response).toMatchSnapshot() - const response2 = await fetch(new URL('/about', devServerURL)).then(d => - d.text() - ) - expect(response2).toMatchSnapshot() - }) -}) + const response2 = await fetch(new URL('/about', devServerURL)).then(d => + d.text() + ) + expect(response2).toMatchSnapshot() + }) + } +) From 7eeea9dd95a925d5a5f86e33c073e2eb05161b8f Mon Sep 17 00:00:00 2001 From: reaper Date: Tue, 18 Feb 2025 01:14:41 +0530 Subject: [PATCH 12/18] ci: fix timeout --- adex/tests/index.spec.js | 32 +++++++++++++------------------- adex/vitest.config.ts | 2 +- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/adex/tests/index.spec.js b/adex/tests/index.spec.js index ca1e75c..10b8f5c 100644 --- a/adex/tests/index.spec.js +++ b/adex/tests/index.spec.js @@ -2,24 +2,18 @@ import { beforeAll, describe, expect, it } from 'vitest' import { devServerURL, launchDemoDevServer } from './utils.js' -describe( - 'ssr minimal', - { - timeout: 30_000, - }, - () => { - beforeAll(async () => { - await launchDemoDevServer('tests/fixtures/minimal') - }) +describe('ssr minimal', () => { + beforeAll(async () => { + await launchDemoDevServer('tests/fixtures/minimal') + }) - it('basic response', async () => { - const response = await fetch(devServerURL).then(d => d.text()) - expect(response).toMatchSnapshot() + it('basic response', async () => { + const response = await fetch(devServerURL).then(d => d.text()) + expect(response).toMatchSnapshot() - const response2 = await fetch(new URL('/about', devServerURL)).then(d => - d.text() - ) - expect(response2).toMatchSnapshot() - }) - } -) + const response2 = await fetch(new URL('/about', devServerURL)).then(d => + d.text() + ) + expect(response2).toMatchSnapshot() + }) +}) diff --git a/adex/vitest.config.ts b/adex/vitest.config.ts index 6770d6a..06ba1d7 100644 --- a/adex/vitest.config.ts +++ b/adex/vitest.config.ts @@ -2,6 +2,6 @@ import { defineConfig } from 'vite' export default defineConfig({ test: { - testTimeout: 40_000, + hookTimeout: 30_000, }, }) From 1247c868a1114e396537daf899065546f4568f97 Mon Sep 17 00:00:00 2001 From: reaper Date: Tue, 18 Feb 2025 01:19:40 +0530 Subject: [PATCH 13/18] ci: test one --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8933693..01e023f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,4 +25,4 @@ jobs: pnpm i --frozen-lockfile - name: Test - run: cd adex; pnpm test:ci + run: pnpm test:ci From a223649a7e002a79a0beb77d9e32421899e886c4 Mon Sep 17 00:00:00 2001 From: reaper Date: Tue, 18 Feb 2025 01:21:31 +0530 Subject: [PATCH 14/18] ci: debug --- .github/workflows/test.yml | 2 +- adex/tests/utils.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 01e023f..55eb28c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/setup-node@v3 with: - node-version: '18.x' + node-version: '20' corepack-enable: true registry-url: 'https://registry.npmjs.org' diff --git a/adex/tests/utils.js b/adex/tests/utils.js index fe17822..61f18ed 100644 --- a/adex/tests/utils.js +++ b/adex/tests/utils.js @@ -41,6 +41,8 @@ function waitForServerStart(devServerProc) { serverReady = true } + console.log(stdout) + if (stdout.match(/localhost:(\d+)/) != null) { const matchedPort = stdout.match(/localhost:(\d+)/) devServerURL.port = matchedPort[1] @@ -71,8 +73,8 @@ function waitForServerStart(devServerProc) { } /** -* @param {string} fixturePath -*/ + * @param {string} fixturePath + */ export async function launchDemoDevServer(fixturePath) { console.log(`launching on ${dir(fixturePath)}`) /** @type {import('node:child_process').ChildProcess} */ From 7ff955984f690bf431109bc6640bdf49ba5ad9ec Mon Sep 17 00:00:00 2001 From: reaper Date: Tue, 18 Feb 2025 01:34:36 +0530 Subject: [PATCH 15/18] switch to node:test --- adex/package.json | 9 +- adex/snapshots/tests/index.spec.snap.cjs | 40 ++ adex/tests/__snapshots__/index.spec.js.snap | 45 --- adex/tests/index.spec.js | 19 +- adex/tests/utils.js | 11 +- pnpm-lock.yaml | 386 ++++++-------------- 6 files changed, 167 insertions(+), 343 deletions(-) create mode 100644 adex/snapshots/tests/index.spec.snap.cjs delete mode 100644 adex/tests/__snapshots__/index.spec.js.snap diff --git a/adex/package.json b/adex/package.json index 07ffa2c..3d4074c 100644 --- a/adex/package.json +++ b/adex/package.json @@ -60,8 +60,7 @@ ], "scripts": { "next": "bumpp", - "test": "vitest", - "test:ci":"vitest --run" + "test": "glob -c 'node --test' tests/**/*.spec.js" }, "dependencies": { "@barelyhuman/tiny-use": "^0.0.2", @@ -79,13 +78,15 @@ "unifont": "^0.0.2" }, "devDependencies": { + "@barelyhuman/node-snapshot": "^0.0.4", "@preact/preset-vite": "^2.8.2", "@types/node": "^20.14.10", "adex-adapter-node": "^0.0.17", "autoprefixer": "^10.4.19", + "glob": "^11.0.1", + "kolorist": "^1.8.0", "tailwindcss": "^3.4.4", - "vite": "^5.3.1", - "vitest": "^3.0.5" + "vite": "^5.3.1" }, "peerDependenciesMeta": { "adex-adapter-node": { diff --git a/adex/snapshots/tests/index.spec.snap.cjs b/adex/snapshots/tests/index.spec.snap.cjs new file mode 100644 index 0000000..e0cdfa6 --- /dev/null +++ b/adex/snapshots/tests/index.spec.snap.cjs @@ -0,0 +1,40 @@ +exports[`ssr minimal > basic response 1`]=`" + + + + + + + + + + + + + + +

Hello World

+ + + "` + +exports[`ssr minimal > basic response 2`]=`" + + + + + + + + + + + + + + +

About

+ + + "` + diff --git a/adex/tests/__snapshots__/index.spec.js.snap b/adex/tests/__snapshots__/index.spec.js.snap deleted file mode 100644 index e9ccb10..0000000 --- a/adex/tests/__snapshots__/index.spec.js.snap +++ /dev/null @@ -1,45 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`ssr minimal > basic response 1`] = ` -" - - - - - - - - - - - - - - -

Hello World

- - - " -`; - -exports[`ssr minimal > basic response 2`] = ` -" - - - - - - - - - - - - - - -

About

- - - " -`; diff --git a/adex/tests/index.spec.js b/adex/tests/index.spec.js index 10b8f5c..735611b 100644 --- a/adex/tests/index.spec.js +++ b/adex/tests/index.spec.js @@ -1,19 +1,24 @@ -import { beforeAll, describe, expect, it } from 'vitest' +import { snapshot } from '@barelyhuman/node-snapshot' +import { after, before, describe, it } from 'node:test' import { devServerURL, launchDemoDevServer } from './utils.js' -describe('ssr minimal', () => { - beforeAll(async () => { - await launchDemoDevServer('tests/fixtures/minimal') +describe('ssr minimal', async () => { + let devServerProc + before(async () => { + devServerProc = await launchDemoDevServer('tests/fixtures/minimal') + }) + after(async () => { + devServerProc.kill() }) - it('basic response', async () => { + await it('basic response', async ctx => { const response = await fetch(devServerURL).then(d => d.text()) - expect(response).toMatchSnapshot() + snapshot(ctx, response) const response2 = await fetch(new URL('/about', devServerURL)).then(d => d.text() ) - expect(response2).toMatchSnapshot() + snapshot(ctx, response2) }) }) diff --git a/adex/tests/utils.js b/adex/tests/utils.js index 61f18ed..4922caf 100644 --- a/adex/tests/utils.js +++ b/adex/tests/utils.js @@ -1,6 +1,7 @@ import { spawn } from 'node:child_process' import path from 'node:path' import { fileURLToPath } from 'node:url' +import { stripColors } from 'kolorist' const __dirname = path.dirname(fileURLToPath(import.meta.url)) export const dir = (...args) => path.join(__dirname, '..', ...args) @@ -37,14 +38,14 @@ function waitForServerStart(devServerProc) { stdout += data - if (stdout.match(/ready\sin\s[0-9]+\sms/g) != null) { + const matchableStdout = stripColors(stdout) + + if (matchableStdout.match(/ready\sin\s[0-9]+\sms/g) != null) { serverReady = true } - console.log(stdout) - - if (stdout.match(/localhost:(\d+)/) != null) { - const matchedPort = stdout.match(/localhost:(\d+)/) + if (matchableStdout.match(/localhost:(\d+)/) != null) { + const matchedPort = matchableStdout.match(/localhost:(\d+)/) devServerURL.port = matchedPort[1] if (serverReady) { cleanup() diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a56730..d2605e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -81,6 +81,9 @@ importers: specifier: ^0.0.2 version: 0.0.2 devDependencies: + '@barelyhuman/node-snapshot': + specifier: ^0.0.4 + version: 0.0.4 '@preact/preset-vite': specifier: ^2.8.2 version: 2.9.1(@babel/core@7.24.7)(preact@10.24.2)(vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1)) @@ -93,15 +96,18 @@ importers: autoprefixer: specifier: ^10.4.19 version: 10.4.20(postcss@8.4.47) + glob: + specifier: ^11.0.1 + version: 11.0.1 + kolorist: + specifier: ^1.8.0 + version: 1.8.0 tailwindcss: specifier: ^3.4.4 version: 3.4.13 vite: specifier: ^5.3.1 version: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) - vitest: - specifier: ^3.0.5 - version: 3.0.5(@types/node@20.16.10)(lightningcss@1.25.1) adex/tests/fixtures/minimal: dependencies: @@ -295,6 +301,10 @@ packages: peerDependencies: astring: ^1.8.6 + '@barelyhuman/node-snapshot@0.0.4': + resolution: {integrity: sha512-zNd691OYuyIVzeNK+CbyRnTNn4TKOgCPMl2RSMy90yyK/HKf1yd5oFu7wYxn4STruoJ/HjwLrkhgQXPEG0s52w==, tarball: https://registry.npmjs.org/@barelyhuman/node-snapshot/-/node-snapshot-0.0.4.tgz} + engines: {node: '>=18'} + '@barelyhuman/prettier-config@1.1.0': resolution: {integrity: sha512-OlommcxHffkX+BtAsXP1ipK0WzKgNha5a+T+reNlNZZkHPZzZrLpQ23snAbubN4xZiV73Z6E+To02ZZka0eTTQ==, tarball: https://registry.npmjs.org/@barelyhuman/prettier-config/-/prettier-config-1.1.0.tgz} @@ -505,6 +515,10 @@ packages: '@isaacs/string-locale-compare@1.1.0': resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==, tarball: https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz} + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, tarball: https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==, tarball: https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz} engines: {node: '>=6.0.0'} @@ -846,6 +860,9 @@ packages: resolution: {integrity: sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==, tarball: https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz} engines: {node: ^16.14.0 || >=18.0.0} + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, tarball: https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz} + '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==, tarball: https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz} engines: {node: '>=18'} @@ -878,35 +895,6 @@ packages: '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==, tarball: https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz} - '@vitest/expect@3.0.5': - resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==, tarball: https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz} - - '@vitest/mocker@3.0.5': - resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==, tarball: https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/pretty-format@3.0.5': - resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==, tarball: https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz} - - '@vitest/runner@3.0.5': - resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==, tarball: https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz} - - '@vitest/snapshot@3.0.5': - resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==, tarball: https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz} - - '@vitest/spy@3.0.5': - resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==, tarball: https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz} - - '@vitest/utils@3.0.5': - resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==, tarball: https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz} - JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, tarball: https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz} hasBin: true @@ -990,6 +978,10 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz} + engines: {node: '>=10'} + ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz} engines: {node: '>=12'} @@ -1013,10 +1005,6 @@ packages: array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==, tarball: https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz} - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, tarball: https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz} - engines: {node: '>=12'} - astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==, tarball: https://registry.npmjs.org/astring/-/astring-1.9.0.tgz} hasBin: true @@ -1101,10 +1089,6 @@ packages: caniuse-lite@1.0.30001667: resolution: {integrity: sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==, tarball: https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz} - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==, tarball: https://registry.npmjs.org/chai/-/chai-5.2.0.tgz} - engines: {node: '>=12'} - chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, tarball: https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz} engines: {node: '>=4'} @@ -1116,10 +1100,6 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, tarball: https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==, tarball: https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz} - engines: {node: '>= 16'} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz} engines: {node: '>= 8.10.0'} @@ -1299,10 +1279,6 @@ packages: babel-plugin-macros: optional: true - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==, tarball: https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz} - engines: {node: '>=6'} - deepmerge-ts@5.1.0: resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==, tarball: https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz} engines: {node: '>=16.0.0'} @@ -1328,6 +1304,10 @@ packages: didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==, tarball: https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz} + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==, tarball: https://registry.npmjs.org/diff/-/diff-5.2.0.tgz} + engines: {node: '>=0.3.1'} + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, tarball: https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz} @@ -1387,9 +1367,6 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, tarball: https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz} - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==, tarball: https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz} - esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz} engines: {node: '>=12'} @@ -1406,9 +1383,6 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, tarball: https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz} - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, tarball: https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz} - eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, tarball: https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz} @@ -1416,10 +1390,6 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==, tarball: https://registry.npmjs.org/execa/-/execa-8.0.1.tgz} engines: {node: '>=16.17'} - expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==, tarball: https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz} - engines: {node: '>=12.0.0'} - exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==, tarball: https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz} @@ -1533,6 +1503,11 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==, tarball: https://registry.npmjs.org/glob/-/glob-10.4.5.tgz} hasBin: true + glob@11.0.1: + resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==, tarball: https://registry.npmjs.org/glob/-/glob-11.0.1.tgz} + engines: {node: 20 || >=22} + hasBin: true + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, tarball: https://registry.npmjs.org/globals/-/globals-11.12.0.tgz} engines: {node: '>=4'} @@ -1718,6 +1693,10 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, tarball: https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz} + jackspeak@4.0.3: + resolution: {integrity: sha512-oSwM7q8PTHQWuZAlp995iPpPJ4Vkl7qT0ZRD+9duL9j2oBy6KcTfyxc8mEuHJYC+z/kbps80aJLkaNzTOrf/kw==, tarball: https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.3.tgz} + engines: {node: 20 || >=22} + jiti@1.21.6: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==, tarball: https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz} hasBin: true @@ -1880,18 +1859,16 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, tarball: https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz} hasBin: true - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==, tarball: https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz} + lru-cache@11.0.2: + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz} - magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz} engines: {node: '>=12'} @@ -1930,6 +1907,10 @@ packages: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==, tarball: https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz} hasBin: true + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==, tarball: https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz} + engines: {node: 20 || >=22} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, tarball: https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz} engines: {node: '>=16 || 14 >=14.17'} @@ -2222,6 +2203,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, tarball: https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==, tarball: https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz} + engines: {node: 20 || >=22} + path-type@5.0.0: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==, tarball: https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz} engines: {node: '>=12'} @@ -2229,13 +2214,6 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==, tarball: https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz} - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, tarball: https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz} - - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==, tarball: https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz} - engines: {node: '>= 14.16'} - perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==, tarball: https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz} @@ -2325,6 +2303,10 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, tarball: https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + proc-log@4.2.0: resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==, tarball: https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -2367,6 +2349,9 @@ packages: rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==, tarball: https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, tarball: https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz} + react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==, tarball: https://registry.npmjs.org/react/-/react-18.3.1.tgz} engines: {node: '>=0.10.0'} @@ -2472,9 +2457,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz} engines: {node: '>=8'} - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, tarball: https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz} - signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz} @@ -2552,12 +2534,6 @@ packages: resolution: {integrity: sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==, tarball: https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz} engines: {node: '>=16'} - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, tarball: https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz} - - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==, tarball: https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==, tarball: https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz} engines: {node: '>=0.6.19'} @@ -2631,24 +2607,6 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, tarball: https://registry.npmjs.org/through/-/through-2.3.8.tgz} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, tarball: https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz} - - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==, tarball: https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz} - - tinypool@1.0.2: - resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==, tarball: https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==, tarball: https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz} - engines: {node: '>=14.0.0'} - - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==, tarball: https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz} - engines: {node: '>=14.0.0'} - tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, tarball: https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz} engines: {node: '>=0.6.0'} @@ -2759,11 +2717,6 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, tarball: https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - vite-node@3.0.5: - resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==, tarball: https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - vite@5.4.8: resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==, tarball: https://registry.npmjs.org/vite/-/vite-5.4.8.tgz} engines: {node: ^18.0.0 || >=20.0.0} @@ -2795,34 +2748,6 @@ packages: terser: optional: true - vitest@3.0.5: - resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==, tarball: https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.5 - '@vitest/ui': 3.0.5 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/debug': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - walk-up-path@3.0.1: resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==, tarball: https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz} @@ -2843,11 +2768,6 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} hasBin: true - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, tarball: https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz} - engines: {node: '>=8'} - hasBin: true - wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==, tarball: https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz} @@ -3092,6 +3012,12 @@ snapshots: astring: 1.9.0 xtend: 4.0.2 + '@barelyhuman/node-snapshot@0.0.4': + dependencies: + diff: 5.2.0 + kleur: 4.1.5 + pretty-format: 29.7.0 + '@barelyhuman/prettier-config@1.1.0': {} '@barelyhuman/tiny-use@0.0.2': {} @@ -3281,6 +3207,10 @@ snapshots: '@isaacs/string-locale-compare@1.1.0': {} + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -3809,6 +3739,8 @@ snapshots: '@sigstore/core': 1.1.0 '@sigstore/protobuf-specs': 0.3.2 + '@sinclair/typebox@0.27.8': {} + '@sindresorhus/merge-streams@2.3.0': {} '@tailwindcss/forms@0.5.9(tailwindcss@3.4.13)': @@ -3837,46 +3769,6 @@ snapshots: '@types/wrap-ansi@3.0.0': {} - '@vitest/expect@3.0.5': - dependencies: - '@vitest/spy': 3.0.5 - '@vitest/utils': 3.0.5 - chai: 5.2.0 - tinyrainbow: 2.0.0 - - '@vitest/mocker@3.0.5(vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1))': - dependencies: - '@vitest/spy': 3.0.5 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) - - '@vitest/pretty-format@3.0.5': - dependencies: - tinyrainbow: 2.0.0 - - '@vitest/runner@3.0.5': - dependencies: - '@vitest/utils': 3.0.5 - pathe: 2.0.3 - - '@vitest/snapshot@3.0.5': - dependencies: - '@vitest/pretty-format': 3.0.5 - magic-string: 0.30.17 - pathe: 2.0.3 - - '@vitest/spy@3.0.5': - dependencies: - tinyspy: 3.0.2 - - '@vitest/utils@3.0.5': - dependencies: - '@vitest/pretty-format': 3.0.5 - loupe: 3.1.3 - tinyrainbow: 2.0.0 - JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -3945,6 +3837,8 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} any-promise@1.3.0: {} @@ -3962,8 +3856,6 @@ snapshots: array-ify@1.0.0: {} - assertion-error@2.0.1: {} - astring@1.9.0: {} autoprefixer@10.4.20(postcss@8.4.47): @@ -4065,14 +3957,6 @@ snapshots: caniuse-lite@1.0.30001667: {} - chai@5.2.0: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.3 - pathval: 2.0.0 - chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -4083,8 +3967,6 @@ snapshots: chardet@0.7.0: {} - check-error@2.1.1: {} - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -4256,8 +4138,6 @@ snapshots: dedent@1.5.3: {} - deep-eql@5.0.2: {} - deepmerge-ts@5.1.0: {} defaults@1.0.4: @@ -4275,6 +4155,8 @@ snapshots: didyoumean@1.2.2: {} + diff@5.2.0: {} + dlv@1.1.3: {} dom-serializer@2.0.0: @@ -4328,8 +4210,6 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-module-lexer@1.6.0: {} - esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -4362,10 +4242,6 @@ snapshots: estree-walker@2.0.2: {} - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.6 - eventemitter3@5.0.1: {} execa@8.0.1: @@ -4380,8 +4256,6 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - expect-type@1.1.0: {} - exponential-backoff@3.1.1: {} external-editor@3.1.0: @@ -4512,6 +4386,15 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 + glob@11.0.1: + dependencies: + foreground-child: 3.2.1 + jackspeak: 4.0.3 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 + globals@11.12.0: {} globby@14.0.2: @@ -4680,6 +4563,10 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.0.3: + dependencies: + '@isaacs/cliui': 8.0.2 + jiti@1.21.6: {} js-tokens@4.0.0: {} @@ -4806,18 +4693,14 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.1.3: {} - lru-cache@10.4.3: {} + lru-cache@11.0.2: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - magic-string@0.30.5: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -4858,6 +4741,10 @@ snapshots: mini-svg-data-uri@1.4.4: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -5170,14 +5057,15 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + path-type@5.0.0: {} pathe@1.1.2: {} - pathe@2.0.3: {} - - pathval@2.0.0: {} - perfect-debounce@1.0.0: {} picocolors@1.1.0: {} @@ -5250,6 +5138,12 @@ snapshots: prettier@3.3.2: {} + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + proc-log@4.2.0: {} proggy@2.0.0: {} @@ -5281,6 +5175,8 @@ snapshots: defu: 6.1.4 destr: 2.0.3 + react-is@18.3.1: {} + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -5393,8 +5289,6 @@ snapshots: shebang-regex@3.0.0: {} - siginfo@2.0.0: {} - signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -5469,10 +5363,6 @@ snapshots: stack-trace@1.0.0-pre2: {} - stackback@0.0.2: {} - - std-env@3.8.0: {} - string-argv@0.3.2: {} string-width@4.2.3: @@ -5575,16 +5465,6 @@ snapshots: through@2.3.8: {} - tinybench@2.9.0: {} - - tinyexec@0.3.2: {} - - tinypool@1.0.2: {} - - tinyrainbow@2.0.0: {} - - tinyspy@3.0.2: {} - tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -5675,24 +5555,6 @@ snapshots: validate-npm-package-name@5.0.1: {} - vite-node@3.0.5(@types/node@20.16.10)(lightningcss@1.25.1): - dependencies: - cac: 6.7.14 - debug: 4.4.0 - es-module-lexer: 1.6.0 - pathe: 2.0.3 - vite: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1): dependencies: esbuild: 0.21.5 @@ -5703,41 +5565,6 @@ snapshots: fsevents: 2.3.3 lightningcss: 1.25.1 - vitest@3.0.5(@types/node@20.16.10)(lightningcss@1.25.1): - dependencies: - '@vitest/expect': 3.0.5 - '@vitest/mocker': 3.0.5(vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1)) - '@vitest/pretty-format': 3.0.5 - '@vitest/runner': 3.0.5 - '@vitest/snapshot': 3.0.5 - '@vitest/spy': 3.0.5 - '@vitest/utils': 3.0.5 - chai: 5.2.0 - debug: 4.4.0 - expect-type: 1.1.0 - magic-string: 0.30.17 - pathe: 2.0.3 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.2 - tinyrainbow: 2.0.0 - vite: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) - vite-node: 3.0.5(@types/node@20.16.10)(lightningcss@1.25.1) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 20.16.10 - transitivePeerDependencies: - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - walk-up-path@3.0.1: {} wcwidth@1.0.1: @@ -5754,11 +5581,6 @@ snapshots: dependencies: isexe: 3.1.1 - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - wide-align@1.1.5: dependencies: string-width: 4.2.3 From 8a84aed96ba2790d0c601e917fde15b49b8ec3fd Mon Sep 17 00:00:00 2001 From: reaper Date: Thu, 27 Feb 2025 09:57:18 +0530 Subject: [PATCH 16/18] test: add another example with tailwind and tests --- adex/snapshots/tests/index.spec.snap.cjs | 40 -------- .../tests/minimal-tailwind.spec.snap.cjs | 80 ++++++++++++++++ adex/snapshots/tests/minimal.spec.snap.cjs | 94 +++++++++++++++++++ .../fixtures/minimal-tailwind/jsconfig.json | 6 ++ .../fixtures/minimal-tailwind/package.json | 14 +++ .../minimal-tailwind/postcss.config.js | 6 ++ .../fixtures/minimal-tailwind/src/global.css | 3 + .../minimal-tailwind/src/pages/about.jsx | 3 + .../minimal-tailwind/src/pages/index.jsx | 3 + .../minimal-tailwind/tailwind.config.js | 8 ++ .../fixtures/minimal-tailwind/vite.config.js | 13 +++ adex/tests/minimal-tailwind.spec.js | 34 +++++++ adex/tests/{index.spec.js => minimal.spec.js} | 13 ++- pnpm-lock.yaml | 22 +++++ 14 files changed, 297 insertions(+), 42 deletions(-) delete mode 100644 adex/snapshots/tests/index.spec.snap.cjs create mode 100644 adex/snapshots/tests/minimal-tailwind.spec.snap.cjs create mode 100644 adex/snapshots/tests/minimal.spec.snap.cjs create mode 100644 adex/tests/fixtures/minimal-tailwind/jsconfig.json create mode 100644 adex/tests/fixtures/minimal-tailwind/package.json create mode 100644 adex/tests/fixtures/minimal-tailwind/postcss.config.js create mode 100644 adex/tests/fixtures/minimal-tailwind/src/global.css create mode 100644 adex/tests/fixtures/minimal-tailwind/src/pages/about.jsx create mode 100644 adex/tests/fixtures/minimal-tailwind/src/pages/index.jsx create mode 100644 adex/tests/fixtures/minimal-tailwind/tailwind.config.js create mode 100644 adex/tests/fixtures/minimal-tailwind/vite.config.js create mode 100644 adex/tests/minimal-tailwind.spec.js rename adex/tests/{index.spec.js => minimal.spec.js} (61%) diff --git a/adex/snapshots/tests/index.spec.snap.cjs b/adex/snapshots/tests/index.spec.snap.cjs deleted file mode 100644 index e0cdfa6..0000000 --- a/adex/snapshots/tests/index.spec.snap.cjs +++ /dev/null @@ -1,40 +0,0 @@ -exports[`ssr minimal > basic response 1`]=`" - - - - - - - - - - - - - - -

Hello World

- - - "` - -exports[`ssr minimal > basic response 2`]=`" - - - - - - - - - - - - - - -

About

- - - "` - diff --git a/adex/snapshots/tests/minimal-tailwind.spec.snap.cjs b/adex/snapshots/tests/minimal-tailwind.spec.snap.cjs new file mode 100644 index 0000000..47d3038 --- /dev/null +++ b/adex/snapshots/tests/minimal-tailwind.spec.snap.cjs @@ -0,0 +1,80 @@ +exports[`ssr minimal with styles > gives a non-static ssr response 1`]=`" + + + + + + + + + + + + + + +

Hello World

+ + + "` + +exports[`ssr minimal with styles > gives a static SSR response 1`]=`" + + + + + + + + + + + + + + +

About

+ + + "` + +exports[`devMode ssr minimal with styles > gives a non-static ssr response 1`]=`" + + + + + + + + + + + + + + +

Hello World

+ + + "` + +exports[`devMode ssr minimal with styles > gives a static SSR response 1`]=`" + + + + + + + + + + + + + + +

About

+ + + "` + diff --git a/adex/snapshots/tests/minimal.spec.snap.cjs b/adex/snapshots/tests/minimal.spec.snap.cjs new file mode 100644 index 0000000..464fa0b --- /dev/null +++ b/adex/snapshots/tests/minimal.spec.snap.cjs @@ -0,0 +1,94 @@ +exports[`ssr minimal > gives a non-static ssr response 1`]=`" + + + + + + + + + + + + + + +

Hello World

+ + + "` + +exports[`ssr minimal > gives a static SSR response 1`]=`" + + + + + + + + + + + + + + +

About

+ + + "` + +exports[`ssr minimal > blank styles 1`]=`"import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/@id/__x00__virtual:adex:global.css");import { updateStyle as __vite__updateStyle, removeStyle as __vite__removeStyle } from "/@vite/client" +const __vite__id = "\u0000virtual:adex:global.css" +const __vite__css = "" +__vite__updateStyle(__vite__id, __vite__css) +import.meta.hot.accept() +import.meta.hot.prune(() => __vite__removeStyle(__vite__id))"` + +exports[`devMode ssr minimal > gives a non-static ssr response 1`]=`" + + + + + + + + + + + + + + +

Hello World

+ + + "` + +exports[`devMode ssr minimal > gives a static SSR response 1`]=`" + + + + + + + + + + + + + + +

About

+ + + "` + +exports[`devMode ssr minimal > blank styles 1`]=`"import { createHotContext as __vite__createHotContext } from \"/@vite/client\";import.meta.hot = __vite__createHotContext(\"/@id/__x00__virtual:adex:global.css\");import { updateStyle as __vite__updateStyle, removeStyle as __vite__removeStyle } from \"/@vite/client\" +const __vite__id = \"\\u0000virtual:adex:global.css\" +const __vite__css = \"\" +__vite__updateStyle(__vite__id, __vite__css) +import.meta.hot.accept() +import.meta.hot.prune(() => __vite__removeStyle(__vite__id))"` + diff --git a/adex/tests/fixtures/minimal-tailwind/jsconfig.json b/adex/tests/fixtures/minimal-tailwind/jsconfig.json new file mode 100644 index 0000000..ada9d24 --- /dev/null +++ b/adex/tests/fixtures/minimal-tailwind/jsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions":{ + "jsx":"react-jsx", + "jsxImportSource": "preact" + } +} \ No newline at end of file diff --git a/adex/tests/fixtures/minimal-tailwind/package.json b/adex/tests/fixtures/minimal-tailwind/package.json new file mode 100644 index 0000000..85bb496 --- /dev/null +++ b/adex/tests/fixtures/minimal-tailwind/package.json @@ -0,0 +1,14 @@ +{ + "name": "minimal-tailwind", + "type": "module", + "dependencies": { + "@preact/preset-vite": "catalog:", + "adex": "workspace:*", + "preact": "catalog:" + }, + "devDependencies": { + "autoprefixer": "^10.4.20", + "tailwindcss": "^3", + "vite": "^5.4.8" + } +} diff --git a/adex/tests/fixtures/minimal-tailwind/postcss.config.js b/adex/tests/fixtures/minimal-tailwind/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/adex/tests/fixtures/minimal-tailwind/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/adex/tests/fixtures/minimal-tailwind/src/global.css b/adex/tests/fixtures/minimal-tailwind/src/global.css new file mode 100644 index 0000000..bd6213e --- /dev/null +++ b/adex/tests/fixtures/minimal-tailwind/src/global.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/adex/tests/fixtures/minimal-tailwind/src/pages/about.jsx b/adex/tests/fixtures/minimal-tailwind/src/pages/about.jsx new file mode 100644 index 0000000..0202b3b --- /dev/null +++ b/adex/tests/fixtures/minimal-tailwind/src/pages/about.jsx @@ -0,0 +1,3 @@ +export default function AboutPage() { + return

About

+} diff --git a/adex/tests/fixtures/minimal-tailwind/src/pages/index.jsx b/adex/tests/fixtures/minimal-tailwind/src/pages/index.jsx new file mode 100644 index 0000000..631b063 --- /dev/null +++ b/adex/tests/fixtures/minimal-tailwind/src/pages/index.jsx @@ -0,0 +1,3 @@ +export default function Page() { + return

Hello World

+} diff --git a/adex/tests/fixtures/minimal-tailwind/tailwind.config.js b/adex/tests/fixtures/minimal-tailwind/tailwind.config.js new file mode 100644 index 0000000..2ff664f --- /dev/null +++ b/adex/tests/fixtures/minimal-tailwind/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./src/pages/**/*.{tsx,jsx}'], + theme: { + extend: {}, + }, + plugins: [], +} diff --git a/adex/tests/fixtures/minimal-tailwind/vite.config.js b/adex/tests/fixtures/minimal-tailwind/vite.config.js new file mode 100644 index 0000000..b05212f --- /dev/null +++ b/adex/tests/fixtures/minimal-tailwind/vite.config.js @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite' +import { adex } from "adex" +import preact from "@preact/preset-vite" + +export default defineConfig({ + plugins: [ + adex({ + islands: false, + ssr: true, + }), + preact(), + ], +}) diff --git a/adex/tests/minimal-tailwind.spec.js b/adex/tests/minimal-tailwind.spec.js new file mode 100644 index 0000000..dde5956 --- /dev/null +++ b/adex/tests/minimal-tailwind.spec.js @@ -0,0 +1,34 @@ +import { snapshot } from '@barelyhuman/node-snapshot' +import { after, before, describe, it } from 'node:test' +import assert from 'node:assert' + +import { devServerURL, launchDemoDevServer } from './utils.js' + +describe('devMode ssr minimal with styles', async () => { + let devServerProc + before(async () => { + devServerProc = await launchDemoDevServer('tests/fixtures/minimal-tailwind') + }) + after(async () => { + devServerProc.kill() + }) + + await it('gives a non-static ssr response', async ctx => { + const response = await fetch(devServerURL).then(d => d.text()) + snapshot(ctx, response) + }) + + await it('gives a static SSR response', async ctx => { + const response2 = await fetch(new URL('/about', devServerURL)).then(d => + d.text() + ) + snapshot(ctx, response2) + }) + + await it('has styles', async ctx => { + const response = await fetch( + new URL('/virtual:adex:global.css', devServerURL) + ).then(d => d.text()) + assert.ok(response.includes('.text-red-500')) + }) +}) diff --git a/adex/tests/index.spec.js b/adex/tests/minimal.spec.js similarity index 61% rename from adex/tests/index.spec.js rename to adex/tests/minimal.spec.js index 735611b..e9d8adb 100644 --- a/adex/tests/index.spec.js +++ b/adex/tests/minimal.spec.js @@ -3,7 +3,7 @@ import { after, before, describe, it } from 'node:test' import { devServerURL, launchDemoDevServer } from './utils.js' -describe('ssr minimal', async () => { +describe('devMode ssr minimal', async () => { let devServerProc before(async () => { devServerProc = await launchDemoDevServer('tests/fixtures/minimal') @@ -12,13 +12,22 @@ describe('ssr minimal', async () => { devServerProc.kill() }) - await it('basic response', async ctx => { + await it('gives a non-static ssr response', async ctx => { const response = await fetch(devServerURL).then(d => d.text()) snapshot(ctx, response) + }) + await it('gives a static SSR response', async ctx => { const response2 = await fetch(new URL('/about', devServerURL)).then(d => d.text() ) snapshot(ctx, response2) }) + + await it('blank styles', async ctx => { + const response = await fetch( + new URL('/virtual:adex:global.css', devServerURL) + ).then(d => d.text()) + snapshot(ctx, response) + }) }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d2605e8..a577192 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -125,6 +125,28 @@ importers: specifier: ^5.4.8 version: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) + adex/tests/fixtures/minimal-tailwind: + dependencies: + '@preact/preset-vite': + specifier: 'catalog:' + version: 2.9.1(@babel/core@7.24.7)(preact@10.24.2)(vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1)) + adex: + specifier: workspace:* + version: link:../../.. + preact: + specifier: 'catalog:' + version: 10.24.2 + devDependencies: + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + tailwindcss: + specifier: ^3 + version: 3.4.13 + vite: + specifier: ^5.4.8 + version: 5.4.8(@types/node@20.16.10)(lightningcss@1.25.1) + create-adex: dependencies: kleur: From 29934f789fd3d39a91e0c28b9570162a94f60776 Mon Sep 17 00:00:00 2001 From: reaper Date: Thu, 27 Feb 2025 19:11:01 +0530 Subject: [PATCH 17/18] chore: switch to `@matteo.collina/snap` for now --- .../0f704ada2712880ee7394b0fc9b10abf/0.json | 1 + .../0f704ada2712880ee7394b0fc9b10abf/1.json | 1 + .../dd4c9d1ee8f7b693c42e503acab1a0c0/0.json | 1 + .../dd4c9d1ee8f7b693c42e503acab1a0c0/1.json | 1 + .../dd4c9d1ee8f7b693c42e503acab1a0c0/2.json | 1 + adex/package.json | 2 +- .../tests/minimal-tailwind.spec.snap.cjs | 80 ---------------- adex/snapshots/tests/minimal.spec.snap.cjs | 94 ------------------- adex/tests/minimal-tailwind.spec.js | 11 ++- adex/tests/minimal.spec.js | 11 ++- pnpm-lock.yaml | 21 +++++ 11 files changed, 41 insertions(+), 183 deletions(-) create mode 100644 adex/.snapshots/0f704ada2712880ee7394b0fc9b10abf/0.json create mode 100644 adex/.snapshots/0f704ada2712880ee7394b0fc9b10abf/1.json create mode 100644 adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/0.json create mode 100644 adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/1.json create mode 100644 adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/2.json delete mode 100644 adex/snapshots/tests/minimal-tailwind.spec.snap.cjs delete mode 100644 adex/snapshots/tests/minimal.spec.snap.cjs diff --git a/adex/.snapshots/0f704ada2712880ee7394b0fc9b10abf/0.json b/adex/.snapshots/0f704ada2712880ee7394b0fc9b10abf/0.json new file mode 100644 index 0000000..7aa40b2 --- /dev/null +++ b/adex/.snapshots/0f704ada2712880ee7394b0fc9b10abf/0.json @@ -0,0 +1 @@ +"\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n

Hello World

\n \n \n " \ No newline at end of file diff --git a/adex/.snapshots/0f704ada2712880ee7394b0fc9b10abf/1.json b/adex/.snapshots/0f704ada2712880ee7394b0fc9b10abf/1.json new file mode 100644 index 0000000..5f09be1 --- /dev/null +++ b/adex/.snapshots/0f704ada2712880ee7394b0fc9b10abf/1.json @@ -0,0 +1 @@ +"\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n

About

\n \n \n " \ No newline at end of file diff --git a/adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/0.json b/adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/0.json new file mode 100644 index 0000000..4e505d1 --- /dev/null +++ b/adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/0.json @@ -0,0 +1 @@ +"\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n

Hello World

\n \n \n " \ No newline at end of file diff --git a/adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/1.json b/adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/1.json new file mode 100644 index 0000000..5f09be1 --- /dev/null +++ b/adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/1.json @@ -0,0 +1 @@ +"\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n

About

\n \n \n " \ No newline at end of file diff --git a/adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/2.json b/adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/2.json new file mode 100644 index 0000000..13a73d8 --- /dev/null +++ b/adex/.snapshots/dd4c9d1ee8f7b693c42e503acab1a0c0/2.json @@ -0,0 +1 @@ +"import { createHotContext as __vite__createHotContext } from \"/@vite/client\";import.meta.hot = __vite__createHotContext(\"/@id/__x00__virtual:adex:global.css\");import { updateStyle as __vite__updateStyle, removeStyle as __vite__removeStyle } from \"/@vite/client\"\nconst __vite__id = \"\\u0000virtual:adex:global.css\"\nconst __vite__css = \"\"\n__vite__updateStyle(__vite__id, __vite__css)\nimport.meta.hot.accept()\nimport.meta.hot.prune(() => __vite__removeStyle(__vite__id))" \ No newline at end of file diff --git a/adex/package.json b/adex/package.json index 3d4074c..bdf1d99 100644 --- a/adex/package.json +++ b/adex/package.json @@ -78,7 +78,7 @@ "unifont": "^0.0.2" }, "devDependencies": { - "@barelyhuman/node-snapshot": "^0.0.4", + "@matteo.collina/snap": "^0.3.0", "@preact/preset-vite": "^2.8.2", "@types/node": "^20.14.10", "adex-adapter-node": "^0.0.17", diff --git a/adex/snapshots/tests/minimal-tailwind.spec.snap.cjs b/adex/snapshots/tests/minimal-tailwind.spec.snap.cjs deleted file mode 100644 index 47d3038..0000000 --- a/adex/snapshots/tests/minimal-tailwind.spec.snap.cjs +++ /dev/null @@ -1,80 +0,0 @@ -exports[`ssr minimal with styles > gives a non-static ssr response 1`]=`" - - - - - - - - - - - - - - -

Hello World

- - - "` - -exports[`ssr minimal with styles > gives a static SSR response 1`]=`" - - - - - - - - - - - - - - -

About

- - - "` - -exports[`devMode ssr minimal with styles > gives a non-static ssr response 1`]=`" - - - - - - - - - - - - - - -

Hello World

- - - "` - -exports[`devMode ssr minimal with styles > gives a static SSR response 1`]=`" - - - - - - - - - - - - - - -

About

- - - "` - diff --git a/adex/snapshots/tests/minimal.spec.snap.cjs b/adex/snapshots/tests/minimal.spec.snap.cjs deleted file mode 100644 index 464fa0b..0000000 --- a/adex/snapshots/tests/minimal.spec.snap.cjs +++ /dev/null @@ -1,94 +0,0 @@ -exports[`ssr minimal > gives a non-static ssr response 1`]=`" - - - - - - - - - - - - - - -

Hello World

- - - "` - -exports[`ssr minimal > gives a static SSR response 1`]=`" - - - - - - - - - - - - - - -

About

- - - "` - -exports[`ssr minimal > blank styles 1`]=`"import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/@id/__x00__virtual:adex:global.css");import { updateStyle as __vite__updateStyle, removeStyle as __vite__removeStyle } from "/@vite/client" -const __vite__id = "\u0000virtual:adex:global.css" -const __vite__css = "" -__vite__updateStyle(__vite__id, __vite__css) -import.meta.hot.accept() -import.meta.hot.prune(() => __vite__removeStyle(__vite__id))"` - -exports[`devMode ssr minimal > gives a non-static ssr response 1`]=`" - - - - - - - - - - - - - - -

Hello World

- - - "` - -exports[`devMode ssr minimal > gives a static SSR response 1`]=`" - - - - - - - - - - - - - - -

About

- - - "` - -exports[`devMode ssr minimal > blank styles 1`]=`"import { createHotContext as __vite__createHotContext } from \"/@vite/client\";import.meta.hot = __vite__createHotContext(\"/@id/__x00__virtual:adex:global.css\");import { updateStyle as __vite__updateStyle, removeStyle as __vite__removeStyle } from \"/@vite/client\" -const __vite__id = \"\\u0000virtual:adex:global.css\" -const __vite__css = \"\" -__vite__updateStyle(__vite__id, __vite__css) -import.meta.hot.accept() -import.meta.hot.prune(() => __vite__removeStyle(__vite__id))"` - diff --git a/adex/tests/minimal-tailwind.spec.js b/adex/tests/minimal-tailwind.spec.js index dde5956..e4cc8a0 100644 --- a/adex/tests/minimal-tailwind.spec.js +++ b/adex/tests/minimal-tailwind.spec.js @@ -1,8 +1,9 @@ -import { snapshot } from '@barelyhuman/node-snapshot' +import Snap from '@matteo.collina/snap' import { after, before, describe, it } from 'node:test' -import assert from 'node:assert' +import assert, { deepEqual } from 'node:assert' import { devServerURL, launchDemoDevServer } from './utils.js' +const snap = Snap(import.meta.url) describe('devMode ssr minimal with styles', async () => { let devServerProc @@ -15,14 +16,16 @@ describe('devMode ssr minimal with styles', async () => { await it('gives a non-static ssr response', async ctx => { const response = await fetch(devServerURL).then(d => d.text()) - snapshot(ctx, response) + const snapshot = await snap(response) + deepEqual(response, snapshot) }) await it('gives a static SSR response', async ctx => { const response2 = await fetch(new URL('/about', devServerURL)).then(d => d.text() ) - snapshot(ctx, response2) + const snapshot = await snap(response2) + deepEqual(response2, snapshot) }) await it('has styles', async ctx => { diff --git a/adex/tests/minimal.spec.js b/adex/tests/minimal.spec.js index e9d8adb..e307fd5 100644 --- a/adex/tests/minimal.spec.js +++ b/adex/tests/minimal.spec.js @@ -1,8 +1,11 @@ -import { snapshot } from '@barelyhuman/node-snapshot' +import Snap from '@matteo.collina/snap' import { after, before, describe, it } from 'node:test' +import { deepEqual } from 'node:assert/strict' import { devServerURL, launchDemoDevServer } from './utils.js' +const snap = Snap(import.meta.url) + describe('devMode ssr minimal', async () => { let devServerProc before(async () => { @@ -14,20 +17,20 @@ describe('devMode ssr minimal', async () => { await it('gives a non-static ssr response', async ctx => { const response = await fetch(devServerURL).then(d => d.text()) - snapshot(ctx, response) + deepEqual(response, await snap(response)) }) await it('gives a static SSR response', async ctx => { const response2 = await fetch(new URL('/about', devServerURL)).then(d => d.text() ) - snapshot(ctx, response2) + deepEqual(response2, await snap(response2)) }) await it('blank styles', async ctx => { const response = await fetch( new URL('/virtual:adex:global.css', devServerURL) ).then(d => d.text()) - snapshot(ctx, response) + deepEqual(response, await snap(response)) }) }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a577192..a8c24b5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,6 +84,9 @@ importers: '@barelyhuman/node-snapshot': specifier: ^0.0.4 version: 0.0.4 + '@matteo.collina/snap': + specifier: ^0.3.0 + version: 0.3.0 '@preact/preset-vite': specifier: ^2.8.2 version: 2.9.1(@babel/core@7.24.7)(preact@10.24.2)(vite@5.4.8(@types/node@20.16.10)(lightningcss@1.25.1)) @@ -608,6 +611,9 @@ packages: resolution: {integrity: sha512-C4CycUp4rgdTGtWYGoa+Ci8EZUsO7b0sAl8Vsdwzjk3g2FRD8d62tpD5Q6drthUQrWRKWpg62rY3q+H+7CGSPg==, tarball: https://registry.npmjs.org/@lerna-lite/version/-/version-3.7.1.tgz} engines: {node: ^18.0.0 || >=20.0.0} + '@matteo.collina/snap@0.3.0': + resolution: {integrity: sha512-CtoSZVegbLSMOoDjy+5TCZFY6juqSpc7P7slP5hx5jTu28ncvouAf1QrBqeLuPimIonU+ekbtkNNOlIl/a6GFw==, tarball: https://registry.npmjs.org/@matteo.collina/snap/-/snap-0.3.0.tgz} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, tarball: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz} engines: {node: '>= 8'} @@ -1442,6 +1448,10 @@ packages: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==, tarball: https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==, tarball: https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz} + engines: {node: '>=18'} + foreground-child@3.2.1: resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==, tarball: https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz} engines: {node: '>=14'} @@ -3417,6 +3427,11 @@ snapshots: - supports-color - typescript + '@matteo.collina/snap@0.3.0': + dependencies: + find-up: 7.0.0 + slash: 5.1.0 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4317,6 +4332,12 @@ snapshots: locate-path: 7.2.0 path-exists: 5.0.0 + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + foreground-child@3.2.1: dependencies: cross-spawn: 7.0.6 From 9970ac0edcbef68a69956cede2e976562827b69e Mon Sep 17 00:00:00 2001 From: reaper Date: Fri, 28 Feb 2025 00:09:01 +0530 Subject: [PATCH 18/18] fix: null check viteEnv for builds --- adex/src/vite.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adex/src/vite.js b/adex/src/vite.js index 555b988..6c84bbe 100644 --- a/adex/src/vite.js +++ b/adex/src/vite.js @@ -241,7 +241,7 @@ function adexIslandsBuilder() { // if being imported by the client, don't send // back the transformed server code, send the // original component - if (!viteEnv.ssr) return + if (!viteEnv?.ssr) return const islands = findIslands(readSourceFile(id), { isFunctionIsland: node =>