@nebulr-group/bridge-auth-core 0.1.2 → 0.4.0-beta.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 (131) hide show
  1. package/dist/billing/bridge-subscription.d.ts +71 -0
  2. package/dist/billing/bridge-subscription.d.ts.map +1 -0
  3. package/dist/billing/bridge-subscription.js +209 -0
  4. package/dist/billing/bridge-subscription.js.map +1 -0
  5. package/dist/billing/entitlements-store.d.ts +61 -0
  6. package/dist/billing/entitlements-store.d.ts.map +1 -0
  7. package/dist/billing/entitlements-store.js +127 -0
  8. package/dist/billing/entitlements-store.js.map +1 -0
  9. package/dist/billing/fetch-billing-state.d.ts +9 -0
  10. package/dist/billing/fetch-billing-state.d.ts.map +1 -0
  11. package/dist/billing/fetch-billing-state.js +22 -0
  12. package/dist/billing/fetch-billing-state.js.map +1 -0
  13. package/dist/billing/lock-signal.d.ts +6 -0
  14. package/dist/billing/lock-signal.d.ts.map +1 -0
  15. package/dist/billing/lock-signal.js +8 -0
  16. package/dist/billing/lock-signal.js.map +1 -0
  17. package/dist/billing/quota-store.d.ts +86 -0
  18. package/dist/billing/quota-store.d.ts.map +1 -0
  19. package/dist/billing/quota-store.js +180 -0
  20. package/dist/billing/quota-store.js.map +1 -0
  21. package/dist/billing/types.d.ts +64 -0
  22. package/dist/billing/types.d.ts.map +1 -0
  23. package/dist/billing/types.js +49 -0
  24. package/dist/billing/types.js.map +1 -0
  25. package/dist/billing/use-bridge.d.ts +131 -0
  26. package/dist/billing/use-bridge.d.ts.map +1 -0
  27. package/dist/billing/use-bridge.js +181 -0
  28. package/dist/billing/use-bridge.js.map +1 -0
  29. package/dist/bridge-auth.d.ts +36 -1
  30. package/dist/bridge-auth.d.ts.map +1 -1
  31. package/dist/bridge-auth.js +57 -3
  32. package/dist/bridge-auth.js.map +1 -1
  33. package/dist/direct-auth.d.ts +1 -0
  34. package/dist/direct-auth.d.ts.map +1 -1
  35. package/dist/direct-auth.js +7 -0
  36. package/dist/direct-auth.js.map +1 -1
  37. package/dist/errors.d.ts +11 -0
  38. package/dist/errors.d.ts.map +1 -1
  39. package/dist/errors.js +14 -0
  40. package/dist/errors.js.map +1 -1
  41. package/dist/flags/attribute-providers.d.ts +229 -0
  42. package/dist/flags/attribute-providers.d.ts.map +1 -0
  43. package/dist/flags/attribute-providers.js +375 -0
  44. package/dist/flags/attribute-providers.js.map +1 -0
  45. package/dist/flags/dev-attribute-provider.d.ts +67 -0
  46. package/dist/flags/dev-attribute-provider.d.ts.map +1 -0
  47. package/dist/flags/dev-attribute-provider.js +200 -0
  48. package/dist/flags/dev-attribute-provider.js.map +1 -0
  49. package/dist/flags/evaluator.d.ts +58 -0
  50. package/dist/flags/evaluator.d.ts.map +1 -0
  51. package/dist/flags/evaluator.js +160 -0
  52. package/dist/flags/evaluator.js.map +1 -0
  53. package/dist/flags/flag.d.ts +199 -0
  54. package/dist/flags/flag.d.ts.map +1 -0
  55. package/dist/flags/flag.js +337 -0
  56. package/dist/flags/flag.js.map +1 -0
  57. package/dist/flags/identity.d.ts +77 -0
  58. package/dist/flags/identity.d.ts.map +1 -0
  59. package/dist/flags/identity.js +134 -0
  60. package/dist/flags/identity.js.map +1 -0
  61. package/dist/flags/index.d.ts +20 -0
  62. package/dist/flags/index.d.ts.map +1 -0
  63. package/dist/flags/index.js +21 -0
  64. package/dist/flags/index.js.map +1 -0
  65. package/dist/flags/operators.d.ts +63 -0
  66. package/dist/flags/operators.d.ts.map +1 -0
  67. package/dist/flags/operators.js +299 -0
  68. package/dist/flags/operators.js.map +1 -0
  69. package/dist/flags/propagation.d.ts +16 -0
  70. package/dist/flags/propagation.d.ts.map +1 -0
  71. package/dist/flags/propagation.js +107 -0
  72. package/dist/flags/propagation.js.map +1 -0
  73. package/dist/flags/realtime.d.ts +328 -0
  74. package/dist/flags/realtime.d.ts.map +1 -0
  75. package/dist/flags/realtime.js +504 -0
  76. package/dist/flags/realtime.js.map +1 -0
  77. package/dist/flags/runtime-mode.d.ts +32 -0
  78. package/dist/flags/runtime-mode.d.ts.map +1 -0
  79. package/dist/flags/runtime-mode.js +84 -0
  80. package/dist/flags/runtime-mode.js.map +1 -0
  81. package/dist/flags/telemetry.d.ts +79 -0
  82. package/dist/flags/telemetry.d.ts.map +1 -0
  83. package/dist/flags/telemetry.js +286 -0
  84. package/dist/flags/telemetry.js.map +1 -0
  85. package/dist/http.d.ts.map +1 -1
  86. package/dist/http.js +11 -1
  87. package/dist/http.js.map +1 -1
  88. package/dist/index.d.ts +14 -2
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +16 -1
  91. package/dist/index.js.map +1 -1
  92. package/dist/management-types.d.ts +38 -0
  93. package/dist/management-types.d.ts.map +1 -1
  94. package/dist/route-guard.d.ts.map +1 -1
  95. package/dist/route-guard.js +15 -5
  96. package/dist/route-guard.js.map +1 -1
  97. package/dist/token-manager.d.ts +3 -1
  98. package/dist/token-manager.d.ts.map +1 -1
  99. package/dist/token-manager.js +10 -6
  100. package/dist/token-manager.js.map +1 -1
  101. package/dist/types.d.ts +10 -2
  102. package/dist/types.d.ts.map +1 -1
  103. package/dist/usage/index.d.ts +3 -0
  104. package/dist/usage/index.d.ts.map +1 -0
  105. package/dist/usage/index.js +4 -0
  106. package/dist/usage/index.js.map +1 -0
  107. package/dist/usage/storage/durable-storage.d.ts +47 -0
  108. package/dist/usage/storage/durable-storage.d.ts.map +1 -0
  109. package/dist/usage/storage/durable-storage.js +27 -0
  110. package/dist/usage/storage/durable-storage.js.map +1 -0
  111. package/dist/usage/storage/index.d.ts +7 -0
  112. package/dist/usage/storage/index.d.ts.map +1 -0
  113. package/dist/usage/storage/index.js +28 -0
  114. package/dist/usage/storage/index.js.map +1 -0
  115. package/dist/usage/storage/indexeddb-storage.d.ts +18 -0
  116. package/dist/usage/storage/indexeddb-storage.d.ts.map +1 -0
  117. package/dist/usage/storage/indexeddb-storage.js +159 -0
  118. package/dist/usage/storage/indexeddb-storage.js.map +1 -0
  119. package/dist/usage/storage/node-fs-storage.d.ts +29 -0
  120. package/dist/usage/storage/node-fs-storage.d.ts.map +1 -0
  121. package/dist/usage/storage/node-fs-storage.js +180 -0
  122. package/dist/usage/storage/node-fs-storage.js.map +1 -0
  123. package/dist/usage/storage/noop-storage.d.ts +17 -0
  124. package/dist/usage/storage/noop-storage.d.ts.map +1 -0
  125. package/dist/usage/storage/noop-storage.js +67 -0
  126. package/dist/usage/storage/noop-storage.js.map +1 -0
  127. package/dist/usage/usage-reporter.d.ts +64 -0
  128. package/dist/usage/usage-reporter.d.ts.map +1 -0
  129. package/dist/usage/usage-reporter.js +234 -0
  130. package/dist/usage/usage-reporter.js.map +1 -0
  131. package/package.json +2 -1
