@beignet/core 0.0.12 → 0.0.14
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.
- package/CHANGELOG.md +21 -0
- package/README.md +159 -9
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +29 -1
- package/dist/client/client.js.map +1 -1
- package/dist/entitlements/index.d.ts +234 -0
- package/dist/entitlements/index.d.ts.map +1 -0
- package/dist/entitlements/index.js +172 -0
- package/dist/entitlements/index.js.map +1 -0
- package/dist/error-reporting/index.d.ts +131 -0
- package/dist/error-reporting/index.d.ts.map +1 -0
- package/dist/error-reporting/index.js +112 -0
- package/dist/error-reporting/index.js.map +1 -0
- package/dist/flags/index.d.ts +293 -0
- package/dist/flags/index.d.ts.map +1 -0
- package/dist/flags/index.js +204 -0
- package/dist/flags/index.js.map +1 -0
- package/dist/locks/index.d.ts +155 -0
- package/dist/locks/index.d.ts.map +1 -0
- package/dist/locks/index.js +248 -0
- package/dist/locks/index.js.map +1 -0
- package/dist/payments/index.d.ts +430 -0
- package/dist/payments/index.d.ts.map +1 -0
- package/dist/payments/index.js +230 -0
- package/dist/payments/index.js.map +1 -0
- package/dist/ports/index.d.ts +61 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +33 -0
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/policy.d.ts +104 -0
- package/dist/ports/policy.d.ts.map +1 -1
- package/dist/ports/policy.js +102 -7
- package/dist/ports/policy.js.map +1 -1
- package/dist/search/index.d.ts +175 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +344 -0
- package/dist/search/index.js.map +1 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +9 -1
- package/dist/server/server.js.map +1 -1
- package/dist/testing/index.d.ts +46 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +33 -1
- package/dist/testing/index.js.map +1 -1
- package/package.json +25 -1
- package/src/client/client.ts +33 -1
- package/src/entitlements/index.ts +479 -0
- package/src/error-reporting/index.ts +273 -0
- package/src/flags/index.ts +608 -0
- package/src/locks/index.ts +440 -0
- package/src/payments/index.ts +699 -0
- package/src/ports/index.ts +194 -0
- package/src/ports/policy.ts +272 -7
- package/src/search/index.ts +632 -0
- package/src/server/server.ts +15 -0
- package/src/testing/index.ts +83 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entitlements/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @beignet/core/entitlements
|
|
3
|
+
*
|
|
4
|
+
* Provider-neutral product access primitives for Beignet applications.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Error thrown by `requireEntitlement(...)` when product access is denied.
|
|
8
|
+
*/
|
|
9
|
+
export class EntitlementRequiredError extends Error {
|
|
10
|
+
code;
|
|
11
|
+
status = 403;
|
|
12
|
+
details;
|
|
13
|
+
entitlement;
|
|
14
|
+
subject;
|
|
15
|
+
constructor(input, decision = denyEntitlement()) {
|
|
16
|
+
super(decision.reason ??
|
|
17
|
+
`Entitlement "${input.entitlement}" is required for this action.`);
|
|
18
|
+
this.name = "EntitlementRequiredError";
|
|
19
|
+
this.code = decision.code ?? "ENTITLEMENT_REQUIRED";
|
|
20
|
+
this.details = decision.details;
|
|
21
|
+
this.entitlement = input.entitlement;
|
|
22
|
+
this.subject = input.subject;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create an explicit allow decision.
|
|
27
|
+
*/
|
|
28
|
+
export function allowEntitlement() {
|
|
29
|
+
return { allowed: true };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create an explicit deny decision.
|
|
33
|
+
*/
|
|
34
|
+
export function denyEntitlement(reasonOrDecision) {
|
|
35
|
+
if (typeof reasonOrDecision === "string") {
|
|
36
|
+
return { allowed: false, reason: reasonOrDecision };
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
allowed: false,
|
|
40
|
+
...reasonOrDecision,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create an entitlement port from an app-owned resolver.
|
|
45
|
+
*/
|
|
46
|
+
export function createEntitlements(options) {
|
|
47
|
+
const observeDecision = createDecisionObserver(options.onDecision);
|
|
48
|
+
async function evaluate(input, checkOptions) {
|
|
49
|
+
const startedAt = entitlementNow();
|
|
50
|
+
try {
|
|
51
|
+
const decision = normalizeEntitlementDecision(await options.inspect(input));
|
|
52
|
+
observeDecision({
|
|
53
|
+
source: checkOptions?.source ?? "inspect",
|
|
54
|
+
ctx: checkOptions?.ctx,
|
|
55
|
+
entitlement: input.entitlement,
|
|
56
|
+
subject: input.subject,
|
|
57
|
+
decision,
|
|
58
|
+
durationMs: entitlementNow() - startedAt,
|
|
59
|
+
});
|
|
60
|
+
return decision;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
observeDecision({
|
|
64
|
+
source: checkOptions?.source ?? "inspect",
|
|
65
|
+
ctx: checkOptions?.ctx,
|
|
66
|
+
entitlement: input.entitlement,
|
|
67
|
+
subject: input.subject,
|
|
68
|
+
error,
|
|
69
|
+
durationMs: entitlementNow() - startedAt,
|
|
70
|
+
});
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
async can(input, checkOptions) {
|
|
76
|
+
return (await evaluate(input, { ...checkOptions, source: "can" }))
|
|
77
|
+
.allowed;
|
|
78
|
+
},
|
|
79
|
+
inspect(input, checkOptions) {
|
|
80
|
+
return evaluate(input, {
|
|
81
|
+
...checkOptions,
|
|
82
|
+
source: checkOptions?.source ?? "inspect",
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Create a static entitlement port for tests, starters, and simple apps.
|
|
89
|
+
*/
|
|
90
|
+
export function createStaticEntitlements(options) {
|
|
91
|
+
const subjectKey = options.subjectKey ?? defaultSubjectKey;
|
|
92
|
+
return createEntitlements({
|
|
93
|
+
inspect(input) {
|
|
94
|
+
const granted = options.grants[subjectKey(input.subject)] ?? [];
|
|
95
|
+
if (granted.includes(input.entitlement))
|
|
96
|
+
return allowEntitlement();
|
|
97
|
+
return denyEntitlement({
|
|
98
|
+
reason: `Entitlement "${input.entitlement}" is not granted.`,
|
|
99
|
+
code: "ENTITLEMENT_NOT_GRANTED",
|
|
100
|
+
details: {
|
|
101
|
+
entitlement: input.entitlement,
|
|
102
|
+
subject: input.subject,
|
|
103
|
+
},
|
|
104
|
+
...options.denied,
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
onDecision: options.onDecision,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Require an entitlement or throw a framework-owned 403 error.
|
|
112
|
+
*/
|
|
113
|
+
export async function requireEntitlement(ctx, input, options) {
|
|
114
|
+
const decision = await ctx.ports.entitlements.inspect(input, {
|
|
115
|
+
ctx,
|
|
116
|
+
source: "require",
|
|
117
|
+
});
|
|
118
|
+
if (decision.allowed)
|
|
119
|
+
return decision;
|
|
120
|
+
throw options?.error
|
|
121
|
+
? options.error(decision, input)
|
|
122
|
+
: new EntitlementRequiredError(input, decision);
|
|
123
|
+
}
|
|
124
|
+
function normalizeEntitlementDecision(result) {
|
|
125
|
+
if (typeof result === "boolean") {
|
|
126
|
+
return result ? allowEntitlement() : denyEntitlement();
|
|
127
|
+
}
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
function entitlementNow() {
|
|
131
|
+
return typeof performance !== "undefined" ? performance.now() : Date.now();
|
|
132
|
+
}
|
|
133
|
+
function contextStringField(ctx, field) {
|
|
134
|
+
if (!ctx || typeof ctx !== "object")
|
|
135
|
+
return undefined;
|
|
136
|
+
const value = ctx[field];
|
|
137
|
+
return typeof value === "string" ? value : undefined;
|
|
138
|
+
}
|
|
139
|
+
function enrichObservation(observation) {
|
|
140
|
+
return {
|
|
141
|
+
...observation,
|
|
142
|
+
requestId: contextStringField(observation.ctx, "requestId"),
|
|
143
|
+
traceId: contextStringField(observation.ctx, "traceId"),
|
|
144
|
+
spanId: contextStringField(observation.ctx, "spanId"),
|
|
145
|
+
parentSpanId: contextStringField(observation.ctx, "parentSpanId"),
|
|
146
|
+
traceparent: contextStringField(observation.ctx, "traceparent"),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function isPromiseLike(value) {
|
|
150
|
+
return (value !== null &&
|
|
151
|
+
(typeof value === "object" || typeof value === "function") &&
|
|
152
|
+
typeof value.then === "function");
|
|
153
|
+
}
|
|
154
|
+
function createDecisionObserver(observer) {
|
|
155
|
+
return (observation) => {
|
|
156
|
+
if (!observer)
|
|
157
|
+
return;
|
|
158
|
+
try {
|
|
159
|
+
const result = observer(enrichObservation(observation));
|
|
160
|
+
if (isPromiseLike(result)) {
|
|
161
|
+
Promise.resolve(result).catch(() => undefined);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// Observers are diagnostic only and must not affect entitlement checks.
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
function defaultSubjectKey(subject) {
|
|
170
|
+
return `${subject.type}:${subject.id}`;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entitlements/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA+PH;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,IAAI,CAAS;IACb,MAAM,GAAG,GAAG,CAAC;IACb,OAAO,CAAW;IAClB,WAAW,CAAS;IACpB,OAAO,CAAqB;IAErC,YACE,KAA4B,EAC5B,WAAsC,eAAe,EAAE;QAEvD,KAAK,CACH,QAAQ,CAAC,MAAM;YACb,gBAAgB,KAAK,CAAC,WAAW,gCAAgC,CACpE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,sBAAsB,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,gBAAsE;IAEtE,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACtD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK;QACd,GAAG,gBAAgB;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAIhC,OAAkD;IAElD,MAAM,eAAe,GAAG,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEnE,KAAK,UAAU,QAAQ,CACrB,KAAkC,EAClC,YAA2D;QAE3D,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,4BAA4B,CAC3C,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAC7B,CAAC;YACF,eAAe,CAAC;gBACd,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,SAAS;gBACzC,GAAG,EAAE,YAAY,EAAE,GAAG;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ;gBACR,UAAU,EAAE,cAAc,EAAE,GAAG,SAAS;aACzC,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC;gBACd,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,SAAS;gBACzC,GAAG,EAAE,YAAY,EAAE,GAAG;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK;gBACL,UAAU,EAAE,cAAc,EAAE,GAAG,SAAS;aACzC,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY;YAC3B,OAAO,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;iBAC/D,OAAO,CAAC;QACb,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,YAAY;YACzB,OAAO,QAAQ,CAAC,KAAK,EAAE;gBACrB,GAAG,YAAY;gBACf,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,SAAS;aAC1C,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAItC,OAAwD;IAExD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC;IAE3D,OAAO,kBAAkB,CAAiB;QACxC,OAAO,CAAC,KAAK;YACX,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAChE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;gBAAE,OAAO,gBAAgB,EAAE,CAAC;YAEnE,OAAO,eAAe,CAAC;gBACrB,MAAM,EAAE,gBAAgB,KAAK,CAAC,WAAW,mBAAmB;gBAC5D,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE;oBACP,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;gBACD,GAAG,OAAO,CAAC,MAAM;aAClB,CAAC,CAAC;QACL,CAAC;QACD,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAGtC,GAA8B,EAC9B,KAAkC,EAClC,OAAyC;IAEzC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;QAC3D,GAAG;QACH,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IAEtC,MAAM,OAAO,EAAE,KAAK;QAClB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;QAChC,CAAC,CAAC,IAAI,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,4BAA4B,CACnC,MAAiC;IAEjC,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IACzD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAY,EAAE,KAAa;IACrD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,KAAK,GAAI,GAA+B,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,iBAAiB,CACxB,WAA2D;IAE3D,OAAO;QACL,GAAG,WAAW;QACd,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC;QAC3D,OAAO,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC;QACvD,MAAM,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;QACrD,YAAY,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC;QACjE,WAAW,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;QAC1D,OAAQ,KAA4B,CAAC,IAAI,KAAK,UAAU,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAiE;IAEjE,OAAO,CAAC,WAAW,EAAE,EAAE;QACrB,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;YACxD,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA2B;IACpD,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @beignet/core/error-reporting
|
|
3
|
+
*
|
|
4
|
+
* Provider-neutral error reporting primitives for Beignet applications.
|
|
5
|
+
*/
|
|
6
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
7
|
+
/**
|
|
8
|
+
* JSON-compatible value accepted by error reporting context, tags, and extras.
|
|
9
|
+
*/
|
|
10
|
+
export type ErrorReportJsonValue = null | boolean | number | string | readonly ErrorReportJsonValue[] | {
|
|
11
|
+
readonly [key: string]: ErrorReportJsonValue;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Error severity level shared by common reporting providers.
|
|
15
|
+
*/
|
|
16
|
+
export type ErrorReportLevel = "fatal" | "error" | "warning" | "info" | "debug";
|
|
17
|
+
/**
|
|
18
|
+
* User or actor attached to a reported error.
|
|
19
|
+
*/
|
|
20
|
+
export type ErrorReportUser = {
|
|
21
|
+
id?: string;
|
|
22
|
+
email?: string;
|
|
23
|
+
username?: string;
|
|
24
|
+
ipAddress?: string;
|
|
25
|
+
} & Record<string, ErrorReportJsonValue | undefined>;
|
|
26
|
+
/**
|
|
27
|
+
* Provider-neutral structured context attached to a reported error.
|
|
28
|
+
*/
|
|
29
|
+
export type ErrorReportContext = Record<string, ErrorReportJsonValue | undefined>;
|
|
30
|
+
/**
|
|
31
|
+
* Tags used for searching, grouping, and alert routing.
|
|
32
|
+
*/
|
|
33
|
+
export type ErrorReportTags = Record<string, string | number | boolean | null | undefined>;
|
|
34
|
+
/**
|
|
35
|
+
* Options accepted by exception and message capture calls.
|
|
36
|
+
*/
|
|
37
|
+
export type ErrorReportOptions = {
|
|
38
|
+
level?: ErrorReportLevel;
|
|
39
|
+
user?: ErrorReportUser | null;
|
|
40
|
+
tags?: ErrorReportTags;
|
|
41
|
+
contexts?: Record<string, ErrorReportContext | undefined>;
|
|
42
|
+
extra?: Record<string, ErrorReportJsonValue | undefined>;
|
|
43
|
+
fingerprint?: readonly string[];
|
|
44
|
+
mechanism?: string;
|
|
45
|
+
handled?: boolean;
|
|
46
|
+
requestId?: string;
|
|
47
|
+
traceId?: string;
|
|
48
|
+
spanId?: string;
|
|
49
|
+
parentSpanId?: string;
|
|
50
|
+
traceparent?: string;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Result returned by a reporting provider after capture.
|
|
54
|
+
*/
|
|
55
|
+
export type ErrorReportResult = {
|
|
56
|
+
id?: string;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Flush options accepted by providers that buffer events.
|
|
60
|
+
*/
|
|
61
|
+
export type ErrorReporterFlushOptions = {
|
|
62
|
+
timeoutMs?: number;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* App-facing error reporting port.
|
|
66
|
+
*/
|
|
67
|
+
export type ErrorReporterPort = {
|
|
68
|
+
captureException(error: unknown, options?: ErrorReportOptions): Promise<ErrorReportResult>;
|
|
69
|
+
captureMessage(message: string, options?: ErrorReportOptions): Promise<ErrorReportResult>;
|
|
70
|
+
setUser(user: ErrorReportUser | null): MaybePromise<void>;
|
|
71
|
+
setTags(tags: ErrorReportTags): MaybePromise<void>;
|
|
72
|
+
setContext(name: string, context: ErrorReportContext | null): MaybePromise<void>;
|
|
73
|
+
flush(options?: ErrorReporterFlushOptions): Promise<boolean>;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Captured exception stored by `createMemoryErrorReporter(...)`.
|
|
77
|
+
*/
|
|
78
|
+
export type MemoryReportedException = {
|
|
79
|
+
type: "exception";
|
|
80
|
+
error: unknown;
|
|
81
|
+
options?: ErrorReportOptions;
|
|
82
|
+
id: string;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Captured message stored by `createMemoryErrorReporter(...)`.
|
|
86
|
+
*/
|
|
87
|
+
export type MemoryReportedMessage = {
|
|
88
|
+
type: "message";
|
|
89
|
+
message: string;
|
|
90
|
+
options?: ErrorReportOptions;
|
|
91
|
+
id: string;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Captured report stored by `createMemoryErrorReporter(...)`.
|
|
95
|
+
*/
|
|
96
|
+
export type MemoryErrorReport = MemoryReportedException | MemoryReportedMessage;
|
|
97
|
+
/**
|
|
98
|
+
* In-memory reporter state exposed for tests.
|
|
99
|
+
*/
|
|
100
|
+
export type MemoryErrorReporterPort = ErrorReporterPort & {
|
|
101
|
+
reports: MemoryErrorReport[];
|
|
102
|
+
user: ErrorReportUser | null;
|
|
103
|
+
tags: ErrorReportTags;
|
|
104
|
+
contexts: Map<string, ErrorReportContext>;
|
|
105
|
+
reset(): void;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Options accepted by `createMemoryErrorReporter(...)`.
|
|
109
|
+
*/
|
|
110
|
+
export type CreateMemoryErrorReporterOptions = {
|
|
111
|
+
onCapture?: (report: MemoryErrorReport) => MaybePromise<void>;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Create a no-op reporter for apps that want to bind the port without sending
|
|
115
|
+
* events.
|
|
116
|
+
*/
|
|
117
|
+
export declare function createNoopErrorReporter(): ErrorReporterPort;
|
|
118
|
+
/**
|
|
119
|
+
* Create an in-memory reporter for tests and local assertions.
|
|
120
|
+
*/
|
|
121
|
+
export declare function createMemoryErrorReporter(options?: CreateMemoryErrorReporterOptions): MemoryErrorReporterPort;
|
|
122
|
+
/**
|
|
123
|
+
* Report an exception through any `ErrorReporterPort`.
|
|
124
|
+
*/
|
|
125
|
+
export declare function reportException(reporter: ErrorReporterPort, error: unknown, options?: ErrorReportOptions): Promise<ErrorReportResult>;
|
|
126
|
+
/**
|
|
127
|
+
* Report a message through any `ErrorReporterPort`.
|
|
128
|
+
*/
|
|
129
|
+
export declare function reportMessage(reporter: ErrorReporterPort, message: string, options?: ErrorReportOptions): Promise<ErrorReportResult>;
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/error-reporting/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @beignet/core/error-reporting
|
|
3
|
+
*
|
|
4
|
+
* Provider-neutral error reporting primitives for Beignet applications.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Create a no-op reporter for apps that want to bind the port without sending
|
|
8
|
+
* events.
|
|
9
|
+
*/
|
|
10
|
+
export function createNoopErrorReporter() {
|
|
11
|
+
return {
|
|
12
|
+
async captureException() {
|
|
13
|
+
return {};
|
|
14
|
+
},
|
|
15
|
+
async captureMessage() {
|
|
16
|
+
return {};
|
|
17
|
+
},
|
|
18
|
+
setUser() { },
|
|
19
|
+
setTags() { },
|
|
20
|
+
setContext() { },
|
|
21
|
+
async flush() {
|
|
22
|
+
return true;
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create an in-memory reporter for tests and local assertions.
|
|
28
|
+
*/
|
|
29
|
+
export function createMemoryErrorReporter(options = {}) {
|
|
30
|
+
let nextId = 1;
|
|
31
|
+
const reports = [];
|
|
32
|
+
const contexts = new Map();
|
|
33
|
+
const port = {
|
|
34
|
+
reports,
|
|
35
|
+
user: null,
|
|
36
|
+
tags: {},
|
|
37
|
+
contexts,
|
|
38
|
+
async captureException(error, reportOptions) {
|
|
39
|
+
const report = {
|
|
40
|
+
type: "exception",
|
|
41
|
+
error,
|
|
42
|
+
options: withAmbientState(port, reportOptions),
|
|
43
|
+
id: String(nextId++),
|
|
44
|
+
};
|
|
45
|
+
reports.push(report);
|
|
46
|
+
await options.onCapture?.(report);
|
|
47
|
+
return { id: report.id };
|
|
48
|
+
},
|
|
49
|
+
async captureMessage(message, reportOptions) {
|
|
50
|
+
const report = {
|
|
51
|
+
type: "message",
|
|
52
|
+
message,
|
|
53
|
+
options: withAmbientState(port, reportOptions),
|
|
54
|
+
id: String(nextId++),
|
|
55
|
+
};
|
|
56
|
+
reports.push(report);
|
|
57
|
+
await options.onCapture?.(report);
|
|
58
|
+
return { id: report.id };
|
|
59
|
+
},
|
|
60
|
+
setUser(user) {
|
|
61
|
+
port.user = user;
|
|
62
|
+
},
|
|
63
|
+
setTags(tags) {
|
|
64
|
+
port.tags = { ...port.tags, ...tags };
|
|
65
|
+
},
|
|
66
|
+
setContext(name, context) {
|
|
67
|
+
if (context === null) {
|
|
68
|
+
contexts.delete(name);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
contexts.set(name, context);
|
|
72
|
+
},
|
|
73
|
+
async flush() {
|
|
74
|
+
return true;
|
|
75
|
+
},
|
|
76
|
+
reset() {
|
|
77
|
+
reports.length = 0;
|
|
78
|
+
contexts.clear();
|
|
79
|
+
port.user = null;
|
|
80
|
+
port.tags = {};
|
|
81
|
+
nextId = 1;
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
return port;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Report an exception through any `ErrorReporterPort`.
|
|
88
|
+
*/
|
|
89
|
+
export function reportException(reporter, error, options) {
|
|
90
|
+
return reporter.captureException(error, options);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Report a message through any `ErrorReporterPort`.
|
|
94
|
+
*/
|
|
95
|
+
export function reportMessage(reporter, message, options) {
|
|
96
|
+
return reporter.captureMessage(message, options);
|
|
97
|
+
}
|
|
98
|
+
function withAmbientState(port, options) {
|
|
99
|
+
const contexts = port.contexts.size > 0 ? Object.fromEntries(port.contexts) : undefined;
|
|
100
|
+
const hasTags = Object.keys(port.tags).length > 0;
|
|
101
|
+
if (!port.user && !hasTags && !contexts)
|
|
102
|
+
return options;
|
|
103
|
+
return {
|
|
104
|
+
...options,
|
|
105
|
+
user: options?.user ?? port.user ?? undefined,
|
|
106
|
+
tags: hasTags ? { ...port.tags, ...options?.tags } : options?.tags,
|
|
107
|
+
contexts: contexts || options?.contexts
|
|
108
|
+
? { ...contexts, ...options?.contexts }
|
|
109
|
+
: undefined,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/error-reporting/index.ts"],"names":[],"mappings":"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"}
|