This compiles the functionality of
opa inspect
wrapped in JavaScript by inspect.go
to WebAssembly, which is included in
main.js
with the Go runtime from wasm_exec.js
-- included in the Golang
runtime and copied to the package.
Add the dependency:
npm add @zregvart/opa-inspect
Run this example with node example.js
import * as opa from "@zregvart/opa-inspect";
opa.inspect(
"example.rego",
`package example
# METADATA
# title: Task bundle was not used or is not defined
# description: |-
# Check for existence of a task bundle. Enforcing this rule will
# fail the contract if the task is not called from a bundle.
# custom:
# short_name: disallowed_task_reference
# failure_msg: Task '%s' does not contain a bundle reference
#
deny[msg] {
msg := "nope"
}`).then(json => {
console.log(json);
});
Run the dev
script with the examples/browser
workspace, for example:
$ npm run -w examples/browser dev
VITE v4.1.1 ready in 166 ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
➜ press h to show help
And open http://localhost:5173/ in the browser.
opa.inspect
Can be called with following combination of arguments:
<string>
- a path that can be read using thefs
module<string>
,<string>
- a path/filename and the content of the Rego module inline, performs in-memory<Array<string>>
- an array of paths that can be read using thefs
module<stream<File>>
- a Vinyl stream of files- `<Array> - an array of Vinyl files
Run make build
to build, this copies wasm_exec.js
from the Golang runtime
and compiles inspect.go
to WebAssembly.
Run make demo
to build and run the example in example.js