
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@sourceregistry/node-opa
Advanced tools
A minimal, dependency-free TypeScript client for interacting with the Open Policy Agent (OPA) REST API
@sourceregistry/node-opa – Lightweight TypeScript Client for OPA REST APIA minimal, dependency-free TypeScript client for interacting with the Open Policy Agent (OPA) REST API. Built with native fetch, supports modern browser and Node.js environments (v18+), and includes optional gzip compression for large payloads.
Note: This library is still a work in progress
fetch and CompressionStreamnpm install @sourceregistry/node-opa
Note: Requires a runtime that supports
fetchand (optionally)CompressionStream. In Node.js, use version 18+ or polyfillfetch.
import { OPAClient } from '@sourceregistry/node-opa';
// Initialize client
const opa = new OPAClient({
baseUrl: 'http://localhost:8181',
headers: {
// Optional: add auth or custom headers
// 'Authorization': 'Bearer <token>'
}
});
// List all policies
const policies = await opa.policy.list();
console.log(policies.result);
// Evaluate a policy decision
const result = await opa.data.post('example/allow', {
input: { user: 'alice', action: 'read' }
});
console.log(result.result); // true / false / data
// Add a new policy
await opa.policy.put('authz.rego', `
package example
allow if {
input.user == "admin"
}
`);
The client exposes grouped methods under intuitive namespaces:
opa.policy.list() – list all policiesopa.policy.get(id) – retrieve a policy by IDopa.policy.put(id, rego) – create or update a policyopa.policy.delete(id) – remove a policyopa.data.get(path, options) – read a document (GET with query params)opa.data.post(path, { input }) – read with input in body (POST)opa.data.webhook(path, input) – webhook-style evaluation (/v0)opa.data.put(path, doc) – create/overwrite a documentopa.data.patch(path, ops) – apply JSON Patch (RFC 6902)opa.data.delete(path) – delete a documentopa.query.default(input) – evaluate default decision (POST /)opa.query.adhoc(query, input?) – run ad-hoc Rego queryopa.compile.partialEval(req) – partial evaluation for optimizationopa.compile.filter(path, req, accept) – compile to SQL or other filtersopa.health.check() – standard health checkopa.health.custom('ready') – custom /health/<name> endpointsopa.config.get() – retrieve active configurationopa.status.get() – get operational statusSee OPA REST API docs for full endpoint details.
new OPAClient({
baseUrl: 'http://opa:8181', // required
headers: {
// Custom headers (avoid overriding Content-Type, Accept, etc.)
'X-Custom-Header': 'value'
}
})
Warning: Avoid setting
Accept,Content-Typeor encoding headers inheadersthey are managed internally.
If your OPA instance uses token authentication:
const opa = new OPAClient({
baseUrl: 'https://opa.example.com',
headers: {
'Authorization': 'Bearer your-secret-token'
}
});
Ensure OPA is started with --authentication=token.
All responses are strongly typed. Common types include:
Document = any – generic JSON-like dataPolicyModule – policy metadata with raw and astGetDataResponse<T> – includes result, metrics, provenance, etc.CompressionStream is unavailablePromisesMIT
Note: This client is community-maintained and not officially affiliated with the Open Policy Agent project. Refer to OPA’s official documentation for API semantics and behavior.
FAQs
A minimal, dependency-free TypeScript client for interacting with the Open Policy Agent (OPA) REST API
The npm package @sourceregistry/node-opa receives a total of 11 weekly downloads. As such, @sourceregistry/node-opa popularity was classified as not popular.
We found that @sourceregistry/node-opa demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.