From b391868d963e6108488d5b205fd8699b7e7c9639 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sat, 6 Jun 2026 11:13:21 -0700 Subject: [PATCH 01/17] ok --- package-lock.json | 20 ++++++++++---------- package.json | 4 ++-- server.f.ts | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 105a782..127850c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,28 +9,28 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "functionalscript": "^0.11.10" + "functionalscript": "^0.24.0" }, "devDependencies": { - "typescript": "^5.9.3" + "typescript": "^6.0.3" } }, "node_modules/functionalscript": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.11.10.tgz", - "integrity": "sha512-T71tKFD/a49HbjDKL5IZ061+5TfH62FGgekfdXrMUjbh/mUOHW5TMjn9nTp9z/VuWXRfDHlIZZROXlQCuPt/gg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.24.0.tgz", + "integrity": "sha512-yQQ7+3PkheAEO2EEB4qa7iOOQCAY+vh/6nS5O2mLpLMzxB89QuyDh/aR0UrtkpFt5k+QHGRxZW2q5S9I68yEZw==", "license": "MIT", "bin": { - "fjs": "fjs/module.js" + "fjs": "fs/fjs/module.js" }, "engines": { - "node": ">=20" + "node": ">=24" } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index 27c3d63..74aba2d 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,9 @@ "start": "fjs r ./server.f.ts" }, "dependencies": { - "functionalscript": "^0.11.10" + "functionalscript": "^0.24.0" }, "devDependencies": { - "typescript": "^5.9.3" + "typescript": "^6.0.3" } } diff --git a/server.f.ts b/server.f.ts index c842f5b..53b541c 100644 --- a/server.f.ts +++ b/server.f.ts @@ -1,6 +1,6 @@ -import { utf8 } from 'functionalscript/text/module.f.js' -import { length, type Vec } from 'functionalscript/types/bit_vec/module.f.js' -import { pure } from 'functionalscript/types/effects/module.f.js' +import { utf8 } from 'functionalscript/fs/text/module.f.js' +import { length, type Vec } from 'functionalscript/fs/types/bit_vec/module.f.js' +import { pure } from 'functionalscript/fs/effects/module.f.js' import { createServer, listen, @@ -12,9 +12,9 @@ import { readdir, type IoResult, type Dirent, -} from 'functionalscript/types/effects/node/module.f.js' -import { htmlToString } from 'functionalscript/html/module.f.js' -import { concat } from 'functionalscript/path/module.f.js' +} from 'functionalscript/fs/effects/node/module.f.js' +import { htmlToString } from 'functionalscript/fs/html/module.f.js' +import { concat } from 'functionalscript/fs/path/module.f.js' const listener = ({ url }: IncomingMessage) => { const path = url.split('?')[0] ?? '' From 9f4b0ecfdf29c60340dd5ae9617fdb8e3f1ee251 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sat, 6 Jun 2026 11:43:01 -0700 Subject: [PATCH 02/17] htmlUtf8 --- server.f.ts | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/server.f.ts b/server.f.ts index 53b541c..14e2984 100644 --- a/server.f.ts +++ b/server.f.ts @@ -1,5 +1,5 @@ import { utf8 } from 'functionalscript/fs/text/module.f.js' -import { length, type Vec } from 'functionalscript/fs/types/bit_vec/module.f.js' +import { empty, length, type Vec } from 'functionalscript/fs/types/bit_vec/module.f.js' import { pure } from 'functionalscript/fs/effects/module.f.js' import { createServer, @@ -13,7 +13,7 @@ import { type IoResult, type Dirent, } from 'functionalscript/fs/effects/node/module.f.js' -import { htmlToString } from 'functionalscript/fs/html/module.f.js' +import { htmlToString, htmlUtf8 } from 'functionalscript/fs/html/module.f.js' import { concat } from 'functionalscript/fs/path/module.f.js' const listener = ({ url }: IncomingMessage) => { @@ -25,22 +25,14 @@ const listener = ({ url }: IncomingMessage) => { return [['a', { href }, name + (isFile ? '' : '/')], '\n'] as const } - const dirPage = (v: readonly Dirent[]) => htmlToString( - ['html', - ['head', - ['link', { rel: 'stylesheet', href: '/main.css' }] - ], - ['body', - ['pre', - ...v.flatMap(dirLink) - ] - ] - ]) + const dirPage = (v: readonly Dirent[]) => htmlUtf8 + (['link', { rel: 'stylesheet', href: '/main.css' }]) + (['pre', ...v.flatMap(dirLink)]) const orReadDir = (r: IoResult) => r[0] === 'ok' ? pure(r) : readdir(file, {}) - .step(([s, v]) => pure([s, utf8(s === 'ok' ? dirPage(v) : '')] as const)) + .step(([s, v]) => pure([s, s === 'ok' ? dirPage(v) : empty] as const)) return log(`reading ${file}`) .step(() => readFile(file)) From 36f662a1e571b84d47220948f30e51afd885e844 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sat, 6 Jun 2026 11:43:04 -0700 Subject: [PATCH 03/17] go --- server.f.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.f.ts b/server.f.ts index 14e2984..4ebaf21 100644 --- a/server.f.ts +++ b/server.f.ts @@ -13,7 +13,7 @@ import { type IoResult, type Dirent, } from 'functionalscript/fs/effects/node/module.f.js' -import { htmlToString, htmlUtf8 } from 'functionalscript/fs/html/module.f.js' +import { htmlUtf8 } from 'functionalscript/fs/html/module.f.js' import { concat } from 'functionalscript/fs/path/module.f.js' const listener = ({ url }: IncomingMessage) => { From 4540675ae3e823eef2b0ca64859e0b42f3f8fd63 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sat, 6 Jun 2026 13:20:27 -0700 Subject: [PATCH 04/17] trying to generate CI --- .github/workflows/ci.yml | 1096 ++++++++++++++++++++++++++++++++++++++ package.json | 3 +- 2 files changed, 1098 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..170b562 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,1096 @@ +{ + "name": "CI", + "on": { + "pull_request": {} + }, + "jobs": { + "ubuntu-intel": { + "runs-on": "ubuntu-24.04", + "steps": [ + { + "run": "sudo apt-get update && sudo apt-get install -y libc6-dev-i386" + }, + { + "uses": "dtolnay/rust-toolchain@1.95.0", + "with": { + "components": "rustfmt,clippy", + "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads,i686-unknown-linux-gnu" + } + }, + { + "uses": "bytecodealliance/actions/wasmtime/setup@v1", + "with": { + "version": "45.0.0" + } + }, + { + "uses": "wasmerio/setup-wasmer@v3.1", + "with": { + "version": "v7.1.0" + } + }, + { + "uses": "actions/setup-node@v6", + "with": { + "node-version": "26.3.0" + } + }, + { + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + }, + { + "uses": "denoland/setup-deno@v2", + "with": { + "deno-version": "2.8.2" + } + }, + { + "uses": "oven-sh/setup-bun@v2", + "with": { + "bun-version": "1.3.14" + } + }, + { + "uses": "actions/checkout@v6" + }, + { + "run": "cargo fmt -- --check" + }, + { + "run": "cargo clippy -- -D warnings" + }, + { + "run": "cargo test" + }, + { + "run": "cargo test --release" + }, + { + "run": "cargo test --target wasm32-wasip1" + }, + { + "run": "cargo test --target wasm32-wasip1 --release" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip2" + }, + { + "run": "cargo test --target wasm32-wasip2 --release" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target i686-unknown-linux-gnu" + }, + { + "run": "cargo test --target i686-unknown-linux-gnu --release" + }, + { + "run": "npm ci" + }, + { + "run": "npm t" + }, + { + "run": "npm run fst" + }, + { + "run": "tsgo" + }, + { + "run": "npm pack" + }, + { + "run": "npm install -g ./*.tgz" + }, + { + "run": "fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "fjs t" + }, + { + "run": "npm uninstall functionalscript -g" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "deno install" + }, + { + "run": "deno task test" + }, + { + "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "deno task fjs t" + }, + { + "run": "deno publish --dry-run --allow-slow-types" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "bun install" + }, + { + "run": "bun test --timeout 20000" + }, + { + "run": "bun ./fs/fjs/module.ts t" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + } + ] + }, + "ubuntu-arm": { + "runs-on": "ubuntu-24.04-arm", + "steps": [ + { + "uses": "dtolnay/rust-toolchain@1.95.0", + "with": { + "components": "rustfmt,clippy", + "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads" + } + }, + { + "uses": "bytecodealliance/actions/wasmtime/setup@v1", + "with": { + "version": "45.0.0" + } + }, + { + "uses": "wasmerio/setup-wasmer@v3.1", + "with": { + "version": "v7.1.0" + } + }, + { + "uses": "actions/setup-node@v6", + "with": { + "node-version": "26.3.0" + } + }, + { + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + }, + { + "uses": "denoland/setup-deno@v2", + "with": { + "deno-version": "2.8.2" + } + }, + { + "uses": "oven-sh/setup-bun@v2", + "with": { + "bun-version": "1.3.14" + } + }, + { + "uses": "actions/checkout@v6" + }, + { + "run": "cargo fmt -- --check" + }, + { + "run": "cargo clippy -- -D warnings" + }, + { + "run": "cargo test" + }, + { + "run": "cargo test --release" + }, + { + "run": "cargo test --target wasm32-wasip1" + }, + { + "run": "cargo test --target wasm32-wasip1 --release" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip2" + }, + { + "run": "cargo test --target wasm32-wasip2 --release" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + }, + { + "run": "npm ci" + }, + { + "run": "npm t" + }, + { + "run": "npm run fst" + }, + { + "run": "tsgo" + }, + { + "run": "npm pack" + }, + { + "run": "npm install -g ./*.tgz" + }, + { + "run": "fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "fjs t" + }, + { + "run": "npm uninstall functionalscript -g" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "deno install" + }, + { + "run": "deno task test" + }, + { + "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "deno task fjs t" + }, + { + "run": "deno publish --dry-run --allow-slow-types" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "bun install" + }, + { + "run": "bun test --timeout 20000" + }, + { + "run": "bun ./fs/fjs/module.ts t" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + } + ] + }, + "macos-intel": { + "runs-on": "macos-26-intel", + "steps": [ + { + "uses": "dtolnay/rust-toolchain@1.95.0", + "with": { + "components": "rustfmt,clippy", + "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads" + } + }, + { + "uses": "bytecodealliance/actions/wasmtime/setup@v1", + "with": { + "version": "45.0.0" + } + }, + { + "uses": "wasmerio/setup-wasmer@v3.1", + "with": { + "version": "v7.1.0" + } + }, + { + "uses": "actions/setup-node@v6", + "with": { + "node-version": "26.3.0" + } + }, + { + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + }, + { + "uses": "denoland/setup-deno@v2", + "with": { + "deno-version": "2.8.2" + } + }, + { + "uses": "oven-sh/setup-bun@v2", + "with": { + "bun-version": "1.3.14" + } + }, + { + "uses": "actions/checkout@v6" + }, + { + "run": "cargo fmt -- --check" + }, + { + "run": "cargo clippy -- -D warnings" + }, + { + "run": "cargo test" + }, + { + "run": "cargo test --release" + }, + { + "run": "cargo test --target wasm32-wasip1" + }, + { + "run": "cargo test --target wasm32-wasip1 --release" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip2" + }, + { + "run": "cargo test --target wasm32-wasip2 --release" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + }, + { + "run": "npm ci" + }, + { + "run": "npm t" + }, + { + "run": "npm run fst" + }, + { + "run": "tsgo" + }, + { + "run": "npm pack" + }, + { + "run": "npm install -g ./*.tgz" + }, + { + "run": "fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "fjs t" + }, + { + "run": "npm uninstall functionalscript -g" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "deno install" + }, + { + "run": "deno task test" + }, + { + "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "deno task fjs t" + }, + { + "run": "deno publish --dry-run --allow-slow-types" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "bun install" + }, + { + "run": "bun test --timeout 20000" + }, + { + "run": "bun ./fs/fjs/module.ts t" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + } + ] + }, + "macos-arm": { + "runs-on": "macos-26", + "steps": [ + { + "uses": "dtolnay/rust-toolchain@1.95.0", + "with": { + "components": "rustfmt,clippy", + "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads" + } + }, + { + "uses": "bytecodealliance/actions/wasmtime/setup@v1", + "with": { + "version": "45.0.0" + } + }, + { + "uses": "wasmerio/setup-wasmer@v3.1", + "with": { + "version": "v7.1.0" + } + }, + { + "uses": "actions/setup-node@v6", + "with": { + "node-version": "26.3.0" + } + }, + { + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + }, + { + "uses": "denoland/setup-deno@v2", + "with": { + "deno-version": "2.8.2" + } + }, + { + "uses": "oven-sh/setup-bun@v2", + "with": { + "bun-version": "1.3.14" + } + }, + { + "uses": "actions/checkout@v6" + }, + { + "run": "cargo fmt -- --check" + }, + { + "run": "cargo clippy -- -D warnings" + }, + { + "run": "cargo test" + }, + { + "run": "cargo test --release" + }, + { + "run": "cargo test --target wasm32-wasip1" + }, + { + "run": "cargo test --target wasm32-wasip1 --release" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip2" + }, + { + "run": "cargo test --target wasm32-wasip2 --release" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + }, + { + "run": "npm ci" + }, + { + "run": "npm t" + }, + { + "run": "npm run fst" + }, + { + "run": "tsgo" + }, + { + "run": "npm pack" + }, + { + "run": "npm install -g ./*.tgz" + }, + { + "run": "fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "fjs t" + }, + { + "run": "npm uninstall functionalscript -g" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "deno install" + }, + { + "run": "deno task test" + }, + { + "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "deno task fjs t" + }, + { + "run": "deno publish --dry-run --allow-slow-types" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "bun install" + }, + { + "run": "bun test --timeout 20000" + }, + { + "run": "bun ./fs/fjs/module.ts t" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + } + ] + }, + "windows-intel": { + "runs-on": "windows-2025", + "steps": [ + { + "uses": "dtolnay/rust-toolchain@1.95.0", + "with": { + "components": "rustfmt,clippy", + "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads,i686-pc-windows-msvc" + } + }, + { + "uses": "bytecodealliance/actions/wasmtime/setup@v1", + "with": { + "version": "45.0.0" + } + }, + { + "uses": "wasmerio/setup-wasmer@v3.1", + "with": { + "version": "v7.1.0" + } + }, + { + "uses": "actions/setup-node@v6", + "with": { + "node-version": "26.3.0" + } + }, + { + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + }, + { + "uses": "denoland/setup-deno@v2", + "with": { + "deno-version": "2.8.2" + } + }, + { + "uses": "oven-sh/setup-bun@v2", + "with": { + "bun-version": "1.3.14" + } + }, + { + "uses": "actions/checkout@v6" + }, + { + "run": "cargo fmt -- --check" + }, + { + "run": "cargo clippy -- -D warnings" + }, + { + "run": "cargo test" + }, + { + "run": "cargo test --release" + }, + { + "run": "cargo test --target wasm32-wasip1" + }, + { + "run": "cargo test --target wasm32-wasip1 --release" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip2" + }, + { + "run": "cargo test --target wasm32-wasip2 --release" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target i686-pc-windows-msvc" + }, + { + "run": "cargo test --target i686-pc-windows-msvc --release" + }, + { + "run": "npm ci" + }, + { + "run": "npm t" + }, + { + "run": "npm run fst" + }, + { + "run": "tsgo" + }, + { + "run": "npm pack" + }, + { + "run": "npm install -g (Get-ChildItem *.tgz).FullName" + }, + { + "run": "fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "fjs t" + }, + { + "run": "npm uninstall functionalscript -g" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "deno install" + }, + { + "run": "deno task test" + }, + { + "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "deno task fjs t" + }, + { + "run": "deno publish --dry-run --allow-slow-types" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "bun install" + }, + { + "run": "bun test --timeout 20000" + }, + { + "run": "bun ./fs/fjs/module.ts t" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + } + ] + }, + "windows-arm": { + "runs-on": "windows-11-arm", + "steps": [ + { + "uses": "dtolnay/rust-toolchain@1.95.0", + "with": { + "components": "rustfmt,clippy", + "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads" + } + }, + { + "uses": "bytecodealliance/actions/wasmtime/setup@v1", + "with": { + "version": "45.0.0" + } + }, + { + "uses": "wasmerio/setup-wasmer@v3.1", + "with": { + "version": "v7.1.0" + } + }, + { + "uses": "actions/setup-node@v6", + "with": { + "node-version": "26.3.0" + } + }, + { + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + }, + { + "uses": "denoland/setup-deno@v2", + "with": { + "deno-version": "2.8.2" + } + }, + { + "run": "irm bun.sh/install.ps1 | iex; \"$env:USERPROFILE\\.bun\\bin\" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append" + }, + { + "uses": "actions/checkout@v6" + }, + { + "run": "cargo fmt -- --check" + }, + { + "run": "cargo clippy -- -D warnings" + }, + { + "run": "cargo test" + }, + { + "run": "cargo test --release" + }, + { + "run": "cargo test --target wasm32-wasip1" + }, + { + "run": "cargo test --target wasm32-wasip1 --release" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip2" + }, + { + "run": "cargo test --target wasm32-wasip2 --release" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --release" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --release" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" + }, + { + "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + }, + { + "run": "npm ci" + }, + { + "run": "npm t" + }, + { + "run": "npm run fst" + }, + { + "run": "tsgo" + }, + { + "run": "npm pack" + }, + { + "run": "npm install -g (Get-ChildItem *.tgz).FullName" + }, + { + "run": "fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "fjs t" + }, + { + "run": "npm uninstall functionalscript -g" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "deno install" + }, + { + "run": "deno task test" + }, + { + "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" + }, + { + "run": "deno task fjs t" + }, + { + "run": "deno publish --dry-run --allow-slow-types" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + }, + { + "run": "bun install" + }, + { + "run": "bun test --timeout 20000" + }, + { + "run": "bun ./fs/fjs/module.ts t" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + } + ] + }, + "node24": { + "runs-on": "ubuntu-24.04", + "steps": [ + { + "uses": "actions/setup-node@v6", + "with": { + "node-version": "24.16.0" + } + }, + { + "uses": "actions/checkout@v6" + }, + { + "run": "npm ci" + }, + { + "run": "npm t" + }, + { + "run": "npm run fst" + } + ] + }, + "playwright": { + "runs-on": "ubuntu-24.04", + "steps": [ + { + "uses": "actions/setup-node@v6", + "with": { + "node-version": "26.3.0" + } + }, + { + "uses": "actions/cache@v5", + "with": { + "path": "~/.cache/ms-playwright", + "key": "ubuntu-24.04-playwright-1.60.0" + } + }, + { + "run": "npm install -g playwright@1.60.0" + }, + { + "run": "playwright install-deps" + }, + { + "run": "playwright install" + }, + { + "uses": "actions/checkout@v6" + }, + { + "run": "npm ci" + }, + { + "run": "npx playwright test --browser=chromium" + }, + { + "run": "npx playwright test --browser=firefox" + }, + { + "run": "npx playwright test --browser=webkit" + }, + { + "run": "git reset --hard HEAD && git clean -fdx" + } + ] + } + } +} \ No newline at end of file diff --git a/package.json b/package.json index 74aba2d..143701e 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "main": "server.f.ts", "scripts": { "test": "tsc && fjs t", - "start": "fjs r ./server.f.ts" + "start": "fjs r ./server.f.ts", + "ci-update": "fjs r ./node_modules/functionalscript/fs/ci/module.f.js" }, "dependencies": { "functionalscript": "^0.24.0" From c9181ba4d951b0a96173954208025337a2ae36c3 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sat, 6 Jun 2026 21:32:48 -0700 Subject: [PATCH 05/17] ok --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 143701e..07b8d9a 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "scripts": { "test": "tsc && fjs t", "start": "fjs r ./server.f.ts", - "ci-update": "fjs r ./node_modules/functionalscript/fs/ci/module.f.js" + "ci-update": "fjs r ./node_modules/functionalscript/fs/ci/module.f.js", + "fst": "fjs t" }, "dependencies": { "functionalscript": "^0.24.0" From a71c3f8cbac3abe9bb4a851844d14329024752b0 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sat, 6 Jun 2026 23:48:27 -0700 Subject: [PATCH 06/17] FS 0.25.0 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 127850c..ba51c89 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,16 +9,16 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "functionalscript": "^0.24.0" + "functionalscript": "^0.25.0" }, "devDependencies": { "typescript": "^6.0.3" } }, "node_modules/functionalscript": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.24.0.tgz", - "integrity": "sha512-yQQ7+3PkheAEO2EEB4qa7iOOQCAY+vh/6nS5O2mLpLMzxB89QuyDh/aR0UrtkpFt5k+QHGRxZW2q5S9I68yEZw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.25.0.tgz", + "integrity": "sha512-ZvVfP7a2yyF5DK2fGwSkGoedB+4kdhqlwdno6NLapUleRTV2FkN+++9YeggDiGzvQuNMC6KotOhJsiX1hzWixA==", "license": "MIT", "bin": { "fjs": "fs/fjs/module.js" diff --git a/package.json b/package.json index 07b8d9a..cbc6d5c 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "fst": "fjs t" }, "dependencies": { - "functionalscript": "^0.24.0" + "functionalscript": "^0.25.0" }, "devDependencies": { "typescript": "^6.0.3" From 8fe448d679b33308b9c2efb974e0046fd987ef3f Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 07:31:56 -0700 Subject: [PATCH 07/17] update --- .github/workflows/ci.yml | 538 ++++----------------------------------- package-lock.json | 8 +- package.json | 4 +- 3 files changed, 52 insertions(+), 498 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 170b562..71115ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,34 +1,13 @@ { "name": "CI", "on": { - "pull_request": {} + "pull_request": {}, + "merge_group": {} }, "jobs": { "ubuntu-intel": { "runs-on": "ubuntu-24.04", "steps": [ - { - "run": "sudo apt-get update && sudo apt-get install -y libc6-dev-i386" - }, - { - "uses": "dtolnay/rust-toolchain@1.95.0", - "with": { - "components": "rustfmt,clippy", - "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads,i686-unknown-linux-gnu" - } - }, - { - "uses": "bytecodealliance/actions/wasmtime/setup@v1", - "with": { - "version": "45.0.0" - } - }, - { - "uses": "wasmerio/setup-wasmer@v3.1", - "with": { - "version": "v7.1.0" - } - }, { "uses": "actions/setup-node@v6", "with": { @@ -36,7 +15,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" }, { "uses": "denoland/setup-deno@v2", @@ -54,79 +33,19 @@ "uses": "actions/checkout@v6" }, { - "run": "cargo fmt -- --check" - }, - { - "run": "cargo clippy -- -D warnings" - }, - { - "run": "cargo test" - }, - { - "run": "cargo test --release" - }, - { - "run": "cargo test --target wasm32-wasip1" - }, - { - "run": "cargo test --target wasm32-wasip1 --release" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip2" - }, - { - "run": "cargo test --target wasm32-wasip2 --release" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target i686-unknown-linux-gnu" + "run": "npm ci" }, { - "run": "cargo test --target i686-unknown-linux-gnu --release" + "run": "npx tsc" }, { - "run": "npm ci" + "run": "npm test" }, { - "run": "npm t" + "run": "node --test" }, { - "run": "npm run fst" + "run": "npm run cov" }, { "run": "tsgo" @@ -184,25 +103,6 @@ "ubuntu-arm": { "runs-on": "ubuntu-24.04-arm", "steps": [ - { - "uses": "dtolnay/rust-toolchain@1.95.0", - "with": { - "components": "rustfmt,clippy", - "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads" - } - }, - { - "uses": "bytecodealliance/actions/wasmtime/setup@v1", - "with": { - "version": "45.0.0" - } - }, - { - "uses": "wasmerio/setup-wasmer@v3.1", - "with": { - "version": "v7.1.0" - } - }, { "uses": "actions/setup-node@v6", "with": { @@ -210,7 +110,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" }, { "uses": "denoland/setup-deno@v2", @@ -228,73 +128,19 @@ "uses": "actions/checkout@v6" }, { - "run": "cargo fmt -- --check" - }, - { - "run": "cargo clippy -- -D warnings" - }, - { - "run": "cargo test" - }, - { - "run": "cargo test --release" - }, - { - "run": "cargo test --target wasm32-wasip1" - }, - { - "run": "cargo test --target wasm32-wasip1 --release" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip2" - }, - { - "run": "cargo test --target wasm32-wasip2 --release" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" + "run": "npm ci" }, { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + "run": "npx tsc" }, { - "run": "npm ci" + "run": "npm test" }, { - "run": "npm t" + "run": "node --test" }, { - "run": "npm run fst" + "run": "npm run cov" }, { "run": "tsgo" @@ -352,25 +198,6 @@ "macos-intel": { "runs-on": "macos-26-intel", "steps": [ - { - "uses": "dtolnay/rust-toolchain@1.95.0", - "with": { - "components": "rustfmt,clippy", - "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads" - } - }, - { - "uses": "bytecodealliance/actions/wasmtime/setup@v1", - "with": { - "version": "45.0.0" - } - }, - { - "uses": "wasmerio/setup-wasmer@v3.1", - "with": { - "version": "v7.1.0" - } - }, { "uses": "actions/setup-node@v6", "with": { @@ -378,7 +205,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" }, { "uses": "denoland/setup-deno@v2", @@ -396,73 +223,19 @@ "uses": "actions/checkout@v6" }, { - "run": "cargo fmt -- --check" - }, - { - "run": "cargo clippy -- -D warnings" - }, - { - "run": "cargo test" - }, - { - "run": "cargo test --release" - }, - { - "run": "cargo test --target wasm32-wasip1" - }, - { - "run": "cargo test --target wasm32-wasip1 --release" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip2" - }, - { - "run": "cargo test --target wasm32-wasip2 --release" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" + "run": "npm ci" }, { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + "run": "npx tsc" }, { - "run": "npm ci" + "run": "npm test" }, { - "run": "npm t" + "run": "node --test" }, { - "run": "npm run fst" + "run": "npm run cov" }, { "run": "tsgo" @@ -520,25 +293,6 @@ "macos-arm": { "runs-on": "macos-26", "steps": [ - { - "uses": "dtolnay/rust-toolchain@1.95.0", - "with": { - "components": "rustfmt,clippy", - "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads" - } - }, - { - "uses": "bytecodealliance/actions/wasmtime/setup@v1", - "with": { - "version": "45.0.0" - } - }, - { - "uses": "wasmerio/setup-wasmer@v3.1", - "with": { - "version": "v7.1.0" - } - }, { "uses": "actions/setup-node@v6", "with": { @@ -546,7 +300,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" }, { "uses": "denoland/setup-deno@v2", @@ -564,73 +318,19 @@ "uses": "actions/checkout@v6" }, { - "run": "cargo fmt -- --check" - }, - { - "run": "cargo clippy -- -D warnings" - }, - { - "run": "cargo test" - }, - { - "run": "cargo test --release" - }, - { - "run": "cargo test --target wasm32-wasip1" - }, - { - "run": "cargo test --target wasm32-wasip1 --release" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip2" - }, - { - "run": "cargo test --target wasm32-wasip2 --release" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --release" + "run": "npm ci" }, { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" + "run": "npx tsc" }, { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + "run": "npm test" }, { - "run": "npm ci" + "run": "node --test" }, { - "run": "npm t" - }, - { - "run": "npm run fst" + "run": "npm run cov" }, { "run": "tsgo" @@ -688,25 +388,6 @@ "windows-intel": { "runs-on": "windows-2025", "steps": [ - { - "uses": "dtolnay/rust-toolchain@1.95.0", - "with": { - "components": "rustfmt,clippy", - "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads,i686-pc-windows-msvc" - } - }, - { - "uses": "bytecodealliance/actions/wasmtime/setup@v1", - "with": { - "version": "45.0.0" - } - }, - { - "uses": "wasmerio/setup-wasmer@v3.1", - "with": { - "version": "v7.1.0" - } - }, { "uses": "actions/setup-node@v6", "with": { @@ -714,7 +395,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" }, { "uses": "denoland/setup-deno@v2", @@ -732,79 +413,19 @@ "uses": "actions/checkout@v6" }, { - "run": "cargo fmt -- --check" - }, - { - "run": "cargo clippy -- -D warnings" - }, - { - "run": "cargo test" - }, - { - "run": "cargo test --release" - }, - { - "run": "cargo test --target wasm32-wasip1" - }, - { - "run": "cargo test --target wasm32-wasip1 --release" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip2" - }, - { - "run": "cargo test --target wasm32-wasip2 --release" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + "run": "npm ci" }, { - "run": "cargo test --target i686-pc-windows-msvc" + "run": "npx tsc" }, { - "run": "cargo test --target i686-pc-windows-msvc --release" + "run": "npm test" }, { - "run": "npm ci" + "run": "node --test" }, { - "run": "npm t" - }, - { - "run": "npm run fst" + "run": "npm run cov" }, { "run": "tsgo" @@ -862,25 +483,6 @@ "windows-arm": { "runs-on": "windows-11-arm", "steps": [ - { - "uses": "dtolnay/rust-toolchain@1.95.0", - "with": { - "components": "rustfmt,clippy", - "targets": "wasm32-wasip1,wasm32-wasip2,wasm32-unknown-unknown,wasm32-wasip1-threads" - } - }, - { - "uses": "bytecodealliance/actions/wasmtime/setup@v1", - "with": { - "version": "45.0.0" - } - }, - { - "uses": "wasmerio/setup-wasmer@v3.1", - "with": { - "version": "v7.1.0" - } - }, { "uses": "actions/setup-node@v6", "with": { @@ -888,7 +490,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260604.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" }, { "uses": "denoland/setup-deno@v2", @@ -903,73 +505,19 @@ "uses": "actions/checkout@v6" }, { - "run": "cargo fmt -- --check" - }, - { - "run": "cargo clippy -- -D warnings" - }, - { - "run": "cargo test" - }, - { - "run": "cargo test --release" - }, - { - "run": "cargo test --target wasm32-wasip1" - }, - { - "run": "cargo test --target wasm32-wasip1 --release" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip1 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip2" - }, - { - "run": "cargo test --target wasm32-wasip2 --release" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-wasip2 --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --release" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml" - }, - { - "run": "cargo test --target wasm32-unknown-unknown --config .cargo/config.wasmer.toml --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --release" - }, - { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml" + "run": "npm ci" }, { - "run": "cargo test --target wasm32-wasip1-threads --config .cargo/config.wasmer.toml --release" + "run": "npx tsc" }, { - "run": "npm ci" + "run": "npm test" }, { - "run": "npm t" + "run": "node --test" }, { - "run": "npm run fst" + "run": "npm run cov" }, { "run": "tsgo" @@ -1040,10 +588,16 @@ "run": "npm ci" }, { - "run": "npm t" + "run": "npx tsc" + }, + { + "run": "npm test" + }, + { + "run": "node --test" }, { - "run": "npm run fst" + "run": "npm run cov" } ] }, diff --git a/package-lock.json b/package-lock.json index ba51c89..3a7511f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,16 +9,16 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "functionalscript": "^0.25.0" + "functionalscript": "^0.26.0" }, "devDependencies": { "typescript": "^6.0.3" } }, "node_modules/functionalscript": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.25.0.tgz", - "integrity": "sha512-ZvVfP7a2yyF5DK2fGwSkGoedB+4kdhqlwdno6NLapUleRTV2FkN+++9YeggDiGzvQuNMC6KotOhJsiX1hzWixA==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.26.0.tgz", + "integrity": "sha512-JAS+yUdm/HG5Kq9W3sQSOEQ8AYHpiXy3N0uFUwYGc4b73yiio91f7z34znK7c7EVsMy0QjHvKTPjb0IvSbA/bw==", "license": "MIT", "bin": { "fjs": "fs/fjs/module.js" diff --git a/package.json b/package.json index cbc6d5c..1b8aa62 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,11 @@ "scripts": { "test": "tsc && fjs t", "start": "fjs r ./server.f.ts", - "ci-update": "fjs r ./node_modules/functionalscript/fs/ci/module.f.js", + "update": "fjs i", "fst": "fjs t" }, "dependencies": { - "functionalscript": "^0.25.0" + "functionalscript": "^0.26.0" }, "devDependencies": { "typescript": "^6.0.3" From 17ec1c6095b7e079f0f06aa8f39ddb8c60e12eb5 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 07:41:08 -0700 Subject: [PATCH 08/17] cov --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1b8aa62..e70b9c2 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "test": "tsc && fjs t", "start": "fjs r ./server.f.ts", "update": "fjs i", - "fst": "fjs t" + "cov": "node --test --experimental-test-coverage --test-coverage-include=**/server.f.ts" }, "dependencies": { "functionalscript": "^0.26.0" From b11c758b40e21efa6d96979e1fa7d21e4506ed35 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 07:47:47 -0700 Subject: [PATCH 09/17] all.test.ts --- all.test.ts | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 all.test.ts diff --git a/all.test.ts b/all.test.ts new file mode 100644 index 0000000..3a4a9df --- /dev/null +++ b/all.test.ts @@ -0,0 +1 @@ +import 'functionalscript/fs/emergent_testing/all.test.js' diff --git a/package.json b/package.json index e70b9c2..d6fe0bf 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "test": "tsc && fjs t", "start": "fjs r ./server.f.ts", "update": "fjs i", - "cov": "node --test --experimental-test-coverage --test-coverage-include=**/server.f.ts" + "cov": "node --test --experimental-test-coverage --test-coverage-include=**/*.f.ts" }, "dependencies": { "functionalscript": "^0.26.0" From ab7af9627790e7aa71ae3aec8ad9e968f16111e6 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 09:46:47 -0700 Subject: [PATCH 10/17] ok --- .github/workflows/ci.yml | 114 +++++---------------------------------- package-lock.json | 8 +-- package.json | 2 +- 3 files changed, 17 insertions(+), 107 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 71115ff..9bb8e6a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260606.1" }, { "uses": "denoland/setup-deno@v2", @@ -57,13 +57,7 @@ "run": "npm install -g ./*.tgz" }, { - "run": "fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "fjs t" - }, - { - "run": "npm uninstall functionalscript -g" + "run": "npm uninstall file-server-example -g" }, { "run": "git reset --hard HEAD && git clean -fdx" @@ -74,12 +68,6 @@ { "run": "deno task test" }, - { - "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "deno task fjs t" - }, { "run": "deno publish --dry-run --allow-slow-types" }, @@ -92,9 +80,6 @@ { "run": "bun test --timeout 20000" }, - { - "run": "bun ./fs/fjs/module.ts t" - }, { "run": "git reset --hard HEAD && git clean -fdx" } @@ -110,7 +95,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260606.1" }, { "uses": "denoland/setup-deno@v2", @@ -152,13 +137,7 @@ "run": "npm install -g ./*.tgz" }, { - "run": "fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "fjs t" - }, - { - "run": "npm uninstall functionalscript -g" + "run": "npm uninstall file-server-example -g" }, { "run": "git reset --hard HEAD && git clean -fdx" @@ -169,12 +148,6 @@ { "run": "deno task test" }, - { - "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "deno task fjs t" - }, { "run": "deno publish --dry-run --allow-slow-types" }, @@ -187,9 +160,6 @@ { "run": "bun test --timeout 20000" }, - { - "run": "bun ./fs/fjs/module.ts t" - }, { "run": "git reset --hard HEAD && git clean -fdx" } @@ -205,7 +175,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260606.1" }, { "uses": "denoland/setup-deno@v2", @@ -247,13 +217,7 @@ "run": "npm install -g ./*.tgz" }, { - "run": "fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "fjs t" - }, - { - "run": "npm uninstall functionalscript -g" + "run": "npm uninstall file-server-example -g" }, { "run": "git reset --hard HEAD && git clean -fdx" @@ -264,12 +228,6 @@ { "run": "deno task test" }, - { - "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "deno task fjs t" - }, { "run": "deno publish --dry-run --allow-slow-types" }, @@ -282,9 +240,6 @@ { "run": "bun test --timeout 20000" }, - { - "run": "bun ./fs/fjs/module.ts t" - }, { "run": "git reset --hard HEAD && git clean -fdx" } @@ -300,7 +255,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260606.1" }, { "uses": "denoland/setup-deno@v2", @@ -342,13 +297,7 @@ "run": "npm install -g ./*.tgz" }, { - "run": "fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "fjs t" - }, - { - "run": "npm uninstall functionalscript -g" + "run": "npm uninstall file-server-example -g" }, { "run": "git reset --hard HEAD && git clean -fdx" @@ -359,12 +308,6 @@ { "run": "deno task test" }, - { - "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "deno task fjs t" - }, { "run": "deno publish --dry-run --allow-slow-types" }, @@ -377,9 +320,6 @@ { "run": "bun test --timeout 20000" }, - { - "run": "bun ./fs/fjs/module.ts t" - }, { "run": "git reset --hard HEAD && git clean -fdx" } @@ -395,7 +335,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260606.1" }, { "uses": "denoland/setup-deno@v2", @@ -437,13 +377,7 @@ "run": "npm install -g (Get-ChildItem *.tgz).FullName" }, { - "run": "fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "fjs t" - }, - { - "run": "npm uninstall functionalscript -g" + "run": "npm uninstall file-server-example -g" }, { "run": "git reset --hard HEAD && git clean -fdx" @@ -454,12 +388,6 @@ { "run": "deno task test" }, - { - "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "deno task fjs t" - }, { "run": "deno publish --dry-run --allow-slow-types" }, @@ -472,9 +400,6 @@ { "run": "bun test --timeout 20000" }, - { - "run": "bun ./fs/fjs/module.ts t" - }, { "run": "git reset --hard HEAD && git clean -fdx" } @@ -490,7 +415,7 @@ } }, { - "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260605.1" + "run": "npm install -g @typescript/native-preview@7.0.0-dev.20260606.1" }, { "uses": "denoland/setup-deno@v2", @@ -529,13 +454,7 @@ "run": "npm install -g (Get-ChildItem *.tgz).FullName" }, { - "run": "fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "fjs t" - }, - { - "run": "npm uninstall functionalscript -g" + "run": "npm uninstall file-server-example -g" }, { "run": "git reset --hard HEAD && git clean -fdx" @@ -546,12 +465,6 @@ { "run": "deno task test" }, - { - "run": "deno task fjs compile issues/demo/data/tree.json _tree.f.js" - }, - { - "run": "deno task fjs t" - }, { "run": "deno publish --dry-run --allow-slow-types" }, @@ -564,9 +477,6 @@ { "run": "bun test --timeout 20000" }, - { - "run": "bun ./fs/fjs/module.ts t" - }, { "run": "git reset --hard HEAD && git clean -fdx" } diff --git a/package-lock.json b/package-lock.json index 3a7511f..deb4b98 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,16 +9,16 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "functionalscript": "^0.26.0" + "functionalscript": "^0.27.0" }, "devDependencies": { "typescript": "^6.0.3" } }, "node_modules/functionalscript": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.26.0.tgz", - "integrity": "sha512-JAS+yUdm/HG5Kq9W3sQSOEQ8AYHpiXy3N0uFUwYGc4b73yiio91f7z34znK7c7EVsMy0QjHvKTPjb0IvSbA/bw==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.27.0.tgz", + "integrity": "sha512-pgVKgF+KipdHzZwX0HfEeFitvXpl/cpGW+RscNcdKETJf5KMjW7a0dcMWw6odMpT4tONFS8MF9LtKXWRZX7f7Q==", "license": "MIT", "bin": { "fjs": "fs/fjs/module.js" diff --git a/package.json b/package.json index d6fe0bf..07a5dd7 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "cov": "node --test --experimental-test-coverage --test-coverage-include=**/*.f.ts" }, "dependencies": { - "functionalscript": "^0.26.0" + "functionalscript": "^0.27.0" }, "devDependencies": { "typescript": "^6.0.3" From a978ba60a4a8b83ead115dbfa1ca9fb32cd8f5fd Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 20:11:52 -0700 Subject: [PATCH 11/17] update --- .github/workflows/ci.yml | 30 ++++++------------------------ deno.lock | 25 +++++++++++++++++++++++++ package-lock.json | 8 ++++---- package.json | 4 ++-- 4 files changed, 37 insertions(+), 30 deletions(-) create mode 100644 deno.lock diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9bb8e6a..44d2860 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,14 +63,11 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "deno install" + "run": "deno install --frozen" }, { "run": "deno task test" }, - { - "run": "deno publish --dry-run --allow-slow-types" - }, { "run": "git reset --hard HEAD && git clean -fdx" }, @@ -143,14 +140,11 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "deno install" + "run": "deno install --frozen" }, { "run": "deno task test" }, - { - "run": "deno publish --dry-run --allow-slow-types" - }, { "run": "git reset --hard HEAD && git clean -fdx" }, @@ -223,14 +217,11 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "deno install" + "run": "deno install --frozen" }, { "run": "deno task test" }, - { - "run": "deno publish --dry-run --allow-slow-types" - }, { "run": "git reset --hard HEAD && git clean -fdx" }, @@ -303,14 +294,11 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "deno install" + "run": "deno install --frozen" }, { "run": "deno task test" }, - { - "run": "deno publish --dry-run --allow-slow-types" - }, { "run": "git reset --hard HEAD && git clean -fdx" }, @@ -383,14 +371,11 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "deno install" + "run": "deno install --frozen" }, { "run": "deno task test" }, - { - "run": "deno publish --dry-run --allow-slow-types" - }, { "run": "git reset --hard HEAD && git clean -fdx" }, @@ -460,14 +445,11 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "deno install" + "run": "deno install --frozen" }, { "run": "deno task test" }, - { - "run": "deno publish --dry-run --allow-slow-types" - }, { "run": "git reset --hard HEAD && git clean -fdx" }, diff --git a/deno.lock b/deno.lock new file mode 100644 index 0000000..1feb638 --- /dev/null +++ b/deno.lock @@ -0,0 +1,25 @@ +{ + "version": "5", + "specifiers": { + "npm:functionalscript@0.28": "0.28.0", + "npm:typescript@^6.0.3": "6.0.3" + }, + "npm": { + "functionalscript@0.28.0": { + "integrity": "sha512-5xpG+8LaNkrZP5zbS7r69xmA5UtQBYi8EUiEbwqu2rhAXRh6aaEjPrXfrYBD5MOy5qyY8Qpk4hdrsdEdDt/7cw==", + "bin": true + }, + "typescript@6.0.3": { + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "bin": true + } + }, + "workspace": { + "packageJson": { + "dependencies": [ + "npm:functionalscript@0.28", + "npm:typescript@^6.0.3" + ] + } + } +} diff --git a/package-lock.json b/package-lock.json index deb4b98..ee66d18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,16 +9,16 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "functionalscript": "^0.27.0" + "functionalscript": "^0.28.0" }, "devDependencies": { "typescript": "^6.0.3" } }, "node_modules/functionalscript": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.27.0.tgz", - "integrity": "sha512-pgVKgF+KipdHzZwX0HfEeFitvXpl/cpGW+RscNcdKETJf5KMjW7a0dcMWw6odMpT4tONFS8MF9LtKXWRZX7f7Q==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.28.0.tgz", + "integrity": "sha512-5xpG+8LaNkrZP5zbS7r69xmA5UtQBYi8EUiEbwqu2rhAXRh6aaEjPrXfrYBD5MOy5qyY8Qpk4hdrsdEdDt/7cw==", "license": "MIT", "bin": { "fjs": "fs/fjs/module.js" diff --git a/package.json b/package.json index 07a5dd7..7125063 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,11 @@ "scripts": { "test": "tsc && fjs t", "start": "fjs r ./server.f.ts", - "update": "fjs i", + "update": "npx npm-check-updates -u && npm install && deno install && fjs i", "cov": "node --test --experimental-test-coverage --test-coverage-include=**/*.f.ts" }, "dependencies": { - "functionalscript": "^0.27.0" + "functionalscript": "^0.28.0" }, "devDependencies": { "typescript": "^6.0.3" From e69ad3878e2171501e889e3af25482e043595506 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 20:17:51 -0700 Subject: [PATCH 12/17] ok --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7125063..ff00567 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "scripts": { "test": "tsc && fjs t", "start": "fjs r ./server.f.ts", - "update": "npx npm-check-updates -u && npm install && deno install && fjs i", + "update": "npx npm-check-updates -u && npm install && deno install && bun install && fjs i", "cov": "node --test --experimental-test-coverage --test-coverage-include=**/*.f.ts" }, "dependencies": { From dffe98e1a913dd414dcdc9128c8634a5a8c48769 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 20:18:23 -0700 Subject: [PATCH 13/17] bun install --- bun.lock | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 bun.lock diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..1932faa --- /dev/null +++ b/bun.lock @@ -0,0 +1,20 @@ +{ + "lockfileVersion": 1, + "configVersion": 0, + "workspaces": { + "": { + "name": "file-server-example", + "dependencies": { + "functionalscript": "^0.28.0", + }, + "devDependencies": { + "typescript": "^6.0.3", + }, + }, + }, + "packages": { + "functionalscript": ["functionalscript@0.28.0", "", { "bin": { "fjs": "fs/fjs/module.js" } }, "sha512-5xpG+8LaNkrZP5zbS7r69xmA5UtQBYi8EUiEbwqu2rhAXRh6aaEjPrXfrYBD5MOy5qyY8Qpk4hdrsdEdDt/7cw=="], + + "typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="], + } +} From bde5ef883513aaec2ee3d733cb221a6323fe7460 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 20:34:17 -0700 Subject: [PATCH 14/17] playwright --- bun.lock | 13 +++++++-- deno.lock | 36 ++++++++++++++++++++++--- package-lock.json | 68 +++++++++++++++++++++++++++++++++++++++++++++-- package.json | 5 ++-- 4 files changed, 112 insertions(+), 10 deletions(-) diff --git a/bun.lock b/bun.lock index 1932faa..3979446 100644 --- a/bun.lock +++ b/bun.lock @@ -5,16 +5,25 @@ "": { "name": "file-server-example", "dependencies": { - "functionalscript": "^0.28.0", + "functionalscript": "0.28.0", }, "devDependencies": { - "typescript": "^6.0.3", + "@playwright/test": "1.60.0", + "typescript": "6.0.3", }, }, }, "packages": { + "@playwright/test": ["@playwright/test@1.60.0", "", { "dependencies": { "playwright": "1.60.0" }, "bin": { "playwright": "cli.js" } }, "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag=="], + + "fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], + "functionalscript": ["functionalscript@0.28.0", "", { "bin": { "fjs": "fs/fjs/module.js" } }, "sha512-5xpG+8LaNkrZP5zbS7r69xmA5UtQBYi8EUiEbwqu2rhAXRh6aaEjPrXfrYBD5MOy5qyY8Qpk4hdrsdEdDt/7cw=="], + "playwright": ["playwright@1.60.0", "", { "dependencies": { "playwright-core": "1.60.0" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA=="], + + "playwright-core": ["playwright-core@1.60.0", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA=="], + "typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="], } } diff --git a/deno.lock b/deno.lock index 1feb638..47219b2 100644 --- a/deno.lock +++ b/deno.lock @@ -1,14 +1,41 @@ { "version": "5", "specifiers": { - "npm:functionalscript@0.28": "0.28.0", - "npm:typescript@^6.0.3": "6.0.3" + "npm:@playwright/test@1.60.0": "1.60.0", + "npm:functionalscript@0.28.0": "0.28.0", + "npm:typescript@6.0.3": "6.0.3" }, "npm": { + "@playwright/test@1.60.0": { + "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", + "dependencies": [ + "playwright" + ], + "bin": true + }, + "fsevents@2.3.2": { + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "os": ["darwin"], + "scripts": true + }, "functionalscript@0.28.0": { "integrity": "sha512-5xpG+8LaNkrZP5zbS7r69xmA5UtQBYi8EUiEbwqu2rhAXRh6aaEjPrXfrYBD5MOy5qyY8Qpk4hdrsdEdDt/7cw==", "bin": true }, + "playwright-core@1.60.0": { + "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==", + "bin": true + }, + "playwright@1.60.0": { + "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==", + "dependencies": [ + "playwright-core" + ], + "optionalDependencies": [ + "fsevents" + ], + "bin": true + }, "typescript@6.0.3": { "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "bin": true @@ -17,8 +44,9 @@ "workspace": { "packageJson": { "dependencies": [ - "npm:functionalscript@0.28", - "npm:typescript@^6.0.3" + "npm:@playwright/test@1.60.0", + "npm:functionalscript@0.28.0", + "npm:typescript@6.0.3" ] } } diff --git a/package-lock.json b/package-lock.json index ee66d18..365acb6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,42 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "functionalscript": "^0.28.0" + "functionalscript": "0.28.0" }, "devDependencies": { - "typescript": "^6.0.3" + "@playwright/test": "1.60.0", + "typescript": "6.0.3" + } + }, + "node_modules/@playwright/test": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz", + "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.60.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/functionalscript": { @@ -27,6 +59,38 @@ "node": ">=24" } }, + "node_modules/playwright": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz", + "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.60.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz", + "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/typescript": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", diff --git a/package.json b/package.json index ff00567..54ec33e 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,10 @@ "cov": "node --test --experimental-test-coverage --test-coverage-include=**/*.f.ts" }, "dependencies": { - "functionalscript": "^0.28.0" + "functionalscript": "0.28.0" }, "devDependencies": { - "typescript": "^6.0.3" + "@playwright/test": "1.60.0", + "typescript": "6.0.3" } } From 59141fc67b38baeb9e4d9229e17c6b8c60e3e3e8 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 21:11:44 -0700 Subject: [PATCH 15/17] go --- proof.f.ts | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++ server.f.ts | 2 +- tsconfig.json | 5 ++-- 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 proof.f.ts diff --git a/proof.f.ts b/proof.f.ts new file mode 100644 index 0000000..f953991 --- /dev/null +++ b/proof.f.ts @@ -0,0 +1,65 @@ +import { assert, assertEq } from 'functionalscript/fs/asserts/module.f.js' +import { utf8, utf8ToString } from 'functionalscript/fs/text/module.f.js' +import { vec8 } from 'functionalscript/fs/types/bit_vec/module.f.js' +import type { IncomingMessage } from 'functionalscript/fs/effects/node/module.f.js' +import { virtual, emptyState } from 'functionalscript/fs/effects/node/virtual/module.f.js' +import { listener } from './server.f.ts' + +const request = (url: string): IncomingMessage => ({ + method: 'GET', + url, + headers: {}, + body: vec8(0n), +}) + +const runRequest = (url: string, root = emptyState.root) => + virtual({ ...emptyState, root })(listener(request(url))) + +const bodyText = (url: string, root = emptyState.root) => { + const [state, response] = runRequest(url, root) + return [state, response, utf8ToString(response.body)] as const +} + +const includes = (s: string) => (part: string) => { + assert(s.includes(part), [part, s]) +} + +export const proof = { + servesFiles: () => { + const file = utf8('body { color: green; }\n') + const [state, response] = runRequest('/main.css', { 'main.css': file }) + + assertEq(response.status, 200) + assertEq(utf8ToString(response.body), 'body { color: green; }\n') + includes(state.stdout)('reading ./main.css\n') + includes(state.stdout)('served: 23 bytes\n') + }, + ignoresQueryString: () => { + const file = utf8('ok') + const [_, response] = runRequest('/main.css?cache=bust', { 'main.css': file }) + + assertEq(response.status, 200) + assertEq(utf8ToString(response.body), 'ok') + }, + rendersDirectoryListing: () => { + const [state, response, body] = bodyText('/docs', { + docs: { + 'a.txt': utf8('A'), + nested: {}, + }, + }) + + assertEq(response.status, 200) + includes(body)('') + includes(body)('
a.txt\nnested/\n
') + includes(state.stdout)('reading ./docs\n') + includes(state.stdout)('served: ') + }, + missingPaths404: () => { + const [state, response] = runRequest('/missing') + + assertEq(response.status, 404) + assertEq(utf8ToString(response.body), '404 not found') + assertEq(state.stdout, 'reading ./missing\nserved: 13 bytes\n') + }, +} diff --git a/server.f.ts b/server.f.ts index 4ebaf21..02c0d13 100644 --- a/server.f.ts +++ b/server.f.ts @@ -16,7 +16,7 @@ import { import { htmlUtf8 } from 'functionalscript/fs/html/module.f.js' import { concat } from 'functionalscript/fs/path/module.f.js' -const listener = ({ url }: IncomingMessage) => { +export const listener = ({ url }: IncomingMessage) => { const path = url.split('?')[0] ?? '' const file = '.' + path diff --git a/tsconfig.json b/tsconfig.json index de92c5e..44fd1a8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -35,8 +35,9 @@ // Recommended Options "strict": true, "jsx": "react-jsx", - "verbatimModuleSyntax": true, - "isolatedModules": true, + "verbatimModuleSyntax": true, + "allowImportingTsExtensions": true, + "isolatedModules": true, "noUncheckedSideEffectImports": true, "moduleDetection": "force", "skipLibCheck": true, From c47e238f3a77d9775ce32a77a2fd52e017f9dfa3 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 21:49:08 -0700 Subject: [PATCH 16/17] FS: 0.29.0 --- .github/workflows/ci.yml | 12 ++++++------ bun.lock | 4 ++-- deno.lock | 8 ++++---- package-lock.json | 8 ++++---- package.json | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 44d2860..ead5241 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,7 +72,7 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "bun install" + "run": "bun install --frozen-lockfile" }, { "run": "bun test --timeout 20000" @@ -149,7 +149,7 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "bun install" + "run": "bun install --frozen-lockfile" }, { "run": "bun test --timeout 20000" @@ -226,7 +226,7 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "bun install" + "run": "bun install --frozen-lockfile" }, { "run": "bun test --timeout 20000" @@ -303,7 +303,7 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "bun install" + "run": "bun install --frozen-lockfile" }, { "run": "bun test --timeout 20000" @@ -380,7 +380,7 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "bun install" + "run": "bun install --frozen-lockfile" }, { "run": "bun test --timeout 20000" @@ -454,7 +454,7 @@ "run": "git reset --hard HEAD && git clean -fdx" }, { - "run": "bun install" + "run": "bun install --frozen-lockfile" }, { "run": "bun test --timeout 20000" diff --git a/bun.lock b/bun.lock index 3979446..1a61f69 100644 --- a/bun.lock +++ b/bun.lock @@ -5,7 +5,7 @@ "": { "name": "file-server-example", "dependencies": { - "functionalscript": "0.28.0", + "functionalscript": "0.29.0", }, "devDependencies": { "@playwright/test": "1.60.0", @@ -18,7 +18,7 @@ "fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], - "functionalscript": ["functionalscript@0.28.0", "", { "bin": { "fjs": "fs/fjs/module.js" } }, "sha512-5xpG+8LaNkrZP5zbS7r69xmA5UtQBYi8EUiEbwqu2rhAXRh6aaEjPrXfrYBD5MOy5qyY8Qpk4hdrsdEdDt/7cw=="], + "functionalscript": ["functionalscript@0.29.0", "", { "bin": { "fjs": "fs/fjs/module.js" } }, "sha512-aOeHI0tAdHBa27bW89nS067dlCU52cVhiSodxtfc4CH+KdlLgae6tuHZY6XuhR5E8e1hLVvhbxOYRrMe9CuXTA=="], "playwright": ["playwright@1.60.0", "", { "dependencies": { "playwright-core": "1.60.0" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA=="], diff --git a/deno.lock b/deno.lock index 47219b2..3639e47 100644 --- a/deno.lock +++ b/deno.lock @@ -2,7 +2,7 @@ "version": "5", "specifiers": { "npm:@playwright/test@1.60.0": "1.60.0", - "npm:functionalscript@0.28.0": "0.28.0", + "npm:functionalscript@0.29.0": "0.29.0", "npm:typescript@6.0.3": "6.0.3" }, "npm": { @@ -18,8 +18,8 @@ "os": ["darwin"], "scripts": true }, - "functionalscript@0.28.0": { - "integrity": "sha512-5xpG+8LaNkrZP5zbS7r69xmA5UtQBYi8EUiEbwqu2rhAXRh6aaEjPrXfrYBD5MOy5qyY8Qpk4hdrsdEdDt/7cw==", + "functionalscript@0.29.0": { + "integrity": "sha512-aOeHI0tAdHBa27bW89nS067dlCU52cVhiSodxtfc4CH+KdlLgae6tuHZY6XuhR5E8e1hLVvhbxOYRrMe9CuXTA==", "bin": true }, "playwright-core@1.60.0": { @@ -45,7 +45,7 @@ "packageJson": { "dependencies": [ "npm:@playwright/test@1.60.0", - "npm:functionalscript@0.28.0", + "npm:functionalscript@0.29.0", "npm:typescript@6.0.3" ] } diff --git a/package-lock.json b/package-lock.json index 365acb6..cd305b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "functionalscript": "0.28.0" + "functionalscript": "0.29.0" }, "devDependencies": { "@playwright/test": "1.60.0", @@ -48,9 +48,9 @@ } }, "node_modules/functionalscript": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.28.0.tgz", - "integrity": "sha512-5xpG+8LaNkrZP5zbS7r69xmA5UtQBYi8EUiEbwqu2rhAXRh6aaEjPrXfrYBD5MOy5qyY8Qpk4hdrsdEdDt/7cw==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/functionalscript/-/functionalscript-0.29.0.tgz", + "integrity": "sha512-aOeHI0tAdHBa27bW89nS067dlCU52cVhiSodxtfc4CH+KdlLgae6tuHZY6XuhR5E8e1hLVvhbxOYRrMe9CuXTA==", "license": "MIT", "bin": { "fjs": "fs/fjs/module.js" diff --git a/package.json b/package.json index 54ec33e..dcdddfa 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "cov": "node --test --experimental-test-coverage --test-coverage-include=**/*.f.ts" }, "dependencies": { - "functionalscript": "0.28.0" + "functionalscript": "0.29.0" }, "devDependencies": { "@playwright/test": "1.60.0", From 405d7873202a273d976bbf12b939f2c325e30461 Mon Sep 17 00:00:00 2001 From: Sergey Shandar Date: Sun, 7 Jun 2026 23:57:17 -0700 Subject: [PATCH 17/17] No need for the node.js.yml --- .github/workflows/node.js.yml | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 .github/workflows/node.js.yml diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml deleted file mode 100644 index b3e6ca9..0000000 --- a/.github/workflows/node.js.yml +++ /dev/null @@ -1,30 +0,0 @@ -# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs - -name: Node.js CI - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - build: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [24.x, 25.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v4 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm ci - - run: npm test