Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,5 @@ ____*
bindings/wasm/pkg/
sdk/js/server/pkg/
sdk/js/server/dist/
sdk/js/web/pkg/
sdk/js/web/pkg/
pnpm-lock.yaml
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
### v6.0.1 - 19 March 2026
- added wasm bindings for Node, Bun, Browser, Deno and Edge
- Bug fix in wasm binding

### v6.0 - 18 March 26
- added has_decision_observer in runtime : Python SDK
- Fixed Rust engine bugs
- Support for JS server sdk

### v0.5.1
- wasm bindings added

### v5.0
- Support for MCP, Agents and LLM integrations in Python SDK

### v0.4.0 & Earlier
- Bug fixes
- Added Error class in Python SDK
- Python SDK
- Initial release with core rust engine
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ members = [
resolver = "2"

[workspace.package]
version = "0.6.0"
version = "0.6.1"
edition = "2021"
license = "Apache-2.0"
authors = ["Amit Saxena"]
Expand Down
2 changes: 1 addition & 1 deletion bindings/node/test_basic.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const actra = new Actra(schema, policy)
const result = actra.evaluate({
action: { type: "delete" },
actor: { role: "admin" },
snapshot: {}
snapshot: {fraud_flag:true}
})

console.log(result)
33 changes: 33 additions & 0 deletions bindings/wasm/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "wasm-binding-test",
"version": "1.0.0",
"type": "module",
"files": [
"pkg"
],
"scripts": {
"build": "node scripts/build.mjs",
"test:webpack": "webpack serve --config test/webpack/webpack.config.js",
"test:node": "node test/test-node.mjs",
"test:bun": "bun test/test-bun.mjs",
"test:deno": "deno run --allow-read test/test-deno.ts",
"test:bundler": "node test/test-bundler.mjs",
"test:browser": "npx serve ."
},
"exports": {
".": {
"types": "./pkg/node/actra_wasm.d.ts",
"node": "./pkg/node/actra_wasm.js",
"deno": "./pkg/deno/actra_wasm.js",
"browser": "./pkg/web/actra_wasm.js",
"worker": "./pkg/web/actra_wasm.js",
"default": "./pkg/bundler/actra_wasm.js"
}
},
"devDependencies": {
"html-webpack-plugin": "^5.6.6",
"webpack": "^5.105.4",
"webpack-cli": "^7.0.2",
"webpack-dev-server": "^5.2.3"
}
}
24 changes: 24 additions & 0 deletions bindings/wasm/scripts/build.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { execSync } from "child_process";
import { rmSync, existsSync } from "fs";

const builds = [
{ target: "bundler", out: "pkg/bundler" },
{ target: "web", out: "pkg/web" },
{ target: "nodejs", out: "pkg/node" },
{ target: "deno", out: "pkg/deno" }
];

console.log("CWD:", process.cwd());

if (existsSync("pkg")) {
console.log("\nCleaning pkg directory...");
rmSync("pkg", { recursive: true, force: true });
}

for (const b of builds) {
console.log(`\nBuilding ${b.target}...`);
execSync(
`wasm-pack build . --target ${b.target} --out-dir ${b.out} --release`,
{ stdio: "inherit" }
);
}
25 changes: 0 additions & 25 deletions bindings/wasm/test/browser_test.html

This file was deleted.

21 changes: 0 additions & 21 deletions bindings/wasm/test/loader.js

This file was deleted.

9 changes: 0 additions & 9 deletions bindings/wasm/test/node_test.js

This file was deleted.

19 changes: 0 additions & 19 deletions bindings/wasm/test/package.json

This file was deleted.

11 changes: 11 additions & 0 deletions bindings/wasm/test/test-bun.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
async function run() {
try {
const wasm = await import("../pkg/node/actra_wasm.js");
const version = wasm.Actra.compiler_version();
console.log("Actra WASM compiler version:", version);
} catch (err) {
console.error(err);
}
}

run();
11 changes: 11 additions & 0 deletions bindings/wasm/test/test-bundler.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
async function run() {
try {
const wasm = await import("../pkg/bundler/actra_wasm.js");
const version = wasm.Actra.compiler_version();
console.log("Actra WASM compiler version:", version);
} catch (err) {
console.error(err);
}
}

run();
11 changes: 11 additions & 0 deletions bindings/wasm/test/test-deno.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
async function run() {
try {
const wasm = await import("../pkg/deno/actra_wasm.js");
const version = wasm.Actra.compiler_version();
console.log("Actra WASM compiler version:", version);
} catch (err) {
console.error(err);
}
}

run();
11 changes: 11 additions & 0 deletions bindings/wasm/test/test-node.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
async function run() {
try {
const wasm = await import("../pkg/node/actra_wasm.js");
const version = wasm.Actra.compiler_version();
console.log("Actra WASM compiler version:", version);
} catch (err) {
console.error(err);
}
}

run();
24 changes: 24 additions & 0 deletions bindings/wasm/test/test_browser.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!DOCTYPE html>
<html>

<body>
<h3>Browser Test</h3>
<div id="output"></div>

<script type="module">
let wasm;
wasm = await import("../pkg/web/actra_wasm.js");
if (wasm.default) {
await wasm.default();
} else if (wasm.init) {
await wasm.init();
}
console.log("Actra WASM compiler version:", wasm.Actra.compiler_version());

document.getElementById("output").innerHTML +=
`<p>Actra WASM compiler version: ${wasm.Actra.compiler_version()}</p>`;
</script>

</body>

</html>
9 changes: 9 additions & 0 deletions bindings/wasm/test/webpack/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>

<body>
<h2>Webpack WASM Test</h2>
<div id="output">Loading...</div>
</body>

</html>
18 changes: 18 additions & 0 deletions bindings/wasm/test/webpack/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
async function run() {
const el = document.getElementById("output");

try {
el.textContent = "Loading WASM...";

const wasm = await import("../../pkg/bundler/actra_wasm.js");

const version = wasm.Actra.compiler_version();

el.textContent = "Compiler Version: " + version;
} catch (err) {
console.error(err);
el.textContent = "Error loading WASM";
}
}

run();
30 changes: 30 additions & 0 deletions bindings/wasm/test/webpack/webpack.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import path from "path";
import HtmlWebpackPlugin from "html-webpack-plugin";

export default {
mode: "development",
devtool: "source-map",

entry: "./test/webpack/index.js",

output: {
path: path.resolve("./test/webpack/dist"),
filename: "bundle.js",
publicPath: "/"
},

experiments: {
asyncWebAssembly: true
},

plugins: [
new HtmlWebpackPlugin({
template: "./test/webpack/index.html"
})
],

devServer: {
port: 8080,
open: true
}
};
6 changes: 6 additions & 0 deletions bindings/wasm/webpack.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export default {
mode: "development",
experiments: {
asyncWebAssembly: true
}
};
1 change: 1 addition & 0 deletions scripts/wasm_pack.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ wasm-pack build bindings/wasm --target web --out-dir pkg/web --release

# 2. Server build
wasm-pack build bindings/wasm --target nodejs --out-dir pkg/server --release
wasm-pack build bindings/wasm --target bundler --out-dir pkg/server --release

# cargo install wasm-opt

Expand Down
Loading