diff --git a/.changeset/tall-teachers-carry.md b/.changeset/tall-teachers-carry.md new file mode 100644 index 0000000..3c4c5fc --- /dev/null +++ b/.changeset/tall-teachers-carry.md @@ -0,0 +1,61 @@ +--- +'@hono/vite-build': minor +--- + +Added a new Netlify Functions build adapter. + +This adapter can be imported from `@hono/vite-build/netlify-functions` and will +compile your Hono app to comply with the requirements of the Netlify Functions +runtime. + +* The default export will have the `hono/netlify` adapter applied to it. +* A `config` object will be exported, setting the function path to `'/*'` and + `preferStatic` to `true`. + +Please note, this is for the Netlify Functions runtime, not the Netlify Edge +Functions runtime. + +Example: + +```ts +// vite.config.ts +import { defineConfig } from "vite"; +import devServer from "@hono/vite-dev-server"; +import build from "@hono/vite-build/netlify-functions"; + +export default defineConfig({ + plugins: [ + devServer({ + entry: "./src/index.ts", + }), + build({ + entry: "./src/index.ts", + output: "functions/server/index.js" + }) + ], +}); +``` + +If you also have a `public/publish` directory for your assets that should be +published to the corresponding Netlify site, then after running a build, you +would end up with a directory structure like: + +``` +dist/ + functions/ + server/ + index.js + publish/ + robots.txt + .... +``` + +then you can use a netlify.toml that looks like: + +```toml +# https://ntl.fyi/file-based-build-config +[build] +command = "vite build" +functions = "dist/functions" +publish = "dist/publish" +``` diff --git a/packages/build/README.md b/packages/build/README.md index 3f60c5c..d4cb720 100644 --- a/packages/build/README.md +++ b/packages/build/README.md @@ -9,6 +9,7 @@ Here are the modules included: - `@hono/vite-build/cloudflare-workers` - `@hono/vite-build/bun` - `@hono/vite-build/node` +- `@hono/vite-build/netlify-functions` ## Usage @@ -36,6 +37,7 @@ import build from '@hono/vite-build/bun' // import build from '@hono/vite-build/cloudflare-pages' // import build from '@hono/vite-build/cloudflare-workers' // import build from '@hono/vite-build/node' +// import build from '@hono/vite-build/netlify-functions' export default defineConfig({ plugins: [ @@ -51,7 +53,7 @@ export default defineConfig({ ### Build -Just runĀ `vite build`. +Just run `vite build`. ```bash npm exec vite build diff --git a/packages/build/package.json b/packages/build/package.json index e8e5437..6ae7875 100644 --- a/packages/build/package.json +++ b/packages/build/package.json @@ -36,6 +36,10 @@ "types": "./dist/adapter/cloudflare-workers/index.d.ts", "import": "./dist/adapter/cloudflare-workers/index.js" }, + "./netlify-functions": { + "types": "./dist/adapter/netlify-functions/index.d.ts", + "import": "./dist/adapter/netlify-functions/index.js" + }, "./deno": { "types": "./dist/adapter/deno/index.d.ts", "import": "./dist/adapter/deno/index.js" @@ -57,6 +61,9 @@ ], "cloudflare-workers": [ "./dist/adapter/cloudflare-workers/index.d.ts" + ], + "netlify-functions": [ + "./dist/adapter/netlify-functions/index.d.ts" ] } }, diff --git a/packages/build/src/adapter/netlify-functions/index.ts b/packages/build/src/adapter/netlify-functions/index.ts new file mode 100644 index 0000000..2854932 --- /dev/null +++ b/packages/build/src/adapter/netlify-functions/index.ts @@ -0,0 +1,21 @@ +import type { Plugin } from 'vite' +import type { BuildOptions } from '../../base.js' +import buildPlugin from '../../base.js' + +export type NetlifyFunctionsBuildOptions = BuildOptions + +export default function netlifyFunctionsBuildPlugin( + pluginOptions?: NetlifyFunctionsBuildOptions +): Plugin { + return { + ...buildPlugin({ + ...{ + entryContentBeforeHooks: [() => 'import { handle } from "hono/netlify"'], + entryContentAfterHooks: [() => 'export const config = { path: "/*", preferStatic: true }'], + entryContentDefaultExportHook: (appName) => `export default handle(${appName})`, + }, + ...pluginOptions, + }), + name: '@hono/vite-build/netlify-functions', + } +} diff --git a/packages/build/src/base.ts b/packages/build/src/base.ts index 8327a63..ef9b9dd 100644 --- a/packages/build/src/base.ts +++ b/packages/build/src/base.ts @@ -25,7 +25,10 @@ export type BuildOptions = { } & Omit export const defaultOptions: Required< - Omit + Omit< + BuildOptions, + 'entryContentAfterHooks' | 'entryContentBeforeHooks' | 'entryContentDefaultExportHook' + > > = { entry: ['src/index.ts', './src/index.tsx', './app/server.ts'], output: 'index.js', @@ -46,7 +49,6 @@ const buildPlugin = (options: BuildOptions): Plugin => { const virtualEntryId = 'virtual:build-entry-module' const resolvedVirtualEntryId = '\0' + virtualEntryId let config: ResolvedConfig - const output = options.output ?? defaultOptions.output return { @@ -94,6 +96,7 @@ const buildPlugin = (options: BuildOptions): Plugin => { entry: Array.isArray(entry) ? entry : [entry], entryContentBeforeHooks: options.entryContentBeforeHooks, entryContentAfterHooks: options.entryContentAfterHooks, + entryContentDefaultExportHook: options.entryContentDefaultExportHook, staticPaths, }) } diff --git a/packages/build/src/entry/index.ts b/packages/build/src/entry/index.ts index 7645932..6727285 100644 --- a/packages/build/src/entry/index.ts +++ b/packages/build/src/entry/index.ts @@ -13,6 +13,13 @@ export type GetEntryContentOptions = { entry: string[] entryContentBeforeHooks?: EntryContentHook[] entryContentAfterHooks?: EntryContentHook[] + /** + * Explicitly specify the default export for the app. Make sure your export + * incorporates the app passed as the `appName` argument. + * + * @default `export default ${appName}` + */ + entryContentDefaultExportHook?: EntryContentHook staticPaths?: string[] } @@ -67,7 +74,10 @@ export const getEntryContent = async (options: GetEntryContentOptions) => { throw new Error("Can't import modules from [${globStr}]") }` - const mainAppStr = `import { Hono } from 'hono' + const defaultExportHook = + options.entryContentDefaultExportHook ?? (() => 'export default mainApp') + + return `import { Hono } from 'hono' const mainApp = new Hono() ${await hooksToString('mainApp', options.entryContentBeforeHooks)} @@ -76,6 +86,5 @@ ${appStr} ${await hooksToString('mainApp', options.entryContentAfterHooks)} -export default mainApp` - return mainAppStr +${await hooksToString('mainApp', [defaultExportHook])}` } diff --git a/packages/build/test/adapter.test.ts b/packages/build/test/adapter.test.ts index a000fb1..ed67d87 100644 --- a/packages/build/test/adapter.test.ts +++ b/packages/build/test/adapter.test.ts @@ -3,6 +3,7 @@ import { existsSync, readFileSync, rmSync } from 'node:fs' import bunBuildPlugin from '../src/adapter/bun' import cloudflarePagesPlugin from '../src/adapter/cloudflare-pages' import denoBuildPlugin from '../src/adapter/deno' +import netlifyFunctionsPlugin from '../src/adapter/netlify-functions' import nodeBuildPlugin from '../src/adapter/node' describe('Build Plugin with Bun Adapter', () => { @@ -41,6 +42,43 @@ describe('Build Plugin with Bun Adapter', () => { }) }) +describe('Build Plugin with Netlify Functions Adapter', () => { + const testDir = './test/mocks/app-static-files' + const entry = './src/server.ts' + + afterEach(() => { + rmSync(`${testDir}/dist`, { recursive: true, force: true }) + }) + + it('Should build the project correctly with the plugin', async () => { + const outputFile = `${testDir}/dist/index.js` + + await build({ + root: testDir, + plugins: [ + netlifyFunctionsPlugin({ + entry, + minify: false, + }), + ], + }) + + expect(existsSync(outputFile)).toBe(true) + + const output = readFileSync(outputFile, 'utf-8') + expect(output).toContain('Hello World') + expect(output).toContain('{ path: "/*", preferStatic: true }') + expect(output).toContain('handle(mainApp)') + + const outputFooTxt = readFileSync(`${testDir}/dist/foo.txt`, 'utf-8') + expect(outputFooTxt).toContain('foo') + + const outputJsClientJs = readFileSync(`${testDir}/dist/js/client.js`, 'utf-8') + // eslint-disable-next-line quotes + expect(outputJsClientJs).toContain("console.log('foo')") + }) +}) + describe('Build Plugin with Cloudflare Pages Adapter', () => { const testDir = './test/mocks/app-static-files' diff --git a/packages/dev-server/e2e-bun/mock/app.ts b/packages/dev-server/e2e-bun/mock/app.ts index f36d83b..d78f90a 100644 --- a/packages/dev-server/e2e-bun/mock/app.ts +++ b/packages/dev-server/e2e-bun/mock/app.ts @@ -9,7 +9,8 @@ app.get('/', (c) => { }) app.get('/with-nonce', (c) => { - c.header('content-security-policy', 'script-src-elem \'self\' \'nonce-ZMuLoN/taD7JZTUXfl5yvQ==\';') + // eslint-disable-next-line quotes -- allowing using double-quotes bc of embedded single quotes + c.header('content-security-policy', "script-src-elem 'self' 'nonce-ZMuLoN/taD7JZTUXfl5yvQ==';") return c.html('

