Python bindings (#115)

Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
Anand Krishnamoorthi
2024-01-28 14:39:59 -08:00
committed by GitHub
parent 055bdd295f
commit 8ca863c661
12 changed files with 514 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
[package]
name = "regorus-wasm"
name = "regorusjs"
version = "0.1.0"
edition = "2021"
repository = "https://github.com/microsoft/regorus/bindings/wasm"

View File

@@ -1,4 +1,4 @@
# regorus-wasm
# regorusjs
**Regorus** is
@@ -8,21 +8,70 @@
See [Repository](https://github.com/microsoft/regorus).
`regorus-wasm` is Regorus compiled into WASM.
`regorusjs` is Regorus compiled into WASM.
## Usage
In nodejs,
```javascript
``javascript
var regorus = require('regorus-wasm')
var regorus = require('regorusjs')
// Create an engine.
var engine = new regorus.Engine();
// Add Rego policy.
engine.add_policy()
engine.add_policy(
// Associate this file name with policy
'hello.rego',
// Rego policy
`
package test
# Join messages
message = concat(", ", [input.message, data.message])
`)
// Set policy data
engine.add_data_json(`
{
"message" : "World!"
}
`)
// Set policy input
engine.set_input_json(`
{
"message" : "Hello"
}
`)
// Eval query
results = engine.eval_query('data.test.message')
// Display
console.log(results)
// {
// "result": [
// {
// "expressions": [
// {
// "value": "Hello, World!",
// "text": "data.test.message",
// "location": {
// "row": 1,
// "col": 1
// }
// }
// ]
// }
// ]
// }
// Convert results to object
results = JSON.parse(results)
// Process result
console.log(results.result[0].expressions[0].value)
// Hello, World!
```

View File

@@ -63,6 +63,12 @@ impl Engine {
self.engine.add_data(data).map_err(error_to_jsvalue)
}
/// Clear policy data.
pub fn clear_data(&mut self) -> Result<(), JsValue> {
self.engine.clear_data();
Ok(())
}
/// Set input.
///
/// See https://docs.rs/regorus/0.1.0-alpha.2/regorus/struct.Engine.html#method.set_input