@siremzam/sentinel 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +662 -0
  3. package/dist/engine.d.ts +70 -0
  4. package/dist/engine.d.ts.map +1 -0
  5. package/dist/engine.js +562 -0
  6. package/dist/engine.js.map +1 -0
  7. package/dist/index.d.ts +11 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +7 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/middleware/express.d.ts +35 -0
  12. package/dist/middleware/express.d.ts.map +1 -0
  13. package/dist/middleware/express.js +41 -0
  14. package/dist/middleware/express.js.map +1 -0
  15. package/dist/middleware/fastify.d.ts +29 -0
  16. package/dist/middleware/fastify.d.ts.map +1 -0
  17. package/dist/middleware/fastify.js +41 -0
  18. package/dist/middleware/fastify.js.map +1 -0
  19. package/dist/middleware/nestjs.d.ts +67 -0
  20. package/dist/middleware/nestjs.d.ts.map +1 -0
  21. package/dist/middleware/nestjs.js +82 -0
  22. package/dist/middleware/nestjs.js.map +1 -0
  23. package/dist/policy-builder.d.ts +39 -0
  24. package/dist/policy-builder.d.ts.map +1 -0
  25. package/dist/policy-builder.js +92 -0
  26. package/dist/policy-builder.js.map +1 -0
  27. package/dist/role-hierarchy.d.ts +42 -0
  28. package/dist/role-hierarchy.d.ts.map +1 -0
  29. package/dist/role-hierarchy.js +87 -0
  30. package/dist/role-hierarchy.js.map +1 -0
  31. package/dist/serialization.d.ts +52 -0
  32. package/dist/serialization.d.ts.map +1 -0
  33. package/dist/serialization.js +144 -0
  34. package/dist/serialization.js.map +1 -0
  35. package/dist/server.d.ts +52 -0
  36. package/dist/server.d.ts.map +1 -0
  37. package/dist/server.js +163 -0
  38. package/dist/server.js.map +1 -0
  39. package/dist/types.d.ts +137 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +27 -0
  42. package/dist/types.js.map +1 -0
  43. package/package.json +75 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Core type definitions for the authorization engine.
3
+ *
4
+ * The type system is designed so that defining a schema once
5
+ * propagates full autocomplete through every API surface:
6
+ * policies, checks, audits, and middleware.
7
+ */
8
+ /**
9
+ * Convert a Decision to a serialization-safe AuditEntry
10
+ * (strips functions, large objects, and condition references).
11
+ */
12
+ export function toAuditEntry(decision) {
13
+ return {
14
+ allowed: decision.allowed,
15
+ effect: decision.effect,
16
+ matchedRuleId: decision.matchedRule?.id ?? null,
17
+ matchedRuleDescription: decision.matchedRule?.description ?? null,
18
+ subjectId: decision.subject.id,
19
+ action: decision.action,
20
+ resource: decision.resource,
21
+ tenantId: decision.tenantId,
22
+ timestamp: decision.timestamp,
23
+ durationMs: decision.durationMs,
24
+ reason: decision.reason,
25
+ };
26
+ }
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiIH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAA6B,QAAqB;IAC5E,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,IAAI,IAAI;QAC/C,sBAAsB,EAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,IAAI,IAAI;QACjE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC9B,MAAM,EAAE,QAAQ,CAAC,MAAgB;QACjC,QAAQ,EAAE,QAAQ,CAAC,QAAkB;QACrC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "@siremzam/sentinel",
3
+ "version": "0.3.0",
4
+ "description": "TypeScript-first, domain-driven authorization engine for modern SaaS apps",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./middleware/express": {
14
+ "types": "./dist/middleware/express.d.ts",
15
+ "import": "./dist/middleware/express.js"
16
+ },
17
+ "./middleware/fastify": {
18
+ "types": "./dist/middleware/fastify.d.ts",
19
+ "import": "./dist/middleware/fastify.js"
20
+ },
21
+ "./middleware/nestjs": {
22
+ "types": "./dist/middleware/nestjs.d.ts",
23
+ "import": "./dist/middleware/nestjs.js"
24
+ },
25
+ "./server": {
26
+ "types": "./dist/server.d.ts",
27
+ "import": "./dist/server.js"
28
+ }
29
+ },
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "scripts": {
34
+ "build": "tsc",
35
+ "test": "vitest run",
36
+ "test:watch": "vitest",
37
+ "test:coverage": "vitest run --coverage",
38
+ "lint": "eslint src --ext .ts",
39
+ "typecheck": "tsc --noEmit",
40
+ "benchmark": "tsx benchmarks/run.ts",
41
+ "prepublishOnly": "npm run build"
42
+ },
43
+ "keywords": [
44
+ "authorization",
45
+ "rbac",
46
+ "abac",
47
+ "access-control",
48
+ "permissions",
49
+ "multitenancy",
50
+ "typescript",
51
+ "saas",
52
+ "policy-engine"
53
+ ],
54
+ "author": "siya",
55
+ "license": "MIT",
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "git+https://github.com/vegtelenseg/sentinel.git"
59
+ },
60
+ "homepage": "https://github.com/vegtelenseg/sentinel#readme",
61
+ "bugs": {
62
+ "url": "https://github.com/vegtelenseg/sentinel/issues"
63
+ },
64
+ "sideEffects": false,
65
+ "devDependencies": {
66
+ "@types/node": "^22.0.0",
67
+ "@vitest/coverage-v8": "^3.0.0",
68
+ "tsx": "^4.21.0",
69
+ "typescript": "^5.7.0",
70
+ "vitest": "^3.0.0"
71
+ },
72
+ "engines": {
73
+ "node": ">=18"
74
+ }
75
+ }