Hello Vite!

') }) diff --git a/packages/dev-server/e2e/mock/worker.ts b/packages/dev-server/e2e/mock/worker.ts index ac859b4..efc33c5 100644 --- a/packages/dev-server/e2e/mock/worker.ts +++ b/packages/dev-server/e2e/mock/worker.ts @@ -13,7 +13,8 @@ app.get('/', (c) => { }) app.get('/with-nonce', (c) => { - c.header('content-security-policy', 'script-src-elem \'self\' \'nonce-ZMuLoN/taD7JZTUXfl5yvQ==\';') + // eslint-disable-next-line quotes -- allowing using double-quotes bc of embedded single quotes + c.header('content-security-policy', "script-src-elem 'self' 'nonce-ZMuLoN/taD7JZTUXfl5yvQ==';") return c.html('

Hello Vite!

') }) diff --git a/packages/ssg/test/app.ts b/packages/ssg/test/app.ts index 71da5a5..82eab42 100644 --- a/packages/ssg/test/app.ts +++ b/packages/ssg/test/app.ts @@ -7,7 +7,7 @@ app.get('/', (c) => { }) app.get('/dynamic-import', async (c) => { - // @ts-expect-error + // @ts-expect-error this is a test const module = await import('./sample.js') return c.text('Dynamic import works: ' + module.default) }) diff --git a/yarn.lock b/yarn.lock index 0a4c8a8..4541fb3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1218,9 +1218,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.21.3" +"@rollup/rollup-android-arm-eabi@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.31.0" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -1232,9 +1232,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-android-arm64@npm:4.21.3" +"@rollup/rollup-android-arm64@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-android-arm64@npm:4.31.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -1246,9 +1246,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-darwin-arm64@npm:4.21.3" +"@rollup/rollup-darwin-arm64@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.31.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -1260,13 +1260,27 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-darwin-x64@npm:4.21.3" +"@rollup/rollup-darwin-x64@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.31.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard +"@rollup/rollup-freebsd-arm64@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.31.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.31.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.18.0": version: 4.18.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.18.0" @@ -1274,9 +1288,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.21.3" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.31.0" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard @@ -1288,9 +1302,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.21.3" +"@rollup/rollup-linux-arm-musleabihf@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.31.0" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard @@ -1302,9 +1316,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.21.3" +"@rollup/rollup-linux-arm64-gnu@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.31.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -1316,13 +1330,20 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.21.3" +"@rollup/rollup-linux-arm64-musl@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.31.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard +"@rollup/rollup-linux-loongarch64-gnu@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.31.0" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-powerpc64le-gnu@npm:4.18.0": version: 4.18.0 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.18.0" @@ -1330,9 +1351,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.21.3" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.31.0" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard @@ -1344,9 +1365,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.21.3" +"@rollup/rollup-linux-riscv64-gnu@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.31.0" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard @@ -1358,9 +1379,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.21.3" +"@rollup/rollup-linux-s390x-gnu@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.31.0" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard @@ -1372,9 +1393,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.21.3" +"@rollup/rollup-linux-x64-gnu@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.31.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -1386,9 +1407,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.21.3" +"@rollup/rollup-linux-x64-musl@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.31.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -1400,9 +1421,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.21.3" +"@rollup/rollup-win32-arm64-msvc@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.31.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -1414,9 +1435,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.21.3" +"@rollup/rollup-win32-ia32-msvc@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.31.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -1428,9 +1449,9 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.21.3": - version: 4.21.3 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.21.3" +"@rollup/rollup-win32-x64-msvc@npm:4.31.0": + version: 4.31.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.31.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1465,6 +1486,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:1.0.6": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 + languageName: node + linkType: hard + "@types/node-forge@npm:^1.3.0": version: 1.3.11 resolution: "@types/node-forge@npm:1.3.11" @@ -1635,44 +1663,43 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/expect@npm:2.1.1" +"@vitest/expect@npm:2.1.8": + version: 2.1.8 + resolution: "@vitest/expect@npm:2.1.8" dependencies: - "@vitest/spy": 2.1.1 - "@vitest/utils": 2.1.1 - chai: ^5.1.1 + "@vitest/spy": 2.1.8 + "@vitest/utils": 2.1.8 + chai: ^5.1.2 tinyrainbow: ^1.2.0 - checksum: d86bdd36c6968ca2745767e1bc03db4f69cc193534f6d92a4a1f4e12166b37b9184cfd35d1ff06a9ffce1c5bf906b3640cbdf8ff2d345a0594a0094aa39c9d1a + checksum: 3e81e61dfb5222797ab5e6a70bee2d032fb382c9e7ddc4abe03114f0efbc4cc3b56fc2648e89ae26f5d9261554ea7c696b3a329c8ccea2c702cb87476e4a6842 languageName: node linkType: hard -"@vitest/mocker@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/mocker@npm:2.1.1" +"@vitest/mocker@npm:2.1.8": + version: 2.1.8 + resolution: "@vitest/mocker@npm:2.1.8" dependencies: - "@vitest/spy": ^2.1.0-beta.1 + "@vitest/spy": 2.1.8 estree-walker: ^3.0.3 - magic-string: ^0.30.11 + magic-string: ^0.30.12 peerDependencies: - "@vitest/spy": 2.1.1 - msw: ^2.3.5 + msw: ^2.4.9 vite: ^5.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - checksum: d797428efe30d7b1e2183a3827e2423a70183053f570a5872a5533974c21fb5390e5db9b33fc42484bd68ed5d9342c7a0be52b79799eb21d7714fbed2bde2a7e + checksum: 0022d76ff78043c0788380b4e530a03690f8a89a14d1d07c4c069c8fd828a4741d2777ebc486ca0f89b2fb8cf880a7880d6891dd7cfb8cf4339f040131a8bda2 languageName: node linkType: hard -"@vitest/pretty-format@npm:2.1.1, @vitest/pretty-format@npm:^2.1.1": - version: 2.1.1 - resolution: "@vitest/pretty-format@npm:2.1.1" +"@vitest/pretty-format@npm:2.1.8, @vitest/pretty-format@npm:^2.1.8": + version: 2.1.8 + resolution: "@vitest/pretty-format@npm:2.1.8" dependencies: tinyrainbow: ^1.2.0 - checksum: acc327b4d097719adf01762c22fa6aa59536cef916b7f1e1cbb91179f513ac056aaf023ba07fd86966a241c3157ee8a9c99b52f6899ee61bc1028c7f0117ca14 + checksum: 2214ca317a19220a5f308a4e77fe403fa091c2f006d1f5b1bd91e8fad6e167db2fdc7882e564da3518d5b2cd9dedb1e97067bb666a820519c54f1c26ac9b0c5a languageName: node linkType: hard @@ -1698,13 +1725,13 @@ __metadata: languageName: node linkType: hard -"@vitest/runner@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/runner@npm:2.1.1" +"@vitest/runner@npm:2.1.8": + version: 2.1.8 + resolution: "@vitest/runner@npm:2.1.8" dependencies: - "@vitest/utils": 2.1.1 + "@vitest/utils": 2.1.8 pathe: ^1.1.2 - checksum: b2c82fc364574bb61475c4197c7facff179d199d6ee2fbe297518255686c301606edf9180ead050d112bb5f12901ba6d86405bf8d3ea3dd5b10cedc46f4d1beb + checksum: 50625597a01fbb55e7edf303b2ce6df7a46347bf05017ce7c4b4ce491ac6d85380aa5dd80127307f2621dc4b3b4081ef8ba1f3f825335f0af812a8e4e08d4aa2 languageName: node linkType: hard @@ -1730,14 +1757,14 @@ __metadata: languageName: node linkType: hard -"@vitest/snapshot@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/snapshot@npm:2.1.1" +"@vitest/snapshot@npm:2.1.8": + version: 2.1.8 + resolution: "@vitest/snapshot@npm:2.1.8" dependencies: - "@vitest/pretty-format": 2.1.1 - magic-string: ^0.30.11 + "@vitest/pretty-format": 2.1.8 + magic-string: ^0.30.12 pathe: ^1.1.2 - checksum: d913fa14430d02e38d9c6a14326658be4ce871c8df82f9aa2f33f7c7ac6ab1a341a7b43585d72e8e159482578567865beffe561da218a18ee10110ce9008e0e5 + checksum: ff6a6033fe891c9b19fc33ef2518c29e8afca17c02c463b6b1f40e7e7d51867d5c0bb9b49f524b7c0889337a2c0cae7dcc864851a59a28d3a6e0488cecc45040 languageName: node linkType: hard @@ -1759,12 +1786,12 @@ __metadata: languageName: node linkType: hard -"@vitest/spy@npm:2.1.1, @vitest/spy@npm:^2.1.0-beta.1": - version: 2.1.1 - resolution: "@vitest/spy@npm:2.1.1" +"@vitest/spy@npm:2.1.8": + version: 2.1.8 + resolution: "@vitest/spy@npm:2.1.8" dependencies: - tinyspy: ^3.0.0 - checksum: 87d680dc905b80ced10a5ae8a019772b6b31b7cd928a21ae7043cd06b163ff39eee37dbb3a8033d80e1496200b2990aa13600fccae9b3bf234a65485a4f3f71b + tinyspy: ^3.0.2 + checksum: 0e497e7a7f3170f761c0dbdf983f13d09616b2bae7f640c216644f8d3d1f1a6b6e59aa1e6b75ca2a773355811f0ad6b9d7b6b14596d9b99378040917cada5d49 languageName: node linkType: hard @@ -1791,14 +1818,14 @@ __metadata: languageName: node linkType: hard -"@vitest/utils@npm:2.1.1": - version: 2.1.1 - resolution: "@vitest/utils@npm:2.1.1" +"@vitest/utils@npm:2.1.8": + version: 2.1.8 + resolution: "@vitest/utils@npm:2.1.8" dependencies: - "@vitest/pretty-format": 2.1.1 - loupe: ^3.1.1 + "@vitest/pretty-format": 2.1.8 + loupe: ^3.1.2 tinyrainbow: ^1.2.0 - checksum: 13ffb30e17fcdcb8bc0c3c64db5eca9b670da4f80fd6bab4a9d387f6a534886fb447e45274db44375703d909aab9ebe123accd8d7159f90a8c9852e7f758e420 + checksum: 711e7998ba9785880ed416d08b478e2b881cd218d37c3d773b26477adaa6aab91758e01ac039f839175f446111118fb5aa041317b619eeeb05537e3912159eb7 languageName: node linkType: hard @@ -2120,16 +2147,16 @@ __metadata: languageName: node linkType: hard -"chai@npm:^5.1.1": - version: 5.1.1 - resolution: "chai@npm:5.1.1" +"chai@npm:^5.1.2": + version: 5.1.2 + resolution: "chai@npm:5.1.2" dependencies: assertion-error: ^2.0.1 check-error: ^2.1.1 deep-eql: ^5.0.1 loupe: ^3.1.0 pathval: ^2.0.0 - checksum: 1e0a5e1b5febdfa8ceb97b9aff608286861ecb86533863119b2f39f07c08fb59f3c1791ab554947f009b9d71d509b9e4e734fb12133cb81f231c2c2ee7c1e738 + checksum: f2341967ab5632612548d372c27b46219adad3af35021d8cba2ae3c262f588de2c60cb3f004e6ad40e363a9cad6d20d0de51f00e7e9ac31cce17fb05d4efa316 languageName: node linkType: hard @@ -2348,7 +2375,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.3.5, debug@npm:^4.3.6": +"debug@npm:^4.3.5": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -2360,6 +2387,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.3.7": + version: 4.4.0 + resolution: "debug@npm:4.4.0" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: fb42df878dd0e22816fc56e1fdca9da73caa85212fbe40c868b1295a6878f9101ae684f4eeef516c13acfc700f5ea07f1136954f43d4cd2d477a811144136479 + languageName: node + linkType: hard + "deep-eql@npm:^4.1.3": version: 4.1.4 resolution: "deep-eql@npm:4.1.4" @@ -2493,6 +2532,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.5.4": + version: 1.6.0 + resolution: "es-module-lexer@npm:1.6.0" + checksum: 4413a9aed9bf581de62b98174f3eea3f23ce2994fb6832df64bdd6504f6977da1a3b5ebd3c10f75e3c2f214dcf1a1d8b54be5e62c71b7110e6ccedbf975d2b7d + languageName: node + linkType: hard + "esbuild@npm:0.17.19": version: 0.17.19 resolution: "esbuild@npm:0.17.19" @@ -3052,6 +3098,13 @@ __metadata: languageName: node linkType: hard +"expect-type@npm:^1.1.0": + version: 1.1.0 + resolution: "expect-type@npm:1.1.0" + checksum: 65d25ec10bca32bcf650dcfe734532acc4b7a73677c656f299a7cbed273b5c4d6a3dab11af76f452645d54a95c4ef39fc73772f2c8eb6684ba35672958d6f3b3 + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -3474,9 +3527,9 @@ __metadata: linkType: hard "hono@npm:^4.6.12": - version: 4.6.12 - resolution: "hono@npm:4.6.12" - checksum: a2690db239d6390efdc4080d2ac35155ad0f1f87c3f39ee56578fa3a8631e5dd173c31cff493588205b81a4fd19997f3ccffea19dd2f0b4040a65cc85b1f07e8 + version: 4.6.17 + resolution: "hono@npm:4.6.17" + checksum: eb5b6510b11540f1fc5763f8e7ba4827614c6ee2a781e1296fb5de54834c7af331cccbe0b768426deacf4d7989d45f1c9b203b07ca5001381f22f600ee3da9bf languageName: node linkType: hard @@ -3942,7 +3995,7 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0, loupe@npm:^3.1.1": +"loupe@npm:^3.1.0": version: 3.1.1 resolution: "loupe@npm:3.1.1" dependencies: @@ -3951,6 +4004,13 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^3.1.2": + version: 3.1.2 + resolution: "loupe@npm:3.1.2" + checksum: 4a75bbe8877a1ced3603e08b1095cd6f4c987c50fe63719fdc3009029560f91e07a915e7f6eff1322bb62bfb2a2beeef06b13ccb3c12f81bda9f3674434dcab9 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.2.2 resolution: "lru-cache@npm:10.2.2" @@ -3986,12 +4046,12 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.11": - version: 0.30.11 - resolution: "magic-string@npm:0.30.11" +"magic-string@npm:^0.30.12": + version: 0.30.17 + resolution: "magic-string@npm:0.30.17" dependencies: "@jridgewell/sourcemap-codec": ^1.5.0 - checksum: e041649453c9a3f31d2e731fc10e38604d50e20d3585cd48bc7713a6e2e1a3ad3012105929ca15750d59d0a3f1904405e4b95a23b7e69dc256db3c277a73a3ca + checksum: f4b4ed17c5ada64f77fc98491847302ebad64894a905c417c943840c0384662118c9b37f9f68bb86add159fa4749ff6f118c4627d69a470121b46731f8debc6d languageName: node linkType: hard @@ -4275,6 +4335,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.8": + version: 3.3.8 + resolution: "nanoid@npm:3.3.8" + bin: + nanoid: bin/nanoid.cjs + checksum: dfe0adbc0c77e9655b550c333075f51bb28cfc7568afbf3237249904f9c86c9aaaed1f113f0fddddba75673ee31c758c30c43d4414f014a52a7a626efc5958c9 + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -4647,6 +4716,13 @@ __metadata: languageName: node linkType: hard +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 + languageName: node + linkType: hard + "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" @@ -4742,13 +4818,13 @@ __metadata: linkType: hard "postcss@npm:^8.4.43": - version: 8.4.45 - resolution: "postcss@npm:8.4.45" + version: 8.5.1 + resolution: "postcss@npm:8.5.1" dependencies: - nanoid: ^3.3.7 - picocolors: ^1.0.1 - source-map-js: ^1.2.0 - checksum: 3223cdad4a9392c0b334ee3ee7e4e8041c631cb6160609cef83c18d2b2580e931dd8068ab13cc6000c1a254d57492ac6c38717efc397c5dcc9756d06bc9c44f3 + nanoid: ^3.3.8 + picocolors: ^1.1.1 + source-map-js: ^1.2.1 + checksum: cfdcfcd019fca78160341080ba8986cf80cd6e9ca327ba61b86c03e95043e9bce56ad2e018851858039fd7264781797360bfba718dd216b17b3cd803a5134f2f languageName: node linkType: hard @@ -5099,26 +5175,29 @@ __metadata: linkType: hard "rollup@npm:^4.20.0": - version: 4.21.3 - resolution: "rollup@npm:4.21.3" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.21.3 - "@rollup/rollup-android-arm64": 4.21.3 - "@rollup/rollup-darwin-arm64": 4.21.3 - "@rollup/rollup-darwin-x64": 4.21.3 - "@rollup/rollup-linux-arm-gnueabihf": 4.21.3 - "@rollup/rollup-linux-arm-musleabihf": 4.21.3 - "@rollup/rollup-linux-arm64-gnu": 4.21.3 - "@rollup/rollup-linux-arm64-musl": 4.21.3 - "@rollup/rollup-linux-powerpc64le-gnu": 4.21.3 - "@rollup/rollup-linux-riscv64-gnu": 4.21.3 - "@rollup/rollup-linux-s390x-gnu": 4.21.3 - "@rollup/rollup-linux-x64-gnu": 4.21.3 - "@rollup/rollup-linux-x64-musl": 4.21.3 - "@rollup/rollup-win32-arm64-msvc": 4.21.3 - "@rollup/rollup-win32-ia32-msvc": 4.21.3 - "@rollup/rollup-win32-x64-msvc": 4.21.3 - "@types/estree": 1.0.5 + version: 4.31.0 + resolution: "rollup@npm:4.31.0" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.31.0 + "@rollup/rollup-android-arm64": 4.31.0 + "@rollup/rollup-darwin-arm64": 4.31.0 + "@rollup/rollup-darwin-x64": 4.31.0 + "@rollup/rollup-freebsd-arm64": 4.31.0 + "@rollup/rollup-freebsd-x64": 4.31.0 + "@rollup/rollup-linux-arm-gnueabihf": 4.31.0 + "@rollup/rollup-linux-arm-musleabihf": 4.31.0 + "@rollup/rollup-linux-arm64-gnu": 4.31.0 + "@rollup/rollup-linux-arm64-musl": 4.31.0 + "@rollup/rollup-linux-loongarch64-gnu": 4.31.0 + "@rollup/rollup-linux-powerpc64le-gnu": 4.31.0 + "@rollup/rollup-linux-riscv64-gnu": 4.31.0 + "@rollup/rollup-linux-s390x-gnu": 4.31.0 + "@rollup/rollup-linux-x64-gnu": 4.31.0 + "@rollup/rollup-linux-x64-musl": 4.31.0 + "@rollup/rollup-win32-arm64-msvc": 4.31.0 + "@rollup/rollup-win32-ia32-msvc": 4.31.0 + "@rollup/rollup-win32-x64-msvc": 4.31.0 + "@types/estree": 1.0.6 fsevents: ~2.3.2 dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -5129,6 +5208,10 @@ __metadata: optional: true "@rollup/rollup-darwin-x64": optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true "@rollup/rollup-linux-arm-gnueabihf": optional: true "@rollup/rollup-linux-arm-musleabihf": @@ -5137,6 +5220,8 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true "@rollup/rollup-linux-powerpc64le-gnu": optional: true "@rollup/rollup-linux-riscv64-gnu": @@ -5157,7 +5242,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 19689840d25ced3924124b012d7e0048f2b0844a0765a5dde0804ae9961af1103657c2ec3e90f7a19876ebe40b3fa2c33f53fca071d46639c57bd327b82aba22 + checksum: f22de192213d966b6471ee77ec0eb795071d1e28b526291ca8dc62ae7068ada16c595ba33a0be798721a556e4e8b7e4b5ccc7e15c6727e2062f81167ffbfd0e9 languageName: node linkType: hard @@ -5309,6 +5394,13 @@ __metadata: languageName: node linkType: hard +"source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 4eb0cd997cdf228bc253bcaff9340afeb706176e64868ecd20efbe6efea931465f43955612346d6b7318789e5265bdc419bc7669c1cebe3db0eb255f57efa76b + languageName: node + linkType: hard + "source-map@npm:0.8.0-beta.0": version: 0.8.0-beta.0 resolution: "source-map@npm:0.8.0-beta.0" @@ -5389,13 +5481,20 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.3.3, std-env@npm:^3.5.0, std-env@npm:^3.7.0": +"std-env@npm:^3.3.3, std-env@npm:^3.5.0": version: 3.7.0 resolution: "std-env@npm:3.7.0" checksum: 4f489d13ff2ab838c9acd4ed6b786b51aa52ecacdfeaefe9275fcb220ff2ac80c6e95674723508fd29850a694569563a8caaaea738eb82ca16429b3a0b50e510 languageName: node linkType: hard +"std-env@npm:^3.8.0": + version: 3.8.0 + resolution: "std-env@npm:3.8.0" + checksum: ad4554485c2d09138a1d0f03944245e169510e6f5200b7d30fcdd4536e27a2a9a2fd934caff7ef58ebbe21993fa0e2b9e5b1979f431743c925305863b7ff36d5 + languageName: node + linkType: hard + "stoppable@npm:^1.1.0": version: 1.1.0 resolution: "stoppable@npm:1.1.0" @@ -5599,10 +5698,10 @@ __metadata: languageName: node linkType: hard -"tinyexec@npm:^0.3.0": - version: 0.3.0 - resolution: "tinyexec@npm:0.3.0" - checksum: e55473d249b8fc94bc5b1461d8e368dfe0ba23dcfca4f9069fe25418b17772e50110a1d33cd7ac8ff26456e5b609e0528cce7660e35246fad9b00bd094f3f444 +"tinyexec@npm:^0.3.1": + version: 0.3.2 + resolution: "tinyexec@npm:0.3.2" + checksum: bd491923020610bdeadb0d8cf5d70e7cbad5a3201620fd01048c9bf3b31ffaa75c33254e1540e13b993ce4e8187852b0b5a93057bb598e7a57afa2ca2048a35c languageName: node linkType: hard @@ -5620,10 +5719,10 @@ __metadata: languageName: node linkType: hard -"tinypool@npm:^1.0.0": - version: 1.0.1 - resolution: "tinypool@npm:1.0.1" - checksum: 5cd6b8cbccd9b88d461f400c9599e69f66563ddf75a2b8ab6b48250481f1b254d180a68ee735f379fa6eb88f11c3b1814735bb1f3306b1a860bf6d8f08074d6b +"tinypool@npm:^1.0.1": + version: 1.0.2 + resolution: "tinypool@npm:1.0.2" + checksum: 752f23114d8fc95a9497fc812231d6d0a63728376aa11e6e8499c10423a91112e760e388887ea7854f1b16977c321f07c0eab061ec2f60f6761e58b184aac880 languageName: node linkType: hard @@ -5641,7 +5740,7 @@ __metadata: languageName: node linkType: hard -"tinyspy@npm:^3.0.0": +"tinyspy@npm:^3.0.2": version: 3.0.2 resolution: "tinyspy@npm:3.0.2" checksum: 5db671b2ff5cd309de650c8c4761ca945459d7204afb1776db9a04fb4efa28a75f08517a8620c01ee32a577748802231ad92f7d5b194dc003ee7f987a2a06337 @@ -5895,17 +5994,18 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:2.1.1": - version: 2.1.1 - resolution: "vite-node@npm:2.1.1" +"vite-node@npm:2.1.8": + version: 2.1.8 + resolution: "vite-node@npm:2.1.8" dependencies: cac: ^6.7.14 - debug: ^4.3.6 + debug: ^4.3.7 + es-module-lexer: ^1.5.4 pathe: ^1.1.2 vite: ^5.0.0 bin: vite-node: vite-node.mjs - checksum: b44cad7c82d2101ab9e6f3c90f27fed879c0bc8001493ca138d38984795b27393ecaef904a4d8d70abb0f7215b8eb05de15be6cc261134ca7c72d23017571551 + checksum: 17914342d05f9ace35c1574555c59dd4116148b71a22bf330f019681d7238a2244b6c2b4a8930d03d5f78e24666d81806c68b84a8db42d7e84165cb10d1c756a languageName: node linkType: hard @@ -6103,33 +6203,34 @@ __metadata: linkType: hard "vitest@npm:^2.1.1": - version: 2.1.1 - resolution: "vitest@npm:2.1.1" - dependencies: - "@vitest/expect": 2.1.1 - "@vitest/mocker": 2.1.1 - "@vitest/pretty-format": ^2.1.1 - "@vitest/runner": 2.1.1 - "@vitest/snapshot": 2.1.1 - "@vitest/spy": 2.1.1 - "@vitest/utils": 2.1.1 - chai: ^5.1.1 - debug: ^4.3.6 - magic-string: ^0.30.11 + version: 2.1.8 + resolution: "vitest@npm:2.1.8" + dependencies: + "@vitest/expect": 2.1.8 + "@vitest/mocker": 2.1.8 + "@vitest/pretty-format": ^2.1.8 + "@vitest/runner": 2.1.8 + "@vitest/snapshot": 2.1.8 + "@vitest/spy": 2.1.8 + "@vitest/utils": 2.1.8 + chai: ^5.1.2 + debug: ^4.3.7 + expect-type: ^1.1.0 + magic-string: ^0.30.12 pathe: ^1.1.2 - std-env: ^3.7.0 + std-env: ^3.8.0 tinybench: ^2.9.0 - tinyexec: ^0.3.0 - tinypool: ^1.0.0 + tinyexec: ^0.3.1 + tinypool: ^1.0.1 tinyrainbow: ^1.2.0 vite: ^5.0.0 - vite-node: 2.1.1 + vite-node: 2.1.8 why-is-node-running: ^2.3.0 peerDependencies: "@edge-runtime/vm": "*" "@types/node": ^18.0.0 || >=20.0.0 - "@vitest/browser": 2.1.1 - "@vitest/ui": 2.1.1 + "@vitest/browser": 2.1.8 + "@vitest/ui": 2.1.8 happy-dom: "*" jsdom: "*" peerDependenciesMeta: @@ -6147,7 +6248,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: cf8e2ff098464287729ef62da83b016ed1398642959ef947669401316a70c12d6a4de9b8962220b3fc133f88ce2c153c5c3944f4ad6d360d5bca8cfa2cec0243 + checksum: 2d2f69364556829123c3ff704b36dfd7a2f11cc05fad8a7caf9f0b8c74205caee92f892d4bd5b92a9c2a48267e9b0865a171b2f40fcd593d681f980c3486b299 languageName: node linkType: hard