diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index a85c8ff..55eb28c 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -14,14 +14,15 @@ jobs:
- uses: actions/setup-node@v3
with:
- node-version: '18.x'
+ node-version: '20'
corepack-enable: true
registry-url: 'https://registry.npmjs.org'
- name: Deps
run: |
+ npm i -g corepack@latest
corepack enable
pnpm i --frozen-lockfile
- name: Test
- run: pnpm -r test
+ run: pnpm test:ci
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 b7a19b4..bdf1d99 100644
--- a/adex/package.json
+++ b/adex/package.json
@@ -59,7 +59,8 @@
"runtime"
],
"scripts": {
- "next": "bumpp"
+ "next": "bumpp",
+ "test": "glob -c 'node --test' tests/**/*.spec.js"
},
"dependencies": {
"@barelyhuman/tiny-use": "^0.0.2",
@@ -77,10 +78,13 @@
"unifont": "^0.0.2"
},
"devDependencies": {
+ "@matteo.collina/snap": "^0.3.0",
"@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"
},
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..6c84bbe 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 }),
@@ -176,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 =>
@@ -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/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/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/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/minimal-tailwind.spec.js b/adex/tests/minimal-tailwind.spec.js
new file mode 100644
index 0000000..e4cc8a0
--- /dev/null
+++ b/adex/tests/minimal-tailwind.spec.js
@@ -0,0 +1,37 @@
+import Snap from '@matteo.collina/snap'
+import { after, before, describe, it } from 'node:test'
+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
+ 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())
+ 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()
+ )
+ const snapshot = await snap(response2)
+ deepEqual(response2, snapshot)
+ })
+
+ 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/minimal.spec.js b/adex/tests/minimal.spec.js
new file mode 100644
index 0000000..e307fd5
--- /dev/null
+++ b/adex/tests/minimal.spec.js
@@ -0,0 +1,36 @@
+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 () => {
+ devServerProc = await launchDemoDevServer('tests/fixtures/minimal')
+ })
+ after(async () => {
+ devServerProc.kill()
+ })
+
+ await it('gives a non-static ssr response', async ctx => {
+ const response = await fetch(devServerURL).then(d => d.text())
+ 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()
+ )
+ 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())
+ deepEqual(response, await snap(response))
+ })
+})
diff --git a/adex/tests/utils.js b/adex/tests/utils.js
new file mode 100644
index 0000000..4922caf
--- /dev/null
+++ b/adex/tests/utils.js
@@ -0,0 +1,96 @@
+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)
+
+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
+
+ const matchableStdout = stripColors(stdout)
+
+ if (matchableStdout.match(/ready\sin\s[0-9]+\sms/g) != null) {
+ serverReady = true
+ }
+
+ if (matchableStdout.match(/localhost:(\d+)/) != null) {
+ const matchedPort = matchableStdout.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..06ba1d7
--- /dev/null
+++ b/adex/vitest.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+
+export default defineConfig({
+ test: {
+ hookTimeout: 30_000,
+ },
+})
diff --git a/package.json b/package.json
index c6da7fc..e4a2f25 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,8 @@
"author": "reaper",
"scripts": {
"play": "pnpm --filter='playground' -r dev",
- "test": "echo 'true'",
+ "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"
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..a8c24b5 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'
@@ -72,6 +81,12 @@ importers:
specifier: ^0.0.2
version: 0.0.2
devDependencies:
+ '@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))
@@ -84,6 +99,12 @@ 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
@@ -91,6 +112,44 @@ importers:
specifier: ^5.3.1
version: 5.4.8(@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)
+
+ 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:
@@ -267,6 +326,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}
@@ -477,6 +540,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'}
@@ -544,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'}
@@ -818,6 +888,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'}
@@ -933,6 +1006,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'}
@@ -1213,8 +1290,8 @@ 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}
+ 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: '*'
@@ -1255,6 +1332,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}
@@ -1367,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'}
@@ -1450,6 +1535,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'}
@@ -1635,6 +1725,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
@@ -1800,6 +1894,10 @@ packages:
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}
@@ -1841,6 +1939,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'}
@@ -1900,8 +2002,8 @@ 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}
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}
@@ -2133,6 +2235,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,6 +2335,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}
@@ -2271,6 +2381,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'}
@@ -2784,7 +2897,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 +3028,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
@@ -2931,6 +3044,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': {}
@@ -3120,6 +3239,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
@@ -3304,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
@@ -3523,7 +3651,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
@@ -3648,6 +3776,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)':
@@ -3719,7 +3849,7 @@ snapshots:
agent-base@7.1.1:
dependencies:
- debug: 4.3.5
+ debug: 4.4.0
transitivePeerDependencies:
- supports-color
@@ -3744,6 +3874,8 @@ snapshots:
dependencies:
color-convert: 2.0.1
+ ansi-styles@5.2.0: {}
+
ansi-styles@6.2.1: {}
any-promise@1.3.0: {}
@@ -4037,9 +4169,9 @@ snapshots:
data-uri-to-buffer@4.0.1: {}
- debug@4.3.5:
+ debug@4.4.0:
dependencies:
- ms: 2.1.2
+ ms: 2.1.3
dedent@1.5.3: {}
@@ -4060,6 +4192,8 @@ snapshots:
didyoumean@1.2.2: {}
+ diff@5.2.0: {}
+
dlv@1.1.3: {}
dom-serializer@2.0.0:
@@ -4198,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
@@ -4289,6 +4429,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:
@@ -4334,14 +4483,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
@@ -4457,6 +4606,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: {}
@@ -4585,6 +4738,8 @@ snapshots:
lru-cache@10.4.3: {}
+ lru-cache@11.0.2: {}
+
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
@@ -4629,6 +4784,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
@@ -4685,7 +4844,7 @@ snapshots:
mrmime@2.0.0: {}
- ms@2.1.2: {}
+ ms@2.1.3: {}
mute-stream@1.0.0: {}
@@ -4941,6 +5100,11 @@ 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: {}
@@ -5017,6 +5181,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: {}
@@ -5048,6 +5218,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
@@ -5190,7 +5362,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
@@ -5361,7 +5533,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
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