@stratum-hq/lib 0.1.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 (109) hide show
  1. package/dist/__tests__/crypto.test.d.ts +2 -0
  2. package/dist/__tests__/crypto.test.d.ts.map +1 -0
  3. package/dist/__tests__/crypto.test.js +41 -0
  4. package/dist/__tests__/crypto.test.js.map +1 -0
  5. package/dist/crypto.d.ts +7 -0
  6. package/dist/crypto.d.ts.map +1 -0
  7. package/dist/crypto.js +74 -0
  8. package/dist/crypto.js.map +1 -0
  9. package/dist/index.d.ts +11 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +13 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/pool-helpers.d.ts +4 -0
  14. package/dist/pool-helpers.d.ts.map +1 -0
  15. package/dist/pool-helpers.js +31 -0
  16. package/dist/pool-helpers.js.map +1 -0
  17. package/dist/services/__tests__/audit-service.test.d.ts +2 -0
  18. package/dist/services/__tests__/audit-service.test.d.ts.map +1 -0
  19. package/dist/services/__tests__/audit-service.test.js +220 -0
  20. package/dist/services/__tests__/audit-service.test.js.map +1 -0
  21. package/dist/services/__tests__/config-service.test.d.ts +2 -0
  22. package/dist/services/__tests__/config-service.test.d.ts.map +1 -0
  23. package/dist/services/__tests__/config-service.test.js +555 -0
  24. package/dist/services/__tests__/config-service.test.js.map +1 -0
  25. package/dist/services/__tests__/consent-service.test.d.ts +2 -0
  26. package/dist/services/__tests__/consent-service.test.d.ts.map +1 -0
  27. package/dist/services/__tests__/consent-service.test.js +159 -0
  28. package/dist/services/__tests__/consent-service.test.js.map +1 -0
  29. package/dist/services/__tests__/event-service.test.d.ts +2 -0
  30. package/dist/services/__tests__/event-service.test.d.ts.map +1 -0
  31. package/dist/services/__tests__/event-service.test.js +151 -0
  32. package/dist/services/__tests__/event-service.test.js.map +1 -0
  33. package/dist/services/__tests__/permission-service.test.d.ts +2 -0
  34. package/dist/services/__tests__/permission-service.test.d.ts.map +1 -0
  35. package/dist/services/__tests__/permission-service.test.js +470 -0
  36. package/dist/services/__tests__/permission-service.test.js.map +1 -0
  37. package/dist/services/__tests__/retention-service.test.d.ts +2 -0
  38. package/dist/services/__tests__/retention-service.test.d.ts.map +1 -0
  39. package/dist/services/__tests__/retention-service.test.js +126 -0
  40. package/dist/services/__tests__/retention-service.test.js.map +1 -0
  41. package/dist/services/__tests__/tenant-service.test.d.ts +2 -0
  42. package/dist/services/__tests__/tenant-service.test.d.ts.map +1 -0
  43. package/dist/services/__tests__/tenant-service.test.js +451 -0
  44. package/dist/services/__tests__/tenant-service.test.js.map +1 -0
  45. package/dist/services/__tests__/test-helpers.d.ts +9 -0
  46. package/dist/services/__tests__/test-helpers.d.ts.map +1 -0
  47. package/dist/services/__tests__/test-helpers.js +20 -0
  48. package/dist/services/__tests__/test-helpers.js.map +1 -0
  49. package/dist/services/__tests__/webhook-service.test.d.ts +2 -0
  50. package/dist/services/__tests__/webhook-service.test.d.ts.map +1 -0
  51. package/dist/services/__tests__/webhook-service.test.js +174 -0
  52. package/dist/services/__tests__/webhook-service.test.js.map +1 -0
  53. package/dist/services/api-key-service.d.ts +61 -0
  54. package/dist/services/api-key-service.d.ts.map +1 -0
  55. package/dist/services/api-key-service.js +164 -0
  56. package/dist/services/api-key-service.js.map +1 -0
  57. package/dist/services/audit-service.d.ts +6 -0
  58. package/dist/services/audit-service.d.ts.map +1 -0
  59. package/dist/services/audit-service.js +85 -0
  60. package/dist/services/audit-service.js.map +1 -0
  61. package/dist/services/config-service.d.ts +33 -0
  62. package/dist/services/config-service.d.ts.map +1 -0
  63. package/dist/services/config-service.js +271 -0
  64. package/dist/services/config-service.js.map +1 -0
  65. package/dist/services/consent-service.d.ts +7 -0
  66. package/dist/services/consent-service.d.ts.map +1 -0
  67. package/dist/services/consent-service.js +71 -0
  68. package/dist/services/consent-service.js.map +1 -0
  69. package/dist/services/event-service.d.ts +39 -0
  70. package/dist/services/event-service.d.ts.map +1 -0
  71. package/dist/services/event-service.js +331 -0
  72. package/dist/services/event-service.js.map +1 -0
  73. package/dist/services/key-rotation-service.d.ts +15 -0
  74. package/dist/services/key-rotation-service.d.ts.map +1 -0
  75. package/dist/services/key-rotation-service.js +41 -0
  76. package/dist/services/key-rotation-service.js.map +1 -0
  77. package/dist/services/permission-service.d.ts +21 -0
  78. package/dist/services/permission-service.d.ts.map +1 -0
  79. package/dist/services/permission-service.js +213 -0
  80. package/dist/services/permission-service.js.map +1 -0
  81. package/dist/services/region-service.d.ts +9 -0
  82. package/dist/services/region-service.d.ts.map +1 -0
  83. package/dist/services/region-service.js +105 -0
  84. package/dist/services/region-service.js.map +1 -0
  85. package/dist/services/retention-service.d.ts +19 -0
  86. package/dist/services/retention-service.d.ts.map +1 -0
  87. package/dist/services/retention-service.js +88 -0
  88. package/dist/services/retention-service.js.map +1 -0
  89. package/dist/services/role-service.d.ts +35 -0
  90. package/dist/services/role-service.d.ts.map +1 -0
  91. package/dist/services/role-service.js +101 -0
  92. package/dist/services/role-service.js.map +1 -0
  93. package/dist/services/tenant-service.d.ts +25 -0
  94. package/dist/services/tenant-service.d.ts.map +1 -0
  95. package/dist/services/tenant-service.js +335 -0
  96. package/dist/services/tenant-service.js.map +1 -0
  97. package/dist/services/webhook-service.d.ts +12 -0
  98. package/dist/services/webhook-service.d.ts.map +1 -0
  99. package/dist/services/webhook-service.js +129 -0
  100. package/dist/services/webhook-service.js.map +1 -0
  101. package/dist/stratum.d.ts +107 -0
  102. package/dist/stratum.d.ts.map +1 -0
  103. package/dist/stratum.js +531 -0
  104. package/dist/stratum.js.map +1 -0
  105. package/dist/telemetry.d.ts +27 -0
  106. package/dist/telemetry.d.ts.map +1 -0
  107. package/dist/telemetry.js +94 -0
  108. package/dist/telemetry.js.map +1 -0
  109. package/package.json +46 -0
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ /**
3
+ * OpenTelemetry instrumentation helpers for Stratum.
4
+ *
5
+ * All telemetry is optional — if @opentelemetry/api is not installed the
6
+ * `traced()` helper simply executes the callback without creating spans.
7
+ *
8
+ * IMPORTANT: This file must NOT import @opentelemetry/api at the type level
9
+ * so TypeScript can compile without the package installed. All OTel types
10
+ * are represented as `any` at compile time.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.traced = exports.isTracingEnabled = exports.getTracer = void 0;
14
+ // Lazy-loaded OTel API — stays `null` when the package is absent.
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ let otel = null;
17
+ try {
18
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
19
+ otel = require("@opentelemetry/api");
20
+ }
21
+ catch {
22
+ // @opentelemetry/api is not installed — telemetry is a no-op.
23
+ }
24
+ const TRACER_NAME = "@stratum-hq/lib";
25
+ /** No-op span stub used when OTel is not available. */
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ const NOOP_SPAN = {
28
+ setAttribute: () => NOOP_SPAN,
29
+ setAttributes: () => NOOP_SPAN,
30
+ setStatus: () => NOOP_SPAN,
31
+ recordException: () => NOOP_SPAN,
32
+ end: () => { },
33
+ addEvent: () => NOOP_SPAN,
34
+ isRecording: () => false,
35
+ updateName: () => NOOP_SPAN,
36
+ spanContext: () => ({ traceId: "", spanId: "", traceFlags: 0 }),
37
+ addLink: () => NOOP_SPAN,
38
+ };
39
+ /**
40
+ * Returns the OpenTelemetry tracer for Stratum, or `null` when OTel is
41
+ * unavailable.
42
+ */
43
+ function getTracer() {
44
+ return otel ? otel.trace.getTracer(TRACER_NAME) : null;
45
+ }
46
+ exports.getTracer = getTracer;
47
+ /**
48
+ * Returns `true` when OpenTelemetry instrumentation is active.
49
+ */
50
+ function isTracingEnabled() {
51
+ return otel !== null;
52
+ }
53
+ exports.isTracingEnabled = isTracingEnabled;
54
+ /**
55
+ * Execute `fn` inside an OpenTelemetry span.
56
+ *
57
+ * When @opentelemetry/api is not installed the function is invoked directly
58
+ * without any overhead — the span parameter is a no-op stub.
59
+ */
60
+ async function traced(name, attributes,
61
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
+ fn) {
63
+ const tracer = getTracer();
64
+ if (!tracer || !otel) {
65
+ return fn(NOOP_SPAN);
66
+ }
67
+ const { SpanStatusCode } = otel;
68
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
+ return tracer.startActiveSpan(`stratum.${name}`, async (span) => {
70
+ try {
71
+ for (const [key, value] of Object.entries(attributes)) {
72
+ if (value !== undefined) {
73
+ span.setAttribute(`stratum.${key}`, value);
74
+ }
75
+ }
76
+ const result = await fn(span);
77
+ span.setStatus({ code: SpanStatusCode.OK });
78
+ return result;
79
+ }
80
+ catch (err) {
81
+ span.setStatus({
82
+ code: SpanStatusCode.ERROR,
83
+ message: err.message,
84
+ });
85
+ span.recordException(err);
86
+ throw err;
87
+ }
88
+ finally {
89
+ span.end();
90
+ }
91
+ });
92
+ }
93
+ exports.traced = traced;
94
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,kEAAkE;AAClE,8DAA8D;AAC9D,IAAI,IAAI,GAAQ,IAAI,CAAC;AAErB,IAAI,CAAC;IACH,iEAAiE;IACjE,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACvC,CAAC;AAAC,MAAM,CAAC;IACP,8DAA8D;AAChE,CAAC;AAED,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAEtC,uDAAuD;AACvD,8DAA8D;AAC9D,MAAM,SAAS,GAAQ;IACrB,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;IAC7B,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;IAC9B,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;IAC1B,eAAe,EAAE,GAAG,EAAE,CAAC,SAAS;IAChC,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;IACb,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS;IACzB,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;IACxB,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS;IAC3B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;CACzB,CAAC;AAEF;;;GAGG;AACH,SAAgB,SAAS;IACvB,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAFD,8BAEC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,IAAI,KAAK,IAAI,CAAC;AACvB,CAAC;AAFD,4CAEC;AAED;;;;;GAKG;AACI,KAAK,UAAU,MAAM,CAC1B,IAAY,EACZ,UAAiE;AACjE,8DAA8D;AAC9D,EAA6B;IAE7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAEhC,8DAA8D;IAC9D,OAAO,MAAM,CAAC,eAAe,CAAC,WAAW,IAAI,EAAE,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;QACnE,IAAI,CAAC;YACH,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,cAAc,CAAC,KAAK;gBAC1B,OAAO,EAAG,GAAa,CAAC,OAAO;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,GAAY,CAAC,CAAC;YACnC,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AApCD,wBAoCC"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@stratum-hq/lib",
3
+ "version": "0.1.0",
4
+ "description": "Stratum tenant management library - framework-agnostic business logic",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "README.md",
16
+ "LICENSE"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "test": "vitest run",
21
+ "lint": "tsc --noEmit",
22
+ "clean": "rm -rf dist"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public",
26
+ "registry": "https://registry.npmjs.org/"
27
+ },
28
+ "dependencies": {
29
+ "@opentelemetry/api": "^1.9.0",
30
+ "@stratum-hq/core": "*",
31
+ "pg": "^8.11.0"
32
+ },
33
+ "peerDependencies": {
34
+ "@opentelemetry/api": "^1.0.0"
35
+ },
36
+ "peerDependenciesMeta": {
37
+ "@opentelemetry/api": {
38
+ "optional": true
39
+ }
40
+ },
41
+ "devDependencies": {
42
+ "@types/pg": "^8.11.0",
43
+ "typescript": "^5.4.0",
44
+ "vitest": "^1.6.0"
45
+ }
46
+ }