@tellescope/sdk 1.255.15 → 1.255.17

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 (31) hide show
  1. package/lib/cjs/sdk.d.ts +1 -0
  2. package/lib/cjs/sdk.d.ts.map +1 -1
  3. package/lib/cjs/sdk.js.map +1 -1
  4. package/lib/cjs/tests/api_tests/organization_api_keys.test.js +2 -2
  5. package/lib/cjs/tests/api_tests/organization_api_keys.test.js.map +1 -1
  6. package/lib/cjs/tests/api_tests/scoped_api_keys.test.d.ts +6 -0
  7. package/lib/cjs/tests/api_tests/scoped_api_keys.test.d.ts.map +1 -0
  8. package/lib/cjs/tests/api_tests/scoped_api_keys.test.js +314 -0
  9. package/lib/cjs/tests/api_tests/scoped_api_keys.test.js.map +1 -0
  10. package/lib/cjs/tests/tests.d.ts.map +1 -1
  11. package/lib/cjs/tests/tests.js +147 -143
  12. package/lib/cjs/tests/tests.js.map +1 -1
  13. package/lib/esm/sdk.d.ts +1 -0
  14. package/lib/esm/sdk.d.ts.map +1 -1
  15. package/lib/esm/sdk.js.map +1 -1
  16. package/lib/esm/tests/api_tests/organization_api_keys.test.js +2 -2
  17. package/lib/esm/tests/api_tests/organization_api_keys.test.js.map +1 -1
  18. package/lib/esm/tests/api_tests/scoped_api_keys.test.d.ts +6 -0
  19. package/lib/esm/tests/api_tests/scoped_api_keys.test.d.ts.map +1 -0
  20. package/lib/esm/tests/api_tests/scoped_api_keys.test.js +307 -0
  21. package/lib/esm/tests/api_tests/scoped_api_keys.test.js.map +1 -0
  22. package/lib/esm/tests/tests.d.ts.map +1 -1
  23. package/lib/esm/tests/tests.js +147 -143
  24. package/lib/esm/tests/tests.js.map +1 -1
  25. package/lib/tsconfig.tsbuildinfo +1 -1
  26. package/package.json +8 -8
  27. package/src/sdk.ts +3 -0
  28. package/src/tests/api_tests/organization_api_keys.test.ts +2 -2
  29. package/src/tests/api_tests/scoped_api_keys.test.ts +237 -0
  30. package/src/tests/tests.ts +2 -0
  31. package/test_generated.pdf +0 -0