@@ -0,0 +1,234 @@
1
+ // Billing 2.0 US-10 (TBP-262) + US-19 (TBP-270) — SDK usage reporter with
2
+ // durable, crash-safe queue.
3
+ //
4
+ // `bridge.usage.report(metric, value?, idempotencyKey?)` enqueues a usage
5
+ // event for the workspace and the SDK fire-and-forgets it to bridge-api's
6
+ // `/usage/ingest` endpoint. The server's idempotency-key dedupe makes safe
7
+ // retries acceptable.
8
+ //
9
+ // US-19 adds a `DurableStorage` layer underneath the in-memory hot path:
10
+ // - browser: IndexedDB-backed queue
11
+ // - Node: JSONL on disk under ~/.bridge/usage-queue/
12
+ // - else: in-memory fallback
13
+ //
14
+ // Zero-loss bar: every event accepted into `report()` is persisted via
15
+ // `storage.enqueue()` (fire-and-forget — non-blocking). On crash/restart the
16
+ // next UsageReporter construction sees `storage.size() > 0` and triggers an
17
+ // immediate replay flush. Idempotency keys are generated AT ENQUEUE TIME and
18
+ // persisted as part of the QueuedEvent — replays send the exact same key so
19
+ // the server dedupes duplicate deliveries.
20
+ //
21
+ // Framework-agnostic: uses global `fetch`, `setTimeout`, and `crypto.randomUUID`.
22
+ // Constructed lazily by `BridgeAuth` on first access of `bridge.usage`.
23
+ import { createDurableStorage, } from './storage/index.js';
24
+ const noopWarn = (..._args) => { };
25
+ export class UsageReporter {
26
+ apiBaseUrl;
27
+ getAccessToken;
28
+ logger;
29
+ batchSize;
30
+ flushIntervalMs;
31
+ fetchFn;
32
+ storage;
33
+ timer;
34
+ stopped = false;
35
+ flushing;
36
+ // Observability state — surfaced via getQueueStatus().
37
+ _lastFlushTimestamp = null;
38
+ _lastFlushError = null;
39
+ constructor(opts) {
40
+ this.apiBaseUrl = opts.apiBaseUrl.replace(/\/+$/, '');
41
+ this.getAccessToken = opts.getAccessToken;
42
+ this.logger = opts.logger ?? { warn: noopWarn };
43
+ this.batchSize = opts.batchSize ?? 10;
44
+ this.flushIntervalMs = opts.flushIntervalMs ?? 1000;
45
+ this.fetchFn = opts.fetchFn ?? (typeof fetch !== 'undefined' ? fetch : undefined);
46
+ this.storage = opts.storage ?? createDurableStorage();
47
+ // Hydrate on init: if storage carries unsent events from a previous
48
+ // session, schedule an immediate replay flush (no debounce).
49
+ void this._maybeHydrate();
50
+ }
51
+ /**
52
+ * Enqueue a usage event. Non-blocking — schedules a debounced flush.
53
+ * `idempotencyKey` is auto-generated via `crypto.randomUUID()` when omitted
54
+ * and persisted with the event so crash/restart replays use the SAME key.
55
+ */
56
+ report(metric, value = 1, idempotencyKey) {
57
+ if (this.stopped)
58
+ return;
59
+ if (typeof metric !== 'string' || metric.length === 0)
60
+ return;
61
+ const key = idempotencyKey ?? generateIdempotencyKey();
62
+ const event = {
63
+ metric,
64
+ value,
65
+ idempotencyKey: key,
66
+ enqueuedAt: Date.now(),
67
+ retryCount: 0,
68
+ };
69
+ // Fire-and-forget: preserve non-blocking semantics of report().
70
+ void this.storage.enqueue(event).catch((err) => {
71
+ this.logger.warn('[bridge.usage] storage.enqueue failed', err);
72
+ });
73
+ this._scheduleFlush();
74
+ }
75
+ /** Force an immediate drain of the queue. Resolves once all in-flight POSTs settle. */
76
+ async flushNow() {
77
+ if (this.timer !== undefined) {
78
+ clearTimeout(this.timer);
79
+ this.timer = undefined;
80
+ }
81
+ await this._flush();
82
+ }
83
+ /** Read-only queue observability — for dev-facing monitoring. */
84
+ async getQueueStatus() {
85
+ const events = await this.storage.peek(Number.MAX_SAFE_INTEGER).catch(() => []);
86
+ const queueDepth = events.length;
87
+ const retryCount = events.reduce((sum, e) => sum + (e.retryCount ?? 0), 0);
88
+ return {
89
+ queueDepth,
90
+ retryCount,
91
+ lastFlushTimestamp: this._lastFlushTimestamp,
92
+ lastFlushError: this._lastFlushError,
93
+ };
94
+ }
95
+ /** Cancel pending timer and drain. Idempotent — safe to call multiple times. */
96
+ shutdown() {
97
+ if (this.stopped)
98
+ return;
99
+ this.stopped = true;
100
+ if (this.timer !== undefined) {
101
+ clearTimeout(this.timer);
102
+ this.timer = undefined;
103
+ }
104
+ // Fire-and-forget final flush, then close storage. We don't await because
105
+ // shutdown() is synchronous; callers that need to await should call
106
+ // flushNow() first.
107
+ void this._flush().finally(() => {
108
+ void this.storage.close?.();
109
+ });
110
+ }
111
+ async _maybeHydrate() {
112
+ try {
113
+ const depth = await this.storage.size();
114
+ if (depth > 0 && !this.stopped) {
115
+ // Immediate flush — no debounce — to replay survived events.
116
+ void this._flush();
117
+ }
118
+ }
119
+ catch (err) {
120
+ this.logger.warn('[bridge.usage] hydrate check failed', err);
121
+ }
122
+ }
123
+ _scheduleFlush() {
124
+ if (this.timer !== undefined)
125
+ return;
126
+ if (this.stopped)
127
+ return;
128
+ this.timer = setTimeout(() => {
129
+ this.timer = undefined;
130
+ void this._flush();
131
+ }, this.flushIntervalMs);
132
+ }
133
+ async _flush() {
134
+ // Serialize concurrent flushes — peek/remove must not race.
135
+ if (this.flushing)
136
+ return this.flushing;
137
+ this.flushing = this._flushInner().finally(() => {
138
+ this.flushing = undefined;
139
+ });
140
+ return this.flushing;
141
+ }
142
+ async _flushInner() {
143
+ let batch;
144
+ try {
145
+ batch = await this.storage.peek(this.batchSize);
146
+ }
147
+ catch (err) {
148
+ this.logger.warn('[bridge.usage] storage.peek failed', err);
149
+ return;
150
+ }
151
+ if (batch.length === 0)
152
+ return;
153
+ this._lastFlushTimestamp = Date.now();
154
+ if (!this.fetchFn) {
155
+ const msg = 'fetch is not available in this environment';
156
+ this.logger.warn(`[bridge.usage] ${msg}`);
157
+ this._lastFlushError = msg;
158
+ // Mark retries so getQueueStatus surfaces the problem; don't drop —
159
+ // a different host may carry the same storage forward later.
160
+ for (const event of batch) {
161
+ await this.storage.markRetry(event.idempotencyKey, msg).catch(() => undefined);
162
+ }
163
+ return;
164
+ }
165
+ const token = this.getAccessToken();
166
+ const url = `${this.apiBaseUrl}/usage/ingest`;
167
+ const succeeded = [];
168
+ const failures = [];
169
+ await Promise.all(batch.map(async (event) => {
170
+ try {
171
+ const headers = { 'Content-Type': 'application/json' };
172
+ if (token)
173
+ headers.Authorization = `Bearer ${token}`;
174
+ const res = await this.fetchFn(url, {
175
+ method: 'POST',
176
+ headers,
177
+ body: JSON.stringify({
178
+ metric: event.metric,
179
+ value: event.value,
180
+ idempotencyKey: event.idempotencyKey,
181
+ }),
182
+ });
183
+ if (!res.ok) {
184
+ const msg = `ingest failed (${res.status}) for metric=${event.metric}`;
185
+ this.logger.warn(`[bridge.usage] ${msg}`);
186
+ failures.push({ key: event.idempotencyKey, error: `HTTP ${res.status}` });
187
+ return;
188
+ }
189
+ succeeded.push(event.idempotencyKey);
190
+ }
191
+ catch (err) {
192
+ const msg = err instanceof Error ? err.message : String(err);
193
+ this.logger.warn('[bridge.usage] ingest error', err);
194
+ failures.push({ key: event.idempotencyKey, error: msg });
195
+ }
196
+ }));
197
+ if (succeeded.length > 0) {
198
+ try {
199
+ await this.storage.remove(succeeded);
200
+ }
201
+ catch (err) {
202
+ // If we can't remove acknowledged events, the server's dedupe will
203
+ // still reject the next replay — log and move on.
204
+ this.logger.warn('[bridge.usage] storage.remove failed', err);
205
+ }
206
+ }
207
+ for (const { key, error } of failures) {
208
+ await this.storage.markRetry(key, error).catch(() => undefined);
209
+ }
210
+ this._lastFlushError = failures.length > 0 ? failures[failures.length - 1].error : null;
211
+ // If items remain (more than batchSize were queued or some failed),
212
+ // schedule another flush. Failures will be retried on the next pass.
213
+ if (!this.stopped) {
214
+ const remaining = await this.storage.size().catch(() => 0);
215
+ if (remaining > 0)
216
+ this._scheduleFlush();
217
+ }
218
+ }
219
+ }
220
+ function generateIdempotencyKey() {
221
+ const c = globalThis.crypto;
222
+ if (c && typeof c.randomUUID === 'function') {
223
+ try {
224
+ return c.randomUUID();
225
+ }
226
+ catch {
227
+ // fall through to manual generator
228
+ }
229
+ }
230
+ // RFC4122-ish fallback for environments without crypto.randomUUID.
231
+ const rnd = () => Math.floor(Math.random() * 0xffffffff).toString(16).padStart(8, '0');
232
+ return `${rnd()}-${rnd().slice(0, 4)}-4${rnd().slice(1, 4)}-a${rnd().slice(1, 4)}-${rnd()}${rnd().slice(0, 4)}`;
233
+ }
234
+ //# sourceMappingURL=usage-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-reporter.js","sourceRoot":"","sources":["../../src/usage/usage-reporter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nebulr-group/bridge-auth-core",
3
- "version": "0.1.2",
3
+ "version": "0.4.0-beta.0",
4
4
  "description": "Framework-agnostic auth core for Bridge platform",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -26,6 +26,7 @@
26
26
  "jose": "^5.2.0"
27
27
  },
28
28
  "devDependencies": {
29
+ "@types/node": "^20.11.0",
29
30
  "typescript": "^5.4.0",
30
31
  "vitest": "^1.6.0"
31
32
  },