@gatectr/sdk 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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +199 -0
  3. package/dist/cjs/client.d.ts +50 -0
  4. package/dist/cjs/client.d.ts.map +1 -0
  5. package/dist/cjs/client.js +316 -0
  6. package/dist/cjs/client.js.map +1 -0
  7. package/dist/cjs/errors.d.ts +42 -0
  8. package/dist/cjs/errors.d.ts.map +1 -0
  9. package/dist/cjs/errors.js +84 -0
  10. package/dist/cjs/errors.js.map +1 -0
  11. package/dist/cjs/http.d.ts +26 -0
  12. package/dist/cjs/http.d.ts.map +1 -0
  13. package/dist/cjs/http.js +164 -0
  14. package/dist/cjs/http.js.map +1 -0
  15. package/dist/cjs/index.d.ts +4 -0
  16. package/dist/cjs/index.d.ts.map +1 -0
  17. package/dist/cjs/index.js +15 -0
  18. package/dist/cjs/index.js.map +1 -0
  19. package/dist/cjs/package.json +3 -0
  20. package/dist/cjs/stream.d.ts +8 -0
  21. package/dist/cjs/stream.d.ts.map +1 -0
  22. package/dist/cjs/stream.js +100 -0
  23. package/dist/cjs/stream.js.map +1 -0
  24. package/dist/cjs/types.d.ts +155 -0
  25. package/dist/cjs/types.d.ts.map +1 -0
  26. package/dist/cjs/types.js +3 -0
  27. package/dist/cjs/types.js.map +1 -0
  28. package/dist/esm/client.d.ts +50 -0
  29. package/dist/esm/client.d.ts.map +1 -0
  30. package/dist/esm/client.js +312 -0
  31. package/dist/esm/client.js.map +1 -0
  32. package/dist/esm/errors.d.ts +42 -0
  33. package/dist/esm/errors.d.ts.map +1 -0
  34. package/dist/esm/errors.js +75 -0
  35. package/dist/esm/errors.js.map +1 -0
  36. package/dist/esm/http.d.ts +26 -0
  37. package/dist/esm/http.d.ts.map +1 -0
  38. package/dist/esm/http.js +160 -0
  39. package/dist/esm/http.js.map +1 -0
  40. package/dist/esm/index.d.ts +4 -0
  41. package/dist/esm/index.d.ts.map +1 -0
  42. package/dist/esm/index.js +5 -0
  43. package/dist/esm/index.js.map +1 -0
  44. package/dist/esm/stream.d.ts +8 -0
  45. package/dist/esm/stream.d.ts.map +1 -0
  46. package/dist/esm/stream.js +97 -0
  47. package/dist/esm/stream.js.map +1 -0
  48. package/dist/esm/types.d.ts +155 -0
  49. package/dist/esm/types.d.ts.map +1 -0
  50. package/dist/esm/types.js +2 -0
  51. package/dist/esm/types.js.map +1 -0
  52. package/package.json +88 -0
