convex-tracer 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 (86) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +592 -0
  3. package/dist/client/_generated/_ignore.d.ts +1 -0
  4. package/dist/client/_generated/_ignore.d.ts.map +1 -0
  5. package/dist/client/_generated/_ignore.js +3 -0
  6. package/dist/client/_generated/_ignore.js.map +1 -0
  7. package/dist/client/helpers.d.ts +31 -0
  8. package/dist/client/helpers.d.ts.map +1 -0
  9. package/dist/client/helpers.js +177 -0
  10. package/dist/client/helpers.js.map +1 -0
  11. package/dist/client/index.d.ts +210 -0
  12. package/dist/client/index.d.ts.map +1 -0
  13. package/dist/client/index.js +355 -0
  14. package/dist/client/index.js.map +1 -0
  15. package/dist/client/tracer-api/index.d.ts +27 -0
  16. package/dist/client/tracer-api/index.d.ts.map +1 -0
  17. package/dist/client/tracer-api/index.js +177 -0
  18. package/dist/client/tracer-api/index.js.map +1 -0
  19. package/dist/client/tracer-api/types.d.ts +143 -0
  20. package/dist/client/tracer-api/types.d.ts.map +1 -0
  21. package/dist/client/tracer-api/types.js +2 -0
  22. package/dist/client/tracer-api/types.js.map +1 -0
  23. package/dist/client/types.d.ts +168 -0
  24. package/dist/client/types.d.ts.map +1 -0
  25. package/dist/client/types.js +2 -0
  26. package/dist/client/types.js.map +1 -0
  27. package/dist/component/_generated/api.d.ts +36 -0
  28. package/dist/component/_generated/api.d.ts.map +1 -0
  29. package/dist/component/_generated/api.js +31 -0
  30. package/dist/component/_generated/api.js.map +1 -0
  31. package/dist/component/_generated/component.d.ts +139 -0
  32. package/dist/component/_generated/component.d.ts.map +1 -0
  33. package/dist/component/_generated/component.js +11 -0
  34. package/dist/component/_generated/component.js.map +1 -0
  35. package/dist/component/_generated/dataModel.d.ts +46 -0
  36. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  37. package/dist/component/_generated/dataModel.js +11 -0
  38. package/dist/component/_generated/dataModel.js.map +1 -0
  39. package/dist/component/_generated/server.d.ts +121 -0
  40. package/dist/component/_generated/server.d.ts.map +1 -0
  41. package/dist/component/_generated/server.js +78 -0
  42. package/dist/component/_generated/server.js.map +1 -0
  43. package/dist/component/convex.config.d.ts +3 -0
  44. package/dist/component/convex.config.d.ts.map +1 -0
  45. package/dist/component/convex.config.js +3 -0
  46. package/dist/component/convex.config.js.map +1 -0
  47. package/dist/component/lib.d.ts +161 -0
  48. package/dist/component/lib.d.ts.map +1 -0
  49. package/dist/component/lib.js +349 -0
  50. package/dist/component/lib.js.map +1 -0
  51. package/dist/component/schema.d.ts +75 -0
  52. package/dist/component/schema.d.ts.map +1 -0
  53. package/dist/component/schema.js +46 -0
  54. package/dist/component/schema.js.map +1 -0
  55. package/dist/component/types.d.ts +286 -0
  56. package/dist/component/types.d.ts.map +1 -0
  57. package/dist/component/types.js +28 -0
  58. package/dist/component/types.js.map +1 -0
  59. package/dist/react/index.d.ts +6 -0
  60. package/dist/react/index.d.ts.map +1 -0
  61. package/dist/react/index.js +11 -0
  62. package/dist/react/index.js.map +1 -0
  63. package/dist/react/types.d.ts +8 -0
  64. package/dist/react/types.d.ts.map +1 -0
  65. package/dist/react/types.js +2 -0
  66. package/dist/react/types.js.map +1 -0
  67. package/package.json +121 -0
  68. package/src/client/_generated/_ignore.ts +1 -0
  69. package/src/client/helpers.ts +278 -0
  70. package/src/client/index.ts +593 -0
  71. package/src/client/setup.test.ts +26 -0
  72. package/src/client/tracer-api/index.ts +235 -0
  73. package/src/client/tracer-api/types.ts +168 -0
  74. package/src/client/types.ts +257 -0
  75. package/src/component/_generated/api.ts +52 -0
  76. package/src/component/_generated/component.ts +199 -0
  77. package/src/component/_generated/dataModel.ts +60 -0
  78. package/src/component/_generated/server.ts +161 -0
  79. package/src/component/convex.config.ts +3 -0
  80. package/src/component/lib.ts +399 -0
  81. package/src/component/schema.ts +62 -0
  82. package/src/component/setup.test.ts +11 -0
  83. package/src/component/types.ts +38 -0
  84. package/src/react/index.ts +36 -0
  85. package/src/react/types.ts +15 -0
  86. package/src/test.ts +18 -0
