From 36e5684689178451482fdd99681d012b672be1a2 Mon Sep 17 00:00:00 2001 From: Nishant Arora <1895906+whizzzkid@users.noreply.github.com> Date: Wed, 2 Aug 2023 18:30:19 -0600 Subject: [PATCH 01/25] feat(runtime): :heavy_plus_sign: Adding bun runtime Signed-off-by: Nishant Arora <1895906+whizzzkid@users.noreply.github.com> --- .github/workflows/ci.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d8b57265..2237fe08 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,6 +19,7 @@ jobs: strategy: fail-fast: false matrix: + runtimes: [node, bun] project: - helia-101 - helia-cjs @@ -36,9 +37,14 @@ jobs: working-directory: examples/${{ matrix.project }} steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 + - if: matrix.runtimes == 'node' + uses: actions/setup-node@v3 with: node-version: lts/* + - if: matrix.runtimes == 'bun' + uses: oven-sh/setup-bun@v1 + with: + bun-version: latest - name: Install dependencies run: npm install - name: Install Playwright From c010fd5d4e96f591688e1d9469a19969f07a3f8d Mon Sep 17 00:00:00 2001 From: Nishant Arora <1895906+whizzzkid@users.noreply.github.com> Date: Wed, 2 Aug 2023 18:47:30 -0600 Subject: [PATCH 02/25] fix(runtime): Fixing test job titles Signed-off-by: Nishant Arora <1895906+whizzzkid@users.noreply.github.com> --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2237fe08..8370a3d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,11 +15,11 @@ concurrency: jobs: examples: runs-on: ubuntu-latest - name: Test ${{ matrix.project }} + name: Test ${{ matrix.project }} on {{ matrix.runtime }} strategy: fail-fast: false matrix: - runtimes: [node, bun] + runtime: [node, bun] project: - helia-101 - helia-cjs @@ -37,11 +37,11 @@ jobs: working-directory: examples/${{ matrix.project }} steps: - uses: actions/checkout@v3 - - if: matrix.runtimes == 'node' + - if: matrix.runtime == 'node' uses: actions/setup-node@v3 with: node-version: lts/* - - if: matrix.runtimes == 'bun' + - if: matrix.runtime == 'bun' uses: oven-sh/setup-bun@v1 with: bun-version: latest From dff969c63e22849ea6a3e5fc14466509af41c0c2 Mon Sep 17 00:00:00 2001 From: Nishant Arora <1895906+whizzzkid@users.noreply.github.com> Date: Wed, 2 Aug 2023 18:48:24 -0600 Subject: [PATCH 03/25] fix(runtime): :pencil2: missed $ Signed-off-by: Nishant Arora <1895906+whizzzkid@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8370a3d8..a497f284 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ concurrency: jobs: examples: runs-on: ubuntu-latest - name: Test ${{ matrix.project }} on {{ matrix.runtime }} + name: Test ${{ matrix.project }} on ${{ matrix.runtime }} strategy: fail-fast: false matrix: From 089df1f937bdf71699c272d6705def8e08072def Mon Sep 17 00:00:00 2001 From: Nishant Arora <1895906+whizzzkid@users.noreply.github.com> Date: Wed, 2 Aug 2023 19:06:42 -0600 Subject: [PATCH 04/25] fix(runtime): Adding bun specific commands. Signed-off-by: Nishant Arora <1895906+whizzzkid@users.noreply.github.com> --- .github/workflows/ci.yml | 20 +++++++++++++++++--- examples/helia-101/bun.lockb | Bin 0 -> 115525 bytes 2 files changed, 17 insertions(+), 3 deletions(-) create mode 100755 examples/helia-101/bun.lockb diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a497f284..079fa7e4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,14 +45,28 @@ jobs: uses: oven-sh/setup-bun@v1 with: bun-version: latest - - name: Install dependencies + - if: matrix.runtime == 'node' + name: Install dependencies run: npm install - - name: Install Playwright + - if: matrix.runtime == 'bun' + name: Install dependencies + run: bun install + - if: matrix.runtime == 'node' + name: Install Playwright run: npx -y playwright install --with-deps - - name: Run tests + - if: matrix.runtime == 'bun' + name: Install Playwright + run: bun add --global playwright --with-deps && playwright + - if: matrix.runtime == 'node' + name: Run tests run: npm run test env: CI: true + - if: matrix.runtime == 'bun' + name: Run tests + run: bun run test + env: + CI: true monorepo: runs-on: ubuntu-latest diff --git a/examples/helia-101/bun.lockb b/examples/helia-101/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..dc7fa182daf2bc4e4dc816be5b70496546510b00 GIT binary patch literal 115525 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 Date: Wed, 2 Aug 2023 19:15:48 -0600 Subject: [PATCH 05/25] fix: playwright Signed-off-by: Nishant Arora <1895906+whizzzkid@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 079fa7e4..bb735613 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,7 +56,7 @@ jobs: run: npx -y playwright install --with-deps - if: matrix.runtime == 'bun' name: Install Playwright - run: bun add --global playwright --with-deps && playwright + run: bun add --global playwright && playwright install --with-deps - if: matrix.runtime == 'node' name: Run tests run: npm run test From 374023e0f0ebd309c433416fe59200c958be0cba Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 8 Feb 2024 15:23:47 +0100 Subject: [PATCH 06/25] chore: just start with 101 --- .github/workflows/ci.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1d0f1099..3012764e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,6 +73,31 @@ jobs: env: CI: true + bun: + runs-on: ubuntu-latest + name: Test ${{ matrix.project }} on bun + strategy: + fail-fast: false + matrix: + project: + - helia-101 + defaults: + run: + working-directory: examples/${{ matrix.project }} + steps: + - uses: actions/checkout@v3 + - uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + - name: Install dependencies + run: bun install + - name: Install Playwright + run: bun add --global playwright && playwright install --with-deps + - name: Run tests + run: bun run test + env: + CI: true + monorepo: runs-on: ubuntu-latest name: Test monorepo From 78ef20a5f8f71990ff4e434b91a6f7b538da3248 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 8 Feb 2024 15:28:23 +0100 Subject: [PATCH 07/25] chore: just node for the others --- .github/workflows/ci.yml | 30 +++++------------------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ef5743d4..08430586 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,11 +15,10 @@ concurrency: jobs: examples: runs-on: ubuntu-latest - name: Test ${{ matrix.project }} on ${{ matrix.runtime }} + name: Test ${{ matrix.project }} on Node.js strategy: fail-fast: false matrix: - runtime: [node, bun] project: - helia-101 - helia-cjs @@ -43,36 +42,17 @@ jobs: working-directory: examples/${{ matrix.project }} steps: - uses: actions/checkout@v3 - - if: matrix.runtime == 'node' - uses: actions/setup-node@v3 + - uses: actions/setup-node@v3 with: node-version: lts/* - - if: matrix.runtime == 'bun' - uses: oven-sh/setup-bun@v1 - with: - bun-version: latest - - if: matrix.runtime == 'node' - name: Install dependencies + - name: Install dependencies run: npm install - - if: matrix.runtime == 'bun' - name: Install dependencies - run: bun install - - if: matrix.runtime == 'node' - name: Install Playwright + - name: Install Playwright run: npx -y playwright install --with-deps - - if: matrix.runtime == 'bun' - name: Install Playwright - run: bun add --global playwright && playwright install --with-deps - - if: matrix.runtime == 'node' - name: Run tests + - name: Run tests run: npm run test env: CI: true - - if: matrix.runtime == 'bun' - name: Run tests - run: bun run test - env: - CI: true bun: runs-on: ubuntu-latest From 995df4719321d90d88d687d4aec94b91996cd513 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 8 Feb 2024 15:29:48 +0100 Subject: [PATCH 08/25] chore: lock third party action version --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 08430586..7c40c026 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,7 +67,7 @@ jobs: working-directory: examples/${{ matrix.project }} steps: - uses: actions/checkout@v3 - - uses: oven-sh/setup-bun@v1 + - uses: oven-sh/setup-bun@9b21598af8d4dfc302e5a30250007de0fda92acc # v1.1.1 with: bun-version: latest - name: Install dependencies From 483e0740781dea5bd015d950cd9652322b951839 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 8 Feb 2024 15:38:52 +0100 Subject: [PATCH 09/25] chore: remove lockfile --- examples/helia-101/bun.lockb | Bin 115525 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 examples/helia-101/bun.lockb diff --git a/examples/helia-101/bun.lockb b/examples/helia-101/bun.lockb deleted file mode 100755 index dc7fa182daf2bc4e4dc816be5b70496546510b00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115525 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 Date: Thu, 8 Feb 2024 15:39:10 +0100 Subject: [PATCH 10/25] chore: remove lockfile --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 60a1e1f6..a59eff00 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ playwright-report .parcel-cache .envrc .tool-versions +bun.lockb From 5b3daf3f18fe5b0fefdc000af98fc57909dec961 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 8 Feb 2024 16:32:26 +0100 Subject: [PATCH 11/25] chore: override node path --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7c40c026..004f7dea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,6 +78,7 @@ jobs: run: bun run test env: CI: true + NODE_EXEC: bun monorepo: runs-on: ubuntu-latest From 1bc812e95725459226712bb8dc47f6145ba7dc34 Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Tue, 23 Apr 2024 14:14:00 +0100 Subject: [PATCH 12/25] chore: update setup-bun action --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 414a0144..637737fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,7 @@ jobs: working-directory: examples/${{ matrix.project }} steps: - uses: actions/checkout@v3 - - uses: oven-sh/setup-bun@9b21598af8d4dfc302e5a30250007de0fda92acc # v1.1.1 + - uses: oven-sh/setup-bun@8f24390df009a496891208e5e36b8a1de1f45135 # v1.2.1 with: bun-version: latest - name: Install dependencies From c64041d8e0fccc4e2f3e4e1aa3c622e36531f9e0 Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Wed, 24 Apr 2024 11:47:21 -0700 Subject: [PATCH 13/25] deps: test-ipfs-example@1.3.0 --- examples/helia-101/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/helia-101/package.json b/examples/helia-101/package.json index 39ed12d4..7291cffe 100644 --- a/examples/helia-101/package.json +++ b/examples/helia-101/package.json @@ -24,6 +24,6 @@ "libp2p": "^1.2.0" }, "devDependencies": { - "test-ipfs-example": "^1.0.0" + "test-ipfs-example": "^1.3.0" } } From 4b6c04697ccbb374937e010d655f6b490ff19256 Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Wed, 24 Apr 2024 12:12:27 -0700 Subject: [PATCH 14/25] chore: bun trust protobufjs & node-datachannel --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 637737fa..0e57c1b8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,7 +72,7 @@ jobs: with: bun-version: latest - name: Install dependencies - run: bun install + run: bun pm trust protobufjs node-datachannel && bun install - name: Install Playwright run: bun add --global playwright && playwright install --with-deps - name: Run tests From 2a9ed6dd77e60cfde97d2143ec5299c489dbdd1c Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Wed, 24 Apr 2024 12:14:07 -0700 Subject: [PATCH 15/25] chore: bun install, then trust, then install --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e57c1b8..62be1ce3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,7 +72,7 @@ jobs: with: bun-version: latest - name: Install dependencies - run: bun pm trust protobufjs node-datachannel && bun install + run: bun install && bun pm trust protobufjs node-datachannel && bun install - name: Install Playwright run: bun add --global playwright && playwright install --with-deps - name: Run tests From ccc2da379fe2d781dfa3154cfa2879cd5a9238aa Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:53:22 -0500 Subject: [PATCH 16/25] chore: update deps --- .github/workflows/ci.yml | 2 +- examples/helia-101/package.json | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 62be1ce3..0634b70c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,7 @@ jobs: working-directory: examples/${{ matrix.project }} steps: - uses: actions/checkout@v3 - - uses: oven-sh/setup-bun@8f24390df009a496891208e5e36b8a1de1f45135 # v1.2.1 + - uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: bun-version: latest - name: Install dependencies diff --git a/examples/helia-101/package.json b/examples/helia-101/package.json index 25d35b03..4d2b479a 100644 --- a/examples/helia-101/package.json +++ b/examples/helia-101/package.json @@ -14,17 +14,17 @@ "dependencies": { "@chainsafe/libp2p-noise": "^16.0.0", "@chainsafe/libp2p-yamux": "^7.0.1", - "@helia/http": "^2.0.0", + "@helia/http": "^2.0.1", "@helia/unixfs": "^4.0.0", - "@libp2p/bootstrap": "^11.0.7", - "@libp2p/identify": "^3.0.7", - "@libp2p/tcp": "^10.0.8", + "@libp2p/bootstrap": "^11.0.9", + "@libp2p/identify": "^3.0.9", + "@libp2p/tcp": "^10.0.10", "blockstore-core": "^5.0.2", "datastore-core": "^10.0.2", - "helia": "^5.0.0", - "libp2p": "^2.1.6" + "helia": "^5.1.0", + "libp2p": "^2.1.10" }, "devDependencies": { - "test-ipfs-example": "^1.3.0" + "test-ipfs-example": "^1.3.3" } } From 1be6c4759c6718674fc2811a9448ef22aae1f74c Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:04:29 -0500 Subject: [PATCH 17/25] chore: simple polyfill for now --- examples/helia-101/test/index.spec.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/examples/helia-101/test/index.spec.js b/examples/helia-101/test/index.spec.js index 4d337dbb..dedde09d 100644 --- a/examples/helia-101/test/index.spec.js +++ b/examples/helia-101/test/index.spec.js @@ -2,6 +2,24 @@ import path from 'path' import { fileURLToPath } from 'url' import { waitForOutput } from 'test-ipfs-example/node' +/** + * @see https://bun.sh/guides/util/detect-bun + */ +if (process.versions.bun) { + /** + * Polyfill required for bun for now + * + * @see https://github.com/ipfs-examples/helia-examples/pull/101#issuecomment-2436128883 + */ + globalThis.CustomEvent = globalThis.CustomEvent ?? class CustomEventPolyfill extends Event { + constructor (message, data) { + super(message, data) + // @ts-expect-error could be undefined + this.detail = data?.detail + } + } +} + const __dirname = path.dirname(fileURLToPath(import.meta.url)) await waitForOutput('Added file contents: Hello World 101', 'node', [path.resolve(__dirname, '../101-basics.js')]) From d7d973cdc8f4f5fbf28d103de55887699ff24448 Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:11:21 -0500 Subject: [PATCH 18/25] chore: debugging --- examples/helia-101/test/index.spec.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/helia-101/test/index.spec.js b/examples/helia-101/test/index.spec.js index dedde09d..db210097 100644 --- a/examples/helia-101/test/index.spec.js +++ b/examples/helia-101/test/index.spec.js @@ -6,6 +6,8 @@ import { waitForOutput } from 'test-ipfs-example/node' * @see https://bun.sh/guides/util/detect-bun */ if (process.versions.bun) { + // eslint-disable-next-line no-console + console.log('Running tests with bun') /** * Polyfill required for bun for now * From a65780f51baf54a7a58704d069b6eb629ed7f483 Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:17:28 -0500 Subject: [PATCH 19/25] chore: debugging --- .github/workflows/ci.yml | 3 +++ examples/helia-101/test/index.spec.js | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0634b70c..3e7069f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,6 +68,9 @@ jobs: working-directory: examples/${{ matrix.project }} steps: - uses: actions/checkout@v3 + - uses: actions/setup-node@v4 + with: + node-version: lts/* - uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: bun-version: latest diff --git a/examples/helia-101/test/index.spec.js b/examples/helia-101/test/index.spec.js index db210097..945cc381 100644 --- a/examples/helia-101/test/index.spec.js +++ b/examples/helia-101/test/index.spec.js @@ -1,5 +1,5 @@ -import path from 'path' -import { fileURLToPath } from 'url' +import path from 'node:path' +import { fileURLToPath } from 'node:url' import { waitForOutput } from 'test-ipfs-example/node' /** From 402c6c9445937080d4469e98e2a3f0510c6850d7 Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:19:30 -0500 Subject: [PATCH 20/25] chore: bun test passing now, remove polyfill --- examples/helia-101/test/index.spec.js | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/examples/helia-101/test/index.spec.js b/examples/helia-101/test/index.spec.js index 945cc381..42dbf4dc 100644 --- a/examples/helia-101/test/index.spec.js +++ b/examples/helia-101/test/index.spec.js @@ -2,26 +2,6 @@ import path from 'node:path' import { fileURLToPath } from 'node:url' import { waitForOutput } from 'test-ipfs-example/node' -/** - * @see https://bun.sh/guides/util/detect-bun - */ -if (process.versions.bun) { - // eslint-disable-next-line no-console - console.log('Running tests with bun') - /** - * Polyfill required for bun for now - * - * @see https://github.com/ipfs-examples/helia-examples/pull/101#issuecomment-2436128883 - */ - globalThis.CustomEvent = globalThis.CustomEvent ?? class CustomEventPolyfill extends Event { - constructor (message, data) { - super(message, data) - // @ts-expect-error could be undefined - this.detail = data?.detail - } - } -} - const __dirname = path.dirname(fileURLToPath(import.meta.url)) await waitForOutput('Added file contents: Hello World 101', 'node', [path.resolve(__dirname, '../101-basics.js')]) From 26415bddfb705ff6aac43a5d6519d7b31bc55837 Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:23:58 -0500 Subject: [PATCH 21/25] chore: test if we can alias calls to node to bun --- .github/workflows/ci.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e7069f3..43cd9044 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,12 +68,17 @@ jobs: working-directory: examples/${{ matrix.project }} steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v4 - with: - node-version: lts/* + # bun calls to nodejs under the hood for some reason + # - uses: actions/setup-node@v4 + # with: + # node-version: lts/* - uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: bun-version: latest + - name: re-alias node to bun + run: | + shopt -s expand_aliases + alias node=bun - name: Install dependencies run: bun install && bun pm trust protobufjs node-datachannel && bun install - name: Install Playwright From 05567fb7d623db33bbf081333ba7a9514c073daa Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:34:11 -0500 Subject: [PATCH 22/25] chore: debugging --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 43cd9044..5f24afd5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,16 +75,16 @@ jobs: - uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: bun-version: latest - - name: re-alias node to bun - run: | - shopt -s expand_aliases - alias node=bun + # - name: re-alias node to bun + # run: | + # shopt -s expand_aliases + # alias node=bun - name: Install dependencies run: bun install && bun pm trust protobufjs node-datachannel && bun install - name: Install Playwright run: bun add --global playwright && playwright install --with-deps - name: Run tests - run: bun run test + run: NODE_EXEC=bun bun run test env: CI: true NODE_EXEC: bun From e4bd5980346ade5a3c2b37fe6fc8e171297821c3 Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:40:09 -0500 Subject: [PATCH 23/25] fix: ensure NODE_EXEC is respected in the test --- examples/helia-101/test/index.spec.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/helia-101/test/index.spec.js b/examples/helia-101/test/index.spec.js index 42dbf4dc..aa663f46 100644 --- a/examples/helia-101/test/index.spec.js +++ b/examples/helia-101/test/index.spec.js @@ -4,8 +4,8 @@ import { waitForOutput } from 'test-ipfs-example/node' const __dirname = path.dirname(fileURLToPath(import.meta.url)) -await waitForOutput('Added file contents: Hello World 101', 'node', [path.resolve(__dirname, '../101-basics.js')]) +await waitForOutput('Added file contents: Hello World 101', process.env.NODE_EXEC ?? 'node', [path.resolve(__dirname, '../101-basics.js')]) -await waitForOutput('Added file contents: Hello World 201', 'node', [path.resolve(__dirname, '../201-storage.js')]) +await waitForOutput('Added file contents: Hello World 201', process.env.NODE_EXEC ?? 'node', [path.resolve(__dirname, '../201-storage.js')]) -await waitForOutput('Fetched file contents: Hello World 301', 'node', [path.resolve(__dirname, '../301-networking.js')]) +await waitForOutput('Fetched file contents: Hello World 301', process.env.NODE_EXEC ?? 'node', [path.resolve(__dirname, '../301-networking.js')]) From 189d28585fcb90601dc81f909de57c3f3f5c8ad9 Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:58:43 -0500 Subject: [PATCH 24/25] fix: loading node-domexception with bun --- .../helia-101/bun/loader-node-domexception.ts | 17 +++++++++++++++++ examples/helia-101/bunfig.toml | 1 + 2 files changed, 18 insertions(+) create mode 100644 examples/helia-101/bun/loader-node-domexception.ts create mode 100644 examples/helia-101/bunfig.toml diff --git a/examples/helia-101/bun/loader-node-domexception.ts b/examples/helia-101/bun/loader-node-domexception.ts new file mode 100644 index 00000000..96b70604 --- /dev/null +++ b/examples/helia-101/bun/loader-node-domexception.ts @@ -0,0 +1,17 @@ +import { plugin } from 'bun' + +/** + * node-datachannel requires node-domexception, + * but bun fails with `no default export` error. + */ +await plugin({ + name: 'loader-node-domexception', + async setup(build) { + build.onLoad({ filter: /node-domexception\/index\.js/ }, async (args) => { + return { + contents: 'export default globalThis.DOMException', + loader: 'js', + } + }) + } +}) diff --git a/examples/helia-101/bunfig.toml b/examples/helia-101/bunfig.toml new file mode 100644 index 00000000..de612d1a --- /dev/null +++ b/examples/helia-101/bunfig.toml @@ -0,0 +1 @@ +preload = ["./bun/loader-node-domexception.ts"] From c9c0ee4e8887fc2f7bb1e6f4aecc059a8f8d635b Mon Sep 17 00:00:00 2001 From: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:02:12 -0700 Subject: [PATCH 25/25] chore: apply suggestions from code review --- .github/workflows/ci.yml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5f24afd5..0634b70c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,23 +68,15 @@ jobs: working-directory: examples/${{ matrix.project }} steps: - uses: actions/checkout@v3 - # bun calls to nodejs under the hood for some reason - # - uses: actions/setup-node@v4 - # with: - # node-version: lts/* - uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.1 with: bun-version: latest - # - name: re-alias node to bun - # run: | - # shopt -s expand_aliases - # alias node=bun - name: Install dependencies run: bun install && bun pm trust protobufjs node-datachannel && bun install - name: Install Playwright run: bun add --global playwright && playwright install --with-deps - name: Run tests - run: NODE_EXEC=bun bun run test + run: bun run test env: CI: true NODE_EXEC: bun