@@ -0,0 +1,50 @@
1
+ import type { GateCtrConfig, CompleteParams, CompleteResponse, ChatParams, ChatResponse, StreamParams, StreamChunk, ModelsResponse, UsageParams, UsageResponse } from "./types.js";
2
+ /**
3
+ * GateCtr client — the main entry point for the @gatectr/sdk.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * const client = new GateCtr({ apiKey: process.env.GATECTR_API_KEY });
8
+ * const response = await client.complete({ model: "gpt-4o", messages: [...] });
9
+ * ```
10
+ */
11
+ export declare class GateCtr {
12
+ /** Resolved, validated configuration (all fields required after construction) */
13
+ private readonly _baseUrl;
14
+ private readonly _apiKey;
15
+ private readonly _timeout;
16
+ private readonly _maxRetries;
17
+ private readonly _optimize;
18
+ private readonly _route;
19
+ constructor(config?: GateCtrConfig);
20
+ /** Build the standard headers for every request */
21
+ private buildHeaders;
22
+ /** Extract GateCtrMetadata from response headers + body */
23
+ private extractMetadata;
24
+ /** Merge per-request GateCtr options into the request body */
25
+ private mergeGatectrOptions;
26
+ /** Build RequestOptions, conditionally including signal to satisfy exactOptionalPropertyTypes */
27
+ private buildRequestOptions;
28
+ /**
29
+ * Text completion — POST /complete
30
+ */
31
+ complete(params: CompleteParams): Promise<CompleteResponse>;
32
+ /**
33
+ * Chat completion — POST /chat
34
+ */
35
+ chat(params: ChatParams): Promise<ChatResponse>;
36
+ /**
37
+ * Streaming chat completion — POST /chat with stream: true
38
+ * Returns an AsyncIterable<StreamChunk> for use with `for await`.
39
+ */
40
+ stream(params: StreamParams): AsyncIterable<StreamChunk>;
41
+ /**
42
+ * List available models — GET /models
43
+ */
44
+ models(): Promise<ModelsResponse>;
45
+ /**
46
+ * Fetch usage statistics — GET /usage
47
+ */
48
+ usage(params?: UsageParams): Promise<UsageResponse>;
49
+ }
50
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAEb,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EAEd,MAAM,YAAY,CAAC;AAUpB;;;;;;;;GAQG;AACH,qBAAa,OAAO;IAClB,iFAAiF;IACjF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,MAAM,GAAE,aAAkB;IAuCtC,mDAAmD;IACnD,OAAO,CAAC,YAAY;IAQpB,2DAA2D;IAC3D,OAAO,CAAC,eAAe;IAYvB,8DAA8D;IAC9D,OAAO,CAAC,mBAAmB;IAe3B,iGAAiG;IACjG,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0DjE;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAmErD;;;OAGG;IACI,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC;IAoC/D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAsCvC;;OAEG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAwC1D"}
@@ -0,0 +1,312 @@
1
+ // sdk-node/src/client.ts
2
+ import { GateCtrConfigError } from "./errors.js";
3
+ import { httpRequest } from "./http.js";
4
+ import { parseSSE } from "./stream.js";
5
+ // SDK version constant — avoids ESM/CJS import.meta.url compatibility issues
6
+ const SDK_VERSION = "0.1.0";
7
+ const DEFAULT_BASE_URL = "https://api.gatectr.com/v1";
8
+ const DEFAULT_TIMEOUT_MS = 30_000;
9
+ const DEFAULT_MAX_RETRIES = 3;
10
+ /**
11
+ * GateCtr client — the main entry point for the @gatectr/sdk.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const client = new GateCtr({ apiKey: process.env.GATECTR_API_KEY });
16
+ * const response = await client.complete({ model: "gpt-4o", messages: [...] });
17
+ * ```
18
+ */
19
+ export class GateCtr {
20
+ /** Resolved, validated configuration (all fields required after construction) */
21
+ _baseUrl;
22
+ _apiKey;
23
+ _timeout;
24
+ _maxRetries;
25
+ _optimize;
26
+ _route;
27
+ constructor(config = {}) {
28
+ // Resolve API key: constructor option → env var → throw
29
+ const rawKey = config.apiKey ?? process.env["GATECTR_API_KEY"];
30
+ if (!rawKey || rawKey.trim() === "") {
31
+ throw new GateCtrConfigError("GateCtr API key is required. Pass apiKey in the config or set the GATECTR_API_KEY environment variable.");
32
+ }
33
+ this._apiKey = rawKey.trim();
34
+ // Validate and normalize baseUrl
35
+ const rawBaseUrl = config.baseUrl ?? DEFAULT_BASE_URL;
36
+ try {
37
+ const parsed = new URL(rawBaseUrl);
38
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
39
+ throw new GateCtrConfigError(`Invalid baseUrl: "${rawBaseUrl}". Must be an HTTP or HTTPS URL.`);
40
+ }
41
+ }
42
+ catch (err) {
43
+ if (err instanceof GateCtrConfigError)
44
+ throw err;
45
+ throw new GateCtrConfigError(`Invalid baseUrl: "${rawBaseUrl}". Must be a valid HTTP or HTTPS URL.`);
46
+ }
47
+ // Strip trailing slash(es)
48
+ this._baseUrl = rawBaseUrl.replace(/\/+$/, "");
49
+ this._timeout = config.timeout ?? DEFAULT_TIMEOUT_MS;
50
+ this._maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;
51
+ this._optimize = config.optimize ?? true;
52
+ this._route = config.route ?? false;
53
+ }
54
+ // ─── Private helpers ────────────────────────────────────────────────────────
55
+ /** Build the standard headers for every request */
56
+ buildHeaders(extra) {
57
+ return {
58
+ Authorization: `Bearer ${this._apiKey}`,
59
+ "User-Agent": `@gatectr/sdk/${SDK_VERSION} node/${process.version}`,
60
+ ...extra,
61
+ };
62
+ }
63
+ /** Extract GateCtrMetadata from response headers + body */
64
+ extractMetadata(headers, body) {
65
+ const requestId = headers.get("x-gatectr-request-id") ?? "";
66
+ const latencyMs = parseInt(headers.get("x-gatectr-latency-ms") ?? "0", 10);
67
+ const overage = headers.get("x-gatectr-overage") === "true";
68
+ const usage = body["usage"];
69
+ const tokensSaved = typeof usage?.["saved_tokens"] === "number" ? usage["saved_tokens"] : 0;
70
+ const modelUsed = typeof body["model"] === "string" ? body["model"] : "";
71
+ return { requestId, latencyMs, overage, modelUsed, tokensSaved };
72
+ }
73
+ /** Merge per-request GateCtr options into the request body */
74
+ mergeGatectrOptions(perRequest) {
75
+ const merged = {
76
+ optimize: this._optimize,
77
+ route: this._route,
78
+ };
79
+ if (perRequest !== undefined) {
80
+ if (perRequest.optimize !== undefined)
81
+ merged["optimize"] = perRequest.optimize;
82
+ if (perRequest.route !== undefined)
83
+ merged["route"] = perRequest.route;
84
+ if (perRequest.budgetId !== undefined)
85
+ merged["budgetId"] = perRequest.budgetId;
86
+ }
87
+ return merged;
88
+ }
89
+ /** Build RequestOptions, conditionally including signal to satisfy exactOptionalPropertyTypes */
90
+ buildRequestOptions(base, signal) {
91
+ if (signal !== undefined) {
92
+ return { ...base, signal };
93
+ }
94
+ return base;
95
+ }
96
+ // ─── Public API ─────────────────────────────────────────────────────────────
97
+ /**
98
+ * Text completion — POST /complete
99
+ */
100
+ async complete(params) {
101
+ const gatectrOpts = this.mergeGatectrOptions(params.gatectr);
102
+ const body = {
103
+ model: params.model,
104
+ messages: params.messages,
105
+ stream: false,
106
+ ...gatectrOpts,
107
+ };
108
+ if (params.max_tokens !== undefined)
109
+ body["max_tokens"] = params.max_tokens;
110
+ if (params.temperature !== undefined)
111
+ body["temperature"] = params.temperature;
112
+ const raw = await httpRequest(this.buildRequestOptions({
113
+ method: "POST",
114
+ url: `${this._baseUrl}/complete`,
115
+ headers: {
116
+ ...this.buildHeaders(),
117
+ "Content-Type": "application/json",
118
+ },
119
+ body,
120
+ timeoutMs: this._timeout,
121
+ maxRetries: this._maxRetries,
122
+ }, params.signal));
123
+ const responseBody = (await raw.json());
124
+ const gatectr = this.extractMetadata(raw.headers, responseBody);
125
+ const usageBody = responseBody["usage"];
126
+ const promptTokens = usageBody !== undefined ? Number(usageBody["prompt_tokens"] ?? 0) : 0;
127
+ const completionTokens = usageBody !== undefined ? Number(usageBody["completion_tokens"] ?? 0) : 0;
128
+ const totalTokens = usageBody !== undefined ? Number(usageBody["total_tokens"] ?? 0) : 0;
129
+ return {
130
+ id: typeof responseBody["id"] === "string" ? responseBody["id"] : "",
131
+ object: "text_completion",
132
+ model: typeof responseBody["model"] === "string" ? responseBody["model"] : "",
133
+ choices: (Array.isArray(responseBody["choices"])
134
+ ? responseBody["choices"]
135
+ : []).map((c) => ({
136
+ text: typeof c["text"] === "string" ? c["text"] : "",
137
+ finish_reason: typeof c["finish_reason"] === "string" ? c["finish_reason"] : "",
138
+ })),
139
+ usage: {
140
+ prompt_tokens: promptTokens,
141
+ completion_tokens: completionTokens,
142
+ total_tokens: totalTokens,
143
+ },
144
+ gatectr,
145
+ };
146
+ }
147
+ /**
148
+ * Chat completion — POST /chat
149
+ */
150
+ async chat(params) {
151
+ const gatectrOpts = this.mergeGatectrOptions(params.gatectr);
152
+ const body = {
153
+ model: params.model,
154
+ messages: params.messages,
155
+ stream: false,
156
+ ...gatectrOpts,
157
+ };
158
+ if (params.max_tokens !== undefined)
159
+ body["max_tokens"] = params.max_tokens;
160
+ if (params.temperature !== undefined)
161
+ body["temperature"] = params.temperature;
162
+ const raw = await httpRequest(this.buildRequestOptions({
163
+ method: "POST",
164
+ url: `${this._baseUrl}/chat`,
165
+ headers: {
166
+ ...this.buildHeaders(),
167
+ "Content-Type": "application/json",
168
+ },
169
+ body,
170
+ timeoutMs: this._timeout,
171
+ maxRetries: this._maxRetries,
172
+ }, params.signal));
173
+ const responseBody = (await raw.json());
174
+ const gatectr = this.extractMetadata(raw.headers, responseBody);
175
+ const usageBody = responseBody["usage"];
176
+ const promptTokens = usageBody !== undefined ? Number(usageBody["prompt_tokens"] ?? 0) : 0;
177
+ const completionTokens = usageBody !== undefined ? Number(usageBody["completion_tokens"] ?? 0) : 0;
178
+ const totalTokens = usageBody !== undefined ? Number(usageBody["total_tokens"] ?? 0) : 0;
179
+ return {
180
+ id: typeof responseBody["id"] === "string" ? responseBody["id"] : "",
181
+ object: "chat.completion",
182
+ model: typeof responseBody["model"] === "string" ? responseBody["model"] : "",
183
+ choices: (Array.isArray(responseBody["choices"])
184
+ ? responseBody["choices"]
185
+ : []).map((c) => {
186
+ const msg = c["message"];
187
+ const role = msg !== undefined && typeof msg["role"] === "string"
188
+ ? msg["role"]
189
+ : "assistant";
190
+ const content = msg !== undefined && typeof msg["content"] === "string" ? msg["content"] : "";
191
+ return {
192
+ message: { role, content },
193
+ finish_reason: typeof c["finish_reason"] === "string" ? c["finish_reason"] : "",
194
+ };
195
+ }),
196
+ usage: {
197
+ prompt_tokens: promptTokens,
198
+ completion_tokens: completionTokens,
199
+ total_tokens: totalTokens,
200
+ },
201
+ gatectr,
202
+ };
203
+ }
204
+ /**
205
+ * Streaming chat completion — POST /chat with stream: true
206
+ * Returns an AsyncIterable<StreamChunk> for use with `for await`.
207
+ */
208
+ async *stream(params) {
209
+ const gatectrOpts = this.mergeGatectrOptions(params.gatectr);
210
+ const body = {
211
+ model: params.model,
212
+ messages: params.messages,
213
+ stream: true,
214
+ ...gatectrOpts,
215
+ };
216
+ if (params.max_tokens !== undefined)
217
+ body["max_tokens"] = params.max_tokens;
218
+ if (params.temperature !== undefined)
219
+ body["temperature"] = params.temperature;
220
+ const raw = await httpRequest(this.buildRequestOptions({
221
+ method: "POST",
222
+ url: `${this._baseUrl}/chat`,
223
+ headers: {
224
+ ...this.buildHeaders(),
225
+ "Content-Type": "application/json",
226
+ },
227
+ body,
228
+ timeoutMs: this._timeout,
229
+ maxRetries: this._maxRetries,
230
+ }, params.signal));
231
+ if (raw.body === null) {
232
+ return;
233
+ }
234
+ yield* parseSSE(raw.body, params.signal);
235
+ }
236
+ /**
237
+ * List available models — GET /models
238
+ */
239
+ async models() {
240
+ const raw = await httpRequest({
241
+ method: "GET",
242
+ url: `${this._baseUrl}/models`,
243
+ headers: this.buildHeaders(),
244
+ timeoutMs: this._timeout,
245
+ maxRetries: this._maxRetries,
246
+ });
247
+ const responseBody = (await raw.json());
248
+ const requestId = raw.headers.get("x-gatectr-request-id") ?? "";
249
+ const modelsRaw = responseBody["models"] ?? [];
250
+ return {
251
+ models: modelsRaw.map((m) => ({
252
+ modelId: typeof m["modelId"] === "string"
253
+ ? m["modelId"]
254
+ : typeof m["model_id"] === "string"
255
+ ? m["model_id"]
256
+ : "",
257
+ displayName: typeof m["displayName"] === "string"
258
+ ? m["displayName"]
259
+ : typeof m["display_name"] === "string"
260
+ ? m["display_name"]
261
+ : "",
262
+ provider: typeof m["provider"] === "string" ? m["provider"] : "",
263
+ contextWindow: Number(m["contextWindow"] ?? m["context_window"] ?? 0),
264
+ capabilities: Array.isArray(m["capabilities"])
265
+ ? m["capabilities"].map(String)
266
+ : [],
267
+ })),
268
+ requestId,
269
+ };
270
+ }
271
+ /**
272
+ * Fetch usage statistics — GET /usage
273
+ */
274
+ async usage(params) {
275
+ const url = new URL(`${this._baseUrl}/usage`);
276
+ if (params?.from !== undefined)
277
+ url.searchParams.set("from", params.from);
278
+ if (params?.to !== undefined)
279
+ url.searchParams.set("to", params.to);
280
+ if (params?.projectId !== undefined)
281
+ url.searchParams.set("projectId", params.projectId);
282
+ const raw = await httpRequest({
283
+ method: "GET",
284
+ url: url.toString(),
285
+ headers: this.buildHeaders(),
286
+ timeoutMs: this._timeout,
287
+ maxRetries: this._maxRetries,
288
+ });
289
+ const responseBody = (await raw.json());
290
+ const byProject = (responseBody["byProject"] ?? []).map((p) => ({
291
+ projectId: typeof p["projectId"] === "string" ? p["projectId"] : null,
292
+ totalTokens: Number(p["totalTokens"] ?? 0),
293
+ totalRequests: Number(p["totalRequests"] ?? 0),
294
+ totalCostUsd: Number(p["totalCostUsd"] ?? 0),
295
+ }));
296
+ return {
297
+ totalTokens: Number(responseBody["totalTokens"] ?? 0),
298
+ totalRequests: Number(responseBody["totalRequests"] ?? 0),
299
+ totalCostUsd: Number(responseBody["totalCostUsd"] ?? 0),
300
+ savedTokens: Number(responseBody["savedTokens"] ?? 0),
301
+ from: typeof responseBody["from"] === "string" ? responseBody["from"] : "",
302
+ to: typeof responseBody["to"] === "string" ? responseBody["to"] : "",
303
+ byProject,
304
+ ...(responseBody["budgetStatus"] !== undefined
305
+ ? {
306
+ budgetStatus: responseBody["budgetStatus"],
307
+ }
308
+ : {}),
309
+ };
310
+ }
311
+ }
312
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAiBvC,6EAA6E;AAC7E,MAAM,WAAW,GAAG,OAAO,CAAC;AAE5B,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AACtD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,OAAO,OAAO;IAClB,iFAAiF;IAChE,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,QAAQ,CAAS;IACjB,WAAW,CAAS;IACpB,SAAS,CAAU;IACnB,MAAM,CAAU;IAEjC,YAAY,SAAwB,EAAE;QACpC,wDAAwD;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAE/D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,kBAAkB,CAC1B,yGAAyG,CAC1G,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAE7B,iCAAiC;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAChE,MAAM,IAAI,kBAAkB,CAC1B,qBAAqB,UAAU,kCAAkC,CAClE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,kBAAkB;gBAAE,MAAM,GAAG,CAAC;YACjD,MAAM,IAAI,kBAAkB,CAC1B,qBAAqB,UAAU,uCAAuC,CACvE,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,kBAAkB,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,IAAI,mBAAmB,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IACtC,CAAC;IAED,+EAA+E;IAE/E,mDAAmD;IAC3C,YAAY,CAAC,KAA8B;QACjD,OAAO;YACL,aAAa,EAAE,UAAU,IAAI,CAAC,OAAO,EAAE;YACvC,YAAY,EAAE,gBAAgB,WAAW,SAAS,OAAO,CAAC,OAAO,EAAE;YACnE,GAAG,KAAK;SACT,CAAC;IACJ,CAAC;IAED,2DAA2D;IACnD,eAAe,CAAC,OAAgB,EAAE,IAA6B;QACrE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,MAAM,CAAC;QAE5D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAwC,CAAC;QACnE,MAAM,WAAW,GAAG,OAAO,KAAK,EAAE,CAAC,cAAc,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IACnE,CAAC;IAED,8DAA8D;IACtD,mBAAmB,CAAC,UAAyC;QACnE,MAAM,MAAM,GAA4B;YACtC,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;QAEF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS;gBAAE,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;YAChF,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;YACvE,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS;gBAAE,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC;QAClF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iGAAiG;IACzF,mBAAmB,CACzB,IAAoC,EACpC,MAA+B;QAE/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAE/E;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAsB;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE7D,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,KAAK;YACb,GAAG,WAAW;SACf,CAAC;QACF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5E,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;QAE/E,MAAM,GAAG,GAAG,MAAM,WAAW,CAC3B,IAAI,CAAC,mBAAmB,CACtB;YACE,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,WAAW;YAChC,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,YAAY,EAAE;gBACtB,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,EACD,MAAM,CAAC,MAAM,CACd,CACF,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEhE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAwC,CAAC;QAC/E,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,gBAAgB,GACpB,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzF,OAAO;YACL,EAAE,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACpE,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7E,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC9C,CAAC,CAAE,YAAY,CAAC,SAAS,CAAoC;gBAC7D,CAAC,CAAC,EAAE,CACL,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACZ,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpD,aAAa,EAAE,OAAO,CAAC,CAAC,eAAe,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;aAChF,CAAC,CAAC;YACH,KAAK,EAAE;gBACL,aAAa,EAAE,YAAY;gBAC3B,iBAAiB,EAAE,gBAAgB;gBACnC,YAAY,EAAE,WAAW;aAC1B;YACD,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAAkB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE7D,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,KAAK;YACb,GAAG,WAAW;SACf,CAAC;QACF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5E,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;QAE/E,MAAM,GAAG,GAAG,MAAM,WAAW,CAC3B,IAAI,CAAC,mBAAmB,CACtB;YACE,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,OAAO;YAC5B,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,YAAY,EAAE;gBACtB,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,EACD,MAAM,CAAC,MAAM,CACd,CACF,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEhE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAwC,CAAC;QAC/E,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,gBAAgB,GACpB,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzF,OAAO;YACL,EAAE,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACpE,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7E,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC9C,CAAC,CAAE,YAAY,CAAC,SAAS,CAAoC;gBAC7D,CAAC,CAAC,EAAE,CACL,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACV,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAwC,CAAC;gBAChE,MAAM,IAAI,GACR,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ;oBAClD,CAAC,CAAE,GAAG,CAAC,MAAM,CAAqC;oBAClD,CAAC,CAAE,WAAqB,CAAC;gBAC7B,MAAM,OAAO,GACX,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChF,OAAO;oBACL,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;oBAC1B,aAAa,EAAE,OAAO,CAAC,CAAC,eAAe,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;iBAChF,CAAC;YACJ,CAAC,CAAC;YACF,KAAK,EAAE;gBACL,aAAa,EAAE,YAAY;gBAC3B,iBAAiB,EAAE,gBAAgB;gBACnC,YAAY,EAAE,WAAW;aAC1B;YACD,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,MAAoB;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE7D,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,IAAI;YACZ,GAAG,WAAW;SACf,CAAC;QACF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5E,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;QAE/E,MAAM,GAAG,GAAG,MAAM,WAAW,CAC3B,IAAI,CAAC,mBAAmB,CACtB;YACE,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,OAAO;YAC5B,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,YAAY,EAAE;gBACtB,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,EACD,MAAM,CAAC,MAAM,CACd,CACF,CAAC;QAEF,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;YAC5B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,SAAS;YAC9B,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YAC5B,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;QACnE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;QAEhE,MAAM,SAAS,GAAI,YAAY,CAAC,QAAQ,CAAgD,IAAI,EAAE,CAAC;QAE/F,OAAO;YACL,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC5B,OAAO,EACL,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ;oBAC9B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBACd,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,QAAQ;wBACjC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;wBACf,CAAC,CAAC,EAAE;gBACV,WAAW,EACT,OAAO,CAAC,CAAC,aAAa,CAAC,KAAK,QAAQ;oBAClC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;oBAClB,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,QAAQ;wBACrC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;wBACnB,CAAC,CAAC,EAAE;gBACV,QAAQ,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;gBAChE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACrE,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBAC5C,CAAC,CAAE,CAAC,CAAC,cAAc,CAAe,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC9C,CAAC,CAAC,EAAE;aACP,CAAC,CAAC;YACH,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAoB;QAC9B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,QAAQ,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1E,IAAI,MAAM,EAAE,EAAE,KAAK,SAAS;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAEzF,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;YAC5B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;YACnB,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YAC5B,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,UAAU,EAAE,IAAI,CAAC,WAAW;SAC7B,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;QAEnE,MAAM,SAAS,GAAG,CACf,YAAY,CAAC,WAAW,CAAgD,IAAI,EAAE,CAChF,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACZ,SAAS,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;YACrE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1C,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9C,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SAC7C,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACrD,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACzD,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACvD,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1E,EAAE,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACpE,SAAS;YACT,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,SAAS;gBAC5C,CAAC,CAAC;oBACE,YAAY,EAAE,YAAY,CAAC,cAAc,CAA4B;iBACtE;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,42 @@
1
+ /** Base error class for all GateCtr SDK errors */
2
+ export declare class GateCtrError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ /** Thrown for invalid or missing configuration (e.g., no API key) */
6
+ export declare class GateCtrConfigError extends GateCtrError {
7
+ constructor(message: string);
8
+ }
9
+ /** Thrown when the Platform returns a non-2xx HTTP response */
10
+ export declare class GateCtrApiError extends GateCtrError {
11
+ readonly status: number;
12
+ readonly code: string;
13
+ readonly requestId: string | undefined;
14
+ constructor(opts: {
15
+ message: string;
16
+ status: number;
17
+ code: string;
18
+ requestId?: string;
19
+ });
20
+ /** Returns a plain object safe for JSON.stringify in logging pipelines. Never includes the API key. */
21
+ toJSON(): {
22
+ name: string;
23
+ message: string;
24
+ status: number;
25
+ code: string;
26
+ requestId: string | undefined;
27
+ };
28
+ }
29
+ /** Thrown when a request exceeds the configured timeout */
30
+ export declare class GateCtrTimeoutError extends GateCtrError {
31
+ readonly timeoutMs: number;
32
+ constructor(timeoutMs: number);
33
+ }
34
+ /** Thrown when a streaming connection fails mid-stream */
35
+ export declare class GateCtrStreamError extends GateCtrError {
36
+ constructor(message: string, cause?: unknown);
37
+ }
38
+ /** Thrown for DNS failures, connection refused, and other transport-level errors */
39
+ export declare class GateCtrNetworkError extends GateCtrError {
40
+ constructor(message: string, cause?: unknown);
41
+ }
42
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAEA,kDAAkD;AAClD,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAM5B;AAED,qEAAqE;AACrE,qBAAa,kBAAmB,SAAQ,YAAY;gBACtC,OAAO,EAAE,MAAM;CAK5B;AAED,+DAA+D;AAC/D,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE3B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IASvF,uGAAuG;IACvG,MAAM,IAAI;QACR,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;KAC/B;CASF;AAED,2DAA2D;AAC3D,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM;CAM9B;AAED,0DAA0D;AAC1D,qBAAa,kBAAmB,SAAQ,YAAY;gBACtC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAQ7C;AAED,oFAAoF;AACpF,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAQ7C"}
@@ -0,0 +1,75 @@
1
+ // sdk-node/src/errors.ts
2
+ /** Base error class for all GateCtr SDK errors */
3
+ export class GateCtrError extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = "GateCtrError";
7
+ // Fix prototype chain for instanceof checks in transpiled code
8
+ Object.setPrototypeOf(this, new.target.prototype);
9
+ }
10
+ }
11
+ /** Thrown for invalid or missing configuration (e.g., no API key) */
12
+ export class GateCtrConfigError extends GateCtrError {
13
+ constructor(message) {
14
+ super(message);
15
+ this.name = "GateCtrConfigError";
16
+ Object.setPrototypeOf(this, new.target.prototype);
17
+ }
18
+ }
19
+ /** Thrown when the Platform returns a non-2xx HTTP response */
20
+ export class GateCtrApiError extends GateCtrError {
21
+ status;
22
+ code;
23
+ requestId;
24
+ constructor(opts) {
25
+ super(opts.message);
26
+ this.name = "GateCtrApiError";
27
+ this.status = opts.status;
28
+ this.code = opts.code;
29
+ this.requestId = opts.requestId;
30
+ Object.setPrototypeOf(this, new.target.prototype);
31
+ }
32
+ /** Returns a plain object safe for JSON.stringify in logging pipelines. Never includes the API key. */
33
+ toJSON() {
34
+ return {
35
+ name: this.name,
36
+ message: this.message,
37
+ status: this.status,
38
+ code: this.code,
39
+ requestId: this.requestId,
40
+ };
41
+ }
42
+ }
43
+ /** Thrown when a request exceeds the configured timeout */
44
+ export class GateCtrTimeoutError extends GateCtrError {
45
+ timeoutMs;
46
+ constructor(timeoutMs) {
47
+ super(`Request timed out after ${String(timeoutMs)}ms`);
48
+ this.name = "GateCtrTimeoutError";
49
+ this.timeoutMs = timeoutMs;
50
+ Object.setPrototypeOf(this, new.target.prototype);
51
+ }
52
+ }
53
+ /** Thrown when a streaming connection fails mid-stream */
54
+ export class GateCtrStreamError extends GateCtrError {
55
+ constructor(message, cause) {
56
+ super(message);
57
+ this.name = "GateCtrStreamError";
58
+ if (cause !== undefined) {
59
+ this.cause = cause;
60
+ }
61
+ Object.setPrototypeOf(this, new.target.prototype);
62
+ }
63
+ }
64
+ /** Thrown for DNS failures, connection refused, and other transport-level errors */
65
+ export class GateCtrNetworkError extends GateCtrError {
66
+ constructor(message, cause) {
67
+ super(message);
68
+ this.name = "GateCtrNetworkError";
69
+ if (cause !== undefined) {
70
+ this.cause = cause;
71
+ }
72
+ Object.setPrototypeOf(this, new.target.prototype);
73
+ }
74
+ }
75
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAEzB,kDAAkD;AAClD,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,+DAA+D;QAC/D,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,qEAAqE;AACrE,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,+DAA+D;AAC/D,MAAM,OAAO,eAAgB,SAAQ,YAAY;IACtC,MAAM,CAAS;IACf,IAAI,CAAS;IACb,SAAS,CAAqB;IAEvC,YAAY,IAA2E;QACrF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,uGAAuG;IACvG,MAAM;QAOJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED,2DAA2D;AAC3D,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IAC1C,SAAS,CAAS;IAE3B,YAAY,SAAiB;QAC3B,KAAK,CAAC,2BAA2B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,0DAA0D;AAC1D,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,oFAAoF;AACpF,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ export interface RequestOptions {
2
+ method: "GET" | "POST";
3
+ url: string;
4
+ headers: Record<string, string>;
5
+ body?: unknown;
6
+ signal?: AbortSignal;
7
+ timeoutMs: number;
8
+ maxRetries: number;
9
+ }
10
+ export interface RawResponse {
11
+ status: number;
12
+ headers: Headers;
13
+ body: ReadableStream<Uint8Array> | null;
14
+ json(): Promise<unknown>;
15
+ }
16
+ /**
17
+ * Exponential backoff with jitter.
18
+ * delay = min(500 * 2^attempt + jitter(0-100ms), 10_000ms)
19
+ */
20
+ export declare function backoffMs(attempt: number): number;
21
+ /**
22
+ * Core HTTP request function with retry loop and timeout.
23
+ * Throws typed GateCtr errors — never raw fetch errors.
24
+ */
25
+ export declare function httpRequest(opts: RequestOptions): Promise<RawResponse>;
26
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACxC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B;AAQD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIjD;AA6BD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAuI5E"}