@reopt-ai/data-contract 0.6.3 → 0.7.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.
- package/dist/client.cjs +228 -321
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +57 -71
- package/dist/client.d.cts.map +1 -0
- package/dist/client.d.ts +57 -71
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +228 -322
- package/dist/client.js.map +1 -1
- package/dist/control.cjs +158 -54
- package/dist/control.cjs.map +1 -1
- package/dist/control.d.cts +121 -137
- package/dist/control.d.cts.map +1 -0
- package/dist/control.d.ts +121 -137
- package/dist/control.d.ts.map +1 -0
- package/dist/control.js +134 -54
- package/dist/control.js.map +1 -1
- package/dist/events-BUIeU60t.d.cts +142 -0
- package/dist/events-BUIeU60t.d.cts.map +1 -0
- package/dist/events-BUIeU60t.d.ts +142 -0
- package/dist/events-BUIeU60t.d.ts.map +1 -0
- package/dist/events.cjs +110 -15
- package/dist/events.cjs.map +1 -1
- package/dist/events.d.cts +2 -59
- package/dist/events.d.ts +2 -59
- package/dist/events.js +101 -15
- package/dist/events.js.map +1 -1
- package/dist/identity.cjs +150 -55
- package/dist/identity.cjs.map +1 -1
- package/dist/identity.d.cts +21 -20
- package/dist/identity.d.cts.map +1 -0
- package/dist/identity.d.ts +21 -20
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +126 -56
- package/dist/identity.js.map +1 -1
- package/dist/index.cjs +46 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +37 -54
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +37 -54
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -25
- package/dist/index.js.map +1 -1
- package/dist/ingest.cjs +152 -57
- package/dist/ingest.cjs.map +1 -1
- package/dist/ingest.d.cts +182 -193
- package/dist/ingest.d.cts.map +1 -0
- package/dist/ingest.d.ts +182 -193
- package/dist/ingest.d.ts.map +1 -0
- package/dist/ingest.js +126 -57
- package/dist/ingest.js.map +1 -1
- package/dist/query.cjs +284 -84
- package/dist/query.cjs.map +1 -1
- package/dist/query.d.cts +456 -469
- package/dist/query.d.cts.map +1 -0
- package/dist/query.d.ts +456 -469
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +245 -84
- package/dist/query.js.map +1 -1
- package/dist/report.cjs +104 -74
- package/dist/report.cjs.map +1 -1
- package/dist/report.d.cts +182 -136
- package/dist/report.d.cts.map +1 -0
- package/dist/report.d.ts +182 -136
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +93 -74
- package/dist/report.js.map +1 -1
- package/dist/version-B_0qb1_K.cjs +53 -0
- package/dist/version-B_0qb1_K.cjs.map +1 -0
- package/dist/version-C09Cyf4R.js +12 -0
- package/dist/version-C09Cyf4R.js.map +1 -0
- package/dist/{version-DJ2Grb_N.d.ts → version-CGujUGWd.d.cts} +5 -3
- package/dist/version-CGujUGWd.d.cts.map +1 -0
- package/dist/{version-DJ2Grb_N.d.cts → version-CGujUGWd.d.ts} +5 -3
- package/dist/version-CGujUGWd.d.ts.map +1 -0
- package/package.json +69 -28
- package/dist/chunk-3EEANNYN.cjs +0 -62
- package/dist/chunk-3EEANNYN.cjs.map +0 -1
- package/dist/chunk-7W33YGRO.js +0 -160
- package/dist/chunk-7W33YGRO.js.map +0 -1
- package/dist/chunk-F2RNXJGO.cjs +0 -19
- package/dist/chunk-F2RNXJGO.cjs.map +0 -1
- package/dist/chunk-FP2X3PRK.js +0 -62
- package/dist/chunk-FP2X3PRK.js.map +0 -1
- package/dist/chunk-JCEWUSUM.js +0 -53
- package/dist/chunk-JCEWUSUM.js.map +0 -1
- package/dist/chunk-L3JPDRVG.cjs +0 -160
- package/dist/chunk-L3JPDRVG.cjs.map +0 -1
- package/dist/chunk-L4KBQAOO.js +0 -204
- package/dist/chunk-L4KBQAOO.js.map +0 -1
- package/dist/chunk-NJ4JKNBX.js +0 -361
- package/dist/chunk-NJ4JKNBX.js.map +0 -1
- package/dist/chunk-ORNTN6AK.cjs +0 -53
- package/dist/chunk-ORNTN6AK.cjs.map +0 -1
- package/dist/chunk-PSUINLW7.js +0 -19
- package/dist/chunk-PSUINLW7.js.map +0 -1
- package/dist/chunk-RU26QFM2.js +0 -179
- package/dist/chunk-RU26QFM2.js.map +0 -1
- package/dist/chunk-XDH5QQYF.cjs +0 -361
- package/dist/chunk-XDH5QQYF.cjs.map +0 -1
- package/dist/chunk-YCTGHWTP.cjs +0 -204
- package/dist/chunk-YCTGHWTP.cjs.map +0 -1
- package/dist/chunk-ZI6A3WQP.cjs +0 -179
- package/dist/chunk-ZI6A3WQP.cjs.map +0 -1
package/dist/client.cjs
CHANGED
|
@@ -1,336 +1,243 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var _chunkYCTGHWTPcjs = require('./chunk-YCTGHWTP.cjs');
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var _chunkXDH5QQYFcjs = require('./chunk-XDH5QQYF.cjs');
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var _chunkORNTN6AKcjs = require('./chunk-ORNTN6AK.cjs');
|
|
27
|
-
require('./chunk-L3JPDRVG.cjs');
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
var _chunkF2RNXJGOcjs = require('./chunk-F2RNXJGO.cjs');
|
|
35
|
-
require('./chunk-3EEANNYN.cjs');
|
|
36
|
-
|
|
37
|
-
// src/client.ts
|
|
38
|
-
var TRACK_PATH = "/api/track";
|
|
39
|
-
var DEFAULTS = {
|
|
40
|
-
timeoutMs: 1e4,
|
|
41
|
-
maxRetries: 2,
|
|
42
|
-
baseDelayMs: 500,
|
|
43
|
-
maxDelayMs: 2e4
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_version = require("./version-B_0qb1_K.cjs");
|
|
3
|
+
const require_index = require("./index.cjs");
|
|
4
|
+
const require_ingest = require("./ingest.cjs");
|
|
5
|
+
const require_query = require("./query.cjs");
|
|
6
|
+
const require_control = require("./control.cjs");
|
|
7
|
+
//#region src/client.ts
|
|
8
|
+
const TRACK_PATH = "/api/track";
|
|
9
|
+
const DEFAULTS = {
|
|
10
|
+
timeoutMs: 1e4,
|
|
11
|
+
maxRetries: 2,
|
|
12
|
+
baseDelayMs: 500,
|
|
13
|
+
maxDelayMs: 2e4
|
|
44
14
|
};
|
|
45
15
|
function normalizeBaseUrl(baseUrl) {
|
|
46
|
-
|
|
16
|
+
return baseUrl.replace(/\/+$/, "");
|
|
47
17
|
}
|
|
48
18
|
function parseRetryAfter(header) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return void 0;
|
|
19
|
+
if (!header) return void 0;
|
|
20
|
+
const seconds = Number(header);
|
|
21
|
+
if (Number.isFinite(seconds) && seconds >= 0) return Math.round(seconds * 1e3);
|
|
22
|
+
const at = Date.parse(header);
|
|
23
|
+
if (Number.isFinite(at)) return Math.max(0, at - Date.now());
|
|
55
24
|
}
|
|
56
25
|
function sleep(ms, signal) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
if (signal?.aborted) {
|
|
28
|
+
reject(signal.reason ?? new Error("Aborted"));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const timer = setTimeout(() => {
|
|
32
|
+
signal?.removeEventListener("abort", onAbort);
|
|
33
|
+
resolve();
|
|
34
|
+
}, ms);
|
|
35
|
+
const onAbort = () => {
|
|
36
|
+
clearTimeout(timer);
|
|
37
|
+
reject(signal?.reason ?? new Error("Aborted"));
|
|
38
|
+
};
|
|
39
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
40
|
+
});
|
|
72
41
|
}
|
|
73
42
|
function backoffDelay(attempt, retry) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
43
|
+
const exponential = retry.baseDelayMs * 2 ** attempt;
|
|
44
|
+
const capped = Math.min(exponential, retry.maxDelayMs);
|
|
45
|
+
return Math.round(capped * (.5 + Math.random() * .5));
|
|
77
46
|
}
|
|
78
47
|
function toApiError(status, rawBody, retryAfterMs, requestId) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
48
|
+
let parsed;
|
|
49
|
+
try {
|
|
50
|
+
parsed = JSON.parse(rawBody);
|
|
51
|
+
} catch {
|
|
52
|
+
return new require_index.DataApiError({
|
|
53
|
+
message: `reopt-data responded ${status} with a non-JSON body`,
|
|
54
|
+
status,
|
|
55
|
+
code: status >= 500 ? "internal_error" : "unknown_error",
|
|
56
|
+
requestId,
|
|
57
|
+
retryAfterMs,
|
|
58
|
+
details: rawBody.slice(0, 2e3)
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
const body = parsed ?? {};
|
|
62
|
+
const code = typeof body.code === "string" ? body.code : status >= 500 ? "internal_error" : "unknown_error";
|
|
63
|
+
const message = typeof body.message === "string" && body.message || typeof body.error === "string" && body.error || `reopt-data responded ${status}`;
|
|
64
|
+
return new require_index.DataApiError({
|
|
65
|
+
message,
|
|
66
|
+
status,
|
|
67
|
+
code,
|
|
68
|
+
requestId: (typeof body.requestId === "string" ? body.requestId : void 0) ?? requestId,
|
|
69
|
+
retryAfterMs,
|
|
70
|
+
details: body.errors ?? void 0
|
|
71
|
+
});
|
|
103
72
|
}
|
|
104
73
|
function createDataClient(options) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
rotateOrgKey(organizationId, auth, init) {
|
|
271
|
-
return send(
|
|
272
|
-
"POST",
|
|
273
|
-
_chunkYCTGHWTPcjs.CONTROL_API_PATHS.organizationKeys(organizationId),
|
|
274
|
-
{},
|
|
275
|
-
(value) => _chunkYCTGHWTPcjs.zRotateOrganizationKeyResponse.parse(value),
|
|
276
|
-
{ [_chunkYCTGHWTPcjs.PLATFORM_KEY_HEADER]: auth.platformKey },
|
|
277
|
-
_optionalChain([init, 'optionalAccess', _28 => _28.signal])
|
|
278
|
-
);
|
|
279
|
-
},
|
|
280
|
-
updateOrganizationQuota(organizationId, input, auth, init) {
|
|
281
|
-
return send(
|
|
282
|
-
"PATCH",
|
|
283
|
-
_chunkYCTGHWTPcjs.CONTROL_API_PATHS.organization(organizationId),
|
|
284
|
-
input,
|
|
285
|
-
(value) => _chunkYCTGHWTPcjs.zUpdateOrganizationQuotaResponse.parse(value),
|
|
286
|
-
{ [_chunkYCTGHWTPcjs.PLATFORM_KEY_HEADER]: auth.platformKey },
|
|
287
|
-
_optionalChain([init, 'optionalAccess', _29 => _29.signal])
|
|
288
|
-
);
|
|
289
|
-
},
|
|
290
|
-
createProject(input, auth, init) {
|
|
291
|
-
return send(
|
|
292
|
-
"POST",
|
|
293
|
-
_chunkYCTGHWTPcjs.CONTROL_API_PATHS.projects,
|
|
294
|
-
input,
|
|
295
|
-
(value) => _chunkYCTGHWTPcjs.zCreateProjectResponse.parse(value),
|
|
296
|
-
{ [_chunkYCTGHWTPcjs.ORG_KEY_HEADER]: auth.orgKey },
|
|
297
|
-
_optionalChain([init, 'optionalAccess', _30 => _30.signal])
|
|
298
|
-
);
|
|
299
|
-
},
|
|
300
|
-
rotateServerClientSecret(projectId, clientId, auth, init) {
|
|
301
|
-
return send(
|
|
302
|
-
"POST",
|
|
303
|
-
_chunkYCTGHWTPcjs.CONTROL_API_PATHS.clientRotate(projectId, clientId),
|
|
304
|
-
{},
|
|
305
|
-
(value) => _chunkYCTGHWTPcjs.zRotateClientSecretResponse.parse(value),
|
|
306
|
-
{ [_chunkYCTGHWTPcjs.ORG_KEY_HEADER]: auth.orgKey },
|
|
307
|
-
_optionalChain([init, 'optionalAccess', _31 => _31.signal])
|
|
308
|
-
);
|
|
309
|
-
},
|
|
310
|
-
deleteProject(projectId, input, auth, init) {
|
|
311
|
-
return send(
|
|
312
|
-
"DELETE",
|
|
313
|
-
_chunkYCTGHWTPcjs.CONTROL_API_PATHS.project(projectId),
|
|
314
|
-
input,
|
|
315
|
-
(value) => _chunkYCTGHWTPcjs.zDeleteProjectResponse.parse(value),
|
|
316
|
-
{ [_chunkYCTGHWTPcjs.ORG_KEY_HEADER]: auth.orgKey },
|
|
317
|
-
_optionalChain([init, 'optionalAccess', _32 => _32.signal])
|
|
318
|
-
);
|
|
319
|
-
},
|
|
320
|
-
upsertEventMeta(projectId, name, input, auth, init) {
|
|
321
|
-
return send(
|
|
322
|
-
"PUT",
|
|
323
|
-
_chunkYCTGHWTPcjs.CONTROL_API_PATHS.projectEvent(projectId, name),
|
|
324
|
-
input,
|
|
325
|
-
(value) => _chunkYCTGHWTPcjs.zEventMetaResponse.parse(value),
|
|
326
|
-
{ [_chunkYCTGHWTPcjs.ORG_KEY_HEADER]: auth.orgKey },
|
|
327
|
-
_optionalChain([init, 'optionalAccess', _33 => _33.signal])
|
|
328
|
-
);
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
};
|
|
74
|
+
const baseUrl = normalizeBaseUrl(options.baseUrl);
|
|
75
|
+
const doFetch = options.fetch ?? globalThis.fetch;
|
|
76
|
+
if (typeof doFetch !== "function") throw new TypeError("createDataClient: no fetch implementation available — pass options.fetch");
|
|
77
|
+
const timeoutMs = options.timeoutMs ?? DEFAULTS.timeoutMs;
|
|
78
|
+
const retry = {
|
|
79
|
+
maxRetries: options.retry?.maxRetries ?? DEFAULTS.maxRetries,
|
|
80
|
+
baseDelayMs: options.retry?.baseDelayMs ?? DEFAULTS.baseDelayMs,
|
|
81
|
+
maxDelayMs: options.retry?.maxDelayMs ?? DEFAULTS.maxDelayMs,
|
|
82
|
+
respectRetryAfter: options.retry?.respectRetryAfter ?? true
|
|
83
|
+
};
|
|
84
|
+
const userAgent = options.userAgent ? `reopt-data-contract/${require_version.CONTRACT_VERSION} ${options.userAgent}` : `reopt-data-contract/${require_version.CONTRACT_VERSION}`;
|
|
85
|
+
function requireClientCredentials() {
|
|
86
|
+
if (!options.clientId || !options.clientSecret) throw new require_index.DataApiError({
|
|
87
|
+
message: "createDataClient was given no client credentials — pass clientId and clientSecret to use the ingest or query planes",
|
|
88
|
+
status: 0,
|
|
89
|
+
code: "credentials_missing"
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
clientId: options.clientId,
|
|
93
|
+
clientSecret: options.clientSecret
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
async function requestOnce(method, path, body, extraHeaders, signal) {
|
|
97
|
+
const controller = new AbortController();
|
|
98
|
+
const timer = setTimeout(() => controller.abort(new Error(`reopt-data request timed out after ${timeoutMs}ms`)), timeoutMs);
|
|
99
|
+
const onCallerAbort = () => controller.abort(signal?.reason ?? new Error("Aborted"));
|
|
100
|
+
signal?.addEventListener("abort", onCallerAbort, { once: true });
|
|
101
|
+
try {
|
|
102
|
+
return await doFetch(`${baseUrl}${path}`, {
|
|
103
|
+
method,
|
|
104
|
+
headers: {
|
|
105
|
+
"content-type": "application/json",
|
|
106
|
+
"user-agent": userAgent,
|
|
107
|
+
...options.clientId && options.clientSecret ? {
|
|
108
|
+
[require_version.CLIENT_ID_HEADER]: options.clientId,
|
|
109
|
+
[require_version.CLIENT_SECRET_HEADER]: options.clientSecret
|
|
110
|
+
} : {},
|
|
111
|
+
...extraHeaders
|
|
112
|
+
},
|
|
113
|
+
body: JSON.stringify(body),
|
|
114
|
+
signal: controller.signal
|
|
115
|
+
});
|
|
116
|
+
} finally {
|
|
117
|
+
clearTimeout(timer);
|
|
118
|
+
signal?.removeEventListener("abort", onCallerAbort);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function send(method, path, body, parse, extraHeaders = {}, signal) {
|
|
122
|
+
let lastError;
|
|
123
|
+
for (let attempt = 0; attempt <= retry.maxRetries; attempt++) {
|
|
124
|
+
let response;
|
|
125
|
+
try {
|
|
126
|
+
response = await requestOnce(method, path, body, extraHeaders, signal);
|
|
127
|
+
} catch (cause) {
|
|
128
|
+
if (signal?.aborted) throw cause;
|
|
129
|
+
lastError = new require_index.DataApiError({
|
|
130
|
+
message: cause instanceof Error ? cause.message : String(cause),
|
|
131
|
+
status: 0,
|
|
132
|
+
code: "network_error",
|
|
133
|
+
details: cause
|
|
134
|
+
});
|
|
135
|
+
if (attempt < retry.maxRetries) {
|
|
136
|
+
await sleep(backoffDelay(attempt, retry), signal);
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
throw lastError;
|
|
140
|
+
}
|
|
141
|
+
const requestId = response.headers.get("x-request-id") ?? void 0;
|
|
142
|
+
const serverContractVersion = response.headers.get(require_version.CONTRACT_VERSION_HEADER);
|
|
143
|
+
const rawBody = await response.text();
|
|
144
|
+
if (serverContractVersion !== "0.7.0") throw new require_index.DataApiError({
|
|
145
|
+
message: serverContractVersion ? `reopt-data contract ${serverContractVersion} does not match client contract ${require_version.CONTRACT_VERSION}` : "reopt-data response did not declare its contract version",
|
|
146
|
+
status: response.status,
|
|
147
|
+
code: "contract_mismatch",
|
|
148
|
+
requestId,
|
|
149
|
+
details: {
|
|
150
|
+
expected: require_version.CONTRACT_VERSION,
|
|
151
|
+
received: serverContractVersion
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
if (response.ok) {
|
|
155
|
+
let json;
|
|
156
|
+
try {
|
|
157
|
+
json = JSON.parse(rawBody);
|
|
158
|
+
} catch (cause) {
|
|
159
|
+
throw new require_index.DataApiError({
|
|
160
|
+
message: "reopt-data returned a 2xx with an unparseable body",
|
|
161
|
+
status: response.status,
|
|
162
|
+
code: "contract_mismatch",
|
|
163
|
+
requestId,
|
|
164
|
+
details: cause
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
return parse(json);
|
|
169
|
+
} catch (cause) {
|
|
170
|
+
throw new require_index.DataApiError({
|
|
171
|
+
message: "reopt-data returned a 2xx that does not match the contract",
|
|
172
|
+
status: response.status,
|
|
173
|
+
code: "contract_mismatch",
|
|
174
|
+
requestId,
|
|
175
|
+
details: cause
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const retryAfterMs = retry.respectRetryAfter ? parseRetryAfter(response.headers.get("retry-after")) : void 0;
|
|
180
|
+
lastError = toApiError(response.status, rawBody, retryAfterMs, requestId);
|
|
181
|
+
if (!lastError.retryable || attempt === retry.maxRetries) throw lastError;
|
|
182
|
+
await sleep(retryAfterMs ?? backoffDelay(attempt, retry), signal);
|
|
183
|
+
}
|
|
184
|
+
throw lastError ?? new require_index.DataApiError({
|
|
185
|
+
message: "reopt-data request failed",
|
|
186
|
+
status: 0,
|
|
187
|
+
code: "network_error"
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
async function post(path, body, parse, signal) {
|
|
191
|
+
requireClientCredentials();
|
|
192
|
+
return send("POST", path, body, parse, {}, signal);
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
ingest: { track(events, init) {
|
|
196
|
+
return post(TRACK_PATH, events, (value) => require_ingest.zIngestResponse.parse(value), init?.signal);
|
|
197
|
+
} },
|
|
198
|
+
query: {
|
|
199
|
+
eventsTimeseries(input, init) {
|
|
200
|
+
return post(require_query.QUERY_API_PATHS.eventsTimeseries, input, (value) => require_query.zEventsTimeseriesResponse.parse(value), init?.signal);
|
|
201
|
+
},
|
|
202
|
+
funnel(input, init) {
|
|
203
|
+
return post(require_query.QUERY_API_PATHS.funnel, input, (value) => require_query.zFunnelResponse.parse(value), init?.signal);
|
|
204
|
+
},
|
|
205
|
+
retention(input, init) {
|
|
206
|
+
return post(require_query.QUERY_API_PATHS.retention, input, (value) => require_query.zRetentionResponse.parse(value), init?.signal);
|
|
207
|
+
},
|
|
208
|
+
trafficOverview(input, init) {
|
|
209
|
+
return post(require_query.QUERY_API_PATHS.trafficOverview, input, (value) => require_query.zTrafficOverviewResponse.parse(value), init?.signal);
|
|
210
|
+
},
|
|
211
|
+
trafficSources(input, init) {
|
|
212
|
+
return post(require_query.QUERY_API_PATHS.trafficSources, input, (value) => require_query.zTrafficSourcesResponse.parse(value), init?.signal);
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
control: {
|
|
216
|
+
createOrganization(input, auth, init) {
|
|
217
|
+
return send("POST", require_control.CONTROL_API_PATHS.organizations, input, (value) => require_control.zCreateOrganizationResponse.parse(value), { [require_control.PLATFORM_KEY_HEADER]: auth.platformKey }, init?.signal);
|
|
218
|
+
},
|
|
219
|
+
rotateOrgKey(organizationId, auth, init) {
|
|
220
|
+
return send("POST", require_control.CONTROL_API_PATHS.organizationKeys(organizationId), {}, (value) => require_control.zRotateOrganizationKeyResponse.parse(value), { [require_control.PLATFORM_KEY_HEADER]: auth.platformKey }, init?.signal);
|
|
221
|
+
},
|
|
222
|
+
updateOrganizationQuota(organizationId, input, auth, init) {
|
|
223
|
+
return send("PATCH", require_control.CONTROL_API_PATHS.organization(organizationId), input, (value) => require_control.zUpdateOrganizationQuotaResponse.parse(value), { [require_control.PLATFORM_KEY_HEADER]: auth.platformKey }, init?.signal);
|
|
224
|
+
},
|
|
225
|
+
createProject(input, auth, init) {
|
|
226
|
+
return send("POST", require_control.CONTROL_API_PATHS.projects, input, (value) => require_control.zCreateProjectResponse.parse(value), { [require_control.ORG_KEY_HEADER]: auth.orgKey }, init?.signal);
|
|
227
|
+
},
|
|
228
|
+
rotateServerClientSecret(projectId, clientId, auth, init) {
|
|
229
|
+
return send("POST", require_control.CONTROL_API_PATHS.clientRotate(projectId, clientId), {}, (value) => require_control.zRotateClientSecretResponse.parse(value), { [require_control.ORG_KEY_HEADER]: auth.orgKey }, init?.signal);
|
|
230
|
+
},
|
|
231
|
+
deleteProject(projectId, input, auth, init) {
|
|
232
|
+
return send("DELETE", require_control.CONTROL_API_PATHS.project(projectId), input, (value) => require_control.zDeleteProjectResponse.parse(value), { [require_control.ORG_KEY_HEADER]: auth.orgKey }, init?.signal);
|
|
233
|
+
},
|
|
234
|
+
upsertEventMeta(projectId, name, input, auth, init) {
|
|
235
|
+
return send("PUT", require_control.CONTROL_API_PATHS.projectEvent(projectId, name), input, (value) => require_control.zEventMetaResponse.parse(value), { [require_control.ORG_KEY_HEADER]: auth.orgKey }, init?.signal);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
};
|
|
332
239
|
}
|
|
333
|
-
|
|
334
|
-
|
|
240
|
+
//#endregion
|
|
335
241
|
exports.createDataClient = createDataClient;
|
|
242
|
+
|
|
336
243
|
//# sourceMappingURL=client.cjs.map
|