@@ -0,0 +1,349 @@
1
+ /**
2
+ * Internal mutations for managing traces, spans, and logs.
3
+ * These are called automatically by the tracing system to persist data immediately.
4
+ */
5
+ import { v } from "convex/values";
6
+ import { mutation, query } from "./_generated/server.js";
7
+ import schema, { severityValidator, sourceValidator, statusValidator, } from "./schema.js";
8
+ import { vCompleteTrace } from "./types.js";
9
+ // ============================================================================
10
+ // Trace Operations
11
+ // ============================================================================
12
+ /**
13
+ * Creates a new trace in the database.
14
+ * Called automatically when a traced function is invoked without an existing trace context.
15
+ */
16
+ export const createTrace = mutation({
17
+ args: {
18
+ status: statusValidator,
19
+ sampleRate: v.number(),
20
+ metadata: v.optional(v.record(v.string(), v.any())),
21
+ source: sourceValidator,
22
+ },
23
+ returns: v.id("traces"),
24
+ handler: async (ctx, args) => {
25
+ return await ctx.db.insert("traces", {
26
+ status: args.status,
27
+ sampleRate: args.sampleRate,
28
+ updatedAt: Date.now(),
29
+ metadata: args.metadata,
30
+ });
31
+ },
32
+ });
33
+ /**
34
+ * Updates the status of an existing trace.
35
+ * Called when a root traced function completes or errors.
36
+ */
37
+ export const updateTraceStatus = mutation({
38
+ args: {
39
+ traceId: v.string(),
40
+ status: statusValidator,
41
+ },
42
+ returns: v.null(),
43
+ handler: async (ctx, args) => {
44
+ await ctx.db.patch("traces", args.traceId, {
45
+ status: args.status,
46
+ updatedAt: Date.now(),
47
+ });
48
+ },
49
+ });
50
+ /**
51
+ * Updates the preserve flag on a trace.
52
+ * Called when tracer.preserve(), tracer.discard(), or tracer.sample() is invoked.
53
+ */
54
+ export const updateTracePreserve = mutation({
55
+ args: {
56
+ traceId: v.string(),
57
+ preserve: v.optional(v.boolean()),
58
+ sampleRate: v.optional(v.number()),
59
+ },
60
+ returns: v.null(),
61
+ handler: async (ctx, { sampleRate, traceId, preserve }) => {
62
+ const srUpdate = {};
63
+ if (sampleRate)
64
+ srUpdate.sampleRate = sampleRate;
65
+ await ctx.db.patch("traces", traceId, {
66
+ preserve: preserve,
67
+ updatedAt: Date.now(),
68
+ ...srUpdate,
69
+ });
70
+ },
71
+ });
72
+ /**
73
+ * Updates the trace metadata.
74
+ * Called when tracer.setMetadata() is invoked.
75
+ */
76
+ export const updateTraceMetadata = mutation({
77
+ args: {
78
+ traceId: v.string(),
79
+ metadata: v.record(v.string(), v.any()),
80
+ },
81
+ returns: v.null(),
82
+ handler: async (ctx, args) => {
83
+ const trace = await ctx.db.get("traces", args.traceId);
84
+ if (!trace)
85
+ throw new Error(`Trace not found: ${args.traceId}`);
86
+ await ctx.db.patch("traces", args.traceId, {
87
+ metadata: {
88
+ ...trace.metadata,
89
+ ...args.metadata,
90
+ },
91
+ updatedAt: Date.now(),
92
+ });
93
+ },
94
+ });
95
+ // ============================================================================
96
+ // Span Operations
97
+ // ============================================================================
98
+ /**
99
+ * Creates a new span in the database.
100
+ * Called automatically when a traced function starts or when withSpan() is called.
101
+ */
102
+ export const createSpan = mutation({
103
+ args: {
104
+ traceId: v.string(),
105
+ span: v.object({
106
+ parentSpanId: v.optional(v.string()),
107
+ spanName: v.string(),
108
+ source: sourceValidator,
109
+ startTime: v.number(),
110
+ status: statusValidator,
111
+ functionName: v.optional(v.string()),
112
+ args: v.optional(v.any()),
113
+ }),
114
+ },
115
+ returns: v.id("spans"),
116
+ handler: async (ctx, args) => {
117
+ return await ctx.db.insert("spans", {
118
+ ...args.span,
119
+ traceId: args.traceId,
120
+ parentSpanId: args.span.parentSpanId
121
+ ? args.span.parentSpanId
122
+ : undefined,
123
+ });
124
+ },
125
+ });
126
+ /**
127
+ * Completes a span by updating its end time, duration, status, and optional result/error.
128
+ * Called automatically when a traced function completes or when withSpan() finishes.
129
+ */
130
+ export const completeSpan = mutation({
131
+ args: {
132
+ spanId: v.string(),
133
+ endTime: v.number(),
134
+ duration: v.number(),
135
+ status: v.union(v.literal("success"), v.literal("error")),
136
+ result: v.optional(v.any()),
137
+ error: v.optional(v.string()),
138
+ },
139
+ returns: v.null(),
140
+ handler: async (ctx, args) => {
141
+ await ctx.db.patch("spans", args.spanId, {
142
+ endTime: args.endTime,
143
+ duration: args.duration,
144
+ status: args.status,
145
+ result: args.result,
146
+ error: args.error,
147
+ });
148
+ },
149
+ });
150
+ /**
151
+ * Updates the metadata of a span.
152
+ * Called when span.setMetadata() is invoked within withSpan().
153
+ */
154
+ export const updateSpanMetadata = mutation({
155
+ args: {
156
+ spanId: v.string(),
157
+ metadata: v.record(v.string(), v.any()),
158
+ },
159
+ returns: v.null(),
160
+ handler: async (ctx, args) => {
161
+ const span = await ctx.db.get("spans", args.spanId);
162
+ if (!span)
163
+ throw new Error(`Span not found: ${args.spanId}`);
164
+ await ctx.db.patch(span._id, {
165
+ metadata: {
166
+ ...span.metadata,
167
+ ...args.metadata,
168
+ },
169
+ });
170
+ },
171
+ });
172
+ // ============================================================================
173
+ // Log Operations
174
+ // ============================================================================
175
+ /**
176
+ * Adds a log entry to a specific span.
177
+ * Called when tracer.info(), tracer.warn(), or tracer.error() is invoked.
178
+ */
179
+ export const addLog = mutation({
180
+ args: {
181
+ spanId: v.string(),
182
+ log: v.object({
183
+ timestamp: v.number(),
184
+ severity: severityValidator,
185
+ message: v.string(),
186
+ metadata: v.optional(v.record(v.string(), v.any())),
187
+ }),
188
+ },
189
+ returns: v.id("logs"),
190
+ handler: async (ctx, args) => {
191
+ const span = await ctx.db.get("spans", args.spanId);
192
+ if (!span)
193
+ throw new Error(`Span not found: ${args.spanId}`);
194
+ return await ctx.db.insert("logs", {
195
+ spanId: span._id,
196
+ ...args.log,
197
+ });
198
+ },
199
+ });
200
+ // ============================================================================
201
+ // Query Operations
202
+ // ============================================================================
203
+ /**
204
+ * Verify trace exists
205
+ */
206
+ export const verifyTrace = query({
207
+ args: { traceId: v.string() },
208
+ returns: v.boolean(),
209
+ handler: async (ctx, { traceId }) => {
210
+ const trace = await ctx.db.get("traces", traceId);
211
+ if (!trace)
212
+ return false;
213
+ return true;
214
+ },
215
+ });
216
+ export const verifySpan = query({
217
+ args: { spanId: v.string() },
218
+ returns: v.boolean(),
219
+ handler: async (ctx, { spanId }) => {
220
+ const span = await ctx.db.get("spans", spanId);
221
+ if (!span)
222
+ return false;
223
+ return true;
224
+ },
225
+ });
226
+ /**
227
+ * Retrieves a complete trace with all its spans and logs.
228
+ */
229
+ export const getTrace = query({
230
+ args: { traceId: v.string() },
231
+ returns: v.union(v.null(), vCompleteTrace),
232
+ handler: async (ctx, { traceId }) => {
233
+ const trace = await ctx.db.get("traces", traceId);
234
+ if (!trace)
235
+ return null;
236
+ const spans = await ctx.db
237
+ .query("spans")
238
+ .withIndex("by_traceId", (q) => q.eq("traceId", traceId))
239
+ .collect();
240
+ const spansWithLogs = await Promise.all(spans.map(async (span) => ({
241
+ ...span,
242
+ children: [],
243
+ logs: await ctx.db
244
+ .query("logs")
245
+ .withIndex("by_spanId", (q) => q.eq("spanId", span._id))
246
+ .collect(),
247
+ })));
248
+ const spanMap = new Map(spansWithLogs.map((span) => [span._id, span]));
249
+ spansWithLogs.forEach((span) => {
250
+ if (span.parentSpanId) {
251
+ const parentSpan = spanMap.get(span.parentSpanId);
252
+ if (parentSpan) {
253
+ parentSpan.children.push(span);
254
+ }
255
+ }
256
+ });
257
+ const sortSpanChildren = (span) => {
258
+ if (span.children.length > 0) {
259
+ span.children.sort((a, b) => a._creationTime - b._creationTime);
260
+ span.children.forEach(sortSpanChildren);
261
+ }
262
+ };
263
+ const rootSpans = spansWithLogs
264
+ .filter((span) => !span.parentSpanId)
265
+ .sort((a, b) => a._creationTime - b._creationTime);
266
+ rootSpans.forEach(sortSpanChildren);
267
+ return { ...trace, spans: rootSpans };
268
+ },
269
+ });
270
+ /**
271
+ * Lists traces with optional filtering by status.
272
+ */
273
+ export const listTraces = query({
274
+ args: {
275
+ status: v.optional(statusValidator),
276
+ limit: v.optional(v.number()),
277
+ userId: v.optional(v.string()),
278
+ },
279
+ returns: v.array(schema.tables.traces.validator.extend({
280
+ _id: v.id("traces"),
281
+ _creationTime: v.number(),
282
+ })),
283
+ handler: async (ctx, { status, limit, userId }) => {
284
+ const query = status && !userId
285
+ ? ctx.db
286
+ .query("traces")
287
+ .withIndex("by_status", (q) => q.eq("status", status))
288
+ : !status && userId
289
+ ? ctx.db
290
+ .query("traces")
291
+ .withIndex("by_userId", (q) => q.eq("userId", userId))
292
+ : status && userId
293
+ ? ctx.db
294
+ .query("traces")
295
+ .withIndex("by_status_and_userId", (q) => q.eq("status", status).eq("userId", userId))
296
+ : ctx.db.query("traces");
297
+ return await query.order("desc").take(limit ?? 100);
298
+ },
299
+ });
300
+ // ============================================================================
301
+ // Cleanup Operations
302
+ // ============================================================================
303
+ /**
304
+ * Cleans up old traces based on retention policy and sampling.
305
+ * Should be called periodically by a Convex scheduler.
306
+ */
307
+ export const cleanupTrace = mutation({
308
+ args: {
309
+ traceId: v.string(),
310
+ },
311
+ returns: v.null(),
312
+ handler: async (ctx, args) => {
313
+ const trace = await ctx.db.get("traces", args.traceId);
314
+ if (!trace)
315
+ return;
316
+ // Always keep explicitly preserved traces
317
+ if (trace.preserve === true)
318
+ return;
319
+ // Always delete explicitly discarded traces
320
+ if (trace.preserve === false) {
321
+ return await deleteTrace(ctx, trace._id);
322
+ }
323
+ // Apply sampling for undefined preserve status
324
+ const random = Math.random();
325
+ if (random >= trace.sampleRate)
326
+ await deleteTrace(ctx, trace._id);
327
+ },
328
+ });
329
+ /**
330
+ * Deletes a trace and all its associated spans and logs.
331
+ */
332
+ async function deleteTrace(ctx, traceId) {
333
+ const spans = await ctx.db
334
+ .query("spans")
335
+ .withIndex("by_traceId", (q) => q.eq("traceId", traceId))
336
+ .collect();
337
+ const logsRequest = spans.map((span) => ctx.db
338
+ .query("logs")
339
+ .withIndex("by_spanId", (q) => q.eq("spanId", span._id))
340
+ .collect());
341
+ const logs = await Promise.all(logsRequest);
342
+ const deletionRequests = [
343
+ ...logs.flat().map((log) => ctx.db.delete(log._id)),
344
+ ...spans.map((span) => ctx.db.delete(span._id)),
345
+ ctx.db.delete(traceId),
346
+ ];
347
+ await Promise.all(deletionRequests);
348
+ }
349
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ export declare const statusValidator: import("convex/values").VUnion<"error" | "success" | "pending", [import("convex/values").VLiteral<"pending", "required">, import("convex/values").VLiteral<"success", "required">, import("convex/values").VLiteral<"error", "required">], "required", never>;
2
+ export declare const sourceValidator: import("convex/values").VUnion<"frontend" | "backend", [import("convex/values").VLiteral<"frontend", "required">, import("convex/values").VLiteral<"backend", "required">], "required", never>;
3
+ export declare const severityValidator: import("convex/values").VUnion<"info" | "warn" | "error", [import("convex/values").VLiteral<"info", "required">, import("convex/values").VLiteral<"warn", "required">, import("convex/values").VLiteral<"error", "required">], "required", never>;
4
+ declare const _default: import("convex/server").SchemaDefinition<{
5
+ traces: import("convex/server").TableDefinition<import("convex/values").VObject<{
6
+ metadata?: Record<string, any> | undefined;
7
+ userId?: string | undefined;
8
+ preserve?: boolean | undefined;
9
+ status: "error" | "success" | "pending";
10
+ sampleRate: number;
11
+ updatedAt: number;
12
+ }, {
13
+ status: import("convex/values").VUnion<"error" | "success" | "pending", [import("convex/values").VLiteral<"pending", "required">, import("convex/values").VLiteral<"success", "required">, import("convex/values").VLiteral<"error", "required">], "required", never>;
14
+ sampleRate: import("convex/values").VFloat64<number, "required">;
15
+ preserve: import("convex/values").VBoolean<boolean | undefined, "optional">;
16
+ updatedAt: import("convex/values").VFloat64<number, "required">;
17
+ metadata: import("convex/values").VRecord<Record<string, any> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VAny<any, "required", string>, "optional", string>;
18
+ userId: import("convex/values").VString<string | undefined, "optional">;
19
+ }, "required", "status" | "metadata" | "sampleRate" | "userId" | "preserve" | "updatedAt" | `metadata.${string}`>, {
20
+ by_status: ["status", "_creationTime"];
21
+ by_userId: ["userId", "_creationTime"];
22
+ by_status_and_userId: ["status", "userId", "_creationTime"];
23
+ }, {}, {}>;
24
+ spans: import("convex/server").TableDefinition<import("convex/values").VObject<{
25
+ error?: string | undefined;
26
+ duration?: number | undefined;
27
+ endTime?: number | undefined;
28
+ result?: any;
29
+ metadata?: Record<string, any> | undefined;
30
+ parentSpanId?: import("convex/values").GenericId<"spans"> | undefined;
31
+ functionName?: string | undefined;
32
+ args?: any;
33
+ traceId: import("convex/values").GenericId<"traces">;
34
+ status: "error" | "success" | "pending";
35
+ source: "frontend" | "backend";
36
+ spanName: string;
37
+ startTime: number;
38
+ }, {
39
+ traceId: import("convex/values").VId<import("convex/values").GenericId<"traces">, "required">;
40
+ parentSpanId: import("convex/values").VId<import("convex/values").GenericId<"spans"> | undefined, "optional">;
41
+ spanName: import("convex/values").VString<string, "required">;
42
+ source: import("convex/values").VUnion<"frontend" | "backend", [import("convex/values").VLiteral<"frontend", "required">, import("convex/values").VLiteral<"backend", "required">], "required", never>;
43
+ startTime: import("convex/values").VFloat64<number, "required">;
44
+ endTime: import("convex/values").VFloat64<number | undefined, "optional">;
45
+ duration: import("convex/values").VFloat64<number | undefined, "optional">;
46
+ status: import("convex/values").VUnion<"error" | "success" | "pending", [import("convex/values").VLiteral<"pending", "required">, import("convex/values").VLiteral<"success", "required">, import("convex/values").VLiteral<"error", "required">], "required", never>;
47
+ functionName: import("convex/values").VString<string | undefined, "optional">;
48
+ args: import("convex/values").VAny<any, "optional", string>;
49
+ result: import("convex/values").VAny<any, "optional", string>;
50
+ error: import("convex/values").VString<string | undefined, "optional">;
51
+ metadata: import("convex/values").VRecord<Record<string, any> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VAny<any, "required", string>, "optional", string>;
52
+ }, "required", "error" | "traceId" | "duration" | "endTime" | "result" | "status" | "metadata" | "source" | `metadata.${string}` | "parentSpanId" | "spanName" | "startTime" | "functionName" | "args" | `result.${string}` | `args.${string}`>, {
53
+ by_traceId: ["traceId", "_creationTime"];
54
+ by_parentSpanId: ["parentSpanId", "_creationTime"];
55
+ by_status: ["status", "_creationTime"];
56
+ }, {}, {}>;
57
+ logs: import("convex/server").TableDefinition<import("convex/values").VObject<{
58
+ metadata?: Record<string, any> | undefined;
59
+ spanId: import("convex/values").GenericId<"spans">;
60
+ severity: "info" | "warn" | "error";
61
+ timestamp: number;
62
+ message: string;
63
+ }, {
64
+ spanId: import("convex/values").VId<import("convex/values").GenericId<"spans">, "required">;
65
+ timestamp: import("convex/values").VFloat64<number, "required">;
66
+ severity: import("convex/values").VUnion<"info" | "warn" | "error", [import("convex/values").VLiteral<"info", "required">, import("convex/values").VLiteral<"warn", "required">, import("convex/values").VLiteral<"error", "required">], "required", never>;
67
+ message: import("convex/values").VString<string, "required">;
68
+ metadata: import("convex/values").VRecord<Record<string, any> | undefined, import("convex/values").VString<string, "required">, import("convex/values").VAny<any, "required", string>, "optional", string>;
69
+ }, "required", "spanId" | "metadata" | `metadata.${string}` | "severity" | "timestamp" | "message">, {
70
+ by_spanId: ["spanId", "_creationTime"];
71
+ by_severity: ["severity", "_creationTime"];
72
+ }, {}, {}>;
73
+ }, true>;
74
+ export default _default;
75
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,+PAI3B,CAAC;AAEF,eAAO,MAAM,eAAe,gMAG3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,mPAI7B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,wBAyCG"}
@@ -0,0 +1,46 @@
1
+ import { defineSchema, defineTable } from "convex/server";
2
+ import { v } from "convex/values";
3
+ export const statusValidator = v.union(v.literal("pending"), v.literal("success"), v.literal("error"));
4
+ export const sourceValidator = v.union(v.literal("frontend"), v.literal("backend"));
5
+ export const severityValidator = v.union(v.literal("info"), v.literal("warn"), v.literal("error"));
6
+ export default defineSchema({
7
+ traces: defineTable({
8
+ status: statusValidator,
9
+ sampleRate: v.number(),
10
+ preserve: v.optional(v.boolean()),
11
+ updatedAt: v.number(),
12
+ metadata: v.optional(v.record(v.string(), v.any())),
13
+ userId: v.optional(v.string()),
14
+ })
15
+ .index("by_status", ["status"])
16
+ .index("by_userId", ["userId"])
17
+ .index("by_status_and_userId", ["status", "userId"]),
18
+ spans: defineTable({
19
+ traceId: v.id("traces"),
20
+ parentSpanId: v.optional(v.id("spans")),
21
+ spanName: v.string(),
22
+ source: sourceValidator,
23
+ startTime: v.number(),
24
+ endTime: v.optional(v.number()),
25
+ duration: v.optional(v.number()),
26
+ status: statusValidator,
27
+ functionName: v.optional(v.string()),
28
+ args: v.optional(v.any()),
29
+ result: v.optional(v.any()),
30
+ error: v.optional(v.string()),
31
+ metadata: v.optional(v.record(v.string(), v.any())),
32
+ })
33
+ .index("by_traceId", ["traceId"])
34
+ .index("by_parentSpanId", ["parentSpanId"])
35
+ .index("by_status", ["status"]),
36
+ logs: defineTable({
37
+ spanId: v.id("spans"),
38
+ timestamp: v.number(),
39
+ severity: severityValidator,
40
+ message: v.string(),
41
+ metadata: v.optional(v.record(v.string(), v.any())),
42
+ })
43
+ .index("by_spanId", ["spanId"])
44
+ .index("by_severity", ["severity"]),
45
+ });
46
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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"}