Add more surface-level runtime tests.

This commit is contained in:
Sebastian Jeltsch
2025-03-22 00:36:43 +01:00
parent d0af3c6bb9
commit 73d590567f
4 changed files with 105 additions and 247 deletions
+5 -241
View File
@@ -126,7 +126,7 @@ importers:
dependencies:
'@astrojs/tailwind':
specifier: ^5.1.5
version: 5.1.5(astro@5.5.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.36.0)(typescript@4.9.4)(yaml@2.7.0))(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4)))(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4))
version: 5.1.5(astro@5.5.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.36.0)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2))
'@nanostores/persistent':
specifier: ^0.10.2
version: 0.10.2(nanostores@0.11.4)
@@ -135,7 +135,7 @@ importers:
version: 0.5.0(nanostores@0.11.4)(solid-js@1.9.5)
astro:
specifier: ^5.5.2
version: 5.5.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.36.0)(typescript@4.9.4)(yaml@2.7.0)
version: 5.5.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.36.0)(typescript@5.8.2)(yaml@2.7.0)
astro-icon:
specifier: ^1.1.5
version: 1.1.5
@@ -154,13 +154,13 @@ importers:
devDependencies:
'@astrojs/solid-js':
specifier: ^5.0.5
version: 5.0.5(@testing-library/jest-dom@6.6.3)(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(solid-devtools@0.30.1(solid-js@1.9.5)(vite@5.4.14(@types/node@16.18.126)(lightningcss@1.29.1)))(solid-js@1.9.5)(yaml@2.7.0)
version: 5.0.5(@testing-library/jest-dom@6.6.3)(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(solid-devtools@0.30.1(solid-js@1.9.5)(vite@5.4.14(@types/node@22.13.10)(lightningcss@1.29.1)))(solid-js@1.9.5)(yaml@2.7.0)
'@iconify-json/tabler':
specifier: ^1.2.17
version: 1.2.17
'@tailwindcss/typography':
specifier: ^0.5.16
version: 0.5.16(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4)))
version: 0.5.16(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))
'@types/dateformat':
specifier: ^5.0.3
version: 5.0.3
@@ -178,7 +178,7 @@ importers:
version: 0.33.5
tailwindcss:
specifier: ^3.4.17
version: 3.4.17(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4))
version: 3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2))
examples/coffee-vector-search:
dependencies:
@@ -6013,28 +6013,6 @@ snapshots:
stream-replace-string: 2.0.0
zod: 3.24.2
'@astrojs/solid-js@5.0.5(@testing-library/jest-dom@6.6.3)(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(solid-devtools@0.30.1(solid-js@1.9.5)(vite@5.4.14(@types/node@16.18.126)(lightningcss@1.29.1)))(solid-js@1.9.5)(yaml@2.7.0)':
dependencies:
solid-js: 1.9.5
vite: 6.2.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)
vite-plugin-solid: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0))
optionalDependencies:
solid-devtools: 0.30.1(solid-js@1.9.5)(vite@5.4.14(@types/node@16.18.126)(lightningcss@1.29.1))
transitivePeerDependencies:
- '@testing-library/jest-dom'
- '@types/node'
- jiti
- less
- lightningcss
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
- tsx
- yaml
'@astrojs/solid-js@5.0.5(@testing-library/jest-dom@6.6.3)(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(solid-devtools@0.30.1(solid-js@1.9.5)(vite@5.4.14(@types/node@22.13.10)(lightningcss@1.29.1)))(solid-js@1.9.5)(yaml@2.7.0)':
dependencies:
solid-js: 1.9.5
@@ -6116,16 +6094,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@astrojs/tailwind@5.1.5(astro@5.5.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.36.0)(typescript@4.9.4)(yaml@2.7.0))(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4)))(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4))':
dependencies:
astro: 5.5.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.36.0)(typescript@4.9.4)(yaml@2.7.0)
autoprefixer: 10.4.21(postcss@8.5.3)
postcss: 8.5.3
postcss-load-config: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4))
tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4))
transitivePeerDependencies:
- ts-node
'@astrojs/tailwind@5.1.5(astro@5.5.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.36.0)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2))':
dependencies:
astro: 5.5.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.36.0)(typescript@5.8.2)(yaml@2.7.0)
@@ -7286,14 +7254,6 @@ snapshots:
dependencies:
tslib: 2.8.1
'@tailwindcss/typography@0.5.16(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4)))':
dependencies:
lodash.castarray: 4.4.0
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4))
'@tailwindcss/typography@0.5.16(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))':
dependencies:
lodash.castarray: 4.4.0
@@ -7886,102 +7846,6 @@ snapshots:
valid-filename: 4.0.0
zod: 3.24.2
astro@5.5.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.36.0)(typescript@4.9.4)(yaml@2.7.0):
dependencies:
'@astrojs/compiler': 2.11.0
'@astrojs/internal-helpers': 0.6.1
'@astrojs/markdown-remark': 6.3.0
'@astrojs/telemetry': 3.2.0
'@oslojs/encoding': 1.1.0
'@rollup/pluginutils': 5.1.4(rollup@4.36.0)
'@types/cookie': 0.6.0
acorn: 8.14.1
aria-query: 5.3.2
axobject-query: 4.1.0
boxen: 8.0.1
ci-info: 4.2.0
clsx: 2.1.1
common-ancestor-path: 1.0.1
cookie: 0.7.2
cssesc: 3.0.0
debug: 4.4.0
deterministic-object-hash: 2.0.2
devalue: 5.1.1
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.4
es-module-lexer: 1.6.0
esbuild: 0.25.1
estree-walker: 3.0.3
flattie: 1.1.1
github-slugger: 2.0.0
html-escaper: 3.0.3
http-cache-semantics: 4.1.1
js-yaml: 4.1.0
kleur: 4.1.5
magic-string: 0.30.17
magicast: 0.3.5
mrmime: 2.0.1
neotraverse: 0.6.18
p-limit: 6.2.0
p-queue: 8.1.0
package-manager-detector: 1.1.0
picomatch: 4.0.2
prompts: 2.4.2
rehype: 13.0.2
semver: 7.7.1
shiki: 1.29.2
tinyexec: 0.3.2
tinyglobby: 0.2.12
tsconfck: 3.1.5(typescript@4.9.4)
ultrahtml: 1.5.3
unist-util-visit: 5.0.0
unstorage: 1.15.0
vfile: 6.0.3
vite: 6.2.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)
vitefu: 1.0.6(vite@6.2.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0))
xxhash-wasm: 1.1.0
yargs-parser: 21.1.1
yocto-spinner: 0.2.1
zod: 3.24.2
zod-to-json-schema: 3.24.4(zod@3.24.2)
zod-to-ts: 1.2.0(typescript@4.9.4)(zod@3.24.2)
optionalDependencies:
sharp: 0.33.5
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
- '@azure/data-tables'
- '@azure/identity'
- '@azure/keyvault-secrets'
- '@azure/storage-blob'
- '@capacitor/preferences'
- '@deno/kv'
- '@netlify/blobs'
- '@planetscale/database'
- '@types/node'
- '@upstash/redis'
- '@vercel/blob'
- '@vercel/kv'
- aws4fetch
- db0
- idb-keyval
- ioredis
- jiti
- less
- lightningcss
- rollup
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
- tsx
- typescript
- uploadthing
- yaml
astro@5.5.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.36.0)(typescript@5.8.2)(yaml@2.7.0):
dependencies:
'@astrojs/compiler': 2.11.0
@@ -10606,14 +10470,6 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.5.3
postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4)):
dependencies:
lilconfig: 3.1.3
yaml: 2.7.0
optionalDependencies:
postcss: 8.5.3
ts-node: 10.9.2(@types/node@16.18.126)(typescript@4.9.4)
postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)):
dependencies:
lilconfig: 3.1.3
@@ -11272,20 +11128,6 @@ snapshots:
smol-toml@1.3.1: {}
solid-devtools@0.30.1(solid-js@1.9.5)(vite@5.4.14(@types/node@16.18.126)(lightningcss@1.29.1)):
dependencies:
'@babel/core': 7.26.10
'@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10)
'@babel/types': 7.26.10
'@solid-devtools/debugger': 0.23.4(solid-js@1.9.5)
'@solid-devtools/shared': 0.13.2(solid-js@1.9.5)
solid-js: 1.9.5
optionalDependencies:
vite: 5.4.14(@types/node@16.18.126)(lightningcss@1.29.1)
transitivePeerDependencies:
- supports-color
optional: true
solid-devtools@0.30.1(solid-js@1.9.5)(vite@5.4.14(@types/node@22.13.10)(lightningcss@1.29.1)):
dependencies:
'@babel/core': 7.26.10
@@ -11494,33 +11336,6 @@ snapshots:
dependencies:
tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2))
tailwindcss@3.4.17(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
chokidar: 3.6.0
didyoumean: 1.2.2
dlv: 1.1.3
fast-glob: 3.3.3
glob-parent: 6.0.2
is-glob: 4.0.3
jiti: 1.21.7
lilconfig: 3.1.3
micromatch: 4.0.8
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.1.1
postcss: 8.5.3
postcss-import: 15.1.0(postcss@8.5.3)
postcss-js: 4.0.1(postcss@8.5.3)
postcss-load-config: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@16.18.126)(typescript@4.9.4))
postcss-nested: 6.2.0(postcss@8.5.3)
postcss-selector-parser: 6.1.2
resolve: 1.22.10
sucrase: 3.35.0
transitivePeerDependencies:
- ts-node
tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)):
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -11669,10 +11484,6 @@ snapshots:
ts-poet: 6.11.0
ts-proto-descriptors: 2.0.0
tsconfck@3.1.5(typescript@4.9.4):
optionalDependencies:
typescript: 4.9.4
tsconfck@3.1.5(typescript@5.8.2):
optionalDependencies:
typescript: 5.8.2
@@ -11906,21 +11717,6 @@ snapshots:
rollup: 2.79.2
vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)
vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)):
dependencies:
'@babel/core': 7.26.10
'@types/babel__core': 7.20.5
babel-preset-solid: 1.9.5(@babel/core@7.26.10)
merge-anything: 5.1.7
solid-js: 1.9.5
solid-refresh: 0.6.3(solid-js@1.9.5)
vite: 6.2.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)
vitefu: 1.0.6(vite@6.2.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0))
optionalDependencies:
'@testing-library/jest-dom': 6.6.3
transitivePeerDependencies:
- supports-color
vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)):
dependencies:
'@babel/core': 7.26.10
@@ -11947,17 +11743,6 @@ snapshots:
- supports-color
- typescript
vite@5.4.14(@types/node@16.18.126)(lightningcss@1.29.1):
dependencies:
esbuild: 0.21.5
postcss: 8.5.3
rollup: 4.36.0
optionalDependencies:
'@types/node': 16.18.126
fsevents: 2.3.3
lightningcss: 1.29.1
optional: true
vite@5.4.14(@types/node@22.13.10)(lightningcss@1.29.1):
dependencies:
esbuild: 0.21.5
@@ -11969,18 +11754,6 @@ snapshots:
lightningcss: 1.29.1
optional: true
vite@6.2.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0):
dependencies:
esbuild: 0.25.1
postcss: 8.5.3
rollup: 4.36.0
optionalDependencies:
'@types/node': 16.18.126
fsevents: 2.3.3
jiti: 2.4.2
lightningcss: 1.29.1
yaml: 2.7.0
vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0):
dependencies:
esbuild: 0.25.1
@@ -11993,10 +11766,6 @@ snapshots:
lightningcss: 1.29.1
yaml: 2.7.0
vitefu@1.0.6(vite@6.2.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)):
optionalDependencies:
vite: 6.2.2(@types/node@16.18.126)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)
vitefu@1.0.6(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)):
optionalDependencies:
vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)
@@ -12290,11 +12059,6 @@ snapshots:
dependencies:
zod: 3.24.2
zod-to-ts@1.2.0(typescript@4.9.4)(zod@3.24.2):
dependencies:
typescript: 4.9.4
zod: 3.24.2
zod-to-ts@1.2.0(typescript@5.8.2)(zod@3.24.2):
dependencies:
typescript: 5.8.2
+31 -1
View File
@@ -1,2 +1,32 @@
export { fs } from "./deno";
export * from "./trailbase";
export {
HttpError,
StatusCodes,
addCronCallback,
addPeriodicCallback,
addRoute,
execute,
htmlHandler,
jsonHandler,
parsePath,
query,
stringHandler,
} from "./trailbase";
export type {
CallbackType,
HeaderMapType,
HtmlResponseType,
JsonRequestType,
JsonResponseType,
MaybeResponse,
Method,
ParsedPath,
PathParamsType,
RequestType,
ResponseType,
StringRequestType,
StringResponseType,
UserType,
} from "./trailbase";
+1 -1
View File
@@ -615,7 +615,7 @@ export function addRoute(
routerCallbacks.set(`${method}:${route}`, callback);
}
async function dispatch(
export async function dispatch(
method: Method,
route: string,
uri: string,
@@ -1,19 +1,22 @@
import { test, expect } from "vitest";
import { addPeriodicCallback } from "../src/trailbase";
import { addPeriodicCallback, parsePath, query, execute, stringHandler, addRoute, dispatch } from "../src/trailbase";
import type { Method, StringRequestType } from "../src/trailbase";
import { decodeFallback, encodeFallback } from "../src/util";
globalThis.rustyscript = {
async_functions: {
},
async_functions: {},
functions: {
isolate_id: () => 0,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
install_route: (_method: Method, _route: string) => { },
},
};
test("periodic callback", async () => {
const promise = new Promise((resolve) => {
let count = 0;
const result : number[] = [];
const result: number[] = [];
addPeriodicCallback(1, (cancel) => {
result.push(count++);
@@ -27,3 +30,64 @@ test("periodic callback", async () => {
expect(await promise).toEqual([0, 1, 2]);
});
test("binary encode/decode", () => {
const a = `1234567890-=qwertyuiop[]asdfghjkl;'zxcvbnm,./~!@#$%^&*()_+ `;
expect(decodeFallback(encodeFallback(a))).toEqual(a);
});
test("parse path", () => {
const parsedPath = parsePath("/p0/p1/p2?a=x&a=y&b=z");
expect(parsedPath.path).toEqual("/p0/p1/p2");
const q = parsedPath.query;
expect(q.getAll("a")).toEqual(["x", "y"]);
expect(q.get("b")).toEqual("z");
});
test("db functions", async () => {
type Args = {
query: string;
params: unknown[];
};
let queryArgs: Args = { query: "", params: [] };
let executeArgs: Args = { query: "", params: [] };
{
const query = async (query: string, params: unknown[]) => queryArgs = { query, params };
const execute = async (query: string, params: unknown[]) => executeArgs = { query, params };
globalThis.rustyscript = {
...globalThis.rustyscript,
async_functions: {
query,
execute,
},
};
}
const executeStr = "INSERT INTO table (col) VALUES (?1)";
await execute(executeStr, ["test"]);
expect(executeArgs.query).toEqual(executeStr);
expect(executeArgs.params).toEqual(["test"]);
const queryStr = "SELECT * FROM table WHERE col = ?1";
await query(queryStr, ["test"]);
expect(queryArgs.query).toEqual(queryStr);
expect(queryArgs.params).toEqual(["test"]);
});
test("routes functions", async () => {
const promise = new Promise<StringRequestType>((resolve) => {
addRoute("GET", "/test", stringHandler(async (req: StringRequestType) => {
resolve(req);
return "response";
}));
});
const uri = "http://127.0.0.1";
dispatch("GET", "/test", uri, [], [], undefined, encodeFallback("test"));
const result : StringRequestType = await promise;
expect(result.uri).toEqual(uri);
});