@trigger.dev/sdk 4.5.13 → 4.5.15
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/dist/commonjs/v3/ai-shared.d.ts +7 -0
- package/dist/commonjs/v3/ai-shared.js +15 -0
- package/dist/commonjs/v3/ai-shared.js.map +1 -1
- package/dist/commonjs/v3/ai.d.ts +11 -1
- package/dist/commonjs/v3/ai.js +11 -3
- package/dist/commonjs/v3/ai.js.map +1 -1
- package/dist/commonjs/v3/chat-client.js +1 -1
- package/dist/commonjs/v3/chat-client.js.map +1 -1
- package/dist/commonjs/v3/chat-server.d.ts +2 -1
- package/dist/commonjs/v3/chat-server.js +3 -3
- package/dist/commonjs/v3/chat-server.js.map +1 -1
- package/dist/commonjs/v3/sessions.d.ts +42 -13
- package/dist/commonjs/v3/sessions.js +85 -16
- package/dist/commonjs/v3/sessions.js.map +1 -1
- package/dist/commonjs/v3/streams.js +1 -0
- package/dist/commonjs/v3/streams.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/esm/v3/ai-shared.d.ts +7 -0
- package/dist/esm/v3/ai-shared.js +14 -0
- package/dist/esm/v3/ai-shared.js.map +1 -1
- package/dist/esm/v3/ai.d.ts +11 -1
- package/dist/esm/v3/ai.js +12 -4
- package/dist/esm/v3/ai.js.map +1 -1
- package/dist/esm/v3/chat-client.js +2 -2
- package/dist/esm/v3/chat-client.js.map +1 -1
- package/dist/esm/v3/chat-server.d.ts +2 -1
- package/dist/esm/v3/chat-server.js +3 -3
- package/dist/esm/v3/chat-server.js.map +1 -1
- package/dist/esm/v3/sessions.d.ts +42 -13
- package/dist/esm/v3/sessions.js +85 -16
- package/dist/esm/v3/sessions.js.map +1 -1
- package/dist/esm/v3/streams.js +1 -0
- package/dist/esm/v3/streams.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/docs/ai-chat/reference.mdx +1 -1
- package/docs/ai-chat/sessions.mdx +1 -1
- package/docs/ai-chat/side-channels.mdx +172 -0
- package/docs/mcp-tools.mdx +37 -0
- package/docs/realtime/auth.mdx +18 -0
- package/docs/realtime/react-hooks/session-stream.mdx +126 -0
- package/docs/realtime/react-hooks/streams.mdx +71 -3
- package/docs/self-hosting/security.mdx +1 -1
- package/docs/tasks/streams.mdx +3 -0
- package/package.json +5 -2
- package/dist/commonjs/v3/auth.test.d.ts +0 -1
- package/dist/commonjs/v3/auth.test.js +0 -149
- package/dist/commonjs/v3/auth.test.js.map +0 -1
- package/dist/commonjs/v3/batchDebounce.test.d.ts +0 -1
- package/dist/commonjs/v3/batchDebounce.test.js +0 -189
- package/dist/commonjs/v3/batchDebounce.test.js.map +0 -1
- package/dist/commonjs/v3/chat-server.test.d.ts +0 -1
- package/dist/commonjs/v3/chat-server.test.js +0 -713
- package/dist/commonjs/v3/chat-server.test.js.map +0 -1
- package/dist/commonjs/v3/chat-tab-coordinator.test.d.ts +0 -1
- package/dist/commonjs/v3/chat-tab-coordinator.test.js +0 -140
- package/dist/commonjs/v3/chat-tab-coordinator.test.js.map +0 -1
- package/dist/commonjs/v3/chat.test.d.ts +0 -1
- package/dist/commonjs/v3/chat.test.js +0 -1838
- package/dist/commonjs/v3/chat.test.js.map +0 -1
- package/dist/commonjs/v3/createStartSessionAction.test.d.ts +0 -1
- package/dist/commonjs/v3/createStartSessionAction.test.js +0 -176
- package/dist/commonjs/v3/createStartSessionAction.test.js.map +0 -1
- package/dist/commonjs/v3/runs-bulk.test.d.ts +0 -1
- package/dist/commonjs/v3/runs-bulk.test.js +0 -141
- package/dist/commonjs/v3/runs-bulk.test.js.map +0 -1
- package/dist/commonjs/v3/schedules/index.test.d.ts +0 -1
- package/dist/commonjs/v3/schedules/index.test.js +0 -49
- package/dist/commonjs/v3/schedules/index.test.js.map +0 -1
- package/dist/commonjs/v3/schedules/index.types.test.d.ts +0 -1
- package/dist/commonjs/v3/schedules/index.types.test.js +0 -93
- package/dist/commonjs/v3/schedules/index.types.test.js.map +0 -1
- package/dist/commonjs/v3/sessions.test.d.ts +0 -1
- package/dist/commonjs/v3/sessions.test.js +0 -154
- package/dist/commonjs/v3/sessions.test.js.map +0 -1
- package/dist/commonjs/v3/shared.test.d.ts +0 -1
- package/dist/commonjs/v3/shared.test.js +0 -236
- package/dist/commonjs/v3/shared.test.js.map +0 -1
- package/dist/commonjs/v3/streams.test.d.ts +0 -1
- package/dist/commonjs/v3/streams.test.js +0 -51
- package/dist/commonjs/v3/streams.test.js.map +0 -1
- package/dist/commonjs/v3/triggerClient.test.d.ts +0 -1
- package/dist/commonjs/v3/triggerClient.test.js +0 -226
- package/dist/commonjs/v3/triggerClient.test.js.map +0 -1
- package/dist/commonjs/v3/triggerClient.types.test.d.ts +0 -1
- package/dist/commonjs/v3/triggerClient.types.test.js +0 -123
- package/dist/commonjs/v3/triggerClient.types.test.js.map +0 -1
- package/dist/esm/v3/auth.test.d.ts +0 -1
- package/dist/esm/v3/auth.test.js +0 -147
- package/dist/esm/v3/auth.test.js.map +0 -1
- package/dist/esm/v3/batchDebounce.test.d.ts +0 -1
- package/dist/esm/v3/batchDebounce.test.js +0 -187
- package/dist/esm/v3/batchDebounce.test.js.map +0 -1
- package/dist/esm/v3/chat-server.test.d.ts +0 -1
- package/dist/esm/v3/chat-server.test.js +0 -711
- package/dist/esm/v3/chat-server.test.js.map +0 -1
- package/dist/esm/v3/chat-tab-coordinator.test.d.ts +0 -1
- package/dist/esm/v3/chat-tab-coordinator.test.js +0 -138
- package/dist/esm/v3/chat-tab-coordinator.test.js.map +0 -1
- package/dist/esm/v3/chat.test.d.ts +0 -1
- package/dist/esm/v3/chat.test.js +0 -1836
- package/dist/esm/v3/chat.test.js.map +0 -1
- package/dist/esm/v3/createStartSessionAction.test.d.ts +0 -1
- package/dist/esm/v3/createStartSessionAction.test.js +0 -174
- package/dist/esm/v3/createStartSessionAction.test.js.map +0 -1
- package/dist/esm/v3/runs-bulk.test.d.ts +0 -1
- package/dist/esm/v3/runs-bulk.test.js +0 -139
- package/dist/esm/v3/runs-bulk.test.js.map +0 -1
- package/dist/esm/v3/schedules/index.test.d.ts +0 -1
- package/dist/esm/v3/schedules/index.test.js +0 -47
- package/dist/esm/v3/schedules/index.test.js.map +0 -1
- package/dist/esm/v3/schedules/index.types.test.d.ts +0 -1
- package/dist/esm/v3/schedules/index.types.test.js +0 -91
- package/dist/esm/v3/schedules/index.types.test.js.map +0 -1
- package/dist/esm/v3/sessions.test.d.ts +0 -1
- package/dist/esm/v3/sessions.test.js +0 -152
- package/dist/esm/v3/sessions.test.js.map +0 -1
- package/dist/esm/v3/shared.test.d.ts +0 -1
- package/dist/esm/v3/shared.test.js +0 -234
- package/dist/esm/v3/shared.test.js.map +0 -1
- package/dist/esm/v3/streams.test.d.ts +0 -1
- package/dist/esm/v3/streams.test.js +0 -49
- package/dist/esm/v3/streams.test.js.map +0 -1
- package/dist/esm/v3/triggerClient.test.d.ts +0 -1
- package/dist/esm/v3/triggerClient.test.js +0 -224
- package/dist/esm/v3/triggerClient.test.js.map +0 -1
- package/dist/esm/v3/triggerClient.types.test.d.ts +0 -1
- package/dist/esm/v3/triggerClient.types.test.js +0 -88
- package/dist/esm/v3/triggerClient.types.test.js.map +0 -1
|
@@ -130,16 +130,84 @@ export function AIStreamViewer({
|
|
|
130
130
|
The `useRealtimeStream` hook accepts the following options:
|
|
131
131
|
|
|
132
132
|
```tsx
|
|
133
|
-
const { parts, error } = useRealtimeStream(streamOrRunId, streamKeyOrOptions, {
|
|
133
|
+
const { parts, lastEventId, error } = useRealtimeStream(streamOrRunId, streamKeyOrOptions, {
|
|
134
134
|
accessToken: "pk_...", // Required: Public access token
|
|
135
135
|
baseURL: "https://api.trigger.dev", // Optional: Custom API URL
|
|
136
136
|
timeoutInSeconds: 60, // Optional: Timeout (default: 60)
|
|
137
|
-
|
|
137
|
+
from: "beginning", // Optional: "beginning" (default) or "latest"
|
|
138
|
+
maxParts: 100, // Optional: keep only the most recent N parts (default: unbounded)
|
|
139
|
+
lastEventId: undefined, // Optional: resume cursor (takes precedence over startIndex)
|
|
140
|
+
startIndex: 0, // Optional: start from a specific chunk index
|
|
138
141
|
throttleInMs: 16, // Optional: Throttle updates (default: 16ms)
|
|
139
|
-
onData: (chunk) => {}, // Optional:
|
|
142
|
+
onData: (chunk) => {}, // Optional: callback for each chunk
|
|
143
|
+
onParts: (batch) => {}, // Optional: callback per throttled batch, each with its event id
|
|
144
|
+
refreshAccessToken: async () => "pk_...", // Optional: mint a fresh token on expiry
|
|
140
145
|
});
|
|
141
146
|
```
|
|
142
147
|
|
|
148
|
+
The hook returns `lastEventId`, the cursor of the last part it received. Persist it and pass it back as the `lastEventId` option to resume later.
|
|
149
|
+
|
|
150
|
+
### Live view: start from the latest record
|
|
151
|
+
|
|
152
|
+
By default a subscriber replays the whole stream history, then live-tails. Pass `from: "latest"` to start at the current tail (the latest record, then live updates) instead of replaying, and `maxParts` to keep memory bounded. Together they give a last-value view:
|
|
153
|
+
|
|
154
|
+
```tsx
|
|
155
|
+
"use client";
|
|
156
|
+
|
|
157
|
+
import { useRealtimeStream } from "@trigger.dev/react-hooks";
|
|
158
|
+
|
|
159
|
+
export function LatestFrame({ runId, accessToken }: { runId: string; accessToken: string }) {
|
|
160
|
+
const { parts } = useRealtimeStream<{ url: string }>(runId, "frames", {
|
|
161
|
+
accessToken,
|
|
162
|
+
from: "latest", // start at the latest frame, then live updates
|
|
163
|
+
maxParts: 1, // keep just the most recent frame
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
const frame = parts.at(-1);
|
|
167
|
+
return frame ? <img src={frame.url} alt="latest frame" /> : null;
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
<Note>
|
|
172
|
+
`from: "latest"` requires a server that supports it. Against an older server a client that passes
|
|
173
|
+
it degrades safely to a full replay.
|
|
174
|
+
</Note>
|
|
175
|
+
|
|
176
|
+
### Resume across a page reload
|
|
177
|
+
|
|
178
|
+
The hook resumes automatically across a component remount. A full page reload clears in-memory
|
|
179
|
+
state, so to resume there, persist the returned `lastEventId` and pass it back on the next load. The
|
|
180
|
+
subscription then continues after that record with no replay and no gap:
|
|
181
|
+
|
|
182
|
+
```tsx
|
|
183
|
+
const cursorKey = `frames-cursor:${runId}`; // scope the key to this stream
|
|
184
|
+
const saved = localStorage.getItem(cursorKey) ?? undefined;
|
|
185
|
+
|
|
186
|
+
const { parts, lastEventId } = useRealtimeStream<{ url: string }>(runId, "frames", {
|
|
187
|
+
accessToken,
|
|
188
|
+
lastEventId: saved, // resume where the previous session left off
|
|
189
|
+
onParts: (batch) => localStorage.setItem(cursorKey, batch.at(-1)!.id),
|
|
190
|
+
});
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Refresh an expired access token
|
|
194
|
+
|
|
195
|
+
Public access tokens are short-lived. For a long-running subscription, pass `refreshAccessToken` to
|
|
196
|
+
mint a fresh token when the server rejects the connection with a 401/403. The subscription re-mints
|
|
197
|
+
once and reconnects; with no refresher, auth errors stay terminal:
|
|
198
|
+
|
|
199
|
+
```tsx
|
|
200
|
+
const { parts } = useRealtimeStream<{ url: string }>(runId, "frames", {
|
|
201
|
+
accessToken,
|
|
202
|
+
refreshAccessToken: async () => {
|
|
203
|
+
const res = await fetch("/api/realtime-token"); // your backend mints a fresh public token
|
|
204
|
+
return (await res.json()).token;
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
`refreshAccessToken` is also available on [`useApiClient` and `TriggerAuthContext`](/realtime/auth), so every hook under a provider shares one refresher.
|
|
210
|
+
|
|
143
211
|
### Using Default Stream
|
|
144
212
|
|
|
145
213
|
You can omit the stream key to use the default stream:
|
|
@@ -15,7 +15,7 @@ We take the security of Trigger.dev seriously, for both Cloud and self-hosted de
|
|
|
15
15
|
<Steps>
|
|
16
16
|
<Step title="Choose a private channel">
|
|
17
17
|
- **GitHub (preferred):** open a private report from the repository's **Security** tab using **"Report a vulnerability"** ([direct link](https://github.com/triggerdotdev/trigger.dev/security/advisories/new)).
|
|
18
|
-
- **Email:** `security
|
|
18
|
+
- **Email:** `security@trigger.dev`
|
|
19
19
|
</Step>
|
|
20
20
|
<Step title="Include the details">
|
|
21
21
|
A description and impact, steps to reproduce (a proof of concept helps), affected versions/components, and any suggested fix.
|
package/docs/tasks/streams.mdx
CHANGED
|
@@ -144,9 +144,12 @@ With options:
|
|
|
144
144
|
const stream = await aiStream.read(runId, {
|
|
145
145
|
timeoutInSeconds: 60, // Stop if no data for 60 seconds
|
|
146
146
|
startIndex: 10, // Start from the 10th chunk
|
|
147
|
+
from: "latest", // Or skip history and read only new records from now
|
|
147
148
|
});
|
|
148
149
|
```
|
|
149
150
|
|
|
151
|
+
Pass `from: "latest"` to start at the current tail and receive only records appended after the read connects, instead of replaying from the beginning.
|
|
152
|
+
|
|
150
153
|
#### Appending to a Stream
|
|
151
154
|
|
|
152
155
|
Use the defined stream's `append()` method to add a single chunk:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trigger.dev/sdk",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.15",
|
|
4
4
|
"description": "trigger.dev Node.JS SDK",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -20,6 +20,9 @@
|
|
|
20
20
|
],
|
|
21
21
|
"tshy": {
|
|
22
22
|
"selfLink": false,
|
|
23
|
+
"exclude": [
|
|
24
|
+
"src/**/*.test.ts"
|
|
25
|
+
],
|
|
23
26
|
"main": true,
|
|
24
27
|
"module": true,
|
|
25
28
|
"project": "./tsconfig.build.json",
|
|
@@ -66,7 +69,7 @@
|
|
|
66
69
|
"dependencies": {
|
|
67
70
|
"@opentelemetry/api": "1.9.1",
|
|
68
71
|
"@opentelemetry/semantic-conventions": "1.41.1",
|
|
69
|
-
"@trigger.dev/core": "4.5.
|
|
72
|
+
"@trigger.dev/core": "4.5.15",
|
|
70
73
|
"uncrypto": "^0.1.3"
|
|
71
74
|
},
|
|
72
75
|
"devDependencies": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const node_http_1 = require("node:http");
|
|
4
|
-
const v3_1 = require("@trigger.dev/core/v3");
|
|
5
|
-
const jwt_1 = require("@trigger.dev/core/v3/jwt");
|
|
6
|
-
const vitest_1 = require("vitest");
|
|
7
|
-
const auth_js_1 = require("./auth.js");
|
|
8
|
-
(0, vitest_1.describe)("public token API key routing", () => {
|
|
9
|
-
let server;
|
|
10
|
-
let baseUrl;
|
|
11
|
-
let requests;
|
|
12
|
-
let publicTokenStatus;
|
|
13
|
-
(0, vitest_1.beforeEach)(async () => {
|
|
14
|
-
requests = [];
|
|
15
|
-
publicTokenStatus = 200;
|
|
16
|
-
server = (0, node_http_1.createServer)((request, response) => {
|
|
17
|
-
void handleRequest(request, response, requests, () => publicTokenStatus);
|
|
18
|
-
});
|
|
19
|
-
await new Promise((resolve) => {
|
|
20
|
-
server.listen(0, "127.0.0.1", () => {
|
|
21
|
-
const address = server.address();
|
|
22
|
-
baseUrl = `http://127.0.0.1:${address.port}`;
|
|
23
|
-
resolve();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
(0, vitest_1.afterEach)(async () => {
|
|
28
|
-
await new Promise((resolve) => server.close(() => resolve()));
|
|
29
|
-
});
|
|
30
|
-
(0, vitest_1.it)("uses server minting for additional keys", async () => {
|
|
31
|
-
const key = "tr_prod_sk_0123456789abcdefghijklmn";
|
|
32
|
-
const token = await v3_1.apiClientManager.runWithConfig({ baseURL: baseUrl, accessToken: key }, () => auth_js_1.auth.createPublicToken({
|
|
33
|
-
scopes: { read: { runs: ["run_123"] } },
|
|
34
|
-
expirationTime: new Date("2030-01-01T00:00:00.000Z"),
|
|
35
|
-
realtime: { skipColumns: ["payload"] },
|
|
36
|
-
}));
|
|
37
|
-
(0, vitest_1.expect)(token).toBe("server-minted-token");
|
|
38
|
-
(0, vitest_1.expect)(requests).toEqual([
|
|
39
|
-
{
|
|
40
|
-
method: "POST",
|
|
41
|
-
url: "/api/v1/auth/public-tokens",
|
|
42
|
-
authorization: `Bearer ${key}`,
|
|
43
|
-
body: {
|
|
44
|
-
scopes: ["read:runs:run_123"],
|
|
45
|
-
expirationTime: 1893456000,
|
|
46
|
-
realtime: { skipColumns: ["payload"] },
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
]);
|
|
50
|
-
});
|
|
51
|
-
(0, vitest_1.it)("server-mints trigger tokens with one-time-use semantics", async () => {
|
|
52
|
-
const key = "tr_dev_sk_0123456789abcdefghijklmn";
|
|
53
|
-
await v3_1.apiClientManager.runWithConfig({ baseURL: baseUrl, accessToken: key }, () => auth_js_1.auth.createTriggerPublicToken(["task-one", "task-two"], { multipleUse: true }));
|
|
54
|
-
(0, vitest_1.expect)(requests[0]?.body).toEqual({
|
|
55
|
-
scopes: ["trigger:tasks:task-one", "trigger:tasks:task-two"],
|
|
56
|
-
oneTimeUse: false,
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
(0, vitest_1.it)("server-mints batch trigger tokens for additional keys", async () => {
|
|
60
|
-
const key = "tr_stg_sk_0123456789abcdefghijklmn";
|
|
61
|
-
await v3_1.apiClientManager.runWithConfig({ baseURL: baseUrl, accessToken: key }, () => auth_js_1.auth.createBatchTriggerPublicToken("batch-task", {
|
|
62
|
-
expirationTime: "2h",
|
|
63
|
-
multipleUse: false,
|
|
64
|
-
realtime: { skipColumns: ["payload"] },
|
|
65
|
-
}));
|
|
66
|
-
(0, vitest_1.expect)(requests).toEqual([
|
|
67
|
-
{
|
|
68
|
-
method: "POST",
|
|
69
|
-
url: "/api/v1/auth/public-tokens",
|
|
70
|
-
authorization: `Bearer ${key}`,
|
|
71
|
-
body: {
|
|
72
|
-
scopes: ["batchTrigger:tasks:batch-task"],
|
|
73
|
-
expirationTime: "2h",
|
|
74
|
-
oneTimeUse: true,
|
|
75
|
-
realtime: { skipColumns: ["payload"] },
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
]);
|
|
79
|
-
});
|
|
80
|
-
(0, vitest_1.it)("keeps root key self-minting unchanged", async () => {
|
|
81
|
-
const key = "tr_prod_0123456789abcdefghijklmn";
|
|
82
|
-
const token = await v3_1.apiClientManager.runWithConfig({ baseURL: baseUrl, accessToken: key }, () => auth_js_1.auth.createPublicToken({ scopes: { read: { runs: true } } }));
|
|
83
|
-
(0, vitest_1.expect)(requests.map((request) => request.url)).toEqual(["/api/v1/auth/jwt/claims"]);
|
|
84
|
-
const validation = await (0, jwt_1.validateJWT)(token, key);
|
|
85
|
-
(0, vitest_1.expect)(validation.ok).toBe(true);
|
|
86
|
-
if (!validation.ok)
|
|
87
|
-
return;
|
|
88
|
-
(0, vitest_1.expect)(validation.payload).toMatchObject({
|
|
89
|
-
sub: "env_test",
|
|
90
|
-
pub: true,
|
|
91
|
-
scopes: ["read:runs"],
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
vitest_1.it.each([
|
|
95
|
-
["no options at all", undefined],
|
|
96
|
-
["an empty scopes object", {}],
|
|
97
|
-
["a scope group with nothing selected", { read: {} }],
|
|
98
|
-
])("keeps root-key behavior unchanged for %s", async (_label, scopes) => {
|
|
99
|
-
const key = "tr_prod_0123456789abcdefghijklmn";
|
|
100
|
-
const token = await v3_1.apiClientManager.runWithConfig({ baseURL: baseUrl, accessToken: key }, () => auth_js_1.auth.createPublicToken(scopes === undefined ? undefined : { scopes }));
|
|
101
|
-
(0, vitest_1.expect)(requests.map((request) => request.url)).toEqual(["/api/v1/auth/jwt/claims"]);
|
|
102
|
-
const validation = await (0, jwt_1.validateJWT)(token, key);
|
|
103
|
-
(0, vitest_1.expect)(validation.ok).toBe(true);
|
|
104
|
-
});
|
|
105
|
-
vitest_1.it.each([
|
|
106
|
-
["no options at all", undefined],
|
|
107
|
-
["an empty scopes object", {}],
|
|
108
|
-
["a scope group with nothing selected", { read: {} }],
|
|
109
|
-
])("rejects %s clearly for additional keys", async (_label, scopes) => {
|
|
110
|
-
const key = "tr_prod_sk_0123456789abcdefghijklmn";
|
|
111
|
-
const promise = v3_1.apiClientManager.runWithConfig({ baseURL: baseUrl, accessToken: key }, () => auth_js_1.auth.createPublicToken(scopes === undefined ? undefined : { scopes }));
|
|
112
|
-
await (0, vitest_1.expect)(promise).rejects.toThrow("requires at least one scope when using an additional API key");
|
|
113
|
-
(0, vitest_1.expect)(requests).toEqual([]);
|
|
114
|
-
});
|
|
115
|
-
(0, vitest_1.it)("explains how to recover when the server lacks the mint endpoint", async () => {
|
|
116
|
-
publicTokenStatus = 404;
|
|
117
|
-
const promise = v3_1.apiClientManager.runWithConfig({
|
|
118
|
-
baseURL: baseUrl,
|
|
119
|
-
accessToken: "tr_prod_sk_0123456789abcdefghijklmn",
|
|
120
|
-
}, () => auth_js_1.auth.createPublicToken({ scopes: { read: { runs: true } } }));
|
|
121
|
-
await (0, vitest_1.expect)(promise).rejects.toThrow("Upgrade the server or use the root API key");
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
async function handleRequest(request, response, requests, publicTokenStatus) {
|
|
125
|
-
const chunks = [];
|
|
126
|
-
for await (const chunk of request) {
|
|
127
|
-
chunks.push(Buffer.from(chunk));
|
|
128
|
-
}
|
|
129
|
-
const rawBody = Buffer.concat(chunks).toString();
|
|
130
|
-
requests.push({
|
|
131
|
-
method: request.method ?? "",
|
|
132
|
-
url: request.url ?? "",
|
|
133
|
-
authorization: request.headers.authorization,
|
|
134
|
-
body: rawBody ? JSON.parse(rawBody) : undefined,
|
|
135
|
-
});
|
|
136
|
-
if (request.url === "/api/v1/auth/jwt/claims") {
|
|
137
|
-
return json(response, { sub: "env_test", pub: true });
|
|
138
|
-
}
|
|
139
|
-
if (request.url === "/api/v1/auth/public-tokens") {
|
|
140
|
-
const status = publicTokenStatus();
|
|
141
|
-
return json(response, status === 200 ? { token: "server-minted-token" } : { error: "Not found" }, status);
|
|
142
|
-
}
|
|
143
|
-
return json(response, { error: "Not found" }, 404);
|
|
144
|
-
}
|
|
145
|
-
function json(response, body, status = 200) {
|
|
146
|
-
response.writeHead(status, { "content-type": "application/json" });
|
|
147
|
-
response.end(JSON.stringify(body));
|
|
148
|
-
}
|
|
149
|
-
//# sourceMappingURL=auth.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../../src/v3/auth.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const v3_1 = require("@trigger.dev/core/v3");
|
|
4
|
-
const test_1 = require("@trigger.dev/core/v3/test");
|
|
5
|
-
const vitest_1 = require("vitest");
|
|
6
|
-
const batch_js_1 = require("./batch.js");
|
|
7
|
-
const shared_js_1 = require("./shared.js");
|
|
8
|
-
const tasks_js_1 = require("./tasks.js");
|
|
9
|
-
const debounceFor = (i) => ({
|
|
10
|
-
key: `warm-conn-notify:${i}`,
|
|
11
|
-
delay: "12h",
|
|
12
|
-
maxDelay: "24h",
|
|
13
|
-
mode: "trailing",
|
|
14
|
-
});
|
|
15
|
-
const EXPECTED = [debounceFor(0), debounceFor(1)];
|
|
16
|
-
const taskA = (0, shared_js_1.createTask)({
|
|
17
|
-
id: "task-a",
|
|
18
|
-
run: async (_payload) => ({ ok: true }),
|
|
19
|
-
});
|
|
20
|
-
const taskB = (0, shared_js_1.createTask)({
|
|
21
|
-
id: "task-b",
|
|
22
|
-
run: async (_payload) => ({ ok: true }),
|
|
23
|
-
});
|
|
24
|
-
/**
|
|
25
|
-
* Captures the NDJSON item stream the SDK sends in phase 2 of a batch trigger,
|
|
26
|
-
* answering the only question these tests care about: what actually reached the
|
|
27
|
-
* wire. Phase 1 (create) and the item stream get canned success responses.
|
|
28
|
-
*/
|
|
29
|
-
function installBatchCapture() {
|
|
30
|
-
const sent = [];
|
|
31
|
-
const originalFetch = globalThis.fetch;
|
|
32
|
-
globalThis.fetch = (async (input, init) => {
|
|
33
|
-
const url = typeof input === "string" ? input : (input?.url ?? String(input));
|
|
34
|
-
if (url.endsWith("/api/v3/batches")) {
|
|
35
|
-
const body = JSON.parse(String(init?.body));
|
|
36
|
-
return Response.json({ id: "batch_test", runCount: body.runCount, isCached: false });
|
|
37
|
-
}
|
|
38
|
-
if (url.includes("/api/v3/batches/") && url.endsWith("/items")) {
|
|
39
|
-
const ndjson = await new Response(init?.body).text();
|
|
40
|
-
const lines = ndjson.split("\n").filter((line) => line.trim().length > 0);
|
|
41
|
-
sent.push(...lines.map((line) => JSON.parse(line)));
|
|
42
|
-
return Response.json({
|
|
43
|
-
id: "batch_test",
|
|
44
|
-
itemsAccepted: lines.length,
|
|
45
|
-
itemsDeduplicated: 0,
|
|
46
|
-
sealed: true,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
throw new Error(`Unexpected request during batch trigger: ${url}`);
|
|
50
|
-
});
|
|
51
|
-
return {
|
|
52
|
-
debounceOptions: () => [...sent].sort((a, b) => a.index - b.index).map((item) => item.options?.debounce),
|
|
53
|
-
restore: () => {
|
|
54
|
-
globalThis.fetch = originalFetch;
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
async function* asAsyncIterable(items) {
|
|
59
|
-
for (const item of items) {
|
|
60
|
-
yield item;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
(0, vitest_1.describe)("batch trigger debounce forwarding", () => {
|
|
64
|
-
let capture;
|
|
65
|
-
(0, vitest_1.beforeEach)(() => {
|
|
66
|
-
v3_1.apiClientManager.setGlobalAPIClientConfiguration({
|
|
67
|
-
baseURL: "http://localhost:3030",
|
|
68
|
-
accessToken: "tr_dev_test",
|
|
69
|
-
});
|
|
70
|
-
capture = installBatchCapture();
|
|
71
|
-
});
|
|
72
|
-
(0, vitest_1.afterEach)(() => {
|
|
73
|
-
capture.restore();
|
|
74
|
-
v3_1.apiClientManager.disable();
|
|
75
|
-
});
|
|
76
|
-
const surfaces = [
|
|
77
|
-
{
|
|
78
|
-
name: "task.batchTrigger(array)",
|
|
79
|
-
call: () => taskA.batchTrigger([
|
|
80
|
-
{ payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
81
|
-
{ payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
82
|
-
]),
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
name: "task.batchTrigger(asyncIterable)",
|
|
86
|
-
call: () => taskA.batchTrigger(asAsyncIterable([
|
|
87
|
-
{ payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
88
|
-
{ payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
89
|
-
])),
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
name: "tasks.batchTrigger(array)",
|
|
93
|
-
call: () => tasks_js_1.tasks.batchTrigger("task-a", [
|
|
94
|
-
{ payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
95
|
-
{ payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
96
|
-
]),
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: "batch.trigger(array)",
|
|
100
|
-
call: () => batch_js_1.batch.trigger([
|
|
101
|
-
{ id: "task-a", payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
102
|
-
{ id: "task-b", payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
103
|
-
]),
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
name: "batch.trigger(asyncIterable)",
|
|
107
|
-
call: () => batch_js_1.batch.trigger(asAsyncIterable([
|
|
108
|
-
{ id: "task-a", payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
109
|
-
{ id: "task-b", payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
110
|
-
])),
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
name: "batch.triggerByTask(array)",
|
|
114
|
-
call: () => batch_js_1.batch.triggerByTask([
|
|
115
|
-
{ task: taskA, payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
116
|
-
{ task: taskB, payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
117
|
-
]),
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
name: "batch.triggerByTask(asyncIterable)",
|
|
121
|
-
call: () => batch_js_1.batch.triggerByTask(asAsyncIterable([
|
|
122
|
-
{ task: taskA, payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
123
|
-
{ task: taskB, payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
124
|
-
])),
|
|
125
|
-
},
|
|
126
|
-
];
|
|
127
|
-
vitest_1.it.each(surfaces)("$name forwards debounce for every item", async ({ call }) => {
|
|
128
|
-
await call();
|
|
129
|
-
(0, vitest_1.expect)(capture.debounceOptions()).toEqual(EXPECTED);
|
|
130
|
-
});
|
|
131
|
-
const waitSurfaces = [
|
|
132
|
-
{
|
|
133
|
-
name: "task.batchTriggerAndWait(array)",
|
|
134
|
-
call: () => taskA.batchTriggerAndWait([
|
|
135
|
-
{ payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
136
|
-
{ payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
137
|
-
]),
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
name: "task.batchTriggerAndWait(asyncIterable)",
|
|
141
|
-
call: () => taskA.batchTriggerAndWait(asAsyncIterable([
|
|
142
|
-
{ payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
143
|
-
{ payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
144
|
-
])),
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
name: "tasks.batchTriggerAndWait(array)",
|
|
148
|
-
call: () => tasks_js_1.tasks.batchTriggerAndWait("task-a", [
|
|
149
|
-
{ payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
150
|
-
{ payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
151
|
-
]),
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
name: "batch.triggerAndWait(array)",
|
|
155
|
-
call: () => batch_js_1.batch.triggerAndWait([
|
|
156
|
-
{ id: "task-a", payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
157
|
-
{ id: "task-b", payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
158
|
-
]),
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
name: "batch.triggerAndWait(asyncIterable)",
|
|
162
|
-
call: () => batch_js_1.batch.triggerAndWait(asAsyncIterable([
|
|
163
|
-
{ id: "task-a", payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
164
|
-
{ id: "task-b", payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
165
|
-
])),
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
name: "batch.triggerByTaskAndWait(array)",
|
|
169
|
-
call: () => batch_js_1.batch.triggerByTaskAndWait([
|
|
170
|
-
{ task: taskA, payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
171
|
-
{ task: taskB, payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
172
|
-
]),
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
name: "batch.triggerByTaskAndWait(asyncIterable)",
|
|
176
|
-
call: () => batch_js_1.batch.triggerByTaskAndWait(asAsyncIterable([
|
|
177
|
-
{ task: taskA, payload: { i: 0 }, options: { debounce: debounceFor(0) } },
|
|
178
|
-
{ task: taskB, payload: { i: 1 }, options: { debounce: debounceFor(1) } },
|
|
179
|
-
])),
|
|
180
|
-
},
|
|
181
|
-
];
|
|
182
|
-
vitest_1.it.each(waitSurfaces)("$name forwards debounce for every item", async ({ call }) => {
|
|
183
|
-
await (0, test_1.runInMockTaskContext)(async () => {
|
|
184
|
-
await call();
|
|
185
|
-
});
|
|
186
|
-
(0, vitest_1.expect)(capture.debounceOptions()).toEqual(EXPECTED);
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
//# sourceMappingURL=batchDebounce.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batchDebounce.test.js","sourceRoot":"","sources":["../../../src/v3/batchDebounce.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|