1- name : Release SDK (Swift + Kotlin)
1+ name : Release SDK (Swift + Kotlin + WASM )
22
33on :
44 workflow_dispatch :
1212 required : false
1313 default : true
1414 type : boolean
15+ publish_to_npm :
16+ description : " Publish WASM package to npm"
17+ required : false
18+ default : true
19+ type : boolean
1520
1621permissions :
1722 contents : write
3035 version : ${{ steps.resolve.outputs.version }}
3136 tag : ${{ steps.resolve.outputs.tag }}
3237 publish_to_maven : ${{ steps.resolve.outputs.publish_to_maven }}
38+ publish_to_npm : ${{ steps.resolve.outputs.publish_to_npm }}
3339 steps :
3440 - name : Resolve version
3541 id : resolve
3844 VERSION="${RAW_VERSION#v}"
3945 TAG="v${VERSION}"
4046 PUBLISH_TO_MAVEN="${{ inputs.publish_to_maven }}"
47+ PUBLISH_TO_NPM="${{ inputs.publish_to_npm }}"
4148 echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
4249 echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
4350 echo "publish_to_maven=${PUBLISH_TO_MAVEN}" >> "$GITHUB_OUTPUT"
51+ echo "publish_to_npm=${PUBLISH_TO_NPM}" >> "$GITHUB_OUTPUT"
52+
53+ wasm-sdk :
54+ name : Build WASM SDK and publish npm
55+ runs-on : ubuntu-latest
56+ timeout-minutes : 45
57+ needs : resolve-version
58+ steps :
59+ - name : Checkout repository
60+ uses : actions/checkout@v4
61+ with :
62+ submodules : true
63+
64+ - name : Setup Rust
65+ uses : actions-rust-lang/setup-rust-toolchain@v1
66+ with :
67+ toolchain : 1.88.0
68+ rustflags : " "
69+
70+ - name : Add wasm32 target
71+ run : rustup target add wasm32-unknown-unknown
72+
73+ - name : Install wasm-pack
74+ run : cargo install wasm-pack@0.14.0
75+
76+ - name : Build WASM package
77+ run : |
78+ cd bindings/wasm-sdk
79+ wasm-pack build --target web --release --out-dir pkg
80+
81+ - name : Setup Node.js
82+ uses : actions/setup-node@v4
83+ with :
84+ node-version : " 20"
85+ registry-url : " https://registry.npmjs.org"
86+
87+ - name : Set WASM package version and metadata
88+ working-directory : bindings/wasm-sdk/pkg
89+ run : |
90+ VERSION="${{ needs.resolve-version.outputs.version }}"
91+ node -e "
92+ const fs = require('fs');
93+ const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
94+ pkg.name = '@utexo/rln-wasm';
95+ pkg.version = process.env.VERSION;
96+ pkg.repository = { type: 'git', url: 'https://github.com/UTEXO-Protocol/rgb-lightning-node.git' };
97+ fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
98+ "
99+ env :
100+ VERSION : ${{ needs.resolve-version.outputs.version }}
101+
102+ - name : Copy README into package
103+ run : cp bindings/wasm-sdk/README.md bindings/wasm-sdk/pkg/README.md
104+
105+ - name : Publish WASM package to npm
106+ if : needs.resolve-version.outputs.publish_to_npm == 'true'
107+ working-directory : bindings/wasm-sdk/pkg
108+ run : npm publish --access public
109+ env :
110+ NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
111+
112+ - name : Package WASM release artifact
113+ run : |
114+ VERSION="${{ needs.resolve-version.outputs.version }}"
115+ mkdir -p release
116+ (cd bindings/wasm-sdk && tar -czf "../../release/rln-wasm-sdk-pkg-${VERSION}.tar.gz" pkg/)
117+
118+ - name : Upload WASM bundle
119+ uses : actions/upload-artifact@v4
120+ with :
121+ name : wasm-sdk-release
122+ if-no-files-found : error
123+ path : release/rln-wasm-sdk-pkg-${{ needs.resolve-version.outputs.version }}.tar.gz
44124
45125 kotlin-android :
46126 name : Build Kotlin Android and publish Maven
@@ -259,7 +339,7 @@ jobs:
259339 github-release :
260340 name : Publish GitHub release
261341 runs-on : ubuntu-latest
262- needs : [resolve-version, kotlin-android, swift-ios]
342+ needs : [resolve-version, kotlin-android, swift-ios, wasm-sdk ]
263343 steps :
264344 - name : Download release artifacts
265345 uses : actions/download-artifact@v4
@@ -278,11 +358,18 @@ jobs:
278358 Includes release bundles for:
279359 - Swift XCFramework
280360 - Kotlin Android bindings + JNI artifacts
361+ - WASM SDK package (`@utexo/rln-wasm`)
362+
363+ npm:
364+ ```bash
365+ npm install @utexo/rln-wasm@${{ needs.resolve-version.outputs.version }}
366+ ```
281367 draft : false
282368 prerelease : ${{ contains(needs.resolve-version.outputs.version, 'alpha') || contains(needs.resolve-version.outputs.version, 'beta') || contains(needs.resolve-version.outputs.version, 'rc') }}
283369 files : |
284370 release-assets/**/rgb-lightning-node-swift-${{ needs.resolve-version.outputs.version }}.zip
285371 release-assets/**/rgb-lightning-node-kotlin-android-${{ needs.resolve-version.outputs.version }}.zip
372+ release-assets/**/rln-wasm-sdk-pkg-${{ needs.resolve-version.outputs.version }}.tar.gz
286373 env :
287374 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
288375
0 commit comments