Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
8e5588e
chore(deps): bump the gh-actions-packages group across 1 directory wi…
dependabot[bot] Jul 2, 2026
eae9a3f
chore(deps): bump libdd-crashtracker from v35.0.0 to v37.0.0 (#147)
dependabot[bot] Jul 2, 2026
16a51ad
chore(deps-dev): bump the minor-updates group across 1 directory with…
dependabot[bot] Jul 2, 2026
4a617fe
chore(deps): bump express from 4.22.1 to 5.2.1 in /test/crashtracker …
dependabot[bot] Jul 3, 2026
588c931
ADMS: vuln patch: brace-expansion, flatted, picomatch (#133)
gh-worker-campaigns-3e9aa4[bot] Jul 3, 2026
1a718a8
feat: added file capability [APMSP-3780] (#177)
Aaalibaba42 Jul 31, 2026
b1dca31
feat: added env capability [APMSP-3780] (#176)
Aaalibaba42 Aug 6, 2026
f8107be
feat: add DDSketch WASM bindings (#198)
IlyasShabi Aug 10, 2026
617af2a
build: simplify WASM build script (#199)
IlyasShabi Aug 10, 2026
1bc95f6
feat: Adopt TraceExporter's Telemetry stuff (#183)
Aaalibaba42 Aug 11, 2026
4f1808e
ADMS: vuln brace-expansion (patch → 5.0.9) (#201)
gh-worker-campaigns-3e9aa4[bot] Aug 20, 2026
7224cbc
Add remote config wasm layer (#197)
bwoebi Aug 25, 2026
1c98707
feat(libdatadog): add universal core and optional extras packages (#207)
rochdev Aug 27, 2026
a67eca7
feat(libdatadog): add apm data pipeline (#205)
rochdev Aug 27, 2026
50cf32b
ci(libdatadog): add artifact dependency and size reports (#208)
rochdev Aug 27, 2026
717ec96
refactor(libdatadog): keep data pipeline on WASM (#216)
BridgeAR Aug 31, 2026
3197ab6
refactor(libdatadog): remove N-API backend (#218)
BridgeAR Aug 31, 2026
90b9ef6
feat(libdatadog): add dedicated remote config WASM (#217)
BridgeAR Aug 31, 2026
14c0b30
chore(release): adopt main's http_transport test and lockfiles
bengl Aug 31, 2026
20e775a
v0.19.0
bengl Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions .github/actions/build-test-wasm/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ runs:
wasm-pack build --target nodejs ./crates/${{ inputs.crate }} --out-dir ../../prebuilds/${{ inputs.crate }}
shell: bash
- name: Test WASM
# The pipeline crate's tests are top-level node:test suites that need
# --test-force-exit (the wasm exporter keeps the event loop alive after
# a flush); the other wasm crates use plain test/wasm/<crate>/ scripts.
# pipeline and remote_config have top-level node:test suites; the other wasm crates use
# plain test/wasm/<crate>/ scripts. pipeline additionally needs --test-force-exit, since its
# wasm exporter keeps the event loop alive after a flush.
run: |
if [ "${{ inputs.crate }}" = "pipeline" ]; then
node --test --test-force-exit test/pipeline.js
else
node test-wasm.js ${{ inputs.crate }}
fi
case "${{ inputs.crate }}" in
pipeline) node --test --test-force-exit test/pipeline.js ;;
remote_config) node --test test/remote-config.js ;;
*) node test-wasm.js ${{ inputs.crate }} ;;
esac
shell: bash
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
Expand Down
88 changes: 78 additions & 10 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,96 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- run: yarn install
- run: yarn install
working-directory: test/crashtracker
- run: yarn lint

build-libdatadog:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
- name: Add WASM target
run: rustup target add wasm32-unknown-unknown
- name: Validate artifact dependencies
run: npm run check:dependencies
- run: npm ci --prefix packages/libdatadog
- run: cargo install wasm-pack --version 0.14.0 --locked
- run: npm run build --prefix packages/libdatadog
- name: Build symbolized WASM for size attribution
run: npm run size:profile --prefix packages/libdatadog
- name: Report and validate WASM binary size
run: >-
npm run report:wasm-size --prefix packages/libdatadog --
../../target/size/libdatadog_wasm_bg.wasm
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: libdatadog-wasm
path: packages/libdatadog/wasm/dist

test-libdatadog:
needs: build-libdatadog
runs-on: ubuntu-latest
strategy:
matrix:
node: [18, 24]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ matrix.node }}
- run: npm ci --prefix packages/libdatadog
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: libdatadog-wasm
path: packages/libdatadog/wasm/dist
- run: npm test --prefix packages/libdatadog

test-libdatadog-windows:
name: Test libdatadog WASM (Windows, Node ${{ matrix.node }})
needs: build-libdatadog
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
node: [18, 24]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ matrix.node }}
- run: npm ci --prefix packages/libdatadog
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: libdatadog-wasm
path: packages/libdatadog/wasm/dist
- run: npm test --prefix packages/libdatadog

build-test-wasm:
runs-on: ubuntu-latest
strategy:
matrix:
crate:
- library_config
- datadog-js-zstd
- pipeline
- remote_config
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: 'Use composite action'
uses: ./.github/actions/build-test-wasm
with:
crate: '${{ matrix.crate }}'

build:
build-libdatadog-extras:
uses: Datadog/action-prebuildify/.github/workflows/build.yml@main
needs: build-test-wasm
with:
Expand All @@ -42,20 +108,22 @@ jobs:
min-node-version: 18
rust: true
only: darwin-arm64,darwin-x64,linux-arm64,linux-x64
# Need this, now that libdatadog packages libunwind as a submodule
prebuild: '(command -v apk >/dev/null && apk add autoconf automake libtool) || (command -v apt-get >/dev/null && apt-get update && apt-get install -y autoconf automake libtool) || true'
prebuild: >-
(command -v apk >/dev/null && apk add autoconf automake libtool) ||
(command -v apt-get >/dev/null && apt-get update &&
apt-get install -y autoconf automake libtool) || true

package-size:
runs-on: ubuntu-latest
needs: build
needs: build-libdatadog-extras
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
- run: yarn install
- name: Compute module size tree and report
uses: qard/heaviest-objects-in-the-universe@v1
Expand Down
173 changes: 153 additions & 20 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,55 @@ on:
push:
branches:
- v0.x
workflow_dispatch:

concurrency:
group: npm-release-${{ github.ref }}
cancel-in-progress: false

jobs:
versions:
runs-on: ubuntu-latest
outputs:
npm-tag: ${{ steps.versions.outputs.npm-tag }}
version: ${{ steps.versions.outputs.version }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- id: versions
env:
DEV_RELEASE: ${{ github.event_name == 'workflow_dispatch' }}
run: |
VERSION=$(node -p "require('./package.json').version")

if [ "$DEV_RELEASE" = "true" ]; then
SUFFIX="dev-$(git rev-parse --short HEAD)+${{ github.run_id }}.${{ github.run_attempt }}"
VERSION="${VERSION%%-*}-$SUFFIX"
NPM_TAG=dev
else
NPM_TAG=latest
fi

{
echo "npm-tag=$NPM_TAG"
echo "version=$VERSION"
} >> "$GITHUB_OUTPUT"

build-test-wasm:
runs-on: ubuntu-latest
strategy:
matrix:
crate:
- library_config
- datadog-js-zstd
- pipeline
- remote_config
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: 'Use composite action'
uses: ./.github/actions/build-test-wasm
with:
crate: '${{ matrix.crate }}'

build:
build-libdatadog-extras:
uses: Datadog/action-prebuildify/.github/workflows/build.yml@main
needs: build-test-wasm
with:
Expand All @@ -30,39 +61,141 @@ jobs:
min-node-version: 18
rust: true
only: darwin-arm64,darwin-x64,linux-arm64,linux-x64
# libdatadog packages libunwind as a submodule.
prebuild: >-
(command -v apk >/dev/null && apk add autoconf automake libtool) ||
(command -v apt-get >/dev/null && apt-get update &&
apt-get install -y autoconf automake libtool) || true

build-libdatadog-wasm:
runs-on: ubuntu-latest
needs: versions
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: 24
- name: Add WASM target
run: rustup target add wasm32-unknown-unknown
- run: npm ci --prefix packages/libdatadog
- run: cargo install wasm-pack --version 0.14.0 --locked
- name: Set package version
run: node packages/libdatadog/scripts/set-version.js '${{ needs.versions.outputs.version }}'
- run: npm run build:wasm --prefix packages/libdatadog
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: libdatadog-wasm
path: packages/libdatadog/wasm/dist

test-libdatadog-wasm:
needs: build-libdatadog-wasm
runs-on: ubuntu-latest
strategy:
matrix:
node: [18, 24]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ matrix.node }}
- run: npm ci --prefix packages/libdatadog
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: libdatadog-wasm
path: packages/libdatadog/wasm/dist
- run: npm test --prefix packages/libdatadog

test-libdatadog-windows:
name: Test libdatadog WASM (Windows, Node ${{ matrix.node }})
needs: build-libdatadog-wasm
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
node: [18, 24]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: ${{ matrix.node }}
- run: npm ci --prefix packages/libdatadog
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: libdatadog-wasm
path: packages/libdatadog/wasm/dist
- run: npm test --prefix packages/libdatadog

publish:
runs-on: ubuntu-latest
needs: build
environment: npm
needs:
- build-libdatadog-extras
- build-libdatadog-wasm
- test-libdatadog-wasm
- test-libdatadog-windows
- versions
environment:
name: npm
url: https://npmjs.com/package/@datadog/libdatadog
permissions:
id-token: write # Required for OIDC
contents: read
outputs:
pkgjson: ${{ steps.pkg.outputs.json }}
steps:
- uses: DataDog/dd-octo-sts-action@acaa02eee7e3bb0839e4272dacb37b8f3b58ba80 # v1.0.3
- uses: DataDog/dd-octo-sts-action@96a25462dbcb10ebf0bfd6e2ccc917d2ab235b9a # v1.0.4
if: github.event_name == 'push'
id: octo-sts
with:
scope: DataDog/libdatadog-nodejs
policy: self.github.release.push-tags
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false # drop GITHUB_TOKEN so the dd-octo-sts token is used for the tag push
- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: '24'
registry-url: https://registry.npmjs.org
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: prebuilds
path: prebuilds
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
node-version: '24'
registry-url: 'https://registry.npmjs.org'
- run: chmod -R +x ./prebuilds
- run: npm publish
- id: pkg
name: libdatadog-wasm
path: packages/libdatadog/wasm/dist
- name: Set package versions
run: |
npm pkg set 'version=${{ needs.versions.outputs.version }}'
node packages/libdatadog/scripts/set-version.js '${{ needs.versions.outputs.version }}'
- run: chmod -R +x prebuilds
- run: npm run test:package --prefix packages/libdatadog
- name: Publish libdatadog WASM
env:
NPM_TAG: ${{ needs.versions.outputs.npm-tag }}
run: npm publish packages/libdatadog/wasm --access public --tag "$NPM_TAG"
- name: Publish libdatadog
env:
NPM_TAG: ${{ needs.versions.outputs.npm-tag }}
run: npm publish packages/libdatadog --access public --tag "$NPM_TAG"
- name: Publish libdatadog extras
env:
NPM_TAG: ${{ needs.versions.outputs.npm-tag }}
run: npm publish --access public --tag "$NPM_TAG"
- name: Tag release
if: github.event_name == 'push'
env:
RELEASE_VERSION: ${{ needs.versions.outputs.version }}
RELEASE_TOKEN: ${{ steps.octo-sts.outputs.token }}
run: |
git tag "v$RELEASE_VERSION"
git push "https://x-access-token:$RELEASE_TOKEN@github.com/${{ github.repository }}.git" "v$RELEASE_VERSION"
- name: Summarize release
env:
NPM_TAG: ${{ needs.versions.outputs.npm-tag }}
VERSION: ${{ needs.versions.outputs.version }}
run: |
content=`cat ./package.json | tr '\n' ' '`
echo "json=$content" >> $GITHUB_OUTPUT
- run: |
git tag v${{ fromJson(steps.pkg.outputs.json).version }}
git push https://x-access-token:${{ steps.octo-sts.outputs.token }}@github.com/${{ github.repository }}.git v${{ fromJson(steps.pkg.outputs.json).version }}
echo "Published @datadog/libdatadog@$VERSION with the npm $NPM_TAG tag."
echo "Published @datadog/libdatadog-wasm@$VERSION with the npm $NPM_TAG tag."
echo "Published @datadog/libdatadog-extras@$VERSION with the npm $NPM_TAG tag."
Loading
Loading