diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 92adfbf..c6ea761 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,7 +1,7 @@ name: test on: push jobs: - nodejs: + node: name: Node.js v${{ matrix.node-version }} strategy: matrix: @@ -18,3 +18,25 @@ jobs: cache: npm - run: npm ci - run: npm test + deno: + name: Deno + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - uses: denoland/setup-deno@v1 + with: + deno-version: latest + - run: deno task test + working-directory: runtime/deno + bun: + name: Bun + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + - run: bun test + working-directory: runtime/bun diff --git a/README.md b/README.md index c6020e0..1290d86 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,9 @@ yarn add websri # pnpm pnpm install websri +# deno +deno add npm:websri + # bun bun install websri ``` diff --git a/runtime/bun/Integrity-metadata.test.ts b/runtime/bun/Integrity-metadata.test.ts new file mode 100644 index 0000000..2016569 --- /dev/null +++ b/runtime/bun/Integrity-metadata.test.ts @@ -0,0 +1,12 @@ +import { expect, test } from "bun:test"; +import { createIntegrityMetadata } from "../../src/index.ts"; + +test("createIntegrityMetadata()", async () => { + const res = new Response("Hello, world!"); + const data = await res.arrayBuffer(); + const integrityMetadata = await createIntegrityMetadata("sha256", data); + + expect(integrityMetadata.toString()).toBe( + "sha256-MV9b23bQeMQ7isAGTkoBZGErH853yGk0W/yUx1iU7dM=", + ); +}); diff --git a/runtime/bun/bun.lockb b/runtime/bun/bun.lockb new file mode 100755 index 0000000..4a82f7c Binary files /dev/null and b/runtime/bun/bun.lockb differ diff --git a/runtime/bun/package.json b/runtime/bun/package.json new file mode 100644 index 0000000..e13219c --- /dev/null +++ b/runtime/bun/package.json @@ -0,0 +1,8 @@ +{ + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } +} diff --git a/runtime/bun/tsconfig.json b/runtime/bun/tsconfig.json new file mode 100644 index 0000000..238655f --- /dev/null +++ b/runtime/bun/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +} diff --git a/runtime/deno/deno.json b/runtime/deno/deno.json new file mode 100644 index 0000000..b7209d3 --- /dev/null +++ b/runtime/deno/deno.json @@ -0,0 +1,8 @@ +{ + "tasks": { + "test": "deno test --no-check" + }, + "imports": { + "@std/assert": "jsr:@std/assert@^1.0.3" + } +} diff --git a/runtime/deno/deno.lock b/runtime/deno/deno.lock new file mode 100644 index 0000000..833dace --- /dev/null +++ b/runtime/deno/deno.lock @@ -0,0 +1,26 @@ +{ + "version": "3", + "packages": { + "specifiers": { + "jsr:@std/assert@^1.0.3": "jsr:@std/assert@1.0.3", + "jsr:@std/internal@^1.0.2": "jsr:@std/internal@1.0.2" + }, + "jsr": { + "@std/assert@1.0.3": { + "integrity": "b0d03ce1ced880df67132eea140623010d415848df66f6aa5df76507ca7c26d8", + "dependencies": [ + "jsr:@std/internal@^1.0.2" + ] + }, + "@std/internal@1.0.2": { + "integrity": "f4cabe2021352e8bfc24e6569700df87bf070914fc38d4b23eddd20108ac4495" + } + } + }, + "remote": {}, + "workspace": { + "dependencies": [ + "jsr:@std/assert@^1.0.3" + ] + } +} diff --git a/runtime/deno/integrity-metadata.test.ts b/runtime/deno/integrity-metadata.test.ts new file mode 100644 index 0000000..0b06be2 --- /dev/null +++ b/runtime/deno/integrity-metadata.test.ts @@ -0,0 +1,13 @@ +import { assertEquals } from "@std/assert"; +import { createIntegrityMetadata } from "../../src/index.ts"; + +Deno.test("createIntegrityMetadata()", async () => { + const res = new Response("Hello, world!"); + const data = await res.arrayBuffer(); + const integrityMetadata = await createIntegrityMetadata("sha256", data); + + assertEquals( + integrityMetadata.toString(), + "sha256-MV9b23bQeMQ7isAGTkoBZGErH853yGk0W/yUx1iU7dM=", + ); +});