autotel-tanstack 1.11.0 → 1.12.1
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/bin/intent.js +6 -0
- package/package.json +16 -8
- package/skills/autotel-tanstack/SKILL.md +99 -0
package/bin/intent.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Auto-generated by @tanstack/intent setup
|
|
3
|
+
// Exposes the intent end-user CLI for consumers of this library.
|
|
4
|
+
// Commit this file, then add to your package.json:
|
|
5
|
+
// "bin": { "intent": "./bin/intent.js" }
|
|
6
|
+
await import('@tanstack/intent/intent-library');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autotel-tanstack",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.1",
|
|
4
4
|
"description": "OpenTelemetry instrumentation for TanStack Start - automatic tracing for server functions, middleware, and route loaders",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -95,7 +95,10 @@
|
|
|
95
95
|
"files": [
|
|
96
96
|
"dist",
|
|
97
97
|
"src",
|
|
98
|
-
"README.md"
|
|
98
|
+
"README.md",
|
|
99
|
+
"skills",
|
|
100
|
+
"!skills/_artifacts",
|
|
101
|
+
"bin"
|
|
99
102
|
],
|
|
100
103
|
"keywords": [
|
|
101
104
|
"opentelemetry",
|
|
@@ -117,11 +120,13 @@
|
|
|
117
120
|
"license": "MIT",
|
|
118
121
|
"dependencies": {
|
|
119
122
|
"@opentelemetry/api": "^1.9.0",
|
|
120
|
-
"
|
|
123
|
+
"@tanstack/intent": "^0.0.13",
|
|
124
|
+
"autotel": "2.23.1",
|
|
125
|
+
"autotel-adapters": "0.1.2"
|
|
121
126
|
},
|
|
122
127
|
"peerDependencies": {
|
|
123
|
-
"@tanstack/react-start": "^1.
|
|
124
|
-
"@tanstack/solid-start": "^1.
|
|
128
|
+
"@tanstack/react-start": "^1.166.2",
|
|
129
|
+
"@tanstack/solid-start": "^1.166.2"
|
|
125
130
|
},
|
|
126
131
|
"peerDependenciesMeta": {
|
|
127
132
|
"@tanstack/react-start": {
|
|
@@ -132,9 +137,9 @@
|
|
|
132
137
|
}
|
|
133
138
|
},
|
|
134
139
|
"devDependencies": {
|
|
135
|
-
"@opentelemetry/sdk-trace-base": "^2.
|
|
136
|
-
"@tanstack/react-router": "^1.
|
|
137
|
-
"@types/node": "^25.3.
|
|
140
|
+
"@opentelemetry/sdk-trace-base": "^2.6.0",
|
|
141
|
+
"@tanstack/react-router": "^1.166.2",
|
|
142
|
+
"@types/node": "^25.3.5",
|
|
138
143
|
"rimraf": "^6.1.3",
|
|
139
144
|
"tsup": "^8.5.1",
|
|
140
145
|
"typescript": "^5.9.3",
|
|
@@ -150,6 +155,9 @@
|
|
|
150
155
|
"url": "https://github.com/jagreehal/autotel/issues"
|
|
151
156
|
},
|
|
152
157
|
"homepage": "https://github.com/jagreehal/autotel/tree/main/packages/autotel-tanstack#readme",
|
|
158
|
+
"bin": {
|
|
159
|
+
"intent": "./bin/intent.js"
|
|
160
|
+
},
|
|
153
161
|
"scripts": {
|
|
154
162
|
"build": "tsup",
|
|
155
163
|
"dev": "tsup --watch",
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autotel-tanstack
|
|
3
|
+
description: >
|
|
4
|
+
OpenTelemetry for TanStack Start. Trace server functions, route loaders, middleware, and request handlers. Supports zero-config, middleware-based, and explicit wrapper patterns.
|
|
5
|
+
type: integration
|
|
6
|
+
library: autotel-tanstack
|
|
7
|
+
library_version: '1.12.0'
|
|
8
|
+
sources:
|
|
9
|
+
- jagreehal/autotel:packages/autotel-tanstack/CLAUDE.md
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# autotel-tanstack
|
|
13
|
+
|
|
14
|
+
OpenTelemetry instrumentation for TanStack Start (React Start and Solid Start).
|
|
15
|
+
|
|
16
|
+
## Quick Start — pick one approach
|
|
17
|
+
|
|
18
|
+
### Zero-config
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import 'autotel-tanstack/auto';
|
|
22
|
+
// Set env: OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Middleware (recommended)
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { tracingMiddleware } from 'autotel-tanstack/middleware';
|
|
29
|
+
|
|
30
|
+
// Request-level tracing
|
|
31
|
+
export const startInstance = createStart(() => ({
|
|
32
|
+
requestMiddleware: [tracingMiddleware()],
|
|
33
|
+
}));
|
|
34
|
+
|
|
35
|
+
// Server function tracing
|
|
36
|
+
export const getUser = createServerFn({ method: 'GET' })
|
|
37
|
+
.middleware([tracingMiddleware({ type: 'function' })])
|
|
38
|
+
.handler(async ({ data: id }) => db.users.findUnique({ where: { id } }));
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Explicit wrappers
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { traceServerFn } from 'autotel-tanstack/server-functions';
|
|
45
|
+
import { traceLoader } from 'autotel-tanstack/loaders';
|
|
46
|
+
import { wrapStartHandler } from 'autotel-tanstack/handlers';
|
|
47
|
+
|
|
48
|
+
// Server function
|
|
49
|
+
export const getUser = traceServerFn(
|
|
50
|
+
createServerFn({ method: 'GET' }).handler(async ({ data }) => { ... }),
|
|
51
|
+
{ name: 'getUser', captureArgs: true },
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
// Route loader
|
|
55
|
+
export const Route = createFileRoute('/users/$userId')({
|
|
56
|
+
loader: traceLoader(async ({ params }) => {
|
|
57
|
+
return db.users.findUnique({ where: { id: params.userId } });
|
|
58
|
+
}),
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// Request handler
|
|
62
|
+
export default wrapStartHandler({
|
|
63
|
+
service: 'my-app',
|
|
64
|
+
endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
|
|
65
|
+
})(createStartHandler(defaultStreamHandler));
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Configuration Options
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
tracingMiddleware({
|
|
72
|
+
captureHeaders: ['x-request-id'], // Request headers to capture
|
|
73
|
+
captureArgs: true, // Capture server function arguments
|
|
74
|
+
captureResults: false, // Capture return values
|
|
75
|
+
captureParams: true, // Capture route params
|
|
76
|
+
excludePaths: ['/health', /^\/api\/internal/],
|
|
77
|
+
sampling: 'adaptive', // 'adaptive' | 'always' | 'never'
|
|
78
|
+
customAttributes: (ctx) => ({ 'app.tenant': ctx.tenant }),
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Entry Points (tree-shaking)
|
|
83
|
+
|
|
84
|
+
| Import | What |
|
|
85
|
+
| ----------------------------------- | ------------------------- |
|
|
86
|
+
| `autotel-tanstack` | Everything |
|
|
87
|
+
| `autotel-tanstack/auto` | Zero-config |
|
|
88
|
+
| `autotel-tanstack/middleware` | Middleware only |
|
|
89
|
+
| `autotel-tanstack/server-functions` | Server function wrappers |
|
|
90
|
+
| `autotel-tanstack/loaders` | Loader wrappers |
|
|
91
|
+
| `autotel-tanstack/handlers` | Handler wrappers |
|
|
92
|
+
| `autotel-tanstack/context` | Trace context propagation |
|
|
93
|
+
|
|
94
|
+
## Common Mistakes
|
|
95
|
+
|
|
96
|
+
- Do NOT use `tracingMiddleware()` in browser — it no-ops. Server functions run server-side only.
|
|
97
|
+
- Do NOT forget to wrap the start handler — without it, there's no root span for requests.
|
|
98
|
+
- Use `captureArgs: true` carefully — it serializes function arguments into span attributes. Avoid for large payloads.
|
|
99
|
+
- Prefer middleware over explicit wrappers — middleware composes with TanStack's built-in patterns.
|