@@ -0,0 +1,307 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ require('source-map-support').install();
38
+ import axios from "axios";
39
+ import { Session } from "../../sdk";
40
+ import { assert, async_test, log_header, wait, } from "@tellescope/testing";
41
+ import { setup_tests } from "../setup";
42
+ import { FORM_INGESTION_API_KEY_SCOPE } from "@tellescope/types-models";
43
+ var host = process.env.API_URL || "http://localhost:8080";
44
+ var TEST_EMAIL = "scoped-api-keys@tellescope.com";
45
+ export var scoped_api_keys_tests = function (_a) {
46
+ var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
47
+ return __awaiter(void 0, void 0, void 0, function () {
48
+ var form, buildUrl, bodyFor, keyIds, formResponseIds, throwawayUserId, throwawayRoleId, scoped_1, headerResult, pathResult, apiKeysRole, throwawayUser, _b, otherSdk_1, _c, nonAdminKey, unscoped_1, unscopedKeyValue_1, apiKeys, _i, keyIds_1, id, _d, formResponseIds_1, id, enduser, err_1;
49
+ var _e;
50
+ var _f, _g, _h, _j;
51
+ return __generator(this, function (_k) {
52
+ switch (_k.label) {
53
+ case 0:
54
+ log_header("Scoped API Keys (form-ingestion)");
55
+ return [4 /*yield*/, sdk.api.forms.createOne({ title: "Scoped API Key Test Form" })];
56
+ case 1:
57
+ form = _k.sent();
58
+ buildUrl = function (pathSegment) {
59
+ var url = new URL("".concat(host, "/v1/webhooks/form-ingestion/").concat(pathSegment));
60
+ url.searchParams.set('formId', form.id);
61
+ url.searchParams.set('returnJSON', 'true');
62
+ return url.toString();
63
+ };
64
+ bodyFor = function (responder_uuid) { return ({
65
+ answers: [{ key: 'email', value: TEST_EMAIL }],
66
+ responder_uuid: responder_uuid,
67
+ finalized: true,
68
+ }); };
69
+ keyIds = [];
70
+ formResponseIds = [];
71
+ _k.label = 2;
72
+ case 2:
73
+ _k.trys.push([2, , 26, 44]);
74
+ return [4 /*yield*/, sdk.api.api_keys.createOne({ scopes: [FORM_INGESTION_API_KEY_SCOPE] })];
75
+ case 3:
76
+ scoped_1 = _k.sent();
77
+ keyIds.push(scoped_1.id);
78
+ assert(!!scoped_1.id && !!scoped_1.key, "scoped key create returned no id/key", "admin creates a form-ingestion-scoped key");
79
+ // record reflects the scope for its creator (CREATOR_ONLY_ACCESS read)
80
+ return [4 /*yield*/, async_test("scoped key record stores scopes", function () { return sdk.api.api_keys.getOne(scoped_1.id); }, { onResult: function (k) { return JSON.stringify(k.scopes) === JSON.stringify([FORM_INGESTION_API_KEY_SCOPE]); } })
81
+ // =============================================
82
+ // (b) Scoped key is rejected on all general /v1 auth
83
+ // =============================================
84
+ ];
85
+ case 4:
86
+ // record reflects the scope for its creator (CREATOR_ONLY_ACCESS read)
87
+ _k.sent();
88
+ // =============================================
89
+ // (b) Scoped key is rejected on all general /v1 auth
90
+ // =============================================
91
+ return [4 /*yield*/, async_test("scoped key rejected on /v1/test-authenticated", function () { return new Session({ host: host, apiKey: scoped_1.key }).test_authenticated(); },
92
+ // SDK parseError surfaces a raw 401 body as the string 'Unauthenticated'
93
+ { shouldError: true, onError: function (e) { return e === 'Unauthenticated' || (e === null || e === void 0 ? void 0 : e.statusCode) === 401 || /unauthenticated/i.test((e === null || e === void 0 ? void 0 : e.message) || ''); } })];
94
+ case 5:
95
+ // =============================================
96
+ // (b) Scoped key is rejected on all general /v1 auth
97
+ // =============================================
98
+ _k.sent();
99
+ return [4 /*yield*/, async_test("scoped key rejected on GET /v1/endusers", function () { return axios.get("".concat(host, "/v1/endusers"), { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } }); }, { shouldError: true, onError: function (e) { var _a; return ((_a = e.response) === null || _a === void 0 ? void 0 : _a.status) === 401; } })];
100
+ case 6:
101
+ _k.sent();
102
+ return [4 /*yield*/, async_test("scoped key rejected on cross-org targeting (x-tellescope-organization)", function () { return axios.get("".concat(host, "/v1/endusers"), {
103
+ headers: {
104
+ Authorization: "API_KEY ".concat(scoped_1.key),
105
+ 'x-tellescope-organization': sdk.userInfo.businessId,
106
+ },
107
+ }); }, { shouldError: true, onError: function (e) { var _a; return ((_a = e.response) === null || _a === void 0 ? void 0 : _a.status) === 401; } })
108
+ // =============================================
109
+ // (c) Scoped key IS accepted by the form-ingestion webhook
110
+ // =============================================
111
+ ];
112
+ case 7:
113
+ _k.sent();
114
+ return [4 /*yield*/, axios.post(buildUrl('key-in-header'), bodyFor("scoped-1"), { headers: { Authorization: "API_KEY ".concat(scoped_1.key) } })];
115
+ case 8:
116
+ headerResult = _k.sent();
117
+ assert(headerResult.status === 200 && !!((_f = headerResult.data) === null || _f === void 0 ? void 0 : _f.formResponseId), "scoped key header auth failed: ".concat(headerResult.status, " ").concat(JSON.stringify(headerResult.data)), "scoped key authenticates the form-ingestion webhook via header");
118
+ if ((_g = headerResult.data) === null || _g === void 0 ? void 0 : _g.formResponseId)
119
+ formResponseIds.push(headerResult.data.formResponseId);
120
+ return [4 /*yield*/, axios.post(buildUrl(scoped_1.key), bodyFor("scoped-2"))];
121
+ case 9:
122
+ pathResult = _k.sent();
123
+ assert(pathResult.status === 200 && !!((_h = pathResult.data) === null || _h === void 0 ? void 0 : _h.formResponseId), "scoped key path auth failed: ".concat(pathResult.status, " ").concat(JSON.stringify(pathResult.data)), "scoped key authenticates the form-ingestion webhook via path segment");
124
+ if ((_j = pathResult.data) === null || _j === void 0 ? void 0 : _j.formResponseId)
125
+ formResponseIds.push(pathResult.data.formResponseId);
126
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.createOne({
127
+ role: 'scoped-api-keys-test-role',
128
+ permissions: { api_keys: { create: 'All', read: 'All', update: 'All', delete: 'All' } },
129
+ })];
130
+ case 10:
131
+ apiKeysRole = _k.sent();
132
+ throwawayRoleId = apiKeysRole.id;
133
+ return [4 /*yield*/, sdk.api.users.getOne({ email: 'scoped.api.keys.user@tellescope.com' }).catch(function () { return null; })];
134
+ case 11:
135
+ _b = (_k.sent());
136
+ if (_b) return [3 /*break*/, 13];
137
+ return [4 /*yield*/, sdk.api.users.createOne({ email: 'scoped.api.keys.user@tellescope.com', notificationEmailsDisabled: true, verifiedEmail: true })];
138
+ case 12:
139
+ _b = (_k.sent());
140
+ _k.label = 13;
141
+ case 13:
142
+ throwawayUser = _b;
143
+ throwawayUserId = throwawayUser.id;
144
+ return [4 /*yield*/, sdk.api.users.updateOne(throwawayUser.id, { roles: [apiKeysRole.role] }, { replaceObjectFields: true })];
145
+ case 14:
146
+ _k.sent();
147
+ return [4 /*yield*/, wait(undefined, 2000)]; // wait for the role change to propagate before authenticating
148
+ case 15:
149
+ _k.sent(); // wait for the role change to propagate before authenticating
150
+ _c = Session.bind;
151
+ _e = {
152
+ host: host
153
+ };
154
+ return [4 /*yield*/, sdk.api.users.generate_auth_token({ id: throwawayUser.id })];
155
+ case 16:
156
+ otherSdk_1 = new (_c.apply(Session, [void 0, (_e.authToken = (_k.sent()).authToken,
157
+ _e)]))();
158
+ return [4 /*yield*/, async_test("non-admin cannot create a scoped key (401)", function () { return otherSdk_1.api.api_keys.createOne({ scopes: [FORM_INGESTION_API_KEY_SCOPE] }); }, { shouldError: true, onError: function (e) { return e === 'Unauthenticated' || (e === null || e === void 0 ? void 0 : e.statusCode) === 401 || /admin/i.test((e === null || e === void 0 ? void 0 : e.message) || ''); } })
159
+ // ...but CAN still create an unscoped key; an empty scopes list is rejected by validation (fail closed)
160
+ ];
161
+ case 17:
162
+ _k.sent();
163
+ return [4 /*yield*/, otherSdk_1.api.api_keys.createOne({})];
164
+ case 18:
165
+ nonAdminKey = _k.sent();
166
+ return [4 /*yield*/, async_test("empty scopes list rejected by validation", function () { return otherSdk_1.api.api_keys.createOne({ scopes: [] }); }, { shouldError: true, onError: function (e) { return (e === null || e === void 0 ? void 0 : e.statusCode) === 400 || /empty|not valid|invalid/i.test((e === null || e === void 0 ? void 0 : e.message) || ''); } })
167
+ // creator-only cleanup for the throwaway user's key before the user is deleted
168
+ ];
169
+ case 19:
170
+ _k.sent();
171
+ // creator-only cleanup for the throwaway user's key before the user is deleted
172
+ return [4 /*yield*/, otherSdk_1.api.api_keys.deleteOne(nonAdminKey.id).catch(function () { })
173
+ // =============================================
174
+ // (e) Unscoped keys are unchanged (no regression)
175
+ // =============================================
176
+ ];
177
+ case 20:
178
+ // creator-only cleanup for the throwaway user's key before the user is deleted
179
+ _k.sent();
180
+ return [4 /*yield*/, sdk.api.api_keys.createOne({})];
181
+ case 21:
182
+ unscoped_1 = _k.sent();
183
+ unscopedKeyValue_1 = unscoped_1.key;
184
+ keyIds.push(unscoped_1.id);
185
+ return [4 /*yield*/, async_test("unscoped key still authenticates general /v1", function () { return new Session({ host: host, apiKey: unscopedKeyValue_1 }).test_authenticated(); }, { onResult: function (r) { return !!r; } })
186
+ // Frozen pre-existing behavior: unscoped /v1-created keys store a utf8-encoded hashedKey, which the
187
+ // webhook's hex lookup never matches — only legacy plaintext keys and hex-stored scoped keys work there.
188
+ // (Legacy-key webhook auth is covered by formsort_header_auth.test.ts.)
189
+ ];
190
+ case 22:
191
+ _k.sent();
192
+ // Frozen pre-existing behavior: unscoped /v1-created keys store a utf8-encoded hashedKey, which the
193
+ // webhook's hex lookup never matches — only legacy plaintext keys and hex-stored scoped keys work there.
194
+ // (Legacy-key webhook auth is covered by formsort_header_auth.test.ts.)
195
+ return [4 /*yield*/, async_test("unscoped /v1-created key still does NOT authenticate the webhook (frozen encoding quirk)", function () { return axios.post(buildUrl('key-in-header'), bodyFor("scoped-3"), { headers: { Authorization: "API_KEY ".concat(unscopedKeyValue_1) } }); }, { shouldError: true, onError: function (e) { var _a; return ((_a = e.response) === null || _a === void 0 ? void 0 : _a.status) === 401; } })
196
+ // =============================================
197
+ // (f) Admin org-wide list includes scopes (and still never leaks secrets)
198
+ // =============================================
199
+ ];
200
+ case 23:
201
+ // Frozen pre-existing behavior: unscoped /v1-created keys store a utf8-encoded hashedKey, which the
202
+ // webhook's hex lookup never matches — only legacy plaintext keys and hex-stored scoped keys work there.
203
+ // (Legacy-key webhook auth is covered by formsort_header_auth.test.ts.)
204
+ _k.sent();
205
+ return [4 /*yield*/, sdk.api.api_keys.get_organization_api_keys()];
206
+ case 24:
207
+ apiKeys = (_k.sent()).apiKeys;
208
+ assert(!!apiKeys.find(function (k) { return k.id === scoped_1.id && JSON.stringify(k.scopes) === JSON.stringify([FORM_INGESTION_API_KEY_SCOPE]); }), "org list did not report scopes on the scoped key", "get_organization_api_keys reports scopes on scoped keys");
209
+ assert(!!apiKeys.find(function (k) { return k.id === unscoped_1.id && k.scopes === undefined; }), "org list reported scopes on an unscoped key", "get_organization_api_keys omits scopes on unscoped keys");
210
+ assert(apiKeys.every(function (k) { return k.key === undefined && k.hashedKey === undefined; }), "org list leaked key material", "get_organization_api_keys still never returns key/hashedKey");
211
+ // =============================================
212
+ // Validation: unknown scope values are rejected
213
+ // =============================================
214
+ return [4 /*yield*/, async_test("unknown scope value rejected by validation", function () { return sdk.api.api_keys.createOne({ scopes: ['not-a-real-scope'] }); }, { shouldError: true, onError: function (e) { return (e === null || e === void 0 ? void 0 : e.statusCode) === 400 || /must match|not valid|invalid/i.test((e === null || e === void 0 ? void 0 : e.message) || ''); } })];
215
+ case 25:
216
+ // =============================================
217
+ // Validation: unknown scope values are rejected
218
+ // =============================================
219
+ _k.sent();
220
+ return [3 /*break*/, 44];
221
+ case 26:
222
+ _i = 0, keyIds_1 = keyIds;
223
+ _k.label = 27;
224
+ case 27:
225
+ if (!(_i < keyIds_1.length)) return [3 /*break*/, 30];
226
+ id = keyIds_1[_i];
227
+ return [4 /*yield*/, sdk.api.api_keys.deleteOne(id).catch(function () { })];
228
+ case 28:
229
+ _k.sent();
230
+ _k.label = 29;
231
+ case 29:
232
+ _i++;
233
+ return [3 /*break*/, 27];
234
+ case 30:
235
+ _d = 0, formResponseIds_1 = formResponseIds;
236
+ _k.label = 31;
237
+ case 31:
238
+ if (!(_d < formResponseIds_1.length)) return [3 /*break*/, 34];
239
+ id = formResponseIds_1[_d];
240
+ return [4 /*yield*/, sdk.api.form_responses.deleteOne(id).catch(function () { })];
241
+ case 32:
242
+ _k.sent();
243
+ _k.label = 33;
244
+ case 33:
245
+ _d++;
246
+ return [3 /*break*/, 31];
247
+ case 34:
248
+ _k.trys.push([34, 37, , 38]);
249
+ return [4 /*yield*/, sdk.api.endusers.getOne({ email: TEST_EMAIL })];
250
+ case 35:
251
+ enduser = _k.sent();
252
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
253
+ case 36:
254
+ _k.sent();
255
+ return [3 /*break*/, 38];
256
+ case 37:
257
+ err_1 = _k.sent();
258
+ return [3 /*break*/, 38];
259
+ case 38: return [4 /*yield*/, sdk.api.forms.deleteOne(form.id).catch(function () { })];
260
+ case 39:
261
+ _k.sent();
262
+ if (!throwawayUserId) return [3 /*break*/, 41];
263
+ return [4 /*yield*/, sdk.api.users.deleteOne(throwawayUserId).catch(function () { })];
264
+ case 40:
265
+ _k.sent();
266
+ _k.label = 41;
267
+ case 41:
268
+ if (!throwawayRoleId) return [3 /*break*/, 43];
269
+ return [4 /*yield*/, sdk.api.role_based_access_permissions.deleteOne(throwawayRoleId).catch(function () { })];
270
+ case 42:
271
+ _k.sent();
272
+ _k.label = 43;
273
+ case 43: return [7 /*endfinally*/];
274
+ case 44: return [2 /*return*/];
275
+ }
276
+ });
277
+ });
278
+ };
279
+ // Allow running this test file independently
280
+ if (require.main === module) {
281
+ console.log("\uD83C\uDF10 Using API URL: ".concat(host));
282
+ var sdk_1 = new Session({ host: host });
283
+ var sdkNonAdmin_1 = new Session({ host: host });
284
+ var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
285
+ return __generator(this, function (_a) {
286
+ switch (_a.label) {
287
+ case 0: return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
288
+ case 1:
289
+ _a.sent();
290
+ return [4 /*yield*/, scoped_api_keys_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
291
+ case 2:
292
+ _a.sent();
293
+ return [2 /*return*/];
294
+ }
295
+ });
296
+ }); };
297
+ runTests()
298
+ .then(function () {
299
+ console.log("✅ Scoped API keys test suite completed successfully");
300
+ process.exit(0);
301
+ })
302
+ .catch(function (error) {
303
+ console.error("❌ Scoped API keys test suite failed:", error);
304
+ process.exit(1);
305
+ });
306
+ }
307
+ //# sourceMappingURL=scoped_api_keys.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoped_api_keys.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/scoped_api_keys.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/tests/tests.ts"],"names":[],"mappings":"AA60EA,eAAO,MAAM,kCAAkC,qBAgJ9C,CAAA;AAED,eAAO,MAAM,mCAAmC,qBA2K/C,CAAA;AAGD,eAAO,MAAM,oBAAoB,qBAoHhC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBAsF3C,CAAA;AAID,eAAO,MAAM,0BAA0B,qBAqCtC,CAAA;AAu1FD,eAAO,MAAM,cAAc,qBAqC1B,CAAA;AAotBD,eAAO,MAAM,0BAA0B,qBAmFtC,CAAA;AAqED,eAAO,MAAM,eAAe,qBAmD3B,CAAA;AAED,eAAO,MAAM,oBAAoB,6BAsBhC,CAAA;AAED,eAAO,MAAM,oCAAoC,qBA4pBhD,CAAA;AAED,eAAO,MAAM,mCAAmC,qBAkE/C,CAAA;AAw7CD,eAAO,MAAM,yBAAyB,qBA0DrC,CAAA;AAED,eAAO,MAAM,kBAAkB,qBAmK9B,CAAA;AAED,eAAO,MAAM,sBAAsB,qBA0BlC,CAAA;AAGD,eAAO,MAAM,mBAAmB,qBAmC/B,CAAA;AAED,eAAO,MAAM,gCAAgC,mCA8C5C,CAAA;AAED,eAAO,MAAM,cAAc,qBAwb1B,CAAA;AAGD,eAAO,MAAM,oBAAoB,uBAuBhC,CAAA;AA4wBD,eAAO,MAAM,4BAA4B,qBAoExC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBA4U3C,CAAA;AAED,eAAO,MAAM,gDAAgD,qBAwC5D,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAwIjC,CAAA"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/tests/tests.ts"],"names":[],"mappings":"AA80EA,eAAO,MAAM,kCAAkC,qBAgJ9C,CAAA;AAED,eAAO,MAAM,mCAAmC,qBA2K/C,CAAA;AAGD,eAAO,MAAM,oBAAoB,qBAoHhC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBAsF3C,CAAA;AAID,eAAO,MAAM,0BAA0B,qBAqCtC,CAAA;AAu1FD,eAAO,MAAM,cAAc,qBAqC1B,CAAA;AAotBD,eAAO,MAAM,0BAA0B,qBAmFtC,CAAA;AAqED,eAAO,MAAM,eAAe,qBAmD3B,CAAA;AAED,eAAO,MAAM,oBAAoB,6BAsBhC,CAAA;AAED,eAAO,MAAM,oCAAoC,qBA4pBhD,CAAA;AAED,eAAO,MAAM,mCAAmC,qBAkE/C,CAAA;AAw7CD,eAAO,MAAM,yBAAyB,qBA0DrC,CAAA;AAED,eAAO,MAAM,kBAAkB,qBAmK9B,CAAA;AAED,eAAO,MAAM,sBAAsB,qBA0BlC,CAAA;AAGD,eAAO,MAAM,mBAAmB,qBAmC/B,CAAA;AAED,eAAO,MAAM,gCAAgC,mCA8C5C,CAAA;AAED,eAAO,MAAM,cAAc,qBAwb1B,CAAA;AAGD,eAAO,MAAM,oBAAoB,uBAuBhC,CAAA;AA4wBD,eAAO,MAAM,4BAA4B,qBAoExC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBA4U3C,CAAA;AAED,eAAO,MAAM,gDAAgD,qBAwC5D,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAwIjC,CAAA"}