diff --git a/.changeset/short-worms-agree.md b/.changeset/short-worms-agree.md
new file mode 100644
index 000000000..b6a1ff683
--- /dev/null
+++ b/.changeset/short-worms-agree.md
@@ -0,0 +1,5 @@
+---
+"inngest": minor
+---
+
+Added a new `"inngest/sveltekit"` serve handler. See the [Framework: Sveltekit](https://www.inngest.com/docs/sdk/serve#framework-sveltekit) docs and the [`framework-sveltekit`](/examples/framework-sveltekit) example to get started.
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index 98bee9e98..abf0d584a 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -139,4 +139,4 @@ jobs:
path: packages/inngest
- name: Run integration tests
- run: npx tsx scripts/integrationTestRunner.ts ${{ matrix.example }} 8288 3000
+ run: pnpm run itest ${{ matrix.example }}
diff --git a/examples/framework-sveltekit/.gitignore b/examples/framework-sveltekit/.gitignore
new file mode 100644
index 000000000..6635cf554
--- /dev/null
+++ b/examples/framework-sveltekit/.gitignore
@@ -0,0 +1,10 @@
+.DS_Store
+node_modules
+/build
+/.svelte-kit
+/package
+.env
+.env.*
+!.env.example
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
diff --git a/examples/framework-sveltekit/.npmrc b/examples/framework-sveltekit/.npmrc
new file mode 100644
index 000000000..0c05da457
--- /dev/null
+++ b/examples/framework-sveltekit/.npmrc
@@ -0,0 +1,2 @@
+engine-strict=true
+resolution-mode=highest
diff --git a/examples/framework-sveltekit/.prettierignore b/examples/framework-sveltekit/.prettierignore
new file mode 100644
index 000000000..38972655f
--- /dev/null
+++ b/examples/framework-sveltekit/.prettierignore
@@ -0,0 +1,13 @@
+.DS_Store
+node_modules
+/build
+/.svelte-kit
+/package
+.env
+.env.*
+!.env.example
+
+# Ignore files for PNPM, NPM and YARN
+pnpm-lock.yaml
+package-lock.json
+yarn.lock
diff --git a/examples/framework-sveltekit/.prettierrc b/examples/framework-sveltekit/.prettierrc
new file mode 100644
index 000000000..a77fddea9
--- /dev/null
+++ b/examples/framework-sveltekit/.prettierrc
@@ -0,0 +1,9 @@
+{
+ "useTabs": true,
+ "singleQuote": true,
+ "trailingComma": "none",
+ "printWidth": 100,
+ "plugins": ["prettier-plugin-svelte"],
+ "pluginSearchDirs": ["."],
+ "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
+}
diff --git a/examples/framework-sveltekit/README.md b/examples/framework-sveltekit/README.md
new file mode 100644
index 000000000..4d15480e1
--- /dev/null
+++ b/examples/framework-sveltekit/README.md
@@ -0,0 +1,29 @@
+# create-svelte + Inngest
+
+Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte) and Inngest.
+
+## Getting Started
+
+## How to use
+
+Use [`create-next-app`](https://www.npmjs.com/package/create-next-app) with [npm](https://docs.npmjs.com/cli/init), [Yarn](https://yarnpkg.com/lang/en/docs/cli/create/), or [pnpm](https://pnpm.io) to bootstrap the example:
+
+```bash
+npx create-next-app --example https://github.com/inngest/inngest-js/tree/main/examples/framework-sveltekit inngest-sveltekit
+```
+
+```bash
+yarn create next-app --example https://github.com/inngest/inngest-js/tree/main/examples/framework-sveltekit inngest-sveltekit
+```
+
+```bash
+pnpm create next-app --example https://github.com/inngest/inngest-js/tree/main/examples/framework-sveltekit inngest-sveltekit
+```
+
+- [Inngest functions](https://www.inngest.com/docs/functions) are available at `src/lib/inngest/`.
+- The [Inngest handler](https://www.inngest.com/docs/frameworks/nextjs) is available a `src/routes/api/inngest/+server.ts`.
+
+## Learn More
+
+- [Inngest Documentation](https://www.inngest.com/docs) - learn about the Inngest SDK, functions, and events
+- [SvelteKit Documentation](https://kit.svelte.dev/docs) - learn about SvelteKit features and API.
diff --git a/examples/framework-sveltekit/package.json b/examples/framework-sveltekit/package.json
new file mode 100644
index 000000000..9e0f0e985
--- /dev/null
+++ b/examples/framework-sveltekit/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "inngest-sveltekit-example",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "dev": "vite dev --port 3000",
+ "build": "vite build",
+ "preview": "vite preview",
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
+ "test": "vitest",
+ "lint": "prettier --plugin-search-dir . --check .",
+ "format": "prettier --plugin-search-dir . --write ."
+ },
+ "devDependencies": {
+ "@sveltejs/adapter-auto": "^2.0.0",
+ "@sveltejs/adapter-vercel": "^3.0.3",
+ "@sveltejs/kit": "^1.20.4",
+ "prettier": "^2.8.0",
+ "prettier-plugin-svelte": "^2.10.1",
+ "svelte": "^4.0.5",
+ "svelte-check": "^3.4.3",
+ "tslib": "^2.4.1",
+ "typescript": "^5.0.0",
+ "vite": "^4.4.2",
+ "vitest": "^0.33.0"
+ },
+ "type": "module",
+ "dependencies": {
+ "h3": "^1.7.1",
+ "inngest": "^3.0.0"
+ }
+}
diff --git a/examples/framework-sveltekit/src/app.d.ts b/examples/framework-sveltekit/src/app.d.ts
new file mode 100644
index 000000000..f59b884c5
--- /dev/null
+++ b/examples/framework-sveltekit/src/app.d.ts
@@ -0,0 +1,12 @@
+// See https://kit.svelte.dev/docs/types#app
+// for information about these interfaces
+declare global {
+ namespace App {
+ // interface Error {}
+ // interface Locals {}
+ // interface PageData {}
+ // interface Platform {}
+ }
+}
+
+export {};
diff --git a/examples/framework-sveltekit/src/app.html b/examples/framework-sveltekit/src/app.html
new file mode 100644
index 000000000..effe0d0d2
--- /dev/null
+++ b/examples/framework-sveltekit/src/app.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ %sveltekit.head%
+
+
+ %sveltekit.body%
+
+
diff --git a/examples/framework-sveltekit/src/index.test.ts b/examples/framework-sveltekit/src/index.test.ts
new file mode 100644
index 000000000..e07cbbd72
--- /dev/null
+++ b/examples/framework-sveltekit/src/index.test.ts
@@ -0,0 +1,7 @@
+import { describe, it, expect } from 'vitest';
+
+describe('sum test', () => {
+ it('adds 1 + 2 to equal 3', () => {
+ expect(1 + 2).toBe(3);
+ });
+});
diff --git a/examples/framework-sveltekit/src/lib/index.ts b/examples/framework-sveltekit/src/lib/index.ts
new file mode 100644
index 000000000..856f2b6c3
--- /dev/null
+++ b/examples/framework-sveltekit/src/lib/index.ts
@@ -0,0 +1 @@
+// place files you want to import through the `$lib` alias in this folder.
diff --git a/examples/framework-sveltekit/src/lib/inngest/client.ts b/examples/framework-sveltekit/src/lib/inngest/client.ts
new file mode 100644
index 000000000..26a87bee0
--- /dev/null
+++ b/examples/framework-sveltekit/src/lib/inngest/client.ts
@@ -0,0 +1,4 @@
+import { Inngest } from 'inngest';
+import { schemas } from './types';
+
+export const inngest = new Inngest({ id: 'my-sveltekit-app', schemas });
diff --git a/examples/framework-sveltekit/src/lib/inngest/helloWorld.ts b/examples/framework-sveltekit/src/lib/inngest/helloWorld.ts
new file mode 100644
index 000000000..5a8c851b5
--- /dev/null
+++ b/examples/framework-sveltekit/src/lib/inngest/helloWorld.ts
@@ -0,0 +1,11 @@
+import { inngest } from './client';
+
+export default inngest.createFunction(
+ { id: 'hello-world' },
+ { event: 'demo/event.sent' },
+ ({ event, step }) => {
+ return {
+ message: `Hello ${event.name}!`
+ };
+ }
+);
diff --git a/examples/framework-sveltekit/src/lib/inngest/index.ts b/examples/framework-sveltekit/src/lib/inngest/index.ts
new file mode 100644
index 000000000..81e3fca78
--- /dev/null
+++ b/examples/framework-sveltekit/src/lib/inngest/index.ts
@@ -0,0 +1,5 @@
+import helloWorld from './helloWorld';
+
+export const functions = [helloWorld];
+
+export { inngest } from './client';
diff --git a/examples/framework-sveltekit/src/lib/inngest/types.ts b/examples/framework-sveltekit/src/lib/inngest/types.ts
new file mode 100644
index 000000000..1b6fe286f
--- /dev/null
+++ b/examples/framework-sveltekit/src/lib/inngest/types.ts
@@ -0,0 +1,10 @@
+import { EventSchemas } from 'inngest';
+
+type DemoEventSent = {
+ name: 'demo/event.sent';
+ data: {
+ message: string;
+ };
+};
+
+export const schemas = new EventSchemas().fromUnion();
diff --git a/examples/framework-sveltekit/src/routes/+page.svelte b/examples/framework-sveltekit/src/routes/+page.svelte
new file mode 100644
index 000000000..5982b0ae3
--- /dev/null
+++ b/examples/framework-sveltekit/src/routes/+page.svelte
@@ -0,0 +1,2 @@
+Welcome to SvelteKit
+Visit kit.svelte.dev to read the documentation
diff --git a/examples/framework-sveltekit/src/routes/api/inngest/+server.ts b/examples/framework-sveltekit/src/routes/api/inngest/+server.ts
new file mode 100644
index 000000000..f81e1626f
--- /dev/null
+++ b/examples/framework-sveltekit/src/routes/api/inngest/+server.ts
@@ -0,0 +1,4 @@
+import { functions, inngest } from '$lib/inngest';
+import { serve } from 'inngest/sveltekit';
+
+export const { GET, POST, PUT } = serve({ client: inngest, functions });
diff --git a/examples/framework-sveltekit/static/favicon.png b/examples/framework-sveltekit/static/favicon.png
new file mode 100644
index 000000000..825b9e65a
Binary files /dev/null and b/examples/framework-sveltekit/static/favicon.png differ
diff --git a/examples/framework-sveltekit/svelte.config.js b/examples/framework-sveltekit/svelte.config.js
new file mode 100644
index 000000000..1cf26a00d
--- /dev/null
+++ b/examples/framework-sveltekit/svelte.config.js
@@ -0,0 +1,18 @@
+import adapter from '@sveltejs/adapter-auto';
+import { vitePreprocess } from '@sveltejs/kit/vite';
+
+/** @type {import('@sveltejs/kit').Config} */
+const config = {
+ // Consult https://kit.svelte.dev/docs/integrations#preprocessors
+ // for more information about preprocessors
+ preprocess: vitePreprocess(),
+
+ kit: {
+ // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
+ // If your environment is not supported or you settled on a specific environment, switch out the adapter.
+ // See https://kit.svelte.dev/docs/adapters for more information about adapters.
+ adapter: adapter()
+ }
+};
+
+export default config;
diff --git a/examples/framework-sveltekit/tsconfig.json b/examples/framework-sveltekit/tsconfig.json
new file mode 100644
index 000000000..6ae0c8c44
--- /dev/null
+++ b/examples/framework-sveltekit/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "./.svelte-kit/tsconfig.json",
+ "compilerOptions": {
+ "allowJs": true,
+ "checkJs": true,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "sourceMap": true,
+ "strict": true
+ }
+ // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
+ //
+ // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
+ // from the referenced tsconfig.json - TypeScript does not merge them in
+}
diff --git a/examples/framework-sveltekit/vite.config.ts b/examples/framework-sveltekit/vite.config.ts
new file mode 100644
index 000000000..37b6a84bc
--- /dev/null
+++ b/examples/framework-sveltekit/vite.config.ts
@@ -0,0 +1,9 @@
+import { sveltekit } from '@sveltejs/kit/vite';
+import { defineConfig } from 'vitest/config';
+
+export default defineConfig({
+ plugins: [sveltekit()],
+ test: {
+ include: ['src/**/*.{test,spec}.{js,ts}']
+ }
+});
diff --git a/packages/inngest/package.json b/packages/inngest/package.json
index 139eaf4b4..a0bfdb1ef 100644
--- a/packages/inngest/package.json
+++ b/packages/inngest/package.json
@@ -12,6 +12,7 @@
"pb:version": "genversion --semi --double --es6 ./src/version.ts",
"build": "pnpm run clean && tsc --project tsconfig.build.json",
"test": "jest --silent --logHeapUsage --maxWorkers=8 --coverage --ci",
+ "itest": "tsx scripts/integrationTestRunner.ts",
"test:examples": "jest --logHeapUsage --maxWorkers=8 --testMatch \"**/test/functions/**/*.test.ts\" --ci --verbose",
"test:types": "tsc --noEmit --project tsconfig.types.json --listFiles",
"clean": "rm -rf ./dist",
@@ -89,6 +90,11 @@
"import": "./remix.js",
"types": "./remix.d.ts"
},
+ "./sveltekit": {
+ "require": "./sveltekit.js",
+ "import": "./sveltekit.js",
+ "types": "./sveltekit.d.ts"
+ },
"./deno/fresh": {
"require": "./deno/fresh.js",
"import": "./deno/fresh.js",
@@ -135,6 +141,7 @@
"@inngest/eslint-plugin-internal": "workspace:^",
"@jest/globals": "^29.5.0",
"@microsoft/api-extractor": "^7.33.7",
+ "@sveltejs/kit": "^1.27.3",
"@total-typescript/shoehorn": "^0.1.1",
"@types/aws-lambda": "^8.10.108",
"@types/debug": "^4.1.8",
diff --git a/packages/inngest/scripts/integrationTestRunner.ts b/packages/inngest/scripts/integrationTestRunner.ts
index ae63ff5a6..b49bed3c2 100644
--- a/packages/inngest/scripts/integrationTestRunner.ts
+++ b/packages/inngest/scripts/integrationTestRunner.ts
@@ -23,8 +23,9 @@ async function checkServerReady(
console.log(`Server is ready at ${apiUrl}`);
return;
}
- throw new Error("Server not ready");
+ throw new Error(`Server not ready: ${response.status}`);
} catch (error) {
+ console.log("Server not ready:", error);
await new Promise((resolve) => setTimeout(resolve, pollInterval));
}
}
@@ -150,12 +151,22 @@ function startProcess(
}
async function startDevServer(
- port: number,
+ devServerPort: number,
+ exampleServerPort: number,
examplePath: string
): Promise {
const serverProcess = startProcess(
"npx",
- ["inngest-cli@latest", "dev", "--port", port.toString()],
+ [
+ "inngest-cli@latest",
+ "dev",
+ "--port",
+ devServerPort.toString(),
+ "--no-discovery",
+ "--no-poll",
+ "--sdk-url",
+ `http://localhost:${exampleServerPort}/api/inngest`,
+ ],
{
env: { ...process.env, DO_NOT_TRACK: "1" },
cwd: examplePath,
@@ -166,7 +177,7 @@ async function startDevServer(
serverProcess.unref();
- return checkServerReady(`http://127.0.0.1:${port}`, 60000);
+ return checkServerReady(`http://localhost:${devServerPort}`, 60000);
}
async function startExampleServer(
@@ -181,7 +192,7 @@ async function startExampleServer(
PORT: "3000",
NODE_ENV: "development",
INNGEST_LOG_LEVEL: "debug",
- INNGEST_BASE_URL: `http://127.0.0.1:${devServerPort}`,
+ INNGEST_BASE_URL: `http://localhost:${devServerPort}`,
},
cwd: examplePath,
detached: true,
@@ -191,11 +202,32 @@ async function startExampleServer(
devServerProcess.unref();
return checkServerReady(
- `http://127.0.0.1:${exampleServerPort}/api/inngest`,
+ `http://localhost:${exampleServerPort}/api/inngest`,
60000
);
}
+async function registerExample(exampleServerPort: number): Promise {
+ console.log("Registering...");
+ try {
+ const registerRes = await fetch(
+ `http://localhost:${exampleServerPort}/api/inngest`,
+ {
+ method: "PUT",
+ }
+ );
+
+ console.log(
+ "Register response:",
+ registerRes.status,
+ registerRes.statusText
+ );
+ } catch (err) {
+ console.error("Failed to register example", err);
+ throw err;
+ }
+}
+
function runTests(sdkPath: string): void {
try {
execSync("pnpm run test:examples", { cwd: sdkPath, stdio: "inherit" });
@@ -211,22 +243,29 @@ async function runIntegrationTest(
devServerPort: number,
exampleServerPort: number
): Promise {
+ // Start a 10 minute timeout. If we don't finish within 10 minutes, something is wrong.
+ setTimeout(() => {
+ console.error("Integration test timed out");
+ process.exit(1);
+ }, 10 * 60 * 1000);
+
const rootPath = path.join(__dirname, "..", "..", "..");
const sdkPath = path.join(rootPath, "packages", "inngest");
const examplePath = path.join(rootPath, "examples", example);
- // Start all the asynchronous operations.
- const startExamplePromise = setupExample(examplePath).then(() => {
- return startExampleServer(examplePath, exampleServerPort, devServerPort);
- });
- const startDevServerPromise = startDevServer(devServerPort, examplePath);
+ const startExamplePromise = (async () => {
+ await setupExample(examplePath);
+ await startExampleServer(examplePath, exampleServerPort, devServerPort);
+ })();
- // Use Promise.all to wait for all promises to resolve.
- await Promise.all([startExamplePromise, startDevServerPromise]);
+ const startDevServerPromise = startDevServer(
+ devServerPort,
+ exampleServerPort,
+ examplePath
+ );
- // Wait for 5 seconds for registration.
- console.log("Waitng for 5 seconds for registration...");
- await new Promise((resolve) => setTimeout(resolve, 5000));
+ await Promise.all([startExamplePromise, startDevServerPromise]);
+ await registerExample(exampleServerPort);
runTests(sdkPath);
}
@@ -247,7 +286,12 @@ console.log(
`Running integration test for ${example} using port ${exampleServerPort} and dev server port ${devServerPort}`
);
-runIntegrationTest(example, devServerPort, exampleServerPort).catch((error) => {
- console.error(error);
- process.exit(1);
-});
+runIntegrationTest(example, devServerPort, exampleServerPort)
+ .then(() => {
+ console.log("itest successful");
+ process.exit(0);
+ })
+ .catch((error) => {
+ console.error("itest failed:", error);
+ process.exit(1);
+ });
diff --git a/packages/inngest/src/sveltekit.test.ts b/packages/inngest/src/sveltekit.test.ts
new file mode 100644
index 000000000..616c5f5f9
--- /dev/null
+++ b/packages/inngest/src/sveltekit.test.ts
@@ -0,0 +1,64 @@
+import * as SvelteKitHandler from "@local/sveltekit";
+import { type RequestEvent } from "@sveltejs/kit";
+import { fromPartial } from "@total-typescript/shoehorn";
+import fetch, { Headers, Response } from "cross-fetch";
+import { testFramework } from "./test/helpers";
+
+const originalFetch = globalThis.fetch;
+const originalResponse = globalThis.Response;
+const originalHeaders = globalThis.Headers;
+
+testFramework("SvelteKit", SvelteKitHandler, {
+ lifecycleChanges: () => {
+ beforeEach(() => {
+ jest.resetModules();
+
+ Object.defineProperties(globalThis, {
+ fetch: { value: fetch, configurable: true },
+ Response: { value: Response, configurable: true },
+ Headers: { value: Headers, configurable: true },
+ });
+ });
+
+ afterEach(() => {
+ /**
+ * Reset all changes made to the global scope
+ */
+ Object.defineProperties(globalThis, {
+ fetch: { value: originalFetch, configurable: true },
+ Response: { value: originalResponse, configurable: true },
+ Headers: { value: originalHeaders, configurable: true },
+ });
+ });
+ },
+ transformReq: (req, _res, _env) => {
+ const headers = new Headers();
+ Object.entries(req.headers).forEach(([k, v]) => {
+ headers.set(k, v as string);
+ });
+
+ const svelteKitReq: Partial = {
+ request: fromPartial({
+ method: req.method,
+ url: req.url,
+ headers,
+ json: () => Promise.resolve(req.body),
+ }),
+ };
+
+ return [svelteKitReq];
+ },
+ transformRes: async (res, ret: Response) => {
+ const headers: Record = {};
+
+ ret.headers.forEach((v, k) => {
+ headers[k] = v;
+ });
+
+ return {
+ status: ret.status,
+ body: await ret.text(),
+ headers,
+ };
+ },
+});
diff --git a/packages/inngest/src/sveltekit.ts b/packages/inngest/src/sveltekit.ts
new file mode 100644
index 000000000..360bbea68
--- /dev/null
+++ b/packages/inngest/src/sveltekit.ts
@@ -0,0 +1,83 @@
+import { type RequestEvent } from "@sveltejs/kit";
+import {
+ InngestCommHandler,
+ type ServeHandlerOptions,
+} from "./components/InngestCommHandler";
+import { processEnv } from "./helpers/env";
+import { type SupportedFrameworkName } from "./types";
+
+export const frameworkName: SupportedFrameworkName = "sveltekit";
+
+/**
+ * Using SvelteKit, serve and register any declared functions with Inngest,
+ * making them available to be triggered by events.
+ *
+ * @example
+ * ```ts
+ * export const { GET, POST, PUT } = serve(...);
+ * ```
+ *
+ * @public
+ */
+export const serve = (options: ServeHandlerOptions) => {
+ const handler = new InngestCommHandler({
+ frameworkName,
+ ...options,
+ handler: (
+ reqMethod: "GET" | "POST" | "PUT" | undefined,
+ event: RequestEvent
+ ) => {
+ return {
+ method: () => reqMethod || event.request.method || "",
+ body: () => event.request.json(),
+ headers: (key) => event.request.headers.get(key),
+ url: () => {
+ const protocol =
+ processEnv("NODE_ENV") === "development" ? "http" : "https";
+
+ return new URL(
+ event.request.url,
+ `${protocol}://${
+ event.request.headers.get("host") || options.serveHost || ""
+ }`
+ );
+ },
+ transformResponse: ({ body, headers, status }) => {
+ /**
+ * If `Response` isn't included in this environment, it's probably a Node
+ * env that isn't already polyfilling. In this case, we can polyfill it
+ * here to be safe.
+ */
+ let Res: typeof Response;
+
+ if (typeof Response === "undefined") {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-var-requires
+ Res = require("cross-fetch").Response;
+ } else {
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ Res = Response;
+ }
+
+ return new Res(body, { status, headers });
+ },
+ };
+ },
+ });
+
+ const baseFn = handler.createHandler();
+
+ const fn = baseFn.bind(null, undefined);
+ type Fn = typeof fn;
+
+ const handlerFn = Object.defineProperties(fn, {
+ GET: { value: baseFn.bind(null, "GET") },
+ POST: { value: baseFn.bind(null, "POST") },
+ PUT: { value: baseFn.bind(null, "PUT") },
+ }) as Fn & {
+ GET: Fn;
+ POST: Fn;
+ PUT: Fn;
+ };
+
+ return handlerFn;
+};
diff --git a/packages/inngest/src/test/helpers.ts b/packages/inngest/src/test/helpers.ts
index 3c05d991d..4f7b679da 100644
--- a/packages/inngest/src/test/helpers.ts
+++ b/packages/inngest/src/test/helpers.ts
@@ -921,7 +921,7 @@ interface CheckIntrospection {
export const checkIntrospection = ({ name, triggers }: CheckIntrospection) => {
describe("introspection", () => {
it("should be registered in SDK UI", async () => {
- const res = await fetch("http://127.0.0.1:3000/api/inngest");
+ const res = await fetch("http://localhost:3000/api/inngest");
const { success } = z
.object({
diff --git a/packages/inngest/src/types.ts b/packages/inngest/src/types.ts
index 4e86b2376..242764e53 100644
--- a/packages/inngest/src/types.ts
+++ b/packages/inngest/src/types.ts
@@ -1108,6 +1108,7 @@ export type SupportedFrameworkName =
| "redwoodjs"
| "remix"
| "deno/fresh"
+ | "sveltekit"
| "fastify";
/**
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 445c63093..921985dc7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -78,6 +78,9 @@ importers:
'@microsoft/api-extractor':
specifier: ^7.33.7
version: 7.34.4(@types/node@18.16.16)
+ '@sveltejs/kit':
+ specifier: ^1.27.3
+ version: 1.27.3(svelte@4.2.2)(vite@4.5.0)
'@total-typescript/shoehorn':
specifier: ^0.1.1
version: 0.1.1
@@ -220,6 +223,14 @@ packages:
'@jridgewell/trace-mapping': 0.3.17
dev: true
+ /@ampproject/remapping@2.2.1:
+ resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.2
+ '@jridgewell/trace-mapping': 0.3.20
+ dev: true
+
/@babel/code-frame@7.18.6:
resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==}
engines: {node: '>=6.9.0'}
@@ -839,6 +850,15 @@ packages:
dev: true
optional: true
+ /@esbuild/android-arm64@0.18.20:
+ resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/android-arm@0.17.19:
resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
engines: {node: '>=12'}
@@ -848,6 +868,15 @@ packages:
dev: true
optional: true
+ /@esbuild/android-arm@0.18.20:
+ resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/android-x64@0.17.19:
resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
engines: {node: '>=12'}
@@ -857,6 +886,15 @@ packages:
dev: true
optional: true
+ /@esbuild/android-x64@0.18.20:
+ resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/darwin-arm64@0.17.19:
resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
engines: {node: '>=12'}
@@ -866,6 +904,15 @@ packages:
dev: true
optional: true
+ /@esbuild/darwin-arm64@0.18.20:
+ resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/darwin-x64@0.17.19:
resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
engines: {node: '>=12'}
@@ -875,6 +922,15 @@ packages:
dev: true
optional: true
+ /@esbuild/darwin-x64@0.18.20:
+ resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/freebsd-arm64@0.17.19:
resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
engines: {node: '>=12'}
@@ -884,6 +940,15 @@ packages:
dev: true
optional: true
+ /@esbuild/freebsd-arm64@0.18.20:
+ resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/freebsd-x64@0.17.19:
resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
engines: {node: '>=12'}
@@ -893,6 +958,15 @@ packages:
dev: true
optional: true
+ /@esbuild/freebsd-x64@0.18.20:
+ resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-arm64@0.17.19:
resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
engines: {node: '>=12'}
@@ -902,6 +976,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-arm64@0.18.20:
+ resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-arm@0.17.19:
resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
engines: {node: '>=12'}
@@ -911,6 +994,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-arm@0.18.20:
+ resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-ia32@0.17.19:
resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
engines: {node: '>=12'}
@@ -920,6 +1012,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-ia32@0.18.20:
+ resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-loong64@0.17.19:
resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
engines: {node: '>=12'}
@@ -929,6 +1030,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-loong64@0.18.20:
+ resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-mips64el@0.17.19:
resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
engines: {node: '>=12'}
@@ -938,6 +1048,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-mips64el@0.18.20:
+ resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-ppc64@0.17.19:
resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
engines: {node: '>=12'}
@@ -947,6 +1066,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-ppc64@0.18.20:
+ resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-riscv64@0.17.19:
resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
engines: {node: '>=12'}
@@ -956,6 +1084,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-riscv64@0.18.20:
+ resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-s390x@0.17.19:
resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
engines: {node: '>=12'}
@@ -965,6 +1102,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-s390x@0.18.20:
+ resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-x64@0.17.19:
resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
engines: {node: '>=12'}
@@ -974,6 +1120,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-x64@0.18.20:
+ resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/netbsd-x64@0.17.19:
resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
engines: {node: '>=12'}
@@ -983,6 +1138,15 @@ packages:
dev: true
optional: true
+ /@esbuild/netbsd-x64@0.18.20:
+ resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/openbsd-x64@0.17.19:
resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
engines: {node: '>=12'}
@@ -992,6 +1156,15 @@ packages:
dev: true
optional: true
+ /@esbuild/openbsd-x64@0.18.20:
+ resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/sunos-x64@0.17.19:
resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
engines: {node: '>=12'}
@@ -1001,6 +1174,15 @@ packages:
dev: true
optional: true
+ /@esbuild/sunos-x64@0.18.20:
+ resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/win32-arm64@0.17.19:
resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
engines: {node: '>=12'}
@@ -1010,6 +1192,15 @@ packages:
dev: true
optional: true
+ /@esbuild/win32-arm64@0.18.20:
+ resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/win32-ia32@0.17.19:
resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
engines: {node: '>=12'}
@@ -1019,6 +1210,15 @@ packages:
dev: true
optional: true
+ /@esbuild/win32-ia32@0.18.20:
+ resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/win32-x64@0.17.19:
resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
engines: {node: '>=12'}
@@ -1028,6 +1228,15 @@ packages:
dev: true
optional: true
+ /@esbuild/win32-x64@0.18.20:
+ resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@eslint-community/eslint-utils@4.3.0(eslint@8.36.0):
resolution: {integrity: sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1069,6 +1278,11 @@ packages:
fast-uri: 2.2.0
dev: true
+ /@fastify/busboy@2.0.0:
+ resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==}
+ engines: {node: '>=14'}
+ dev: true
+
/@fastify/deepmerge@1.3.0:
resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==}
dev: true
@@ -1360,6 +1574,10 @@ packages:
resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
dev: true
+ /@jridgewell/sourcemap-codec@1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ dev: true
+
/@jridgewell/trace-mapping@0.3.17:
resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==}
dependencies:
@@ -1367,6 +1585,13 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.14
dev: true
+ /@jridgewell/trace-mapping@0.3.20:
+ resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.0
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
/@jridgewell/trace-mapping@0.3.9:
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
dependencies:
@@ -1545,6 +1770,10 @@ packages:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.15.0
+ /@polka/url@1.0.0-next.23:
+ resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==}
+ dev: true
+
/@rushstack/node-core-library@3.55.2(@types/node@18.16.16):
resolution: {integrity: sha512-SaLe/x/Q/uBVdNFK5V1xXvsVps0y7h1sN7aSJllQyFbugyOaxhNRF25bwEDnicARNEjJw0pk0lYnJQ9Kr6ev0A==}
peerDependencies:
@@ -1595,6 +1824,70 @@ packages:
'@sinonjs/commons': 2.0.0
dev: true
+ /@sveltejs/kit@1.27.3(svelte@4.2.2)(vite@4.5.0):
+ resolution: {integrity: sha512-pd7qwX6ww5noA0/FLk45B0aKUeOXWR+pfZsGTrv3dRmj3lTmnki9UTmTdWzHJGrje+BBkGUZHfgGrsSOQQBQpQ==}
+ engines: {node: ^16.14 || >=18}
+ hasBin: true
+ requiresBuild: true
+ peerDependencies:
+ svelte: ^3.54.0 || ^4.0.0-next.0
+ vite: ^4.0.0
+ dependencies:
+ '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.2.2)(vite@4.5.0)
+ '@types/cookie': 0.5.4
+ cookie: 0.5.0
+ devalue: 4.3.2
+ esm-env: 1.0.0
+ kleur: 4.1.5
+ magic-string: 0.30.5
+ mrmime: 1.0.1
+ sade: 1.8.1
+ set-cookie-parser: 2.6.0
+ sirv: 2.0.3
+ svelte: 4.2.2
+ tiny-glob: 0.2.9
+ undici: 5.26.5
+ vite: 4.5.0(@types/node@18.16.16)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.2)(vite@4.5.0):
+ resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==}
+ engines: {node: ^14.18.0 || >= 16}
+ peerDependencies:
+ '@sveltejs/vite-plugin-svelte': ^2.2.0
+ svelte: ^3.54.0 || ^4.0.0
+ vite: ^4.0.0
+ dependencies:
+ '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.2.2)(vite@4.5.0)
+ debug: 4.3.4
+ svelte: 4.2.2
+ vite: 4.5.0(@types/node@18.16.16)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.2.2)(vite@4.5.0):
+ resolution: {integrity: sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==}
+ engines: {node: ^14.18.0 || >= 16}
+ peerDependencies:
+ svelte: ^3.54.0 || ^4.0.0
+ vite: ^4.0.0
+ dependencies:
+ '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.2.2)(vite@4.5.0)
+ debug: 4.3.4
+ deepmerge: 4.3.1
+ kleur: 4.1.5
+ magic-string: 0.30.5
+ svelte: 4.2.2
+ svelte-hmr: 0.15.3(svelte@4.2.2)
+ vite: 4.5.0(@types/node@18.16.16)
+ vitefu: 0.2.5(vite@4.5.0)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@swc/helpers@0.5.2:
resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
dependencies:
@@ -1680,12 +1973,20 @@ packages:
'@types/node': 18.16.16
dev: true
+ /@types/cookie@0.5.4:
+ resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==}
+ dev: true
+
/@types/debug@4.1.8:
resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==}
dependencies:
'@types/ms': 0.7.31
dev: true
+ /@types/estree@1.0.5:
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ dev: true
+
/@types/express-serve-static-core@4.17.30:
resolution: {integrity: sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==}
dependencies:
@@ -2053,6 +2354,12 @@ packages:
engines: {node: '>=0.4.0'}
dev: true
+ /acorn@8.11.2:
+ resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
/acorn@8.8.2:
resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
engines: {node: '>=0.4.0'}
@@ -2159,6 +2466,12 @@ packages:
/argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ /aria-query@5.3.0:
+ resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+ dependencies:
+ dequal: 2.0.3
+ dev: true
+
/array-flatten@1.1.1:
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
dev: true
@@ -2233,6 +2546,12 @@ packages:
- supports-color
dev: true
+ /axobject-query@3.2.1:
+ resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
+ dependencies:
+ dequal: 2.0.3
+ dev: true
+
/babel-jest@29.5.0(@babel/core@7.21.3):
resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -2571,6 +2890,16 @@ packages:
resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==}
dev: true
+ /code-red@1.0.4:
+ resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@types/estree': 1.0.5
+ acorn: 8.11.2
+ estree-walker: 3.0.3
+ periscopic: 3.1.0
+ dev: true
+
/collect-v8-coverage@1.0.1:
resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==}
dev: true
@@ -2713,6 +3042,14 @@ packages:
shebang-command: 2.0.0
which: 2.0.2
+ /css-tree@2.3.1:
+ resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
+ engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
+ dependencies:
+ mdn-data: 2.0.30
+ source-map-js: 1.0.2
+ dev: true
+
/csv-generate@3.4.3:
resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==}
dev: true
@@ -2836,6 +3173,11 @@ packages:
engines: {node: '>= 0.8'}
dev: true
+ /dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+ dev: true
+
/destr@2.0.1:
resolution: {integrity: sha512-M1Ob1zPSIvlARiJUkKqvAZ3VAqQY6Jcuth/pBKQ2b1dX/Qx0OnJ8Vux6J2H5PTMQeRzWrrbTu70VxBfv/OPDJA==}
dev: false
@@ -2855,6 +3197,10 @@ packages:
engines: {node: '>=8'}
dev: true
+ /devalue@4.3.2:
+ resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==}
+ dev: true
+
/diff-sequences@27.5.1:
resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -3247,6 +3593,36 @@ packages:
'@esbuild/win32-x64': 0.17.19
dev: true
+ /esbuild@0.18.20:
+ resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/android-arm': 0.18.20
+ '@esbuild/android-arm64': 0.18.20
+ '@esbuild/android-x64': 0.18.20
+ '@esbuild/darwin-arm64': 0.18.20
+ '@esbuild/darwin-x64': 0.18.20
+ '@esbuild/freebsd-arm64': 0.18.20
+ '@esbuild/freebsd-x64': 0.18.20
+ '@esbuild/linux-arm': 0.18.20
+ '@esbuild/linux-arm64': 0.18.20
+ '@esbuild/linux-ia32': 0.18.20
+ '@esbuild/linux-loong64': 0.18.20
+ '@esbuild/linux-mips64el': 0.18.20
+ '@esbuild/linux-ppc64': 0.18.20
+ '@esbuild/linux-riscv64': 0.18.20
+ '@esbuild/linux-s390x': 0.18.20
+ '@esbuild/linux-x64': 0.18.20
+ '@esbuild/netbsd-x64': 0.18.20
+ '@esbuild/openbsd-x64': 0.18.20
+ '@esbuild/sunos-x64': 0.18.20
+ '@esbuild/win32-arm64': 0.18.20
+ '@esbuild/win32-ia32': 0.18.20
+ '@esbuild/win32-x64': 0.18.20
+ dev: true
+
/escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
@@ -3440,6 +3816,10 @@ packages:
transitivePeerDependencies:
- supports-color
+ /esm-env@1.0.0:
+ resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==}
+ dev: true
+
/espree@9.5.0:
resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -3475,6 +3855,12 @@ packages:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
+ /estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+ dependencies:
+ '@types/estree': 1.0.5
+ dev: true
+
/esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
@@ -3925,6 +4311,10 @@ packages:
define-properties: 1.2.0
dev: true
+ /globalyzer@0.1.0:
+ resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
+ dev: true
+
/globby@11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
@@ -3937,6 +4327,10 @@ packages:
slash: 3.0.0
dev: true
+ /globrex@0.1.2:
+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
+ dev: true
+
/gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
@@ -4261,6 +4655,12 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /is-reference@3.0.2:
+ resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
+ dependencies:
+ '@types/estree': 1.0.5
+ dev: true
+
/is-regex@1.1.4:
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
engines: {node: '>= 0.4'}
@@ -4939,6 +5339,10 @@ packages:
strip-bom: 3.0.0
dev: true
+ /locate-character@3.0.0:
+ resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
+ dev: true
+
/locate-path@5.0.0:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
@@ -5010,6 +5414,13 @@ packages:
yallist: 4.0.0
dev: true
+ /magic-string@0.30.5:
+ resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
/make-dir@3.1.0:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
engines: {node: '>=8'}
@@ -5037,6 +5448,10 @@ packages:
engines: {node: '>=8'}
dev: true
+ /mdn-data@2.0.30:
+ resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
+ dev: true
+
/media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
@@ -5157,6 +5572,11 @@ packages:
engines: {node: '>=4'}
dev: true
+ /mrmime@1.0.1:
+ resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
+ engines: {node: '>=10'}
+ dev: true
+
/ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
dev: true
@@ -5541,6 +5961,14 @@ packages:
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
dev: false
+ /periscopic@3.1.0:
+ resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
+ dependencies:
+ '@types/estree': 1.0.5
+ estree-walker: 3.0.3
+ is-reference: 3.0.2
+ dev: true
+
/picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
dev: true
@@ -5941,6 +6369,14 @@ packages:
dependencies:
glob: 7.2.3
+ /rollup@3.29.4:
+ resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==}
+ engines: {node: '>=14.18.0', npm: '>=8.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
/run-async@3.0.0:
resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==}
engines: {node: '>=0.12.0'}
@@ -5963,6 +6399,13 @@ packages:
tslib: 2.4.0
dev: true
+ /sade@1.8.1:
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+ engines: {node: '>=6'}
+ dependencies:
+ mri: 1.2.0
+ dev: true
+
/safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: true
@@ -6149,6 +6592,15 @@ packages:
semver: 7.0.0
dev: true
+ /sirv@2.0.3:
+ resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==}
+ engines: {node: '>= 10'}
+ dependencies:
+ '@polka/url': 1.0.0-next.23
+ mrmime: 1.0.1
+ totalist: 3.0.1
+ dev: true
+
/sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
dev: true
@@ -6392,6 +6844,34 @@ packages:
engines: {node: '>= 0.4'}
dev: true
+ /svelte-hmr@0.15.3(svelte@4.2.2):
+ resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==}
+ engines: {node: ^12.20 || ^14.13.1 || >= 16}
+ peerDependencies:
+ svelte: ^3.19.0 || ^4.0.0
+ dependencies:
+ svelte: 4.2.2
+ dev: true
+
+ /svelte@4.2.2:
+ resolution: {integrity: sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==}
+ engines: {node: '>=16'}
+ dependencies:
+ '@ampproject/remapping': 2.2.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.20
+ acorn: 8.11.2
+ aria-query: 5.3.0
+ axobject-query: 3.2.1
+ code-red: 1.0.4
+ css-tree: 2.3.1
+ estree-walker: 3.0.3
+ is-reference: 3.0.2
+ locate-character: 3.0.0
+ magic-string: 0.30.5
+ periscopic: 3.1.0
+ dev: true
+
/term-size@2.2.1:
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
engines: {node: '>=8'}
@@ -6430,6 +6910,13 @@ packages:
convert-hrtime: 3.0.0
dev: true
+ /tiny-glob@0.2.9:
+ resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
+ dependencies:
+ globalyzer: 0.1.0
+ globrex: 0.1.2
+ dev: true
+
/tiny-lru@11.0.1:
resolution: {integrity: sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==}
engines: {node: '>=12'}
@@ -6463,6 +6950,11 @@ packages:
engines: {node: '>=0.6'}
dev: true
+ /totalist@3.0.1:
+ resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
+ engines: {node: '>=6'}
+ dev: true
+
/touch@3.1.0:
resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==}
hasBin: true
@@ -6727,6 +7219,13 @@ packages:
resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
dev: true
+ /undici@5.26.5:
+ resolution: {integrity: sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==}
+ engines: {node: '>=14.0'}
+ dependencies:
+ '@fastify/busboy': 2.0.0
+ dev: true
+
/unenv@1.7.4:
resolution: {integrity: sha512-fjYsXYi30It0YCQYqLOcT6fHfMXsBr2hw9XC7ycf8rTG7Xxpe3ZssiqUnD0khrjiZEmkBXWLwm42yCSCH46fMw==}
dependencies:
@@ -6812,6 +7311,53 @@ packages:
engines: {node: '>= 0.8'}
dev: true
+ /vite@4.5.0(@types/node@18.16.16):
+ resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ '@types/node': 18.16.16
+ esbuild: 0.18.20
+ postcss: 8.4.31
+ rollup: 3.29.4
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /vitefu@0.2.5(vite@4.5.0):
+ resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
+ peerDependencies:
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0
+ peerDependenciesMeta:
+ vite:
+ optional: true
+ dependencies:
+ vite: 4.5.0(@types/node@18.16.16)
+ dev: true
+
/walker@1.0.8:
resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
dependencies: